diff --git a/Cartfile b/Cartfile new file mode 100644 index 0000000..c3b1942 --- /dev/null +++ b/Cartfile @@ -0,0 +1 @@ +github "stephencelis/SQLite.swift" ~> 0.11.4 diff --git a/Cartfile.resolved b/Cartfile.resolved new file mode 100644 index 0000000..438fb56 --- /dev/null +++ b/Cartfile.resolved @@ -0,0 +1 @@ +github "stephencelis/SQLite.swift" "0.11.4" diff --git a/Carthage/Build/iOS/4430F385-63D7-3C51-88F0-AFAC7B70A7B2.bcsymbolmap b/Carthage/Build/iOS/4430F385-63D7-3C51-88F0-AFAC7B70A7B2.bcsymbolmap new file mode 100644 index 0000000..1b6c8f9 --- /dev/null +++ b/Carthage/Build/iOS/4430F385-63D7-3C51-88F0-AFAC7B70A7B2.bcsymbolmap @@ -0,0 +1,4822 @@ +BCSymbolMap Version: 2.0 +____SQLiteRegisterTokenizer_block_invoke +___SQLiteTokenizerCreate +___SQLiteTokenizerDestroy +___SQLiteTokenizerOpen +___SQLiteTokenizerClose +___SQLiteTokenizerNext +___llvm_profile_runtime_user +__SQLiteRegisterTokenizer.onceToken +___SQLiteTokenizerMap +___block_descriptor_tmp +___block_literal_global +___SQLiteTokenizerModule +___llvm_coverage_mapping +Apple LLVM version 9.0.0 (clang-900.0.38) +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLiteObjc/SQLite-Bridging.m +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift +__SQLiteTokenizerNext +__SQLiteTokenizerClose +__SQLiteTokenizerOpen +__SQLiteTokenizerDestroy +__SQLiteTokenizerCreate +___SQLiteRegisterTokenizer_block_invoke +_SQLiteRegisterTokenizer +_dispatch_once +/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk/usr/include/dispatch/once.h +_swift_rt_swift_retain +_swift_rt_swift_release +__T0SS6SQLiteE4wrapAA10ExpressionVyxGAA11Expressible_plFSd_Tg5 +__T0SS6SQLiteE4wrapAA10ExpressionVyxGAA11Expressible_plFSdSg_Tg5 +__T0SS6SQLiteE4wrapAA10ExpressionVyxGAA11Expressible_plF10Foundation4DataV_Tg5 +__T0SS6SQLiteE4wrapAA10ExpressionVyxGAA11Expressible_plFSi_Tg5 +__T0SS6SQLiteE4wrapAA10ExpressionVyxGAA11Expressible_plFSiSg_Tg5 +__T0SS6SQLiteE4wrapAA10ExpressionVyxGAA11Expressible_plFSS_Tg5 +__T0SS6SQLiteE4wrapAA10ExpressionVyxGAA11Expressible_plFSSSg_Tg5 +__T0SS6SQLiteE4wrapAA10ExpressionVyxGAA11Expressible_plF +___swift_allocate_boxed_opaque_existential_1 +_swift_rt_swift_getExistentialTypeMetadata +__T06SQLite14ExpressionTypePA2aBRz10Foundation4DataV010UnderlyingC0RtzlE6randomAA0B0VyAFGSiFZTm +__T0SS6SQLiteE5infixAA10ExpressionVyxGAA11Expressible_p_AaF_pSb4wraptlFSb_Tg5 +__T0SS6SQLiteE5infixAA10ExpressionVyxGAA11Expressible_p_AaF_pSb4wraptlFSS_Tg5 +__T0SS6SQLiteE5infixAA10ExpressionVyxGAA11Expressible_p_AaF_pSb4wraptlFSbSg_Tg5 +__T0SS6SQLiteE5infixAA10ExpressionVyxGAA11Expressible_p_AaF_pSb4wraptlFSSSg_Tg5 +__T06SQLite14ExpressionTypePA2aBRz10Foundation4DataV010UnderlyingC0RtzlE6lengthAA0B0VySiGfgTm +__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE15lowercaseStringAA0B0VySSGfgTm +__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE4likeAA0B0VySbGSS_s9CharacterVSg6escapetFTm +__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE4likeAA0B0VySbGAHySSG_s9CharacterVSg6escapetFTm +__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE4globAA0B0VySbGSSFTm +__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE7collateAA0B0VySSGAA9CollationOFTm +__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE5ltrimAA0B0VySSGs3SetVys9CharacterVGSgFTm +__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE7replaceAA0B0VySSGSS_SS4withtFTm +__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE9substringAA0B0VySSGSi_SiSg6lengthtFTm +__T0Sa6appendyqd__10contentsOf_t7ElementQyd__Rszs8SequenceRd__lF6SQLite7Binding_pSg_SayAHGTg5 +__T0Sis5Error_pIxdzo_SisAA_pIxrzo_TR +__T0SS6SQLiteE4joinAA11Expressible_pSayAaC_pGF +__T0S2SSaySSG19stringInterpolationd_tcfCTfq4nd_n +__T0s11_StringCoreV6appendyABFTfq4gXn_n +__T0s11_StringCoreV13_copyElementsySv_Si15srcElementWidthSv8dstStartSi0hfG0Si5counttFZTfq4nnnnnd_n +__T0S2Ss9CharacterVcfCTfq4nd_n +__T0s13_StringBufferV13fromCodeUnitsABSg_Sb8hadErrortx_q_m8encodingSb24repairIllFormedSequencesSi15minimumCapacityts8SequenceRzs16_UnicodeEncodingR_0D4UnitQy_7ElementRtzr0_lFZs05_UIntB0Vys6UInt64Vs6UInt16VG_s0P0O5UTF16OTgq5Tfq4xnnnd_n +__T0SS13CharacterViewV6appendyx10contentsOf_ts8SequenceRzs0A0V7ElementRtzlFs3SetVyAGG_Tg5 +__T0s11_StringCoreV6appendyx10contentsOf_ts8SequenceRzs6UInt16V7ElementRtzlFs11_UIntBufferVys6UInt64VAGG_Tgq5Tfq4xn_n +__T0s8SequencePssAARzs14StringProtocol7ElementRpzlE7_joinedS2S9separator_tFSiycfU_SaySSG_Tg5 +__T0Sis9EquatablessAAP2eeoiSbx_xtFZTW +__T0s20_ArrayBufferProtocolPsE20_arrayAppendSequenceyqd__s0F0Rd__7ElementQyd__AERtzlFTfq4gn_ns01_aB0Vy6SQLite7Binding_pSgG_s08IteratorF0Vys08IndexingJ0VySayALGGGTg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vy6SQLite7Binding_pSgG_Tg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0Vy6SQLite7Binding_pSgG_s07_IgnoreK0VyAOGTg5 +__T0Sa15reserveCapacityySiF6SQLite7Binding_pSg_Tg5 +__T0s27_toStringReadOnlyStreamableSSxs010TextOutputE0RzlFTfq4g_nSS_Tg5Tf4n_g +__T0s23BidirectionalCollectionPssAARzSS7ElementRtzlE6joinedS2S9separator_tFSaySSG_Tg5Tf4gXn_n +__T0SS6SQLiteE4wrapAA10ExpressionVyxGSayAA11Expressible_pGlFTf4gn_n +_swift_rt_swift_deallocObject +_swift_rt_swift_allocObject +__T0Sa28_allocateBufferUninitializeds06_ArrayB0VyxGSi15minimumCapacity_tFZSS_Tg5Tf4nd_n +__T0S2ayxGx9repeating_Si5counttcfCSS_Tg5Tf4gXnd_n +__T0s10CollectionP6SQLitesAARzAC5Value7ElementRpzSi13IndexDistanceRtzlE8containsAC10ExpressionVySbGAKyAFGFAC7Binding_pSgAFcfU_TA +__T0s10CollectionP6SQLitesAARzAC5Value7ElementRpzSi13IndexDistanceRtzlE8containsAC10ExpressionVySbSgGAKyAFSgGFAC7Binding_pSgAFcfU_TA +__T0s10CollectionP6SQLitesAARzAC5Value7ElementRpzSi13IndexDistanceRtzlE8containsAC10ExpressionVySbGAKyAFGFAC7Binding_pSgAFcfU_TATm +__T06SQLite2qqoiAA10ExpressionVyxGADyxSgG_xtAA5ValueRzlFTf4gg_n +__T06SQLite2qqoiAA10ExpressionVyxGADyxSgG_AEtAA5ValueRzlFTf4gg_n +__T06SQLite2qqoiAA10ExpressionVyxGADyxSgG_AGtAA5ValueRzlFTf4gg_n +__T0s23_NativeDictionaryBufferVss8HashableRzr0_lE9fromArrayAByxq_GSayx_q_tGFZTfq4gn_ns17CodingUserInfoKeyV_ypTg5Tf4nd_n +__T0s16_NativeSetBufferVss8HashableRzlE9fromArrayAByxGSayxGFZTfq4gn_ns9CharacterV_Tg5Tf4nd_n +_swift_rt_swift_storeEnumTagSinglePayload +___swift_destroy_boxed_opaque_existential_0 +__swift_dead_method_stub +___swift_destroy_boxed_opaque_existential_1 +_swift_rt_swift_release_n +_swift_rt_swift_retain_n +_globalinit_33_6C6C58A93ECDD528D3D6564FAC7933BD_token0 +_globalinit_33_79F5A2E9E6411E14122CA7C8A9C356C7_token1 +_globalinit_33_79F5A2E9E6411E14122CA7C8A9C356C7_token2 +_globalinit_33_55DAAD62B9B6B0C7112F93C647075291_token3 +_globalinit_33_6574432B243886442F79BBD7FC6A56C2_token4 +_globalinit_33_5F0FD0443FF5032238ECC00E64F41F5E_token5 +_globalinit_33_5F0FD0443FF5032238ECC00E64F41F5E_token6 +_globalinit_33_5F0FD0443FF5032238ECC00E64F41F5E_token7 +_globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_token8 +_globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_token9 +_globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_token10 +_globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_token11 +_globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_token12 +_globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_token13 +_globalinit_33_14CB4A30965D85E6DF5BEBC63D2EB0EA_token14 +_globalinit_33_14CB4A30965D85E6DF5BEBC63D2EB0EA_token15 +_globalinit_33_14CB4A30965D85E6DF5BEBC63D2EB0EA_token16 +__T0s23_ContiguousArrayStorageCy6SQLite11Expressible_pGML +__T06SQLite11Expressible_pML +__T0s23_ContiguousArrayStorageCySSGML +__T0s23_ContiguousArrayStorageCy6SQLite7Binding_pSgGML +__T06SQLite7Binding_pSgML +__T06SQLite7Binding_pML +__T06SQLite10ExpressionVySSGML +__T06SQLite10ExpressionVyytGML +__swift_FORCE_LOAD_$_swiftFoundation_$_SQLite +__swift_FORCE_LOAD_$_swiftObjectiveC_$_SQLite +__swift_FORCE_LOAD_$_swiftDarwin_$_SQLite +__swift_FORCE_LOAD_$_swiftCoreFoundation_$_SQLite +__swift_FORCE_LOAD_$_swiftDispatch_$_SQLite +__T0s30_HashableTypedNativeSetStorageCys9CharacterVGML +__T0s17_HeapBufferHeaderVys07_StringB5IVarsVGML +__T0s37_HashableTypedNativeDictionaryStorageCys17CodingUserInfoKeyVypGML +__T0ypML +__T0s13ManagedBufferCys05_HeapB6HeaderVys07_StringB5IVarsVGs6UInt16VGML +___swift_reflection_version +___profc__T06SQLite14ExpressionTypePA2aBRzAA6Number010UnderlyingC0RpzlE13absoluteValueAA0B0VyAFGfg +___profd__T06SQLite14ExpressionTypePA2aBRzAA6Number010UnderlyingC0RpzlE13absoluteValueAA0B0VyAFGfg +___profc__T06SQLite14ExpressionTypePA2aBRzAA09_OptionalC0010UnderlyingC0RpzAA6NumberAE_07WrappedC0RPzlE13absoluteValueAA0B0VyAFGfg +___profd__T06SQLite14ExpressionTypePA2aBRzAA09_OptionalC0010UnderlyingC0RpzAA6NumberAE_07WrappedC0RPzlE13absoluteValueAA0B0VyAFGfg +___profc__T06SQLite14ExpressionTypePA2aBRzSd010UnderlyingC0RtzlE5roundAA0B0VySdGSiSgF +___profd__T06SQLite14ExpressionTypePA2aBRzSd010UnderlyingC0RtzlE5roundAA0B0VySdGSiSgF +___profc__T06SQLite14ExpressionTypePA2aBRzSdSg010UnderlyingC0RtzlE5roundAA0B0VyADGSiSgF +___profd__T06SQLite14ExpressionTypePA2aBRzSdSg010UnderlyingC0RtzlE5roundAA0B0VyADGSiSgF +___profc__T06SQLite14ExpressionTypePA2aBRzAA5Value010UnderlyingC0Rpzs5Int64VAE_8DatatypeRTzlE6randomAA0B0VyAFGyFZ +___profd__T06SQLite14ExpressionTypePA2aBRzAA5Value010UnderlyingC0Rpzs5Int64VAE_8DatatypeRTzlE6randomAA0B0VyAFGyFZ +___profc__T06SQLite14ExpressionTypePA2aBRz10Foundation4DataV010UnderlyingC0RtzlE6randomAA0B0VyAFGSiFZ +___profd__T06SQLite14ExpressionTypePA2aBRz10Foundation4DataV010UnderlyingC0RtzlE6randomAA0B0VyAFGSiFZ +___profc__T06SQLite14ExpressionTypePA2aBRz10Foundation4DataV010UnderlyingC0RtzlE8allZerosAA0B0VyAFGSiFZ +___profd__T06SQLite14ExpressionTypePA2aBRz10Foundation4DataV010UnderlyingC0RtzlE8allZerosAA0B0VyAFGSiFZ +___profc__T06SQLite14ExpressionTypePA2aBRz10Foundation4DataV010UnderlyingC0RtzlE6lengthAA0B0VySiGfg +___profd__T06SQLite14ExpressionTypePA2aBRz10Foundation4DataV010UnderlyingC0RtzlE6lengthAA0B0VySiGfg +___profc__T06SQLite14ExpressionTypePA2aBRz10Foundation4DataVSg010UnderlyingC0RtzlE6lengthAA0B0VySiSgGfg +___profd__T06SQLite14ExpressionTypePA2aBRz10Foundation4DataVSg010UnderlyingC0RtzlE6lengthAA0B0VySiSgGfg +___profc__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE6lengthAA0B0VySiGfg +___profd__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE6lengthAA0B0VySiGfg +___profc__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE15lowercaseStringAA0B0VySSGfg +___profd__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE15lowercaseStringAA0B0VySSGfg +___profc__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE15uppercaseStringAA0B0VySSGfg +___profd__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE15uppercaseStringAA0B0VySSGfg +___profc__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE4likeAA0B0VySbGSS_s9CharacterVSg6escapetF +___profd__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE4likeAA0B0VySbGSS_s9CharacterVSg6escapetF +___profc__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE4likeAA0B0VySbGAHySSG_s9CharacterVSg6escapetF +___profd__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE4likeAA0B0VySbGAHySSG_s9CharacterVSg6escapetF +___profc__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE4globAA0B0VySbGSSF +___profd__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE4globAA0B0VySbGSSF +___profc__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE5matchAA0B0VySbGSSF +___profd__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE5matchAA0B0VySbGSSF +___profc__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE6regexpAA0B0VySbGSSF +___profd__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE6regexpAA0B0VySbGSSF +___profc__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE7collateAA0B0VySSGAA9CollationOF +___profd__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE7collateAA0B0VySSGAA9CollationOF +___profc__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE5ltrimAA0B0VySSGs3SetVys9CharacterVGSgF +___profd__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE5ltrimAA0B0VySSGs3SetVys9CharacterVGSgF +___profc__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE5rtrimAA0B0VySSGs3SetVys9CharacterVGSgF +___profd__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE5rtrimAA0B0VySSGs3SetVys9CharacterVGSgF +___profc__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE4trimAA0B0VySSGs3SetVys9CharacterVGSgF +___profd__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE4trimAA0B0VySSGs3SetVys9CharacterVGSgF +___profc__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE7replaceAA0B0VySSGSS_SS4withtF +___profd__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE7replaceAA0B0VySSGSS_SS4withtF +___profc__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE9substringAA0B0VySSGSi_SiSg6lengthtF +___profd__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE9substringAA0B0VySSGSi_SiSg6lengthtF +___profc__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE9subscriptAA0B0VySSGs5RangeVySiGcfg +___profd__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE9subscriptAA0B0VySSGs5RangeVySiGcfg +___profc__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE6lengthAA0B0VySiSgGfg +___profd__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE6lengthAA0B0VySiSgGfg +___profc__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE15lowercaseStringAA0B0VyADGfg +___profd__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE15lowercaseStringAA0B0VyADGfg +___profc__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE15uppercaseStringAA0B0VyADGfg +___profd__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE15uppercaseStringAA0B0VyADGfg +___profc__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE4likeAA0B0VySbSgGSS_s9CharacterVSg6escapetF +___profd__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE4likeAA0B0VySbSgGSS_s9CharacterVSg6escapetF +___profc__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE4likeAA0B0VySbSgGAIySSG_s9CharacterVSg6escapetF +___profd__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE4likeAA0B0VySbSgGAIySSG_s9CharacterVSg6escapetF +___profc__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE4globAA0B0VySbSgGSSF +___profd__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE4globAA0B0VySbSgGSSF +___profc__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE5matchAA0B0VySbGSSF +___profd__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE5matchAA0B0VySbGSSF +___profc__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE6regexpAA0B0VySbSgGSSF +___profd__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE6regexpAA0B0VySbSgGSSF +___profc__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE7collateAA0B0VyADGAA9CollationOF +___profd__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE7collateAA0B0VyADGAA9CollationOF +___profc__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE5ltrimAA0B0VyADGs3SetVys9CharacterVGSgF +___profd__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE5ltrimAA0B0VyADGs3SetVys9CharacterVGSgF +___profc__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE5rtrimAA0B0VyADGs3SetVys9CharacterVGSgF +___profd__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE5rtrimAA0B0VyADGs3SetVys9CharacterVGSgF +___profc__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE4trimAA0B0VyADGs3SetVys9CharacterVGSgF +___profd__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE4trimAA0B0VyADGs3SetVys9CharacterVGSgF +___profc__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE7replaceAA0B0VyADGSS_SS4withtF +___profd__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE7replaceAA0B0VyADGSS_SS4withtF +___profc__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE9substringAA0B0VyADGSi_SiSg6lengthtF +___profd__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE9substringAA0B0VyADGSi_SiSg6lengthtF +___profc__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE9subscriptAA0B0VyADGs5RangeVySiGcfg +___profd__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE9subscriptAA0B0VyADGs5RangeVySiGcfg +___profc__T0s10CollectionP6SQLitesAARzAC5Value7ElementRpzSi13IndexDistanceRtzlE8containsAC10ExpressionVySbGAKyAFGF +___profd__T0s10CollectionP6SQLitesAARzAC5Value7ElementRpzSi13IndexDistanceRtzlE8containsAC10ExpressionVySbGAKyAFGF +___profc__T0s10CollectionP6SQLitesAARzAC5Value7ElementRpzSi13IndexDistanceRtzlE8containsAC10ExpressionVySbSgGAKyAFSgGF +___profd__T0s10CollectionP6SQLitesAARzAC5Value7ElementRpzSi13IndexDistanceRtzlE8containsAC10ExpressionVySbSgGAKyAFSgGF +___profc__T0SS6SQLiteE4likeAA10ExpressionVySbGADySSG_s9CharacterVSg6escapetF +___profd__T0SS6SQLiteE4likeAA10ExpressionVySbGADySSG_s9CharacterVSg6escapetF +___profc__T06SQLite2qqoiAA10ExpressionVyxGADyxSgG_xtAA5ValueRzlF +___profd__T06SQLite2qqoiAA10ExpressionVyxGADyxSgG_xtAA5ValueRzlF +___profc__T06SQLite2qqoiAA10ExpressionVyxGADyxSgG_AEtAA5ValueRzlF +___profd__T06SQLite2qqoiAA10ExpressionVyxGADyxSgG_AEtAA5ValueRzlF +___profc__T06SQLite2qqoiAA10ExpressionVyxGADyxSgG_AGtAA5ValueRzlF +___profd__T06SQLite2qqoiAA10ExpressionVyxGADyxSgG_AGtAA5ValueRzlF +___profc_/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Helpers.swift:_T06SQLite4wrapAA10ExpressionVyxGSayAA11Expressible_pG_SS8functiontlF +___profd_/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Helpers.swift:_T06SQLite4wrapAA10ExpressionVyxGSayAA11Expressible_pG_SS8functiontlF +___profc_/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Helpers.swift:_T06SQLite4wrapAA10ExpressionVyxGAA11Expressible_p_SS8functiontlF +___profd_/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Helpers.swift:_T06SQLite4wrapAA10ExpressionVyxGAA11Expressible_p_SS8functiontlF +___profc_/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Helpers.swift:_T0SS6SQLiteE4wrapAA10ExpressionVyxGSayAA11Expressible_pGlF +___profd_/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Helpers.swift:_T0SS6SQLiteE4wrapAA10ExpressionVyxGSayAA11Expressible_pGlF +___profc__T06SQLite10ExpressionVACyxGSS_SayAA7Binding_pSgGtcfC +___profd__T06SQLite10ExpressionVACyxGSS_SayAA7Binding_pSgGtcfC +-emit-bc "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/CoreFunctions.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Coding.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Extensions/RTree.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Blob.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Foundation.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Connection.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Expression.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Helpers.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Collation.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Setter.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/CustomFunctions.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Extensions/FTS4.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Value.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Operators.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Schema.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Query.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Statement.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/AggregateFunctions.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Extensions/FTS5.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Extensions/Cipher.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Errors.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/DateAndTimeFunctions.swift" -target arm64-apple-ios8.0 -Xllvm -aarch64-use-tbi -enable-objc-interop -sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk -I /Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Products/Release-iphoneos -I "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/CocoaPods/iphoneos" -F /Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Products/Release-iphoneos -application-extension -g -import-underlying-module -module-cache-path /Users/mongolsuragch/Library/Developer/Xcode/DerivedData/ModuleCache -profile-generate -profile-coverage-mapping -swift-version 4 -serialize-debugging-options -report-errors-to-debugger -Xcc "-I/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/swift-overrides.hmap" -Xcc -iquote -Xcc "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/SQLite-generated-files.hmap" -Xcc "-I/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/SQLite-own-target-headers.hmap" -Xcc "-I/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/SQLite-all-non-framework-target-headers.hmap" -Xcc -ivfsoverlay -Xcc /Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/all-product-headers.yaml -Xcc -iquote -Xcc "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/SQLite-project-headers.hmap" -Xcc -I/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Products/Release-iphoneos/include -Xcc "-I/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/DerivedSources/arm64" -Xcc "-I/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/DerivedSources" -Xcc -ivfsoverlay -Xcc "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/unextended-module-overlay.yaml" -Xcc "-working-directory/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift" -emit-module-doc-path "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/arm64/SQLite.swiftdoc" -serialize-diagnostics-path "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/arm64/CoreFunctions.dia" -O -module-name SQLite -emit-module-path "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/arm64/SQLite.swiftmodule" -emit-objc-header-path "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/arm64/SQLite-Swift.h" -emit-dependencies-path "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/arm64/CoreFunctions.d" -num-threads 4 -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/arm64/CoreFunctions.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/arm64/Coding.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/arm64/RTree.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/arm64/Blob.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/arm64/Foundation.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/arm64/Connection.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/arm64/Expression.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/arm64/Helpers.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/arm64/Collation.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/arm64/Setter.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/arm64/CustomFunctions.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/arm64/FTS4.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/arm64/Value.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/arm64/Operators.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/arm64/Schema.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/arm64/Query.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/arm64/Statement.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/arm64/AggregateFunctions.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/arm64/FTS5.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/arm64/Cipher.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/arm64/Errors.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/arm64/DateAndTimeFunctions.bc" -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift + +Apple Swift version 4.0.2 (swiftlang-900.0.69.2 clang-900.0.38) +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/CoreFunctions.swift +__swift_destroy_boxed_opaque_existential_0 +CoreFunctions.swift +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed +_T0s16_NativeSetBufferVss8HashableRzlE9fromArrayAByxGSayxGFZTfq4gn_ns9CharacterV_Tg5Tf4nd_n +_T0s9CharacterVs9EquatablessACP2eeoiSbx_xtFZTW +_T0s11_StringCoreVABs01_A6BufferVcfCTfq4nd_n +_T0s13_StringBufferV9usedCountSifg +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtFs9CharacterV_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tFs9CharacterV_Tg5 +_T0Sp10initializeyx2to_Si5counttFSu_Tgq5 +_T0s9CharacterVs8HashablessACP9hashValueSifgTW +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktFs9CharacterV_Tg5 +_T0s20ManagedBufferPointerV08_elementC0Spyq_Gfgs05_HeapB6HeaderVys07_StringB5IVarsVG_s6UInt16VTgq5 +_T0Sp10initializeyx2to_Si5counttFTfq4gnn_ns9CharacterV_Tg5 +_T0s30_HashableTypedNativeSetStorageCys9CharacterVGMa +_T0Sa9_getCountSiyFs9CharacterV_Tg5 +_T0s23_NativeDictionaryBufferVss8HashableRzr0_lE9fromArrayAByxq_GSayx_q_tGFZTfq4gn_ns17CodingUserInfoKeyV_ypTg5Tf4nd_n +_T0s17CodingUserInfoKeyVs9EquatablessACP2eeoiSbx_xtFZTW +_T0s17CodingUserInfoKeyV2eeoiSbAB_ABtFZTfq4gXgXd_n +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtFs17CodingUserInfoKeyV_ypt_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tFs17CodingUserInfoKeyV_ypt_Tg5 +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktFs17CodingUserInfoKeyV_ypt_Tg5 +_T0Sp10initializeyx2to_Si5counttFTfq4gnn_nyp_Tg5 +_T0Sp10initializeyx2to_Si5counttFTfq4gnn_ns17CodingUserInfoKeyV_Tg5 +_T0s17CodingUserInfoKeyVs8HashablessACP9hashValueSifgTW +_T0s23_NativeDictionaryBufferVAByxq_GSi8capacity_s04_RawaB7StorageC7storagetcfCs17CodingUserInfoKeyV_ypTg5 +_T0s23_NativeDictionaryBufferVAByxq_GSi8capacity_s04_RawaB7StorageC7storagetcfCs17CodingUserInfoKeyV_ypTg5Tf4nnd_n +_T0s37_HashableTypedNativeDictionaryStorageCys17CodingUserInfoKeyVypGMa +_T0ypMa +_T0Sa9_getCountSiyFs17CodingUserInfoKeyV_ypt_Tg5 +?? +_T0s23_ContiguousArrayStorageCfD6SQLite11Expressible_p_Tg5 +wrap +_allocateUninitializedArray +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZ6SQLite11Expressible_p_Tg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZTfq4gnn_n6SQLite11Expressible_p_Tg5 +_T0s23_ContiguousArrayStorageCy6SQLite11Expressible_pGMa +_T06SQLite11Expressible_pMa +_T0s10CollectionP6SQLitesAARzAC5Value7ElementRpzSi13IndexDistanceRtzlE8containsAC10ExpressionVySbGAKyAFGFAC7Binding_pSgAFcfU_TA +_T0s10CollectionP6SQLitesAARzAC5Value7ElementRpzSi13IndexDistanceRtzlE8containsAC10ExpressionVySbGAKyAFGFAC7Binding_pSgAFcfU_ +objectdestroy.47 +objectdestroy.40 +init +_T0S2ayxGx9repeating_Si5counttcfCTfq4gnn_nSS_Tg5 +_T0Sa22_allocateUninitializedSayxG_SpyxGtSiFZSS_Tg5 +_T0S2ayxGSi19_uninitializedCount_tcfCSS_Tg5 +_T0Sa28_allocateBufferUninitializeds06_ArrayB0VyxGSi15minimumCapacity_tFZSS_Tg5 +_T0Sa28_allocateBufferUninitializeds06_ArrayB0VyxGSi15minimumCapacity_tFZSS_Tg5Tf4nd_n +_T0s22_ContiguousArrayBufferVAByxGSi19_uninitializedCount_Si15minimumCapacitytcfCSS_Tg5 +_T0s23_ContiguousArrayStorageCySSGMa +objectdestroy.26 +objectdestroy +joined +_T0s10CollectionPsE5count13IndexDistanceQzfgSS9UTF16ViewV_Tgq5 +_T0s16IndexingIteratorVyxGs0B8Protocolss14_IndexableBaseRzlsADP4next7ElementQzSgyFTWSaySSG_Tg5 +next +_T0Sis9EquatablessAAP2eeoiSbx_xtFZTW +_T0SayxGs14_IndexableBaseslsABP9formIndexy0D0Qzz5after_tFTWSS_Tg5 +_T0Sa9formIndexySiz5after_tFSS_Tg5 +_T0SayxGs14_IndexableBaseslsABP9subscript7ElementQz5IndexQzcfgTWSS_Tg5 +subscript.get +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktFSS_Tg5 +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtFSS_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tFSS_Tg5 +_T0SayxGs14_IndexableBaseslsABP8endIndex0D0QzfgTWSS_Tg5 +_T0Sa8endIndexSifgSS_Tg5 +_T0Sa9_getCountSiyFSS_Tg5 +_T0SayxGs8SequenceslsABP18_preprocessingPassqd__Sgqd__yKcKlFTWSS_SiTg5 +_T0s10CollectionPsE18_preprocessingPassqd__Sgqd__yKcKlFSaySSG_SiTg5 +_T0Sis5Error_pIxdzo_SisAA_pIxrzo_TR +_T0s8SequencePssAARzs14StringProtocol7ElementRpzlE7_joinedS2S9separator_tFSiycfU_SaySSG_Tg5 +_T0SayxGs8SequenceslsABP12makeIterator0C0QzyFTWSS_Tg5 +_T0s27_toStringReadOnlyStreamableSSxs010TextOutputE0RzlFTfq4g_nSS_Tg5Tf4n_g +_T0SSs20TextOutputStreamablessAAP5writeyqd__z2to_ts0aB6StreamRd__lFTWSS_Tg5 +_T0s20_ArrayBufferProtocolPsE20_arrayAppendSequenceyqd__s0F0Rd__7ElementQyd__AERtzlFTfq4gn_ns01_aB0Vy6SQLite7Binding_pSgG_s08IteratorF0Vys08IndexingJ0VySayALGGGTg5 +_T0s16IteratorSequenceVyxGs0A8ProtocolssADRzlsADP4next7ElementQzSgyFTWs08IndexingA0VySay6SQLite7Binding_pSgGG_Tg5 +_T0s16IteratorSequenceV4next7ElementQzSgyFs08IndexingA0VySay6SQLite7Binding_pSgGG_Tg5 +_T0s16IndexingIteratorVyxGs0B8Protocolss14_IndexableBaseRzlsADP4next7ElementQzSgyFTWSay6SQLite7Binding_pSgG_Tg5 +_T0SayxGs14_IndexableBaseslsABP9formIndexy0D0Qzz5after_tFTW6SQLite7Binding_pSg_Tg5 +_T0Sa9formIndexySiz5after_tF6SQLite7Binding_pSg_Tg5 +_T0SayxGs14_IndexableBaseslsABP9subscript7ElementQz5IndexQzcfgTW6SQLite7Binding_pSg_Tg5 +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtF6SQLite7Binding_pSg_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tF6SQLite7Binding_pSg_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifsTW6SQLite7Binding_pSg_Tg5 +_T0s12_ArrayBufferV5countSifs6SQLite7Binding_pSg_Tg5 +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktF6SQLite7Binding_pSg_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP19firstElementAddressSpy0E0QzGfgTW6SQLite7Binding_pSg_Tg5 +_T0s12_ArrayBufferV19firstElementAddressSpyxGfg6SQLite7Binding_pSg_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8capacitySifgTW6SQLite7Binding_pSg_Tg5 +_T0s12_ArrayBufferV8capacitySifg6SQLite7Binding_pSg_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifgTW6SQLite7Binding_pSg_Tg5 +_T0s12_ArrayBufferV5countSifg6SQLite7Binding_pSg_Tg5 +_T0SayxGs14_IndexableBaseslsABP8endIndex0D0QzfgTW6SQLite7Binding_pSg_Tg5 +_T0Sa8endIndexSifg6SQLite7Binding_pSg_Tg5 +_T0Sa9_getCountSiyF6SQLite7Binding_pSg_Tg5 +_T0s16IteratorSequenceVyxGs0B0ss0A8ProtocolRzlsADP04makeA00A0QzyFTWs08IndexingA0VySay6SQLite7Binding_pSgGG_Tg5 +_T0s11_StringCoreV6appendyx10contentsOf_ts8SequenceRzs6UInt16V7ElementRtzlFs11_UIntBufferVys6UInt64VAGG_Tgq5Tfq4xn_n +_T0s20ManagedBufferPointerVAByxq_GyXlXp010_uncheckedB5Class_Si15minimumCapacitytcfCs05_HeapB6HeaderVys07_StringB5IVarsVG_s6UInt16VTgq5Tfq4nnd_n +_T0s20ManagedBufferPointerV8capacitySifgs05_HeapB6HeaderVys07_StringB5IVarsVG_s6UInt16VTgq5 +_T0Sp10initializeyx2to_Si5counttFs17_HeapBufferHeaderVys07_StringE5IVarsVG_Tgq5 +_T0s13ManagedBufferCys05_HeapB6HeaderVys07_StringB5IVarsVGs6UInt16VGMa +_T0s17_HeapBufferHeaderVys07_StringB5IVarsVGMa +_T0s8SequencePsE8containsS2b7ElementQzKc5where_tKFSRys6UInt16VG_Tgq505_T0s6E37VSbs5Error_pIxydzo_ABSbsAC_pIxidzo_TRAHSbs0H0_pIxydzo_Tfq1cn_nTfq4ng_n +_T0s11_StringCoreV22isRepresentableAsASCIISbyFSbs6UInt16VcfU_ +_T0S2RyxGSPyxGSg5start_Si5counttcfCs6UInt16V_Tgq5Tfq4nnd_n +_T0SS13CharacterViewV6appendyx10contentsOf_ts8SequenceRzs0A0V7ElementRtzlFs3SetVyAGG_Tg5 +_T0s11SetIteratorVyxGs0B8Protocolss8HashableRzlsADP4next7ElementQzSgyFTWs9CharacterV_Tg5 +_T0s11SetIteratorV4nextxSgyFs9CharacterV_Tg5 +_T0s11SetIteratorV11_nativeNextxSgyFs9CharacterV_Tg5 +_T0s16_NativeSetBufferV12assertingGetxs01_aB5IndexVyxGFs9CharacterV_Tg5 +_T0s3SetVyxGs8Sequencess8HashableRzlsADP12makeIterator0E0QzyFTWs9CharacterV_Tg5 +_T0s3SetV12makeIterators0aC0VyxGyFs9CharacterV_Tg5 +_T0s16_NativeSetBufferV5indexs01_aB5IndexVyxGAF5after_tFs9CharacterV_Tg5 +_T0s3SetVyxGs8Sequencess8HashableRzlsADP19underestimatedCountSifgTWs9CharacterV_Tg5 +_T0s10CollectionPsE19underestimatedCountSifgs3SetVys9CharacterVG_Tg5 +_T0s3SetVyxGs10Collectionss8HashableRzlsADP5count13IndexDistanceQzfgTWs9CharacterV_Tg5 +_T0s3SetV5countSifgs9CharacterV_Tg5 +_T0S2Ss9CharacterVcfCTfq4nd_n +_T0s11_StringCoreV13_copyElementsySv_Si15srcElementWidthSv8dstStartSi0hfG0Si5counttFZTfq4nnnnnd_n +_T0s11_StringCoreV6appendyABFTfq4gXn_n +_T0s11_StringCoreV22isRepresentableAsASCIISbyFTfq4x_n +_T0S2SSaySSG19stringInterpolationd_tcfCTfq4nd_n +_T06SQLite11ScalarQueryVACyxGSS_SSSg8databasetcfcfA0_ +_T06SQLite12VirtualTableVACSS_SSSg8databasetcfcfA0_ +Query.swift +_T06SQLite4ViewVACSS_SSSg8databasetcfcfA0_ +_T06SQLite5TableVACSS_SSSg8databasetcfcfA0_ +_T06SQLite12TableBuilderC10foreignKeyyAA10ExpressionVyxG_AFyq_GAFyq0_Gt_AA9QueryType_p10referencesAG_AhItAC10DependencyOSg6updateAN6deletetAA5ValueRzAaQR_AaQR0_r1_lFfA2_ +_T06SQLite12TableBuilderC10foreignKeyyAA10ExpressionVyxG_AFyq_Gt_AA9QueryType_p10referencesAG_AHtAC10DependencyOSg6updateAM6deletetAA5ValueRzAaPR_r0_lFfA2_ +_T06SQLite12TableBuilderC10foreignKeyyAA10ExpressionVyxSgG_AA9QueryType_p10referencesAFyxGAC10DependencyOSg6updateAN6deletetAA5ValueRzlFfA3_ +_T06SQLite12TableBuilderC10foreignKeyyAA10ExpressionVyxSgG_AA9QueryType_p10referencesAFyxGAC10DependencyOSg6updateAN6deletetAA5ValueRzlFfA2_ +_T06SQLite12TableBuilderC10foreignKeyyAA10ExpressionVyxG_AA9QueryType_p10referencesAgC10DependencyOSg6updateAL6deletetAA5ValueRzlFfA3_ +_T06SQLite12TableBuilderC10foreignKeyyAA10ExpressionVyxG_AA9QueryType_p10referencesAgC10DependencyOSg6updateAL6deletetAA5ValueRzlFfA2_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxSgG_Sb6uniqueAFySbSgG5checkx12defaultValueAA9CollationO7collatetAA0I0RzSS8DatatypeRtzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxSgG_Sb6uniqueAFySbSgG5checkAH12defaultValueAA9CollationO7collatetAA0I0RzSS8DatatypeRtzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxSgG_Sb6uniqueAFySbSgG5checkAFyxGSg12defaultValueAA9CollationO7collatetAA0I0RzSS8DatatypeRtzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxSgG_Sb6uniqueAFySbGSg5checkx12defaultValueAA9CollationO7collatetAA0I0RzSS8DatatypeRtzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxSgG_Sb6uniqueAFySbGSg5checkAH12defaultValueAA9CollationO7collatetAA0I0RzSS8DatatypeRtzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxSgG_Sb6uniqueAFySbGSg5checkAFyxGSg12defaultValueAA9CollationO7collatetAA0I0RzSS8DatatypeRtzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxG_Sb6uniqueAFySbSgG5checkx12defaultValueAA9CollationO7collatetAA0I0RzSS8DatatypeRtzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxG_Sb6uniqueAFySbSgG5checkAGSg12defaultValueAA9CollationO7collatetAA0I0RzSS8DatatypeRtzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxG_Sb6uniqueAFySbGSg5checkx12defaultValueAA9CollationO7collatetAA0I0RzSS8DatatypeRtzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxG_Sb6uniqueAFySbGSg5checkAGSg12defaultValueAA9CollationO7collatetAA0I0RzSS8DatatypeRtzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxSgG_Sb6uniqueAFySbSgG5checkAA9QueryType_p10referencesAFyxGtAA5ValueRzs5Int64V8DatatypeRtzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxSgG_Sb6uniqueAFySbGSg5checkAA9QueryType_p10referencesAFyxGtAA5ValueRzs5Int64V8DatatypeRtzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxG_Sb6uniqueAFySbSgG5checkAA9QueryType_p10referencesAGtAA5ValueRzs5Int64V8DatatypeRtzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxG_Sb6uniqueAFySbGSg5checkAA9QueryType_p10referencesAGtAA5ValueRzs5Int64V8DatatypeRtzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxG_AA10PrimaryKeyO07primaryG0AFySbGSg5checktAA5ValueRzs5Int64V8DatatypeRtzlFfA1_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxSgG_Sb6uniqueAFySbSgG5checkx12defaultValuetAA0I0RzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxSgG_Sb6uniqueAFySbSgG5checkAH12defaultValuetAA0I0RzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxSgG_Sb6uniqueAFySbSgG5checkAFyxGSg12defaultValuetAA0I0RzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxSgG_Sb6uniqueAFySbGSg5checkx12defaultValuetAA0I0RzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxSgG_Sb6uniqueAFySbGSg5checkAH12defaultValuetAA0I0RzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxSgG_Sb6uniqueAFySbGSg5checkAFyxGSg12defaultValuetAA0I0RzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxG_Sb6uniqueAFySbSgG5checkx12defaultValuetAA0I0RzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxG_Sb6uniqueAFySbSgG5checkAGSg12defaultValuetAA0I0RzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxG_Sb6uniqueAFySbGSg5checkx12defaultValuetAA0I0RzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxG_Sb6uniqueAFySbGSg5checkAGSg12defaultValuetAA0I0RzlFfA0_ +_T06SQLite12VirtualTableV6createSSAA6ModuleV_Sb11ifNotExiststFfA0_ +Schema.swift +_T06SQLite4ViewV4dropSSSb8ifExists_tFfA_ +_T06SQLite4ViewV6createSSAA9QueryType_p_Sb9temporarySb11ifNotExiststFfA1_ +_T06SQLite4ViewV6createSSAA9QueryType_p_Sb9temporarySb11ifNotExiststFfA0_ +_T06SQLite5TableV9dropIndexSSSayAA11Expressible_pGd_Sb8ifExiststFfA0_ +_T06SQLite5TableV11createIndexSSSayAA11Expressible_pGd_Sb6uniqueSb11ifNotExiststFfA1_ +_T06SQLite5TableV11createIndexSSSayAA11Expressible_pGd_Sb6uniqueSb11ifNotExiststFfA0_ +_T06SQLite5TableV9addColumnSSAA10ExpressionVyxSgG_AFySbGSg5checkAG12defaultValueAA9CollationO7collatetAA0H0RzSS8DatatypeRtzlFfA1_ +_T06SQLite5TableV9addColumnSSAA10ExpressionVyxSgG_Sb6uniqueAFySbSgG5checkAA9QueryType_p10referencesAFyxGtAA5ValueRzs5Int64V8DatatypeRtzlFfA0_ +_T06SQLite5TableV9addColumnSSAA10ExpressionVyxSgG_Sb6uniqueAFySbGSg5checkAA9QueryType_p10referencesAFyxGtAA5ValueRzs5Int64V8DatatypeRtzlFfA0_ +_T06SQLite5TableV9addColumnSSAA10ExpressionVyxG_Sb6uniqueAFySbSgG5checkAA9QueryType_p10referencesAGtAA5ValueRzs5Int64V8DatatypeRtzlFfA0_ +_T06SQLite5TableV9addColumnSSAA10ExpressionVyxG_Sb6uniqueAFySbGSg5checkAA9QueryType_p10referencesAGtAA5ValueRzs5Int64V8DatatypeRtzlFfA0_ +_T06SQLite5TableV6createSSAA9QueryType_p_Sb9temporarySb11ifNotExiststFfA1_ +_T06SQLite5TableV6createSSAA9QueryType_p_Sb9temporarySb11ifNotExiststFfA0_ +_T06SQLite5TableV6createSSSb9temporary_Sb11ifNotExistsSb12withoutRowidyAA0B7BuilderCc5blocktFfA1_ +_T06SQLite5TableV6createSSSb9temporary_Sb11ifNotExistsSb12withoutRowidyAA0B7BuilderCc5blocktFfA0_ +_T06SQLite5TableV6createSSSb9temporary_Sb11ifNotExistsSb12withoutRowidyAA0B7BuilderCc5blocktFfA_ +_T06SQLite10SchemaTypePAAE4dropSSSb8ifExists_tFfA_ +_T06SQLite9FTSConfigC6columnACXDAA11Expressible_p_SayAC12ColumnOptionOGtFfA0_ +_T06SQLite9TokenizerV9Unicode61ACSbSg16removeDiacritics_s3SetVys9CharacterVG10tokencharsAK10separatorstFZfA0_ +FTS4.swift +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Extensions +_T0s3SetVAByxGSayxG12arrayLiterald_tcfCTfq4gn_ns9CharacterV_Tg5 +_T0s16_NativeSetBufferVss8HashableRzlE9fromArrayAByxGSayxGFZTfq4gn_ns9CharacterV_Tg5 +_T06SQLite9TokenizerV9Unicode61ACSbSg16removeDiacritics_s3SetVys9CharacterVG10tokencharsAK10separatorstFZfA_ +_T06SQLite6ModuleV4FTS4ACSayAA11Expressible_pG_AA9TokenizerVSg8tokenizetFZfA_ +_T06SQLite6ModuleV4FTS4ACSayAA11Expressible_pG_AA9TokenizerVSg8tokenizetFZfA0_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_GtcSS_Sb13deterministicxq__q0_tctKAA5ValueRzAaKR_AaKR0_r1_lFfA0_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_GcSS_Sb13deterministicxq_ctKAA5ValueRzAaJR_r0_lFfA0_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGycSS_Sb13deterministicAGyctKAA5ValueRzlFfA0_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGycSS_Sb13deterministicxyctKAA5ValueRzlFfA0_ +_T06SQLite10ConnectionC14createFunctionySS_SuSg13argumentCountSb13deterministicAA7Binding_pSgSayAIGctFfA1_ +Connection.swift +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core +_T06SQLite10ConnectionC14createFunctionySS_SuSg13argumentCountSb13deterministicAA7Binding_pSgSayAIGctFfA0_ +_T06SQLite10ConnectionC9savepointySS_yyKc5blocktKFfA_ +_T06SQLite10ConnectionC11transactionyAC15TransactionModeO_yyKc5blocktKFfA_ +_T06SQLite10ConnectionCACSS_Sb8readonlytKcfcfA0_ +_T06SQLite10ConnectionC11busyTimeoutSdvfi +_T06SQLite10ConnectionCA2C8LocationO_Sb8readonlytKcfcfA0_ +_T06SQLite10ConnectionCA2C8LocationO_Sb8readonlytKcfcfA_ +append +_T0Sa24reserveCapacityForAppendySi16newElementsCount_tF6SQLite7Binding_pSg_Tg5 +_T0Sr5countSifg6SQLite7Binding_pSg_Tg5 +_T0SayxGs8SequenceslsABP13_copyContents8IteratorQz_SitSry7ElementQzG12initializing_tFTW6SQLite7Binding_pSg_Tg5 +_T0Sa13_copyContentss16IndexingIteratorVySayxGG_SitSryxG12initializing_tF6SQLite7Binding_pSg_Tg5 +_T0Sa12_getCapacitySiyF6SQLite7Binding_pSg_Tg5 +_T0SayxGs8SequenceslsABP19underestimatedCountSifgTW6SQLite7Binding_pSg_Tg5 +_T0s10CollectionPsE19underestimatedCountSifgSay6SQLite7Binding_pSgG_Tg5 +_T0SayxGs10CollectionslsABP5count13IndexDistanceQzfgTW6SQLite7Binding_pSg_Tg5 +count.get +_T06SQLite3RowV7decoders7Decoder_ps10DictionaryVys17CodingUserInfoKeyVypG04userH0_tFfA_ +Coding.swift +_T0s10DictionaryVAByxq_GSayx_q_tG17dictionaryLiterald_tcfCTfq4gn_ns17CodingUserInfoKeyV_ypTg5 +_T0s23_NativeDictionaryBufferVss8HashableRzr0_lE9fromArrayAByxq_GSayx_q_tGFZTfq4gn_ns17CodingUserInfoKeyV_ypTg5 +_T06SQLite3RowV6decodexs10DictionaryVys17CodingUserInfoKeyVypG04userG0_tKs9DecodableRzlFfA_ +_T06SQLite3RowV6decodexs10DictionaryVys17CodingUserInfoKeyVypG04userG0_tKs9DecodableRzlFfA_Tf4_n +_T06SQLite9QueryTypePAAE6insertAA6InsertVs9Encodable_p_s10DictionaryVys17CodingUserInfoKeyVypG04userJ0SayAA6SetterVG12otherSetterstKFfA1_ +like ++ +_T0SayxGs26RangeReplaceableCollectionslsABP6appendyqd__10contentsOf_ts8SequenceRd__7ElementQyd__AGRtzlFTW6SQLite7Binding_pSg_SayALGTg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZ6SQLite7Binding_pSg_Tg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZTfq4gnn_n6SQLite7Binding_pSg_Tg5 +_T0s23_ContiguousArrayStorageCy6SQLite7Binding_pSgGMa +_T06SQLite7Binding_pSgMa +_T06SQLite7Binding_pMa +_T0s27_toStringReadOnlyStreamableSSxs010TextOutputE0RzlFTfq4g_nSS_Tg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZSS_Tg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZTfq4gnn_nSS_Tg5 +_T06SQLite10ExpressionVySSGMa +_T0SS6SQLiteE4likeAA10ExpressionVySbGADySSG_s9CharacterVSg6escapetFfA0_ +contains +_T06SQLite10ExpressionVyytGMa +substring +_T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE9substringAA0B0VyADGSi_SiSg6lengthtFfA0_ +replace +trim +_T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE4trimAA0B0VyADGs3SetVys9CharacterVGSgFfA_ +ltrim +_T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE5rtrimAA0B0VyADGs3SetVys9CharacterVGSgFfA_ +_T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE5ltrimAA0B0VyADGs3SetVys9CharacterVGSgFfA_ +collate +glob +_T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE4likeAA0B0VySbSgGAIySSG_s9CharacterVSg6escapetFfA0_ +_T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE4likeAA0B0VySbSgGSS_s9CharacterVSg6escapetFfA0_ +lowercaseString.get +length.get +_T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE9substringAA0B0VySSGSi_SiSg6lengthtFfA0_ +_T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE4trimAA0B0VySSGs3SetVys9CharacterVGSgFfA_ +_T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE5rtrimAA0B0VySSGs3SetVys9CharacterVGSgFfA_ +_T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE5ltrimAA0B0VySSGs3SetVys9CharacterVGSgFfA_ +_T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE4likeAA0B0VySbGAHySSG_s9CharacterVSg6escapetFfA0_ +_T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE4likeAA0B0VySbGSS_s9CharacterVSg6escapetFfA0_ +random +round +_T06SQLite14ExpressionTypePA2aBRzSdSg010UnderlyingC0RtzlE5roundAA0B0VyADGSiSgFfA_ +_T06SQLite14ExpressionTypePA2aBRzSd010UnderlyingC0RtzlE5roundAA0B0VySdGSiSgFfA_ +absoluteValue.get +__swift_allocate_boxed_opaque_existential_1 +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLCMa +___swift_project_boxed_opaque_existential_1 +__T06SQLite9QueryTypePAAE6insertAA6InsertVs9Encodable_p_s10DictionaryVys17CodingUserInfoKeyVypG04userJ0SayAA6SetterVG12otherSetterstKFTm +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC10codingPathSays9CodingKey_pGfg +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCAFy_xGAD7encoder_tcfc +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC05superB0s0B0_pyF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC05superB0s0B0_px6forKey_tF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC9encodeNilyx6forKey_tKF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeySi_x6forKeytKF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeySb_x6forKeytKF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeySf_x6forKeytKF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeySd_x6forKeytKF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeySS_x6forKeytKF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeyqd___x6forKeytKs9EncodableRd__lF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeys4Int8V_x6forKeytKF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeys5Int16V_x6forKeytKF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeys5Int32V_x6forKeytKF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeys5Int64V_x6forKeytKF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeySu_x6forKeytKF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeys5UInt8V_x6forKeytKF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeys4Int8V_x6forKeytKFTm +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeys6UInt16V_x6forKeytKF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeys5Int16V_x6forKeytKFTm +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeys6UInt32V_x6forKeytKF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeys5Int32V_x6forKeytKFTm +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeys6UInt64V_x6forKeytKF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeys5Int64V_x6forKeytKFTm +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC06nestedK0s0ijK0Vyqd__Gqd__m7keyedBy_x6forKeyts06CodingP0Rd__lF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC013nestedUnkeyedK0s0mjK0_px6forKey_tF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCfd +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCfD +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP10codingPathSaysAI_pGfgTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP9encodeNily0N0Qz03forN0_tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6encodeySb_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6encodeySi_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6encodeys4Int8V_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6encodeys5Int16V_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6encodeys5Int32V_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6encodeys5Int64V_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6encodeySu_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6encodeys5UInt8V_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6encodeys6UInt16V_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6encodeys6UInt32V_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6encodeys6UInt64V_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6encodeySf_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6encodeySd_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6encodeySS_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6encodeyqd___0N0Qz03forN0tKs9EncodableRd__lFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP17encodeConditionalyqd___0N0Qz03forN0tKRld__Cs9EncodableRd__lFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentySbSg_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentySiSg_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentys4Int8VSg_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentys5Int16VSg_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentys5Int32VSg_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentys5Int64VSg_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentySuSg_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentys5UInt8VSg_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentys4Int8VSg_0N0Qz03forN0tKFTWTm +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentys6UInt16VSg_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentys5Int16VSg_0N0Qz03forN0tKFTWTm +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentys6UInt32VSg_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentys6UInt64VSg_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentySfSg_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentys5Int32VSg_0N0Qz03forN0tKFTWTm +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentySdSg_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentySSSg_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentyqd__Sg_0N0Qz03forN0tKs9EncodableRd__lFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP06nestedK0s0ijK0Vyqd__Gqd__m7keyedBy_0N0Qz03forN0tsAIRd__lFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP013nestedUnkeyedK0s0pjK0_p0N0Qz03forN0_tFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP05superB0s0B0_pyFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP05superB0s0B0_p0N0Qz03forN0_tFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC9containers22KeyedEncodingContainerVyxGxm7keyedBy_ts9CodingKeyRzlF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLCfD +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLCs0B0AAsAEP10codingPathSays9CodingKey_pGfgTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLCs0B0AAsAEP8userInfos10DictionaryVys010CodingUserJ3KeyVypGfgTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLCs0B0AAsAEP9containers22KeyedEncodingContainerVyqd__Gqd__m7keyedBy_ts9CodingKeyRd__lFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLCs0B0AAsAEP16unkeyedContainers015UnkeyedEncodingJ0_pyFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLCs0B0AAsAEP20singleValueContainers06Singlej8EncodingK0_pyFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC10codingPathSays9CodingKey_pGfg +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCAFy_xGAA3RowV3row_tcfc +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC7allKeysSayxGfg +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC8containsSbxF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC9decodeNilSbx6forKey_tKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodeS2bm_x6forKeytKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodeS2im_x6forKeytKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodes4Int8VAIm_x6forKeytKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodes5Int16VAIm_x6forKeytKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodes5Int32VAIm_x6forKeytKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodes5Int64VAIm_x6forKeytKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodeS2um_x6forKeytKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodes5UInt8VAIm_x6forKeytKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodes4Int8VAIm_x6forKeytKFTm +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodes6UInt16VAIm_x6forKeytKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodes5Int16VAIm_x6forKeytKFTm +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodes6UInt32VAIm_x6forKeytKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodes5Int32VAIm_x6forKeytKFTm +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodes6UInt64VAIm_x6forKeytKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodes5Int64VAIm_x6forKeytKFTm +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodeS2fm_x6forKeytKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodeS2dm_x6forKeytKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodeS2Sm_x6forKeytKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodeqd__qd__m_x6forKeytKs9DecodableRd__lF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC06nestedK0s0ijK0Vyqd__Gqd__m7keyedBy_x6forKeytKs06CodingP0Rd__lF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC013nestedUnkeyedK0s0mjK0_px6forKey_tKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC05superB0s0B0_pyKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC05superB0s0B0_px6forKey_tKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC013nestedUnkeyedK0s0mjK0_px6forKey_tKFTm +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCfd +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCfD +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP10codingPathSaysAI_pGfgTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP7allKeysSay0N0QzGfgTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP8containsSb0N0QzFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP9decodeNilSb0N0Qz03forN0_tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6decodeS2bm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6decodeS2im_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6decodes4Int8VAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6decodes5Int16VAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6decodes5Int32VAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6decodes5Int64VAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6decodeS2um_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6decodes5UInt8VAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6decodes6UInt16VAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6decodes6UInt32VAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6decodes6UInt64VAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6decodeS2fm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6decodeS2dm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6decodeS2Sm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6decodeqd__qd__m_0N0Qz03forN0tKs9DecodableRd__lFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresentSbSgSbm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresentSiSgSim_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresents4Int8VSgAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresents5Int16VSgAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresents5Int32VSgAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresents5Int64VSgAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresentSuSgSum_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresents5UInt8VSgAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresents4Int8VSgAMm_0N0Qz03forN0tKFTWTm +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresents6UInt16VSgAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresents5Int16VSgAMm_0N0Qz03forN0tKFTWTm +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresents6UInt32VSgAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresents6UInt64VSgAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresentSfSgSfm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresents5Int32VSgAMm_0N0Qz03forN0tKFTWTm +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresentSdSgSdm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresentSiSgSim_0N0Qz03forN0tKFTWTm +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresentSSSgSSm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresentqd__Sgqd__m_0N0Qz03forN0tKs9DecodableRd__lFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP06nestedK0s0ijK0Vyqd__Gqd__m7keyedBy_0N0Qz03forN0tKsAIRd__lFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP013nestedUnkeyedK0s0pjK0_p0N0Qz03forN0_tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP05superB0s0B0_pyKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP05superB0s0B0_p0N0Qz03forN0_tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC9containers22KeyedDecodingContainerVyxGxm7keyedBy_tKs9CodingKeyRzlF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCfD +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCs0B0AAsAEP10codingPathSays9CodingKey_pGfgTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCs0B0AAsAEP8userInfos10DictionaryVys010CodingUserJ3KeyVypGfgTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCs0B0AAsAEP9containers22KeyedDecodingContainerVyqd__Gqd__m7keyedBy_tKs9CodingKeyRd__lFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCs0B0AAsAEP16unkeyedContainers015UnkeyedDecodingJ0_pyKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCs0B0AAsAEP20singleValueContainers06Singlej8DecodingK0_pyKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCs0B0AAsAEP16unkeyedContainers015UnkeyedDecodingJ0_pyKFTWTm +__T0Sa6appendyqd__10contentsOf_t7ElementQyd__Rszs8SequenceRd__lF6SQLite6SetterV_SayAHGTg5 +__T0Sa16_copyToNewBufferySi8oldCount_tF6SQLite6SetterV_Tg5 +__T0s20_ArrayBufferProtocolPsE20_arrayAppendSequenceyqd__s0F0Rd__7ElementQyd__AERtzlFTfq4gn_ns01_aB0Vy6SQLite6SetterVG_s08IteratorF0Vys08IndexingJ0VySayALGGGTg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vy6SQLite6SetterVG_Tg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0Vy6SQLite6SetterVG_s07_IgnoreK0VyAOGTg5 +__T0Sa15reserveCapacityySiF6SQLite6SetterV_Tg5 +__T0SS6SQLiteE5quoteSSs9CharacterVFTf4gn_n +__T06SQLite9QueryTypePAAE6insertAA6InsertVSayAA6SetterVGFTf4gn_n +__T06SQLite9QueryTypePAAE6updateAA6UpdateVSayAA6SetterVGFTf4gn_n +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCMa +_swift_rt_swift_getInitializedObjCClass +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCMa +_swift_rt_swift_getGenericMetadata +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCMa +_swift_rt_swift_slowAlloc +_swift_rt_swift_slowDealloc +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzl0N0Wt +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzl0N0sAIPWT +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC10codingPathSays9CodingKey_pGfgTf4n_g +__T06SQLite14ExpressionTypePA2aBRzAA09_OptionalC0010UnderlyingC0RpzAA5ValueAE_07WrappedC0RPzlExAISg5value_tcfCAA0B0VySSSgG_Tg5Tf4nd_n +__T0Sa6appendyxFTfq43gn_n +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeySS_x6forKeytKFTf4gXnn_n +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC06nestedK0s0ijK0Vyqd__Gqd__m7keyedBy_x6forKeyts06CodingP0Rd__lFTf4ddd_n +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC10codingPathSays9CodingKey_pGfgTf4n_g +__T0s8SequencePsE7flatMapSayqd__Gqd__Sg7ElementQzKcKlFTfq4gn_n +__T06SQLite3RowV8hasValueSbSS3for_tFTf4gXx_n +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC8containsSbxFTf4gn_n +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC9decodeNilSbx6forKey_tKFTf4gn_n +__T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlFSb_Tg5Tf4xx_n +__T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlFSi_Tg5Tf4xx_n +__T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlFSd_Tg5Tf4xx_n +__T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlFSS_Tg5Tf4xx_n +__T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlF10Foundation4DataV_Tg5Tf4xx_n +_swift_rt_swift_dynamicCast +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC7allKeysSayxGfgxSgSScfU_TA +__T0SSxSgs5Error_pIxxrzo_SSAAsAB_pIxirzo_s9CodingKeyRzlTRTA +_swift_rt_swift_getEnumCaseSinglePayload +_swift_rt_swift_isUniquelyReferenced_nonNull_native +___swift_deallocate_boxed_opaque_existential_1 +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzl0N0Wt +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzl0N0sAIPWT +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLCMm +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC7settersSayAA6SetterVGvWvd +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC10codingPathSays9CodingKey_pGvWvd +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC8userInfos10DictionaryVys010CodingUserJ3KeyVypGvWvd +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLCMn +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLCML +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLCMf +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCMn +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC7encoderADvWvd +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC10codingPathSays9CodingKey_pGvWvd +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCMP +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCMF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLCMF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCMm +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC3rowAA3RowVvWvd +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC10codingPathSays9CodingKey_pGvWvd +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC8userInfos10DictionaryVys010CodingUserJ3KeyVypGvWvd +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCMn +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCML +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCMf +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCMn +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC10codingPathSays9CodingKey_pGvWvd +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC3rowAA3RowVvWvd +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCMP +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCMF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCMF +__T0Says9CodingKey_pGML +__T0s9CodingKey_pML +__T0s10DictionaryVys17CodingUserInfoKeyVypGML +__T0Say6SQLite6SetterVGML +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlWP +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlWP +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCs0B0AAWP +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLCs0B0AAWP +__T0s10DictionaryV4KeysVySSSi_GML +__T0s10DictionaryVySSSiGML +__T0s10DictionaryV4KeysVySSSi_GADyxq__Gs8Sequencess8HashableRzr0_lWL +__T06SQLite10ExpressionVySSSgGML +__T0SSSgML +__T06SQLite10ExpressionVy10Foundation4DataVGML +__T0s23_ContiguousArrayStorageCy6SQLite6SetterVGML +__T06SQLite10ExpressionVySdGML +__T06SQLite10ExpressionVySbGML +__T06SQLite10ExpressionVySiGML +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlMA +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlMA +_objc_classes +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLCN +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCN +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Coding.swift +__swift_deallocate_boxed_opaque_existential_1 +objectdestroy.12 +_T0SSxSgs5Error_pIxxrzo_SSAAsAB_pIxirzo_s9CodingKeyRzlTRTA +_T0SSxSgs5Error_pIxxrzo_SSAAsAB_pIxirzo_s9CodingKeyRzlTR +objectdestroy.8 +_T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC7allKeysSayxGfgxSgSScfU_TA +_T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC7allKeysSayxGfgxSgSScfU_ +decodeNil +hasValue +flatMap +_T0Sa22_allocateUninitializedSayxG_SpyxGtSiFZ +_T0S2ayxGSi19_uninitializedCount_tcfC +codingPath.get +nestedContainer +encode +_T0Sa36_reserveCapacityAssumingUniqueBufferySi8oldCount_tF6SQLite6SetterV_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tF6SQLite6SetterV_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFTfq4ngn_n6SQLite6SetterV_Tg5 +_T0s12_ArrayBufferV5countSifs6SQLite6SetterV_Tg5 +_T0Sa9_getCountSiyF6SQLite6SetterV_Tg5 +_T0Sa034_makeUniqueAndReserveCapacityIfNotB0yyF6SQLite6SetterV_Tg5 +<- +quote +_T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzl0N0sAIPWT +_T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzl0N0Wt +create_generic_metadata_SQLiteKeyedDecodingContainer +_T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCMa +_T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCMa +get_field_types_SQLiteKeyedDecodingContainer +_T0Says9CodingKey_pGMa +_T0s9CodingKey_pMa +get_field_types_SQLiteDecoder +_T0s10DictionaryVys17CodingUserInfoKeyVypGMa +create_generic_metadata_SQLiteKeyedEncodingContainer +_T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLCMa +_T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCMa +get_field_types_SQLiteKeyedEncodingContainer +get_field_types_SQLiteEncoder +_T0Say6SQLite6SetterVGMa +_T0Sa15reserveCapacityySiF6SQLite6SetterV_Tg5 +_T0s22_ContiguousArrayBufferV18_initStorageHeaderySi5count_Si8capacitytF6SQLite6SetterV_Tg5 +_T0s23_ContiguousArrayStorageCy6SQLite6SetterVGMa +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtFTfq4xnn_n6SQLite6SetterV_Tg5 +_T0s12_ArrayBufferV8endIndexSifg6SQLite6SetterV_Tg5 +_T0s12_ArrayBufferV20isUniquelyReferencedSbyF6SQLite6SetterV_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0Vy6SQLite6SetterVG_s07_IgnoreK0VyAOGTg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subG0_AI12initializingtFTW6SQLite6SetterV_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtF6SQLite6SetterV_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFTfq4xnn_n6SQLite6SetterV_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP19firstElementAddressSpy0E0QzGfgTW6SQLite6SetterV_Tg5 +_T0s12_ArrayBufferV19firstElementAddressSpyxGfg6SQLite6SetterV_Tg5 +_T0Sp10initializeySPyxG4from_Si5counttF6SQLite6SetterV_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8endIndexSifgTW6SQLite6SetterV_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP027requestUniqueMutableBackingB0s011_ContiguousaB0Vy7ElementQzGSgSi15minimumCapacity_tFTW6SQLite6SetterV_Tg5 +_T0s12_ArrayBufferV027requestUniqueMutableBackingB0s011_ContiguousaB0VyxGSgSi15minimumCapacity_tF6SQLite6SetterV_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifgTW6SQLite6SetterV_Tg5 +_T0s12_ArrayBufferV5countSifg6SQLite6SetterV_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vy6SQLite6SetterVG_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8capacitySifgTW6SQLite6SetterV_Tg5 +_T0s12_ArrayBufferV8capacitySifg6SQLite6SetterV_Tg5 +_T0s20_ArrayBufferProtocolPsE20_arrayAppendSequenceyqd__s0F0Rd__7ElementQyd__AERtzlFTfq4gn_ns01_aB0Vy6SQLite6SetterVG_s08IteratorF0Vys08IndexingJ0VySayALGGGTg5 +_T0s16IteratorSequenceVyxGs0A8ProtocolssADRzlsADP4next7ElementQzSgyFTWs08IndexingA0VySay6SQLite6SetterVGG_Tg5 +_T0s16IteratorSequenceV4next7ElementQzSgyFs08IndexingA0VySay6SQLite6SetterVGG_Tg5 +_T0s16IndexingIteratorVyxGs0B8Protocolss14_IndexableBaseRzlsADP4next7ElementQzSgyFTWSay6SQLite6SetterVG_Tg5 +_T0SayxGs14_IndexableBaseslsABP9formIndexy0D0Qzz5after_tFTW6SQLite6SetterV_Tg5 +_T0Sa9formIndexySiz5after_tF6SQLite6SetterV_Tg5 +_T0SayxGs14_IndexableBaseslsABP9subscript7ElementQz5IndexQzcfgTW6SQLite6SetterV_Tg5 +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtF6SQLite6SetterV_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tF6SQLite6SetterV_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifsTW6SQLite6SetterV_Tg5 +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktF6SQLite6SetterV_Tg5 +_T0SayxGs14_IndexableBaseslsABP8endIndex0D0QzfgTW6SQLite6SetterV_Tg5 +_T0Sa8endIndexSifg6SQLite6SetterV_Tg5 +_T0s16IteratorSequenceVyxGs0B0ss0A8ProtocolRzlsADP04makeA00A0QzyFTWs08IndexingA0VySay6SQLite6SetterVGG_Tg5 +_T0Sa16_copyToNewBufferySi8oldCount_tF6SQLite6SetterV_Tg5 +_T0Sa24reserveCapacityForAppendySi16newElementsCount_tF6SQLite6SetterV_Tg5 +_T0Sr5countSifg6SQLite6SetterV_Tg5 +_T0SayxGs8SequenceslsABP13_copyContents8IteratorQz_SitSry7ElementQzG12initializing_tFTW6SQLite6SetterV_Tg5 +_T0Sa13_copyContentss16IndexingIteratorVySayxGG_SitSryxG12initializing_tF6SQLite6SetterV_Tg5 +_T0Sa12_getCapacitySiyF6SQLite6SetterV_Tg5 +_T0SayxGs8SequenceslsABP19underestimatedCountSifgTW6SQLite6SetterV_Tg5 +_T0s10CollectionPsE19underestimatedCountSifgSay6SQLite6SetterVG_Tg5 +_T0SayxGs10CollectionslsABP5count13IndexDistanceQzfgTW6SQLite6SetterV_Tg5 +unkeyedContainer +container +userInfo.get +deinit +superDecoder +nestedUnkeyedContainer +decodeIfPresent +decode +allKeys.get +get +== +_T0s10DictionaryV4KeysVySSSi_GADyxq__Gs8Sequencess8HashableRzr0_lWl +_T0s10DictionaryV4KeysVySSSi_GMa +_T0s10DictionaryVySSSiGMa +singleValueContainer +superEncoder +encodeIfPresent +encodeConditional +encodeNil +_T06SQLite10ExpressionVySSSgGMa +_T0SSSgMa +_T06SQLite10ExpressionVy10Foundation4DataVGMa +_T06SQLite10ExpressionVySdGMa +_T06SQLite10ExpressionVySbGMa +_T06SQLite10ExpressionVySiGMa +datatypeValue.get +decoder +insert +_T0SayxGs26RangeReplaceableCollectionslsABP6appendyqd__10contentsOf_ts8SequenceRd__7ElementQyd__AGRtzlFTW6SQLite6SetterV_SayALGTg5 +__swift_destroy_boxed_opaque_existential_1 +__swift_project_boxed_opaque_existential_1 +__T0Sa6appendyqd__10contentsOf_t7ElementQyd__Rszs8SequenceRd__lF6SQLite11Expressible_p_SayAfG_pGTg5 +__T0s20_ArrayBufferProtocolPsE20_arrayAppendSequenceyqd__s0F0Rd__7ElementQyd__AERtzlFTfq4gn_ns01_aB0Vy6SQLite11Expressible_pG_s08IteratorF0Vys08IndexingJ0VySayAjK_pGGGTg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vy6SQLite11Expressible_pG_Tg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0Vy6SQLite11Expressible_pG_s07_IgnoreK0VyAmN_pGTg5 +__T0Sa15reserveCapacityySiF6SQLite11Expressible_p_Tg5 +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Extensions/RTree.swift +RTree.swift +_T0Sa15reserveCapacityySiF6SQLite11Expressible_p_Tg5 +_T0s22_ContiguousArrayBufferV18_initStorageHeaderySi5count_Si8capacitytF6SQLite11Expressible_p_Tg5 +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtFTfq4xnn_n6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferV8endIndexSifg6SQLite11Expressible_p_Tg5 +_T0Sa9_getCountSiyF6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferV20isUniquelyReferencedSbyF6SQLite11Expressible_p_Tg5 +_T0s20_ArrayBufferProtocolPsE20_arrayAppendSequenceyqd__s0F0Rd__7ElementQyd__AERtzlFTfq4gn_ns01_aB0Vy6SQLite11Expressible_pG_s08IteratorF0Vys08IndexingJ0VySayAjK_pGGGTg5 +_T0s16IteratorSequenceVyxGs0A8ProtocolssADRzlsADP4next7ElementQzSgyFTWs08IndexingA0VySay6SQLite11Expressible_pGG_Tg5 +_T0s16IteratorSequenceV4next7ElementQzSgyFs08IndexingA0VySay6SQLite11Expressible_pGG_Tg5 +_T0s16IndexingIteratorVyxGs0B8Protocolss14_IndexableBaseRzlsADP4next7ElementQzSgyFTWSay6SQLite11Expressible_pG_Tg5 +_T0SayxGs14_IndexableBaseslsABP9formIndexy0D0Qzz5after_tFTW6SQLite11Expressible_p_Tg5 +_T0Sa9formIndexySiz5after_tF6SQLite11Expressible_p_Tg5 +_T0SayxGs14_IndexableBaseslsABP9subscript7ElementQz5IndexQzcfgTW6SQLite11Expressible_p_Tg5 +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtF6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tF6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifsTW6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferV5countSifs6SQLite11Expressible_p_Tg5 +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktF6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP19firstElementAddressSpy0E0QzGfgTW6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferV19firstElementAddressSpyxGfg6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8capacitySifgTW6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferV8capacitySifg6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifgTW6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferV5countSifg6SQLite11Expressible_p_Tg5 +_T0SayxGs14_IndexableBaseslsABP8endIndex0D0QzfgTW6SQLite11Expressible_p_Tg5 +_T0Sa8endIndexSifg6SQLite11Expressible_p_Tg5 +_T0s16IteratorSequenceVyxGs0B0ss0A8ProtocolRzlsADP04makeA00A0QzyFTWs08IndexingA0VySay6SQLite11Expressible_pGG_Tg5 +_T0Sa24reserveCapacityForAppendySi16newElementsCount_tF6SQLite11Expressible_p_Tg5 +_T0Sr5countSifg6SQLite11Expressible_p_Tg5 +_T0SayxGs8SequenceslsABP13_copyContents8IteratorQz_SitSry7ElementQzG12initializing_tFTW6SQLite11Expressible_p_Tg5 +_T0Sa13_copyContentss16IndexingIteratorVySayxGG_SitSryxG12initializing_tF6SQLite11Expressible_p_Tg5 +_T0Sa12_getCapacitySiyF6SQLite11Expressible_p_Tg5 +_T0SayxGs8SequenceslsABP19underestimatedCountSifgTW6SQLite11Expressible_p_Tg5 +_T0s10CollectionPsE19underestimatedCountSifgSay6SQLite11Expressible_pG_Tg5 +_T0SayxGs10CollectionslsABP5count13IndexDistanceQzfgTW6SQLite11Expressible_p_Tg5 +RTree +_T0SayxGs14_IndexableBaseslsABP9formIndexy0D0Qzz5after_tFTW +_T0Sa9formIndexySiz5after_tF +_T0SayxGs14_IndexableBaseslsABP8endIndex0D0QzfgTW +_T0Sa8endIndexSifg +_T0SayxGs14_IndexableBaseslsABP9subscript7ElementQz5IndexQzcfgTW +__T06SQLite4BlobVs23CustomStringConvertibleAAsADP11descriptionSSfgTW +__T06SQLite4BlobVs9EquatableAAsADP2eeoiSbx_xtFZTW +__T0SS21_fromCodeUnitSequenceSSSgxm_q_5inputts16_UnicodeEncodingRzs10CollectionR_7ElementQy_0bC0Rtzr0_lFZs0F0O4UTF8O_SRys5UInt8VGTgq5Tfq4nxd_n +__T0s7UnicodeO5UTF16O16transcodedLengthSi5count_Sb7isASCIItSgx2of_q_m9decodedAsSb27repairingIllFormedSequencests16IteratorProtocolRzs01_A8EncodingR_8CodeUnitQy_7ElementRtzr0_lFZs019UnsafeBufferPointerO0Vys5UInt8VG_AB4UTF8OTgq5Tfq4xnnd_n +__T0s13_StringBufferVABSi8capacity_Si11initialSizeSi12elementWidthtcfCTfq4nnnd_n +__T0s26RangeReplaceableCollectionPsE6remove7ElementQz5IndexQz2at_tFs11_UIntBufferVys6UInt32Vs5UInt8VG_Tgq5 +__T0s7UnicodeO4UTF8O13ForwardParserV14_invalidLengths5UInt8VyFTfq4x_n +__T0s7UnicodeO5UTF16O6encodes11_UIntBufferVys6UInt32Vs6UInt16VGSgAB6ScalarVFZTfq4nd_n +__T0s15ContiguousArrayV15reserveCapacityySiFSS_Tg5 +__T0s2eeoiSbSayxG_ABts9EquatableRzlFTfq4gg_ns5UInt8V_Tg5 +__T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tFSS_Tg5 +__T0s22_ContiguousArrayBufferVAByxGSi19_uninitializedCount_Si15minimumCapacitytcfCs5UInt8V_Tg5Tf4nnd_n +__T06SQLite4BlobVwXX +__T06SQLite4BlobVwCP +___swift_noop_self_return +___swift_noop_void_return +__T06SQLite4BlobVwcp +__T06SQLite4BlobVwca +___swift_memcpy8_8 +__T06SQLite4BlobVwta +__T06SQLite4BlobVwXx +__T06SQLite4BlobVwCc +___swift_memmove_array8_8 +__T06SQLite4BlobVwxs +__T06SQLite4BlobVwxg +__T06SQLite4BlobVwCp +__T06SQLite4BlobVwxx +__T06SQLite4BlobVWV +__T06SQLite4BlobVMf +__T06SQLite4BlobVMF +__T0Says5UInt8VGML +__T0s23_ContiguousArrayStorageCys5UInt8VGML +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Blob.swift +_T06SQLite4BlobVMa +Blob.swift +get_field_types_Blob +_T0Says5UInt8VGMa +_T06SQLite4BlobVwxg +_T06SQLite4BlobVwxs +__swift_memmove_array8_8 +_T06SQLite4BlobVwCc +_T06SQLite4BlobVwXx +_T06SQLite4BlobVwta +__swift_memcpy8_8 +_T06SQLite4BlobVwca +_T06SQLite4BlobVwcp +__swift_noop_void_return +__swift_noop_self_return +_T06SQLite4BlobVwCP +_T06SQLite4BlobVwXX +_T06SQLite4BlobVs9EquatableAAWa +_T06SQLite4BlobVs23CustomStringConvertibleAAWa +_T0s22_ContiguousArrayBufferVAByxGSi19_uninitializedCount_Si15minimumCapacitytcfCs5UInt8V_Tg5Tf4nnd_n +_T0s23_ContiguousArrayStorageCys5UInt8VGMa +_T0s2eeoiSbSayxG_ABts9EquatableRzlFTfq4gg_ns5UInt8V_Tg5 +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktFs5UInt8V_Tg5 +_T0s5UInt8Vs9EquatablessACP2eeoiSbx_xtFZTW +_T0s12_ArrayBufferV8identitySVfgs5UInt8V_Tg5 +_T0Sa9_getCountSiyFs5UInt8V_Tg5 +_T0s15ContiguousArrayV15reserveCapacityySiFSS_Tg5 +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtFTfq4xnn_nSS_Tg5 +_T0s15ContiguousArrayV9_getCountSiyFSS_Tg5 +_T0SS21_fromCodeUnitSequenceSSSgxm_q_5inputts16_UnicodeEncodingRzs10CollectionR_7ElementQy_0bC0Rtzr0_lFZs0F0O4UTF8O_SRys5UInt8VGTgq5Tfq4nxd_n +description.get +toHex +map +_T0s10CollectionPsE3mapSayqd__Gqd__7ElementQzKcKlFTfq4gn_nSays5UInt8VG_SSTg5 +_T0s5UInt8VSSs5Error_pIxyozo_ABSSsAC_pIxirzo_TR +_T06SQLite4BlobV5toHexSSyFSSs5UInt8VcfU_ +_T0s15_uint64ToStringSSs6UInt64V_s5Int64V5radixSb9uppercasetF +_T0s15ContiguousArrayV6appendyxFSS_Tg5 +_T0s15ContiguousArrayV36_reserveCapacityAssumingUniqueBufferySi8oldCount_tFSS_Tg5 +_T0SayxGs10CollectionslsABP9subscript7ElementQz5IndexQzcfgTWs5UInt8V_Tg5 +_T0s15ContiguousArrayV37_appendElementAssumeUniqueAndCapacityySi_x03newD0tFSS_Tg5 +_T0s15ContiguousArrayV37_appendElementAssumeUniqueAndCapacityySi_x03newD0tFTfq4ngn_nSS_Tg5 +_T0s15ContiguousArrayV034_makeUniqueAndReserveCapacityIfNotD0yyFSS_Tg5 +_T0s22_ContiguousArrayBufferV5countSifgSS_Tg5 +_T0SS1poiS2S_SStFZTfq4gXgXd_n +_T0S2RyxGSPyxGSg5start_Si5counttcfCs5UInt8V_Tgq5Tfq4nnd_n +_T0s5UInt8Vs13BinaryIntegerssACP8_lowWordSufgTW +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtFs5UInt8V_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tFs5UInt8V_Tg5 +_T0SayxGs10CollectionslsABP5count13IndexDistanceQzfgTWs5UInt8V_Tg5 +_T0S2ayxGqd__c7ElementQyd__Rszs8SequenceRd__lufCTfq4gn_ns5UInt8V_SRyAFGTg5 +_T0SRyxGs8SequenceslsABP22_copyToContiguousArrays0dE0Vy7ElementQzGyFTWs5UInt8V_Tg5 +_T0s10CollectionPsE22_copyToContiguousArrays0dE0Vy7ElementQzGyFSRys5UInt8VG_Tg5 +_T0s32_copyCollectionToContiguousArrays0dE0Vy7ElementQzGxs0B0RzlFSRys5UInt8VG_Tg5 +_T0SRyxGs14_IndexableBaseslsABP9formIndexy0D0Qzz5after_tFTWs5UInt8V_Tg5 +_T0SR9formIndexySiz5after_tFs5UInt8V_Tg5 +_T0SRyxGs10CollectionslsABP5count13IndexDistanceQzfgTWs5UInt8V_Tg5 +_T0SR5countSifgs5UInt8V_Tg5 +_T0SRyxGs10CollectionslsABP9subscript7ElementQz5IndexQzcfgTWs5UInt8V_Tg5 +_T0SR9subscriptxSicfgs5UInt8V_Tg5 +_T0s22_ContiguousArrayBufferVAByxGSi19_uninitializedCount_Si15minimumCapacitytcfCs5UInt8V_Tg5 +_T0s15ContiguousArrayVAByxGycfCs5UInt8V_Tg5 +bytes.get +__T010Foundation4DataV6SQLiteE13datatypeValueAD4BlobVfgAGSPys5UInt8VGcfU_ +__T0SPys5UInt8VG6SQLite4BlobVs5Error_pIxyozo_AcFsAG_pIxyrzo_TR +__T010Foundation4DataV6SQLite5ValueA2dEP16declaredDatatypeSSfgZTW +__T010Foundation4DataV6SQLite5ValueA2dEP012fromDatatypeD00D4TypeQz0F0QzFZTW +__T010Foundation4DataV6SQLite5ValueA2dEP08datatypeD08DatatypeQzfgTW +__T010Foundation4DataV6SQLite11ExpressibleA2dEP10expressionAD10ExpressionVyytGfgTW +__T010Foundation4DateV6SQLite5ValueA2dEP16declaredDatatypeSSfgZTW +__T010Foundation4DateV6SQLite5ValueA2dEP012fromDatatypeD00D4TypeQz0F0QzFZTW +__T010Foundation4DateV6SQLite5ValueA2dEP08datatypeD08DatatypeQzfgTW +__T010Foundation4DateV6SQLite11ExpressibleA2dEP10expressionAD10ExpressionVyytGfgTW +_globalinit_33_6C6C58A93ECDD528D3D6564FAC7933BD_func0 +__T06SQLite13dateFormatterSo04DateC0CvfiADycfU_ +_globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_func10 +_globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_func11 +__T010Foundation4DataV6SQLiteE13datatypeValueAD4BlobVfgAGSPys5UInt8VGcfU_TA +__T0SPys5UInt8VG6SQLite4BlobVs5Error_pIxyozo_AcFsAG_pIxyrzo_TRTA +__T010Foundation4DataV15withUnsafeBytesxxSPyq_GKcKr0_lFxs0D16RawBufferPointerVKcfU_6SQLite4BlobV_s5UInt8VTG5 +__T010Foundation4DataV15withUnsafeBytesxxSPyq_GKcKr0_lFxs0D16RawBufferPointerVKcfU_6SQLite4BlobV_s5UInt8VTG5TA +__T010Foundation4DataV6SQLiteE13datatypeValueAD4BlobVfgAGSPys5UInt8VGcfU_Tf4ngX_n +__T010Foundation4DataV15withUnsafeBytesxxSPyq_GKcKr0_lFxs0D16RawBufferPointerVKcfU_6SQLite4BlobV_s5UInt8VTG5TA.18 +__T0SPys5UInt8VG6SQLite4BlobVs5Error_pIxyozo_AcFsAG_pIxyrzo_TRTA.14 +__T010Foundation4DataV6SQLiteE13datatypeValueAD4BlobVfgAGSPys5UInt8VGcfU_TA.10 +__T010Foundation4DataV6SQLite5ValueADMA +__T010Foundation4DateV6SQLite5ValueADMA +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Foundation.swift +_T010Foundation4DataV6SQLiteE13datatypeValueAD4BlobVfgAGSPys5UInt8VGcfU_Tf4ngX_n +Foundation.swift +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite +_T010Foundation4DateV6SQLite11ExpressibleADWa +_T010Foundation4DateV6SQLite5ValueADWa +_T010Foundation4DataV6SQLite11ExpressibleADWa +_T010Foundation4DataV6SQLite5ValueADWa +_T010Foundation4DataV15withUnsafeBytesxxSPyq_GKcKr0_lFxs0D16RawBufferPointerVKcfU_6SQLite4BlobV_s5UInt8VTG5TA +_T010Foundation4DataV15withUnsafeBytesxxSPyq_GKcKr0_lFxs0D16RawBufferPointerVKcfU_6SQLite4BlobV_s5UInt8VTG5 +_T010Foundation4DataV15withUnsafeBytesxxSPyq_GKcKr0_lFxs0D16RawBufferPointerVKcfU_6SQLite4BlobV_s5UInt8VTg5 +_T0SPys5UInt8VG6SQLite4BlobVs5Error_pIxyozo_AcFsAG_pIxyrzo_TRTA +_T0SPys5UInt8VG6SQLite4BlobVs5Error_pIxyozo_AcFsAG_pIxyrzo_TR +_T010Foundation4DataV6SQLiteE13datatypeValueAD4BlobVfgAGSPys5UInt8VGcfU_TA +_T010Foundation4DataV6SQLiteE13datatypeValueAD4BlobVfgAGSPys5UInt8VGcfU_ +_T06SQLite13dateFormatterSo04DateC0CvfiADycfU_ +globalinit_33_6C6C58A93ECDD528D3D6564FAC7933BD_func0 +_T06SQLite13dateFormatterSo04DateC0Cfau +fromDatatypeValue +declaredDatatype.get +_T0SS6SQLiteE16declaredDatatypeSSfau +withUnsafeBytes +_T06SQLite4BlobV16declaredDatatypeSSfau +__T06SQLite10ConnectionC9OperationOs9EquatableAAsAFP2eeoiSbx_xtFZTW +__T06SQLite10ConnectionC7executeySSKFs5Int32VyKcfU_ +__T06SQLite10ConnectionC15TransactionModeOs9EquatableAAsAFP2eeoiSbx_xtFZTW +__T06SQLite10ConnectionC15TransactionModeOs8HashableAAsAFP9hashValueSifgTW +__T06SQLite10ConnectionC15TransactionModeOs16RawRepresentableAAsAFPxSg0E5ValueQz03rawG0_tcfCTW +__T06SQLite10ConnectionC15TransactionModeOs16RawRepresentableAAsAFP8rawValue0eH0QzfgTW +__T06SQLite10ConnectionC11transaction33_79F5A2E9E6411E14122CA7C8A9C356C7LLySS_yyKcS2S2ortKFyyKcfU_ +__T06SQLite10ConnectionC11busyTimeoutSdfmytfU_ +__T0s5Int32VABIxyd_A2BIyByd_TR +__T06SQLite10ConnectionC11busyHandlerySbSicSgFs5Int32VSvSg_AGtcfU0_To +__T06SQLite10ConnectionC8trace_v233_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgF +__T06SQLite10ConnectionC8trace_v133_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgF +__T0SVIxy_SVIyBy_TR +__T06SQLite10ConnectionC8trace_v133_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgFySvSg_SPys4Int8VGSgtcfU0_ +__T06SQLite10ConnectionC8trace_v133_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgFySvSg_SPys4Int8VGSgtcfU0_To +__T0s5Int32VSPys4Int8VGAEs5Int64VIxyyyy_Ab2eGIyByyyy_TR +__T06SQLite10ConnectionC10updateHookyyAC9OperationO_S2Ss5Int64VtcSgFySvSg_s5Int32VSPys4Int8VGSgApHtcfU0_To +__T06SQLite10ConnectionC10commitHookyyyKcSgFs5Int32VycfU_ +__T0s5Int32VIxd_ABIyBd_TR +__T06SQLite10ConnectionC10commitHookyyyKcSgFs5Int32VSvSgcfU0_To +__T0Ix_IyB_TR +__T06SQLite10ConnectionC12rollbackHookyyycSgFySvSgcfU0_To +__T06SQLite10ConnectionC14createFunctionySS_SuSg13argumentCountSb13deterministicAA7Binding_pSgSayAIGctFys13OpaquePointerVSg_s5Int32VSpyAMGSgtcfU0_AISicfU_ +__T0s13OpaquePointerVSgs5Int32VSpyACGSgIxyyy_AceGIyByyy_TR +__T06SQLite10ConnectionC14createFunctionySS_SuSg13argumentCountSb13deterministicAA7Binding_pSgSayAIGctFys13OpaquePointerVSg_s5Int32VSpyAMGSgtcfU1_To +__T0S2Vs5Int32VIxyyd_S2VABIyByyd_TR +__T06SQLite10ConnectionC15createCollationySS_SC16ComparisonResultOSS_SStctKFs5Int32VSvSg_AHSVSgAhJtcfU0_To +_globalinit_33_79F5A2E9E6411E14122CA7C8A9C356C7_func1 +__T06SQLite10ConnectionCs23CustomStringConvertibleAAsADP11descriptionSSfgTW +__T06SQLite10ConnectionC8LocationOs23CustomStringConvertibleAAsAFP11descriptionSSfgTW +_globalinit_33_79F5A2E9E6411E14122CA7C8A9C356C7_func2 +__T0s3SetV8containsSbxFs5Int32V_Tg5 +__T06SQLite6ResultOs5ErrorAAsADP7_domainSSfgTW +__T06SQLite6ResultOs5ErrorAAsADP5_codeSifgTW +__T06SQLite6ResultOs5ErrorAAsADP9_userInfoyXlSgfgTW +__T06SQLite6ResultOs5ErrorAAsADP5_codeSifgTWTm +__T06SQLite6ResultOs5ErrorAAsADP19_getEmbeddedNSErroryXlSgyFTW +__T06SQLite6ResultOs23CustomStringConvertibleAAsADP11descriptionSSfgTW +__T06SQLite10ConnectionC8trace_v233_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgFs5Int32Vs6UInt32V_SvSgA2KtcfU0_To +_globalinit_33_6574432B243886442F79BBD7FC6A56C2_func4 +__T0s15ContiguousArrayV15reserveCapacityySiF6SQLite7Binding_pSg_Tg5 +__T0s26_toStringReadOnlyPrintableSSxs06CustomB11ConvertibleRzlFTfq4g_n6SQLite9StatementC_Tg5 +__T0s26_toStringReadOnlyPrintableSSxs06CustomB11ConvertibleRzlFTfq4g_ns5Int32V_Tg5 +__T0SS11utf8CStrings15ContiguousArrayVys4Int8VGfgTfq4x_n +__T0s15ContiguousArrayV15reserveCapacityySiFs4Int8V_Tgq5 +__T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tFs4Int8V_Tgq5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFAEys4Int8VG_Tgq5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFAEys4Int8VG_s07_IgnoreK0VyALGTgq5Tfq4nnndn_n +__T0s5Int32Vs13BinaryIntegerssACP8_lowWordSufgTW +__T0s14_decodeCStringSS6result_Sb11repairsMadetSgSPy8CodeUnitQzG_xm2asSi6lengthSb016repairingInvalidF5Unitsts16_UnicodeEncodingRzlFs0M0O4UTF8O_Tgq5 +__T0s13_StringBufferV13fromCodeUnitsABSg_Sb8hadErrortx_q_m8encodingSb24repairIllFormedSequencesSi15minimumCapacityts8SequenceRzs16_UnicodeEncodingR_0D4UnitQy_7ElementRtzr0_lFZSRys5UInt8VG_s0P0O4UTF8OTgq5Tfq4xnnnd_n +__T0s24_VariantDictionaryBufferO17nativeUpdateValueq_Sgq__x6forKeytFSi_ys13OpaquePointerVSg_s5Int32VSpyAHGSgtXBTg5 +__T0s24_VariantDictionaryBufferO018ensureUniqueNativeC0Sb11reallocated_Sb15capacityChangedtSiFSi_ys13OpaquePointerVSg_s5Int32VSpyAHGSgtXBTg5 +__T0s24_VariantDictionaryBufferO018ensureUniqueNativeC0Sb11reallocated_Sb15capacityChangedtSiFSS_s0B0VySiys13OpaquePointerVSg_s5Int32VSpyAJGSgtXBGTg5 +__T0s24_VariantDictionaryBufferO018ensureUniqueNativeC0Sb11reallocated_Sb15capacityChangedtSiFSS_s5Int32VSV_SVtXBTg5 +__T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tF6SQLite7Binding_pSg_Tg5 +__T0SS8UTF8ViewV6_countSix9fromUTF16_ts8SequenceRzs6UInt16V7ElementRtzlFSRyAGG_Tgq5Tfq4xd_n +__T0SS8UTF8ViewV6_countSix9fromUTF16_ts8SequenceRzs6UInt16V7ElementRtzlFs11_StringCoreV_Tgq5Tfq4gXd_n +__T0s24_VariantDictionaryBufferO12nativeDeleteys07_NativebC0Vyxq_G_Si11idealBucketSi6offsettFTfq4gnnn_nSS_s0B0VySiys13OpaquePointerVSg_s5Int32VSpyAMGSgtXBGTg5 +__T0s23_NativeDictionaryBufferVss8HashableRzr0_lE12unsafeAddNewyx3key_q_5valuetFTfq4ggn_nSi_ys13OpaquePointerVSg_s5Int32VSpyAIGSgtXBTg5 +__T0s23_NativeDictionaryBufferVss8HashableRzr0_lE12unsafeAddNewyx3key_q_5valuetFTfq4ggn_nSS_s0B0VySiys13OpaquePointerVSg_s5Int32VSpyAKGSgtXBGTg5 +__T0s23_NativeDictionaryBufferVss8HashableRzr0_lE12unsafeAddNewyx3key_q_5valuetFTfq4ggn_nSS_s5Int32VSV_SVtXBTg5 +__T0s2eeoiSbx_xts16RawRepresentableRzs9Equatable0B5ValueRpzlFTfq4gg_n6SQLite10ConnectionC15TransactionModeO_Tg5 +__T0SS13CharacterViewV39_internalExtraCheckGraphemeBreakBetweenSbs6UInt16V_AEtFZTfq4nnd_n +__T0SS13CharacterViewV42_measureExtendedGraphemeClusterForwardSlowS2i14relativeOffset_SS5IndexV5startAF3endSi0lK5UTF16tFTfq4nxxnn_n +__T0s7UnicodeO5UTF16O6decodes0A14DecodingResultOxzs16IteratorProtocolRzs6UInt16V7ElementRtzlFSS0A10ScalarViewV08_ScratchF0V_Tgq5 +__T0Sis11_StrideablessAAP8advancedx6StrideQz2by_tFTW +__T0s23_BidirectionalIndexablePsE8distance13IndexDistanceQz0D0Qz4from_AG2totFSS13CharacterViewV_Tgq5Tfq4xxn_n +__T0SS13CharacterViewV43_measureExtendedGraphemeClusterBackwardSlowS2i9endOffset_SS5IndexV5startAF0I0Si0iK5UTF16tFTfq4nxxnn_n +__T0s19_ThreadLocalStorageV17getUBreakIterators13OpaquePointerVs11_StringCoreV3for_tFZTfq4gXd_n +__T0SS13CharacterViewV22legacyGraphemeBackwardSiSS5IndexV5start_AE3endSi0hF5UTF16tFTfq4xxnn_n +__T06SQLite6ResultOACSgs5Int32V9errorCode_AA10ConnectionC10connectionAA9StatementCSg9statementtcfCTf4ngnd_n +__T06SQLite10ConnectionC9OperationOAEs5Int32V8rawValue_tc33_79F5A2E9E6411E14122CA7C8A9C356C7LlfCTf4nd_n +__T06SQLite10ConnectionCA2C8LocationO_Sb8readonlytKcfcTf4gnn_n +__T06SQLite10ConnectionC7executeySSKFs5Int32VyKcfU_Tf4ggX_n +__T06SQLite10ConnectionC7executeySSKFs5Int32VyKcfU_TA +__T0s5Int32Vs5Error_pIxdzo_ABsAC_pIxrzo_TRTA +__T06SQLite9StatementC4bindACSayAA7Binding_pSgGFTf4gn_nTf4nn_g +__T06SQLite9StatementCAcA10ConnectionC_SStKcfcTf4ggXn_n +__T06SQLite10ConnectionC7prepareAA9StatementCSS_SayAA7Binding_pSgGdtKFTf4gXnn_n +__T06SQLite9StatementC4bindACs10DictionaryVySSAA7Binding_pSgGFTf4gn_n +__T06SQLite10ConnectionC3runAA9StatementCSS_SayAA7Binding_pSgGtKFTf4gXnn_n +__T0s32_copyCollectionToContiguousArrays0dE0Vy7ElementQzGxs0B0RzlFSRys5UInt8VG_Tg5Tf4x_n +__T0S2SSPys5UInt8VG7cString_tcfCTfq4nd_n +__T06SQLite10ConnectionC15TransactionModeOAESgSS8rawValue_tcfCTf4gXd_n +__T0s23_ContiguousArrayStorageCySSGMa +__T06SQLite10ConnectionC11transaction33_79F5A2E9E6411E14122CA7C8A9C356C7LLySS_yyKcS2S2ortKFyyKcfU_Tf4ggXggXx_n +__T06SQLite10ConnectionC11transaction33_79F5A2E9E6411E14122CA7C8A9C356C7LLySS_yyKcS2S2ortKFTf4gXggXgXn_n +__T06SQLite10ConnectionC11busyTimeoutSdfWTf4dn_n +__T06SQLite10ConnectionC11busyHandlerySbSicSgFs5Int32VAGcfU_TA +_block_copy_helper +_block_destroy_helper +__T06SQLite10ConnectionC10updateHookyyAC9OperationO_S2Ss5Int64VtcSgFys5Int32V_SPys4Int8VGAnHtcfU_TA +__T06SQLite10ConnectionC10commitHookyyyKcSgFs5Int32VycfU_TA +__T06SQLite10ConnectionC12rollbackHookyyycSgFyycfU_TA +__T06SQLite10ConnectionC10updateHookyyAC9OperationO_S2Ss5Int64VtcSgFys5Int32V_SPys4Int8VGAnHtcfU_Tf4nnnng_n +__T0s23_NativeDictionaryBufferVss8HashableRzr0_lE9fromArrayAByxq_GSayx_q_tGFZTfq4gn_nSi_ys13OpaquePointerVSg_s5Int32VSpyAIGSgtXBTg5Tf4nd_n +__T0s24_VariantDictionaryBufferO17nativeUpdateValueq_Sgq__x6forKeytFSS_s0B0VySiys13OpaquePointerVSg_s5Int32VSpyAJGSgtXBGTg5Tf4nxn_n +__T0s24_VariantDictionaryBufferO18nativeRemoveObjectq_Sgx6forKey_tFSS_s0B0VySiys13OpaquePointerVSg_s5Int32VSpyAJGSgtXBGTg5Tf4xn_n +__T06SQLite10ConnectionC14createFunctionySS_SuSg13argumentCountSb13deterministicAA7Binding_pSgSayAIGctFTf4gXnngn_n +__T06SQLite10ConnectionC15createCollationySS_SC16ComparisonResultOSS_SStctKFs5Int32VSV_SVtcfU_TA +__T06SQLite10ConnectionC14createFunctionySS_SuSg13argumentCountSb13deterministicAA7Binding_pSgSayAIGctFys13OpaquePointerVSg_s5Int32VSpyAMGSgtcfU0_Tf4nnng_n +__T0s24_VariantDictionaryBufferO17nativeUpdateValueq_Sgq__x6forKeytFSS_s5Int32VSV_SVtXBTg5Tf4nxn_n +__T06SQLite10ConnectionC8LocationOwXX +__T06SQLite10ConnectionC8LocationOwCP +__T06SQLite10ConnectionC8LocationOwpr +__T06SQLite10ConnectionC8LocationOwde +__T06SQLite10ConnectionC8LocationOwxx +__T06SQLite10ConnectionC8LocationOwCp +__T06SQLite10ConnectionC8LocationOwcp +__T06SQLite10ConnectionC8LocationOwca +__T06SQLite10ConnectionC8LocationOwTk +___swift_memcpy25_8 +__T06SQLite10ConnectionC8LocationOwta +__T06SQLite10ConnectionC8LocationOwal +___swift_copy_outline_existential_box_pointer8 +__T06SQLite10ConnectionC8LocationOwXx +__T06SQLite10ConnectionC8LocationOwCc +___swift_memmove_array32_8 +__T06SQLite10ConnectionC8LocationOwug +__T06SQLite10ConnectionC8LocationOwup +__T06SQLite10ConnectionC8LocationOwui +___swift_memcpy1_1 +___swift_memcpy_array1_1 +___swift_memmove_array1_1 +__T06SQLite10ConnectionC9OperationOwup +__T06SQLite10ConnectionC15TransactionModeOwxs +__T06SQLite10ConnectionC15TransactionModeOwxg +__T06SQLite10ConnectionC15TransactionModeOwug +__T06SQLite10ConnectionC15TransactionModeOwup +__T06SQLite10ConnectionC15TransactionModeOwui +__T06SQLite6ResultOwXX +__T06SQLite6ResultOwde +__T06SQLite6ResultOwxx +__T06SQLite6ResultOwCp +__T06SQLite6ResultOwcp +__T06SQLite6ResultOwca +__T06SQLite6ResultOwTk +___swift_memcpy40_8 +__T06SQLite6ResultOwta +__T06SQLite6ResultOwal +__T06SQLite6ResultOwXx +__T06SQLite6ResultOwCc +___swift_memmove_array40_8 +__T06SQLite6ResultOwug +__T06SQLite6ResultOwup +__T06SQLite6ResultOwui +__T0ys5Int32V_SPys4Int8VGAEs5Int64VtXBSgMa +__T0ys13OpaquePointerVSg_s5Int32VSpyACGSgtXBMa +__T0s37_HashableTypedNativeDictionaryStorageCySSs5Int32VSV_SVtXBGMa +__T06SQLite10ConnectionC15createCollationySS_SC16ComparisonResultOSS_SStctKFs5Int32VSV_SVtcfU_Tf4nng_n +__T06SQLite10ConnectionC15createCollationySS_SC16ComparisonResultOSS_SStctKFs5Int32VSvSg_AHSVSgAhJtcfU0_Tf4ndndn_n +__T06SQLite10ConnectionC14createFunctionySS_SuSg13argumentCountSb13deterministicAA7Binding_pSgSayAIGctFys13OpaquePointerVSg_s5Int32VSpyAMGSgtcfU0_TA +__T06SQLite10ConnectionC8trace_v233_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgFySVcfU_TA +__T0s16_NativeSetBufferVss8HashableRzlE9fromArrayAByxGSayxGFZTfq4gn_ns5Int32V_Tg5Tf4nd_n +__T06SQLite10ConnectionC8trace_v233_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgFs5Int32Vs6UInt32V_SvSgA2KtcfU0_Tf4dnnd_n +__T06SQLite10ConnectionC8trace_v133_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgFySVcfU_TA +__T06SQLite10ConnectionC8trace_v233_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgFySVcfU_TATm +__T06SQLite10ConnectionC11transaction33_79F5A2E9E6411E14122CA7C8A9C356C7LLySS_yyKcS2S2ortKFyyKcfU_TA +__T0s5Error_pIxzo_ytsAA_pIxrzo_TRTA +__T06SQLite10ConnectionC9OperationOwug +__T06SQLite10ConnectionC9OperationOwxg +_block_destroy_helper.20 +_block_destroy_helper.28 +_block_destroy_helper.36 +_block_destroy_helper.42 +_block_destroy_helper.60 +_block_destroy_helper.68 +_block_destroy_helper.74 +_block_copy_helper.19 +_block_copy_helper.27 +_block_copy_helper.35 +_block_copy_helper.41 +_block_copy_helper.59 +_block_copy_helper.67 +_block_copy_helper.73 +__T06SQLite10ConnectionC9OperationOs8HashableAAsAFP9hashValueSifgTW +__T06SQLite10ConnectionC9OperationOwxs +__T06SQLite6ResultOwCP +__T06SQLite6ResultOwpr +__T06SQLite10ConnectionC9OperationOwui +__T06SQLite10ConnectionC8queueKey33_79F5A2E9E6411E14122CA7C8A9C356C7LL8Dispatch0o8SpecificD0CySiGvZ +__T06SQLite6ResultO12successCodes33_79F5A2E9E6411E14122CA7C8A9C356C7LLs3SetVys5Int32VGvZ +__T0So13DispatchQueueCML +__T0yXlML +_block_descriptor +__T0s5Int32VABXBML +_block_descriptor.21 +__T0ys5Int32V_SPys4Int8VGAEs5Int64VtXBML +__T0s5Int32V_SPys4Int8VGAEs5Int64VtML +__T0SPys4Int8VGML +_block_descriptor.29 +__T0s5Int32VyXBML +_block_descriptor.37 +__T0yyXBML +_block_descriptor.43 +__T0s5Int32VSV_SVtXBML +__T0SV_SVtML +__T06SQLite10ConnectionC7_handle33_79F5A2E9E6411E14122CA7C8A9C356C7LLs13OpaquePointerVSgvWvd +__T06SQLite10ConnectionC11busyHandler33_79F5A2E9E6411E14122CA7C8A9C356C7LLs5Int32VAGXBSgvWvd +__T06SQLite10ConnectionC5trace33_79F5A2E9E6411E14122CA7C8A9C356C7LLySVXBSgvWvd +__T06SQLite10ConnectionC10updateHook33_79F5A2E9E6411E14122CA7C8A9C356C7LLys5Int32V_SPys4Int8VGAJs5Int64VtXBSgvWvd +__T06SQLite10ConnectionC10commitHook33_79F5A2E9E6411E14122CA7C8A9C356C7LLs5Int32VyXBSgvWvd +__T06SQLite10ConnectionC12rollbackHook33_79F5A2E9E6411E14122CA7C8A9C356C7LLyyXBSgvWvd +__T06SQLite10ConnectionC9functions33_79F5A2E9E6411E14122CA7C8A9C356C7LLs10DictionaryVySSAGySiys13OpaquePointerVSg_s5Int32VSpyAJGSgtXBGGvWvd +__T06SQLite10ConnectionC10collations33_79F5A2E9E6411E14122CA7C8A9C356C7LLs10DictionaryVySSs5Int32VSV_SVtXBGvWvd +__T06SQLite10ConnectionC5queue33_79F5A2E9E6411E14122CA7C8A9C356C7LLSo13DispatchQueueCvWvd +__T06SQLite10ConnectionC0025queueContextstorage_hqFBg33_79F5A2E9E6411E14122CA7C8A9C356C7LLSiSgvWvd +__T06SQLite10ConnectionCML +__T06SQLite10ConnectionCMf +__T06SQLite10ConnectionC8LocationOWV +__T06SQLite10ConnectionC8LocationOML +__T06SQLite10ConnectionC8LocationOMf +__T06SQLite10ConnectionC8LocationOMF +__T06SQLite10ConnectionC9OperationOWV +__T06SQLite10ConnectionC9OperationOML +__T06SQLite10ConnectionC9OperationOMf +__T06SQLite10ConnectionC9OperationOMF +__T06SQLite10ConnectionC15TransactionModeOWV +__T06SQLite10ConnectionC15TransactionModeOML +__T06SQLite10ConnectionC15TransactionModeOMf +__T06SQLite10ConnectionC15TransactionModeOMF +__T06SQLite10ConnectionCMF +__T06SQLite6ResultOWV +__T06SQLite6ResultOMf +__T06SQLite6ResultOMF +__T0SS7message_s5Int32V4code6SQLite9StatementCSg9statementtML +__T06SQLite9StatementCSgML +__T0s13OpaquePointerVSgML +__T0s5Int32VABXBSgML +__T0ySVXBSgML +__T0ySVXBML +__T0ys5Int32V_SPys4Int8VGAEs5Int64VtXBSgML +__T0s5Int32VyXBSgML +__T0yyXBSgML +__T0s10DictionaryVySSABySiys13OpaquePointerVSg_s5Int32VSpyAEGSgtXBGGML +__T0s10DictionaryVySiys13OpaquePointerVSg_s5Int32VSpyAEGSgtXBGML +__T0ys13OpaquePointerVSg_s5Int32VSpyACGSgtXBML +__T0s13OpaquePointerVSg_s5Int32VSpyACGSgtML +__T0Spys13OpaquePointerVSgGSgML +__T0Spys13OpaquePointerVSgGML +__T0s10DictionaryVySSs5Int32VSV_SVtXBGML +__T0SiSgML +__T06SQLite6ResultOmML +__T0s37_HashableTypedNativeDictionaryStorageCySSs5Int32VSV_SVtXBGML +_block_descriptor.61 +__T0s37_HashableTypedNativeDictionaryStorageCySiys13OpaquePointerVSg_s5Int32VSpyAEGSgtXBGML +__T0s37_HashableTypedNativeDictionaryStorageCySSs0D0VySiys13OpaquePointerVSg_s5Int32VSpyAGGSgtXBGGML +__T06SQLite16SQLITE_TRANSIENTySvSgXCv +_block_descriptor.69 +_block_descriptor.75 +__T0s23_ContiguousArrayStorageCys5Int32VGML +__T0s30_HashableTypedNativeSetStorageCys5Int32VGML +__T0s23_ContiguousArrayStorageCys4Int8VGML +__T08Dispatch0A11SpecificKeyCySiGML +__T06SQLite10ConnectionC15TransactionModeOs16RawRepresentableAAMA +__T0So13DispatchQueueCMF +__T0SC16ComparisonResultOMB +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Connection.swift +_T0s5Error_pIxzo_ytsAA_pIxrzo_TRTA +_T0s5Error_pIxzo_ytsAA_pIxrzo_TR +_T06SQLite10ConnectionC11transaction33_79F5A2E9E6411E14122CA7C8A9C356C7LLySS_yyKcS2S2ortKFyyKcfU_TA +objectdestroy.77 +_T06SQLite10ConnectionC8trace_v233_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgFySVcfU_TA +_T06SQLite10ConnectionC8trace_v233_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgFySVcfU_ +_T06SQLite10ConnectionC8trace_v233_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgFySVcfU_Tf4ng_n +_T06SQLite10ConnectionC8trace_v233_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgFs5Int32Vs6UInt32V_SvSgA2KtcfU0_Tf4dnnd_n +_T0s16_NativeSetBufferVss8HashableRzlE9fromArrayAByxGSayxGFZTfq4gn_ns5Int32V_Tg5Tf4nd_n +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtFs5Int32V_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tFs5Int32V_Tg5 +_T0Sp10initializeyx2to_Si5counttFTfq4gnn_ns5Int32V_Tg5 +_T0s5Int32Vs8HashablessACP9hashValueSifgTW +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktFs5Int32V_Tg5 +_T0s5Int32Vs9EquatablessACP2eeoiSbx_xtFZTW +_T0s30_HashableTypedNativeSetStorageCys5Int32VGMa +_T0Sa9_getCountSiyFs5Int32V_Tg5 +_T06SQLite10ConnectionC14createFunctionySS_SuSg13argumentCountSb13deterministicAA7Binding_pSgSayAIGctFys13OpaquePointerVSg_s5Int32VSpyAMGSgtcfU0_TA +_T06SQLite10ConnectionC14createFunctionySS_SuSg13argumentCountSb13deterministicAA7Binding_pSgSayAIGctFys13OpaquePointerVSg_s5Int32VSpyAMGSgtcfU0_ +_T06SQLite10ConnectionC15createCollationySS_SC16ComparisonResultOSS_SStctKFs5Int32VSvSg_AHSVSgAhJtcfU0_Tf4ndndn_n +_T06SQLite10ConnectionC15createCollationySS_SC16ComparisonResultOSS_SStctKFs5Int32VSV_SVtcfU_Tf4nng_n +_T0Sis10ComparablessAAP1loiSbx_xtFZTW +_T0s5Int32Vs10ComparablessACP1loiSbx_xtFZTW +_T0Sis13BinaryIntegerssAAPxqd__18truncatingIfNeeded_tcsAARd__lufCTWs5Int32V_Tg5 +_T0s17FixedWidthIntegerPsExqd__18truncatingIfNeeded_tcs06BinaryC0Rd__lufCqd__SiXMTS2iRszsADRd__r__lItMiyd_Tpq5s5Int32V_Tg5 +_T0s5Int32Vs13BinaryIntegerssACP8_lowWordSufgTW +_T0s5Int32Vs13BinaryIntegerssACPxqd__18truncatingIfNeeded_tcsACRd__lufCTWSi_Tg5 +_T0s17FixedWidthIntegerPsExqd__18truncatingIfNeeded_tcs06BinaryC0Rd__lufCqd__s5Int32VXMTA2FRszsADRd__r__lItMiyd_Tpq5Si_Tg5 +_T0s37_HashableTypedNativeDictionaryStorageCySSs5Int32VSV_SVtXBGMa +_T0s5Int32VSV_SVtXBMa +_T0SV_SVtMa +_T0ys13OpaquePointerVSg_s5Int32VSpyACGSgtXBMa +_T0s13OpaquePointerVSg_s5Int32VSpyACGSgtMa +_T0Spys13OpaquePointerVSgGSgMa +_T0Spys13OpaquePointerVSgGMa +_T0s13OpaquePointerVSgMa +_T0ys5Int32V_SPys4Int8VGAEs5Int64VtXBSgMa +_T0ys5Int32V_SPys4Int8VGAEs5Int64VtXBMa +_T0s5Int32V_SPys4Int8VGAEs5Int64VtMa +_T0SPys4Int8VGMa +_T06SQLite6ResultOMa +get_field_types_Result +_T0SS7message_s5Int32V4code6SQLite9StatementCSg9statementtMa +_T06SQLite9StatementCSgMa +_T06SQLite6ResultOwui +_T06SQLite6ResultOwup +_T06SQLite6ResultOwug +__swift_memmove_array40_8 +_T06SQLite6ResultOwCc +_T06SQLite6ResultOwXx +_T06SQLite6ResultOwal +_T06SQLite6ResultOwta +__swift_memcpy40_8 +_T06SQLite6ResultOwTk +_T06SQLite6ResultOwca +_T06SQLite6ResultOwcp +_T06SQLite6ResultOwCp +_T06SQLite6ResultOwxx +_T06SQLite6ResultOwde +_T06SQLite6ResultOwXX +initialize_metadata_TransactionMode +_T06SQLite10ConnectionCMa +_T06SQLite10ConnectionC15TransactionModeOMa +get_field_types_TransactionMode +_T06SQLite10ConnectionC15TransactionModeOwui +_T06SQLite10ConnectionC15TransactionModeOwup +_T06SQLite10ConnectionC15TransactionModeOwug +_T06SQLite10ConnectionC15TransactionModeOwxg +_T06SQLite10ConnectionC15TransactionModeOwxs +initialize_metadata_Operation +_T06SQLite10ConnectionC9OperationOMa +get_field_types_Operation +_T06SQLite10ConnectionC9OperationOwup +__swift_memmove_array1_1 +__swift_memcpy_array1_1 +__swift_memcpy1_1 +initialize_metadata_Location +_T06SQLite10ConnectionC8LocationOMa +get_field_types_Location +_T06SQLite10ConnectionC8LocationOwui +_T06SQLite10ConnectionC8LocationOwup +_T06SQLite10ConnectionC8LocationOwug +__swift_memmove_array32_8 +_T06SQLite10ConnectionC8LocationOwCc +_T06SQLite10ConnectionC8LocationOwXx +__swift_copy_outline_existential_box_pointer8 +_T06SQLite10ConnectionC8LocationOwal +_T06SQLite10ConnectionC8LocationOwta +__swift_memcpy25_8 +_T06SQLite10ConnectionC8LocationOwTk +_T06SQLite10ConnectionC8LocationOwca +_T06SQLite10ConnectionC8LocationOwcp +_T06SQLite10ConnectionC8LocationOwCp +_T06SQLite10ConnectionC8LocationOwxx +_T06SQLite10ConnectionC8LocationOwde +_T06SQLite10ConnectionC8LocationOwpr +_T06SQLite10ConnectionC8LocationOwCP +_T06SQLite10ConnectionC8LocationOwXX +get_field_types_Connection +_T0SiSgMa +_T0So13DispatchQueueCMa +_T0s10DictionaryVySSs5Int32VSV_SVtXBGMa +_T0s10DictionaryVySSABySiys13OpaquePointerVSg_s5Int32VSpyAEGSgtXBGGMa +_T0s10DictionaryVySiys13OpaquePointerVSg_s5Int32VSpyAEGSgtXBGMa +_T0yyXBSgMa +_T0yyXBMa +_T0s5Int32VyXBSgMa +_T0s5Int32VyXBMa +_T0ySVXBSgMa +_T0ySVXBMa +_T0s5Int32VABXBSgMa +_T0s5Int32VABXBMa +_T06SQLite6ResultOs23CustomStringConvertibleAAWa +_T06SQLite10ConnectionC8LocationOs23CustomStringConvertibleAAWa +_T06SQLite10ConnectionCs23CustomStringConvertibleAAWa +_T06SQLite6ResultOs5ErrorAAWa +_T06SQLite10ConnectionC15TransactionModeOs16RawRepresentableAAWa +_T06SQLite10ConnectionC15TransactionModeOs8HashableAAWa +_T06SQLite10ConnectionC15TransactionModeOs9EquatableAAWa +_T06SQLite10ConnectionC9OperationOs8HashableAAWa +_T06SQLite10ConnectionC9OperationOs9EquatableAAWa +_T0s24_VariantDictionaryBufferO17nativeUpdateValueq_Sgq__x6forKeytFSS_s5Int32VSV_SVtXBTg5Tf4nxn_n +_T0SSs9EquatablessAAP2eeoiSbx_xtFZTW +_T0Sp10initializeyx2to_Si5counttFTfq4gnn_ns5Int32VSV_SVtXB_Tg5 +_T0Sp10initializeyx2to_Si5counttFTfq4gnn_nSS_Tg5 +_T0SSs8HashablessAAP9hashValueSifgTW +_T06SQLite10ConnectionC14createFunctionySS_SuSg13argumentCountSb13deterministicAA7Binding_pSgSayAIGctFys13OpaquePointerVSg_s5Int32VSpyAMGSgtcfU0_Tf4nnng_n +_T0SS13CharacterViewVs14_IndexableBasessACP8endIndex0F0QzfgTW +_T0s10CollectionPsE3mapSayqd__Gqd__7ElementQzKcKlFTfq4gn_ns14CountableRangeVySiG_6SQLite7Binding_pSgTg5 +_T0s14CountableRangeVyxGs14_IndexableBasess10ComparableRzs11_StrideableRzs13SignedInteger6StridesAFPRpzlsADP9formIndexy0K0Qzz5after_tFTWSi_Tg5 +_T0s10_IndexablePsE9formIndexy0C0Qzz5after_tFs14CountableRangeVySiG_Tg5 +_T0s14CountableRangeVyxGs14_IndexableBasess10ComparableRzs11_StrideableRzs13SignedInteger6StridesAFPRpzlsADP5index5IndexQzAN5after_tFTWSi_Tg5 +_T0s14CountableRangeV5indexxx5after_tFSi_Tg5 +_T0Sis11_StrideablessAAP8advancedx6StrideQz2by_tFTW +_T0s10_IndexablePsE20_failEarlyRangeChecky5IndexQz_s0D0VyAEG6boundstFTfq4ngd_ns09CountableD0VySiG_Tg5 +_T0s15ContiguousArrayV6appendyxF6SQLite7Binding_pSg_Tg5 +_T0s15ContiguousArrayV36_reserveCapacityAssumingUniqueBufferySi8oldCount_tF6SQLite7Binding_pSg_Tg5 +_convertConstStringToUTF8PointerArgument +_T06SQLite16SQLITE_TRANSIENTySvSgXCfau +_T0SS13CharacterViewVs10CollectionssACP8distance13IndexDistanceQz0E0Qz4from_AI2totFTW +_T0s15ContiguousArrayV37_appendElementAssumeUniqueAndCapacityySi_x03newD0tF6SQLite7Binding_pSg_Tg5 +_T0s15ContiguousArrayV37_appendElementAssumeUniqueAndCapacityySi_x03newD0tFTfq4ngn_n6SQLite7Binding_pSg_Tg5 +_T0s15ContiguousArrayV9_getCountSiyF6SQLite7Binding_pSg_Tg5 +_T0s15ContiguousArrayV034_makeUniqueAndReserveCapacityIfNotD0yyF6SQLite7Binding_pSg_Tg5 +_T0s22_ContiguousArrayBufferV5countSifg6SQLite7Binding_pSg_Tg5 +_T0Si6SQLite7Binding_pSgs5Error_pIxyrzo_SiACsAD_pIxirzo_TR +_T06SQLite10ConnectionC15createCollationySS_SC16ComparisonResultOSS_SStctKFs5Int32VSV_SVtcfU_TA +_T06SQLite10ConnectionC15createCollationySS_SC16ComparisonResultOSS_SStctKFs5Int32VSV_SVtcfU_ +createFunction +_T0SuSis5Error_pIxydzo_SuSisAA_pIxirzo_TR +_T06SQLite10ConnectionC14createFunctionySS_SuSg13argumentCountSb13deterministicAA7Binding_pSgSayAIGctFSiSucfU_ +handle.get +subscript.set +_T0s10DictionaryV11removeValueq_Sgx6forKey_tFSS_ABySiys13OpaquePointerVSg_s5Int32VSpyAHGSgtXBGTg5 +_T0s24_VariantDictionaryBufferO18nativeRemoveObjectq_Sgx6forKey_tFSS_s0B0VySiys13OpaquePointerVSg_s5Int32VSpyAJGSgtXBGTg5 +_T0s24_VariantDictionaryBufferO17nativeUpdateValueq_Sgq__x6forKeytFSS_s0B0VySiys13OpaquePointerVSg_s5Int32VSpyAJGSgtXBGTg5 +_T0s10DictionaryVAByxq_GSayx_q_tG17dictionaryLiterald_tcfCTfq4gn_nSi_ys13OpaquePointerVSg_s5Int32VSpyAHGSgtXBTg5 +_T0s23_NativeDictionaryBufferVss8HashableRzr0_lE9fromArrayAByxq_GSayx_q_tGFZTfq4gn_nSi_ys13OpaquePointerVSg_s5Int32VSpyAIGSgtXBTg5 +_T06SQLite10ConnectionC14createFunctionySS_SuSg13argumentCountSb13deterministicAA7Binding_pSgSayAIGctFSiyKXKfu_ +_T0s24_VariantDictionaryBufferO18nativeRemoveObjectq_Sgx6forKey_tFSS_s0B0VySiys13OpaquePointerVSg_s5Int32VSpyAJGSgtXBGTg5Tf4xn_n +_T0s24_VariantDictionaryBufferO17nativeUpdateValueq_Sgq__x6forKeytFSS_s0B0VySiys13OpaquePointerVSg_s5Int32VSpyAJGSgtXBGTg5Tf4nxn_n +_T0Sp10initializeyx2to_Si5counttFTfq4gnn_ns10DictionaryVySiys13OpaquePointerVSg_s5Int32VSpyAHGSgtXBG_Tg5 +_T0s23_NativeDictionaryBufferVss8HashableRzr0_lE9fromArrayAByxq_GSayx_q_tGFZTfq4gn_nSi_ys13OpaquePointerVSg_s5Int32VSpyAIGSgtXBTg5Tf4nd_n +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtFSi_ys13OpaquePointerVSg_s5Int32VSpyAGGSgtXBt_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tFSi_ys13OpaquePointerVSg_s5Int32VSpyAGGSgtXBt_Tg5 +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktFSi_ys13OpaquePointerVSg_s5Int32VSpyAHGSgtXBt_Tg5 +_T0Sp10initializeyx2to_Si5counttFTfq4gnn_nSi_Tg5 +_T0Sp10initializeyx2to_Si5counttFTfq4gnn_nys13OpaquePointerVSg_s5Int32VSpyAFGSgtXB_Tg5 +_T0s23_NativeDictionaryBufferVAByxq_GSi8capacity_s04_RawaB7StorageC7storagetcfCSi_ys13OpaquePointerVSg_s5Int32VSpyAJGSgtXBTg5 +_T0s23_NativeDictionaryBufferVAByxq_GSi8capacity_s04_RawaB7StorageC7storagetcfCSi_ys13OpaquePointerVSg_s5Int32VSpyAJGSgtXBTg5Tf4nnd_n +_T0s37_HashableTypedNativeDictionaryStorageCySiys13OpaquePointerVSg_s5Int32VSpyAEGSgtXBGMa +_T0Sa9_getCountSiyFSi_ys13OpaquePointerVSg_s5Int32VSpyADGSgtXBt_Tg5 +_T06SQLite10ConnectionC10updateHookyyAC9OperationO_S2Ss5Int64VtcSgFys5Int32V_SPys4Int8VGAnHtcfU_Tf4nnnng_n +_T06SQLite10ConnectionC12rollbackHookyyycSgFyycfU_TA +_T06SQLite10ConnectionC12rollbackHookyyycSgFyycfU_ +_T06SQLite10ConnectionC10commitHookyyyKcSgFs5Int32VycfU_TA +_T06SQLite10ConnectionC10updateHookyyAC9OperationO_S2Ss5Int64VtcSgFys5Int32V_SPys4Int8VGAnHtcfU_TA +_T06SQLite10ConnectionC10updateHookyyAC9OperationO_S2Ss5Int64VtcSgFys5Int32V_SPys4Int8VGAnHtcfU_ +block_destroy_helper +block_copy_helper +_T06SQLite10ConnectionC11busyHandlerySbSicSgFs5Int32VAGcfU_TA +_T06SQLite10ConnectionC11busyHandlerySbSicSgFs5Int32VAGcfU_ +_T06SQLite10ConnectionC11busyHandlerySbSicSgFs5Int32VAGcfU_Tf4ng_n +objectdestroy.10 +busyTimeout.didset +transaction +sync +queueContext.get +_T06SQLite10ConnectionC11transaction33_79F5A2E9E6411E14122CA7C8A9C356C7LLySS_yyKcS2S2ortKFyyKcfU_ +_T06SQLite10ConnectionC8queueKey33_79F5A2E9E6411E14122CA7C8A9C356C7LL8Dispatch0o8SpecificD0CySiGfau +_T06SQLite10ConnectionC11transaction33_79F5A2E9E6411E14122CA7C8A9C356C7LLySS_yyKcS2S2ortKFyyKcfU_Tf4ggXggXx_n +run +prepare +bind +_T0Sa22_allocateUninitializedSayxG_SpyxGtSiFZ6SQLite7Binding_pSg_Tg5 +_T0S2ayxGSi19_uninitializedCount_tcfC6SQLite7Binding_pSg_Tg5 +isEmpty.get +_T0s5Int32Vs5Error_pIxdzo_ABsAC_pIxrzo_TRTA +_T0s5Int32Vs5Error_pIxdzo_ABsAC_pIxrzo_TR +_T06SQLite10ConnectionC7executeySSKFs5Int32VyKcfU_TA +_T06SQLite10ConnectionC7executeySSKFs5Int32VyKcfU_Tf4ggX_n +check +_T0So13DispatchQueueC0A0E10AttributesVs10SetAlgebraACsAFPxqd__cs8SequenceRd__7ElementQyd__AIRtzlufCTWSayAEG_Tg5 +_T0s10SetAlgebraPsExqd__cs8SequenceRd__7ElementQyd__ADRtzlufCSo13DispatchQueueC0E0E10AttributesV_SayAKGTg5 +_T0s10SetAlgebraPsExqd__cs8SequenceRd__7ElementQyd__ADRtzlufCSo13DispatchQueueC0E0E10AttributesV_SayAKGTg5Tf4gd_n +_T0So13DispatchQueueC0A0E10AttributesVs10SetAlgebraACsAFP6insertSb8inserted_7ElementQz17memberAfterInserttAKFTW +_T0s16IndexingIteratorVyxGs0B8Protocolss14_IndexableBaseRzlsADP4next7ElementQzSgyFTWSaySo13DispatchQueueC0H0E10AttributesVG_Tg5 +_T0SayxGs14_IndexableBaseslsABP9formIndexy0D0Qzz5after_tFTWSo13DispatchQueueC0F0E10AttributesV_Tg5 +_T0Sa9formIndexySiz5after_tFSo13DispatchQueueC0D0E10AttributesV_Tg5 +_T0SayxGs14_IndexableBaseslsABP9subscript7ElementQz5IndexQzcfgTWSo13DispatchQueueC0F0E10AttributesV_Tg5 +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktFSo13DispatchQueueC0L0E10AttributesV_Tg5 +_T0SayxGs14_IndexableBaseslsABP8endIndex0D0QzfgTWSo13DispatchQueueC0E0E10AttributesV_Tg5 +_T0Sa8endIndexSifgSo13DispatchQueueC0C0E10AttributesV_Tg5 +_T0Sa9_getCountSiyFSo13DispatchQueueC0C0E10AttributesV_Tg5 +_T0So13DispatchQueueC0A0E10AttributesVs10SetAlgebraACsAFPxycfCTW +_T06SQLite6ResultO12successCodes33_79F5A2E9E6411E14122CA7C8A9C356C7LLs3SetVys5Int32VGfau +_T0SS13CharacterViewV22legacyGraphemeBackwardSiSS5IndexV5start_AE3endSi0hF5UTF16tFTfq4xxnn_n +_T0s19_ThreadLocalStorageV17getUBreakIterators13OpaquePointerVs11_StringCoreV3for_tFZTfq4gXd_n +_T0SS13CharacterViewV43_measureExtendedGraphemeClusterBackwardSlowS2i9endOffset_SS5IndexV5startAF0I0Si0iK5UTF16tFTfq4nxxnn_n +_T0s23_BidirectionalIndexablePsE8distance13IndexDistanceQz0D0Qz4from_AG2totFSS13CharacterViewV_Tgq5Tfq4xxn_n +_T0s2eeoiSbx_xts16RawRepresentableRzs9Equatable0B5ValueRpzlFTfq4gg_n6SQLite10ConnectionC15TransactionModeO_Tg5 +rawValue.get +_T0s23_NativeDictionaryBufferVss8HashableRzr0_lE12unsafeAddNewyx3key_q_5valuetFTfq4ggn_nSS_s5Int32VSV_SVtXBTg5 +_T0s23_NativeDictionaryBufferVss8HashableRzr0_lE12unsafeAddNewyx3key_q_5valuetFTfq4ggn_nSS_s0B0VySiys13OpaquePointerVSg_s5Int32VSpyAKGSgtXBGTg5 +_T0s23_NativeDictionaryBufferVss8HashableRzr0_lE12unsafeAddNewyx3key_q_5valuetFTfq4ggn_nSi_ys13OpaquePointerVSg_s5Int32VSpyAIGSgtXBTg5 +_T0s24_VariantDictionaryBufferO12nativeDeleteys07_NativebC0Vyxq_G_Si11idealBucketSi6offsettFTfq4gnnn_nSS_s0B0VySiys13OpaquePointerVSg_s5Int32VSpyAMGSgtXBGTg5 +_T0SS8UTF8ViewV6_countSix9fromUTF16_ts8SequenceRzs6UInt16V7ElementRtzlFs11_StringCoreV_Tgq5Tfq4gXd_n +_T0SS8UTF8ViewV6_countSix9fromUTF16_ts8SequenceRzs6UInt16V7ElementRtzlFSRyAGG_Tgq5Tfq4xd_n +_T0s24_VariantDictionaryBufferO018ensureUniqueNativeC0Sb11reallocated_Sb15capacityChangedtSiFSS_s5Int32VSV_SVtXBTg5 +_T0s24_CocoaDictionaryIteratorC4nextyXl_yXltSgyF +_T0Sv4loadxSi14fromByteOffset_xm2astlFs9UnmanagedVyyXlG_Tgq5Tfq4ndn_n +_T0yXlMa +_T0s23_NativeDictionaryBufferVAByxq_GSi8capacity_s04_RawaB7StorageC7storagetcfCSS_s5Int32VSV_SVtXBTg5 +_T0s23_NativeDictionaryBufferVAByxq_GSi8capacity_s04_RawaB7StorageC7storagetcfCSS_s5Int32VSV_SVtXBTg5Tf4nnd_n +_T0s24_VariantDictionaryBufferO018ensureUniqueNativeC0Sb11reallocated_Sb15capacityChangedtSiFSS_s0B0VySiys13OpaquePointerVSg_s5Int32VSpyAJGSgtXBGTg5 +_T0s23_NativeDictionaryBufferVAByxq_GSi8capacity_s04_RawaB7StorageC7storagetcfCSS_s0B0VySiys13OpaquePointerVSg_s5Int32VSpyALGSgtXBGTg5 +_T0s23_NativeDictionaryBufferVAByxq_GSi8capacity_s04_RawaB7StorageC7storagetcfCSS_s0B0VySiys13OpaquePointerVSg_s5Int32VSpyALGSgtXBGTg5Tf4nnd_n +_T0s37_HashableTypedNativeDictionaryStorageCySSs0D0VySiys13OpaquePointerVSg_s5Int32VSpyAGGSgtXBGGMa +_T0s24_VariantDictionaryBufferO018ensureUniqueNativeC0Sb11reallocated_Sb15capacityChangedtSiFSi_ys13OpaquePointerVSg_s5Int32VSpyAHGSgtXBTg5 +_T0s24_VariantDictionaryBufferO17nativeUpdateValueq_Sgq__x6forKeytFSi_ys13OpaquePointerVSg_s5Int32VSpyAHGSgtXBTg5 +_T0s14_decodeCStringSS6result_Sb11repairsMadetSgSPy8CodeUnitQzG_xm2asSi6lengthSb016repairingInvalidF5Unitsts16_UnicodeEncodingRzlFs0M0O4UTF8O_Tgq5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFAEys4Int8VG_s07_IgnoreK0VyALGTgq5Tfq4nnndn_n +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtFs4Int8V_Tgq5Tfq4xnn_n +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFAEys4Int8VG_Tgq5 +_T0s23_ContiguousArrayStorageCys4Int8VGMa +_T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tFs4Int8V_Tgq5 +_T0s15ContiguousArrayV15reserveCapacityySiFs4Int8V_Tgq5 +_T0SS11utf8CStrings15ContiguousArrayVys4Int8VGfgTfq4x_n +_T0SS8UTF8ViewV5countSifg +_T0s26_toStringReadOnlyPrintableSSxs06CustomB11ConvertibleRzlFTfq4g_ns5Int32V_Tg5 +_T0s5Int32Vs23CustomStringConvertiblessACP11descriptionSSfgTW +_T0s26_toStringReadOnlyPrintableSSxs06CustomB11ConvertibleRzlFTfq4g_n6SQLite9StatementC_Tg5 +_T06SQLite10ConnectionC8trace_v233_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgFs5Int32Vs6UInt32V_SvSgA2KtcfU0_To +_T06SQLite10ConnectionC8trace_v233_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgFs5Int32Vs6UInt32V_SvSgA2KtcfU0_ +_getEmbeddedNSError +_code.get +_domain.get +_T06SQLite6ResultOmMa +globalinit_33_79F5A2E9E6411E14122CA7C8A9C356C7_func2 +_T0s3SetVAByxGSayxG12arrayLiterald_tcfCTfq4gn_ns5Int32V_Tg5 +_T0s16_NativeSetBufferVss8HashableRzlE9fromArrayAByxGSayxGFZTfq4gn_ns5Int32V_Tg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZs5Int32V_Tg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZTfq4gnn_ns5Int32V_Tg5 +_T0s23_ContiguousArrayStorageCys5Int32VGMa +globalinit_33_79F5A2E9E6411E14122CA7C8A9C356C7_func1 +_T08Dispatch0A11SpecificKeyCySiGMa +_T06SQLite10ConnectionC15createCollationySS_SC16ComparisonResultOSS_SStctKFs5Int32VSvSg_AHSVSgAhJtcfU0_To +_T06SQLite10ConnectionC15createCollationySS_SC16ComparisonResultOSS_SStctKFs5Int32VSvSg_AHSVSgAhJtcfU0_ +_T0S2Vs5Int32VIxyyd_S2VABIyByyd_TR +createCollation +_T0s24_VariantDictionaryBufferO17nativeUpdateValueq_Sgq__x6forKeytFSS_s5Int32VSV_SVtXBTg5 +_T06SQLite10ConnectionC14createFunctionySS_SuSg13argumentCountSb13deterministicAA7Binding_pSgSayAIGctFys13OpaquePointerVSg_s5Int32VSpyAMGSgtcfU1_To +_T06SQLite10ConnectionC14createFunctionySS_SuSg13argumentCountSb13deterministicAA7Binding_pSgSayAIGctFys13OpaquePointerVSg_s5Int32VSpyAMGSgtcfU1_ +_T0s13OpaquePointerVSgs5Int32VSpyACGSgIxyyy_AceGIyByyy_TR +_T06SQLite10ConnectionC14createFunctionySS_SuSg13argumentCountSb13deterministicAA7Binding_pSgSayAIGctFys13OpaquePointerVSg_s5Int32VSpyAMGSgtcfU0_AISicfU_ +_T06SQLite10ConnectionC12rollbackHookyyycSgFySvSgcfU0_To +_T06SQLite10ConnectionC12rollbackHookyyycSgFySvSgcfU0_ +_T0Ix_IyB_TR +rollbackHook +_T06SQLite10ConnectionC10commitHookyyyKcSgFs5Int32VSvSgcfU0_To +_T06SQLite10ConnectionC10commitHookyyyKcSgFs5Int32VSvSgcfU0_ +_T0s5Int32VIxd_ABIyBd_TR +_T06SQLite10ConnectionC10commitHookyyyKcSgFs5Int32VycfU_ +_T06SQLite10ConnectionC10commitHookyyyKcSgFs5Int32VycfU_Tf4g_n +commitHook +_T06SQLite10ConnectionC10updateHookyyAC9OperationO_S2Ss5Int64VtcSgFySvSg_s5Int32VSPys4Int8VGSgApHtcfU0_To +_T06SQLite10ConnectionC10updateHookyyAC9OperationO_S2Ss5Int64VtcSgFySvSg_s5Int32VSPys4Int8VGSgApHtcfU0_ +_T0s5Int32VSPys4Int8VGAEs5Int64VIxyyyy_Ab2eGIyByyyy_TR +updateHook +_T06SQLite10ConnectionC8trace_v133_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgFySvSg_SPys4Int8VGSgtcfU0_To +_T06SQLite10ConnectionC8trace_v133_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgFySvSg_SPys4Int8VGSgtcfU0_ +_T0SVIxy_SVIyBy_TR +trace_v1 +trace_v2 +trace +_stdlib_isOSVersionAtLeast +_T06SQLite10ConnectionC11busyHandlerySbSicSgFs5Int32VSvSg_AGtcfU0_To +_T06SQLite10ConnectionC11busyHandlerySbSicSgFs5Int32VSvSg_AGtcfU0_ +_T0s5Int32VABIxyd_A2BIyByd_TR +busyHandler +busyTimeout.materialize +busyTimeout.set +busyTimeout.get +interrupt +savepoint +hashValue.get +scalar +_T06SQLite10ConnectionC7executeySSKFs5Int32VyKcfU_ +execute +totalChanges.get +changes.get +lastInsertRowid.get +readonly.get +__derived_enum_equals +__T06SQLite5ValuePAAE10expressionAA10ExpressionVyytGfg10Foundation4DateV_Tg5 +__T06SQLite5ValuePAAE10expressionAA10ExpressionVyytGfgSS_Tg5 +__T06SQLite10ExpressionVyxGAA0B4TypeAAlAaEP8templateSSfgTW +__T06SQLite10ExpressionVyxGAA0B4TypeAAlAaEP8bindingsSayAA7Binding_pSgGfgTW +__T06SQLite10ExpressionVyxGAA0B4TypeAAlAaEPxSS_SayAA7Binding_pSgGtcfCTW +__T06SQLite10ExpressionVyxGAA11ExpressibleAAlAaEP10expressionACyytGfgTW +__T06SQLite9transcodeSSAA7Binding_pSgF +__T06SQLite14ExpressionTypePAAE3ascAA11Expressible_pfgTm +_globalinit_33_55DAAD62B9B6B0C7112F93C647075291_func3 +__T0Sd6SQLite11ExpressibleA2aBP10expressionAA10ExpressionVyytGfgTW +__T0s5Int64V6SQLite11ExpressibleA2cDP10expressionAC10ExpressionVyytGfgTW +__T0SS6SQLite11ExpressibleA2aBP10expressionAA10ExpressionVyytGfgTW +__T06SQLite4BlobVAA11ExpressibleA2aDP10expressionAA10ExpressionVyytGfgTW +__T0Sb6SQLite11ExpressibleA2aBP10expressionAA10ExpressionVyytGfgTW +__T0Si6SQLite11ExpressibleA2aBP10expressionAA10ExpressionVyytGfgTW +__T06SQLite6SelectVyxGAA11ExpressibleAAlAaEP10expressionAA10ExpressionVyytGfgTW +__T06SQLite6DeleteVAA11ExpressibleA2aDP10expressionAA10ExpressionVyytGfgTW +__T0SS13CharacterViewV9subscripts0A0VSS5IndexVcfgTfq4xn_n +__T06SQLite14ExpressionTypePA2aBRzAA5Value010UnderlyingC0RpzlExAF5value_tcfCAA0B0Vy10Foundation4DataVG_Tg5Tf4xd_n +__T06SQLite10ExpressionV8templateSSfgTfq4n_g +__T06SQLite10ExpressionV8bindingsSayAA7Binding_pSgGfgTfq4n_g +__T0s8SequencePsE6reduceqd__qd___qd__qd___7ElementQztKctKlFSS13CharacterViewV_SSTg507_T0SSs9D41VSSs5Error_pIxxxozo_SSABSSsAC_pIxiirzo_TRSSs0D0VSSs0I0_pIxxxozo_Tf1ncn_nTf4xng_n +__T06SQLite11ExpressiblePAAE5asSQLSSyFS2S_s9CharacterVtcfU_TA +__T06SQLite11ExpressiblePAAE5asSQLSSyFS2S_s9CharacterVtcfU_Tf4gXggXn_n +__T06SQLite4castAA10ExpressionVyq_GADyxGAA5ValueRzAaGR_r0_lFTf4g_n +__T06SQLite4castAA10ExpressionVyq_SgGADyxSgGAA5ValueRzAaIR_r0_lFTf4g_n +__T06SQLite4castAA10ExpressionVyq_GADyxGAA5ValueRzAaGR_r0_lFTf4g_nTm +__T06SQLite10ExpressionVyxGAA0B4TypeAAl010UnderlyingC0Wt +__T06SQLite10ExpressionVwXX +__T06SQLite10ExpressionVwCP +__T06SQLite10ExpressionVwpr +__T06SQLite10ExpressionVwde +__T06SQLite10ExpressionVwxx +__T06SQLite10ExpressionVwCp +__T06SQLite10ExpressionVwcp +__T06SQLite10ExpressionVwca +__T06SQLite10ExpressionVwTk +___swift_memcpy32_8 +__T06SQLite10ExpressionVwta +__T06SQLite10ExpressionVwal +__T06SQLite10ExpressionVwXx +__T06SQLite10ExpressionVwCc +__T06SQLite6UpdateVAA11ExpressibleA2aDP10expressionAA10ExpressionVyytGfgTW +__T06SQLite6InsertVAA11ExpressibleA2aDP10expressionAA10ExpressionVyytGfgTW +__T06SQLite14ExpressionType_pMF +__T06SQLite10ExpressionVWV +__T06SQLite10ExpressionVMP +__T06SQLite10ExpressionVMF +__T06SQLite11Expressible_pMF +__T0Say6SQLite7Binding_pSgGML +__T06SQLite10ExpressionVyxGAA0B4TypeAAlMA +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Expression.swift +Expression.swift +objectdestroy.7 +create_generic_metadata_Expression +get_field_types_Expression +_T0Say6SQLite7Binding_pSgGMa +_T06SQLite10ExpressionVwCc +_T06SQLite10ExpressionVwXx +_T06SQLite10ExpressionVwal +_T06SQLite10ExpressionVwta +__swift_memcpy32_8 +_T06SQLite10ExpressionVwTk +_T06SQLite10ExpressionVwca +_T06SQLite10ExpressionVwcp +_T06SQLite10ExpressionVwCp +_T06SQLite10ExpressionVwxx +_T06SQLite10ExpressionVwde +_T06SQLite10ExpressionVwpr +_T06SQLite10ExpressionVwCP +_T06SQLite10ExpressionVwXX +_T06SQLite10ExpressionVyxGAA0B4TypeAAl010UnderlyingC0Wt +_T06SQLite10ExpressionVyxGAA11ExpressibleAAlWa +cast +_T06SQLite11ExpressiblePAAE5asSQLSSyFS2S_s9CharacterVtcfU_Tf4gXggXn_n +objectdestroy.3 +_T06SQLite11ExpressiblePAAE5asSQLSSyFS2S_s9CharacterVtcfU_TA +_T06SQLite11ExpressiblePAAE5asSQLSSyFS2S_s9CharacterVtcfU_ +_T06SQLite10ExpressionVyxGAA0B4TypeAAlWa +_T06SQLite10ExpressionVMa +reduce +_T0s16IndexingIteratorVyxGs0B8Protocolss14_IndexableBaseRzlsADP4next7ElementQzSgyFTWSS13CharacterViewV_Tg5 +_T0SS13CharacterViewVs14_IndexableBasessACP9formIndexy0F0Qzz5after_tFTW +_T0Sr9subscriptxSicfgs5UInt8V_Tgq5Tfq4nx_n +_T0SSs9CharacterVSSs5Error_pIxxxozo_SSABSSsAC_pIxiirzo_TR +_T0SS13CharacterViewVs14_IndexableBasessACP9subscript7ElementQz5IndexQzcfgTW +_T0SS5IndexVs9EquatablessACP2eeoiSbx_xtFZTW +_T0SS13CharacterViewVs8SequencessACP12makeIterator0E0QzyFTW +bindings.get +template.get +expression.get +_T06SQLite5rowidAA10ExpressionVys5Int64VGfau +globalinit_33_55DAAD62B9B6B0C7112F93C647075291_func3 +null.get +asc.get +asSQL +bindings.materialize +bindings.set +template.materialize +template.set +__T0SS6SQLiteE5infixAA10ExpressionVyxGAA11Expressible_p_AaF_pSb4wraptlFyt_Tg5 +__T0SS6SQLiteE5infixAA10ExpressionVyxGAA11Expressible_p_AaF_pSb4wraptlFSbSg_Tg5Tm +__T0SS6SQLiteE5infixAA10ExpressionVyxGAA11Expressible_p_AaF_pSb4wraptlFSi_Tg5 +__T0SS6SQLiteE5infixAA10ExpressionVyxGAA11Expressible_p_AaF_pSb4wraptlFSb_Tg5Tm +__T0SS6SQLiteE5infixAA10ExpressionVyxGAA11Expressible_p_AaF_pSb4wraptlF +__T0xSg6SQLite13_OptionalTypeABl07WrappedC0Wt +__T0SS6SQLiteE6prefixAA11Expressible_pAaC_pF +__T0SS6SQLiteE6prefixAA11Expressible_pSayAaC_pGF +__T06SQLite5valuexAA7Binding_pAA5ValueRzlF +__T06SQLite5valuexAA7Binding_pSgAA5ValueRzlF +__T0s27_toStringReadOnlyStreamableSSxs010TextOutputE0RzlFTfq4g_ns9CharacterV_Tg5 +__T0Sa16_copyToNewBufferySi8oldCount_tFSS_Tg5 +__T06SQLite4wrapAA10ExpressionVyxGAA11Expressible_p_SS8functiontlFTf4ngX_n +__T0SS6SQLiteE5quoteSSs9CharacterVFS2S_ADtcfU_Tf4gXgg_n +__T06SQLite5infixAA10ExpressionVyxGAA11Expressible_p_AaF_pSb4wrapSS8functiontlFTf4nnngX_n +__T0SS6SQLiteE5quoteSSs9CharacterVFS2S_ADtcfU_TA +__T0SS6SQLiteE4wrapAA10ExpressionVyxGAA11Expressible_plFyt_Tg5 +__T0SS6SQLiteE4wrapAA10ExpressionVyxGAA11Expressible_plFSb_Tg5 +__T0SS6SQLiteE4wrapAA10ExpressionVyxGAA11Expressible_plFSbSg_Tg5 +__T06SQLite13_OptionalType_pMF +__T06SQLite10ExpressionVyytGACyxGAA0B4TypeAAlWL +__T06SQLite10ExpressionVySbSgGML +__T0SbSgML +__T0xSg6SQLite13_OptionalTypeABlMA +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Helpers.swift +_T0SS6SQLiteE5quoteSSs9CharacterVFS2S_ADtcfU_TA +Helpers.swift +_T0SS6SQLiteE5quoteSSs9CharacterVFS2S_ADtcfU_ +objectdestroy.11 +infix +_T0SS6SQLiteE5quoteSSs9CharacterVFS2S_ADtcfU_Tf4gXgg_n +_T0s27_toStringReadOnlyStreamableSSxs010TextOutputE0RzlFTfq4g_ns9CharacterV_Tg5 +_T0s9CharacterVs20TextOutputStreamablessACP5writeyqd__z2to_ts0bC6StreamRd__lFTWSS_Tg5 +_T0s9CharacterV5writeyxz2to_ts16TextOutputStreamRzlFSS_Tg5 +value +prefix +globalinit_33_6574432B243886442F79BBD7FC6A56C2_func4 +_T0xSg6SQLite13_OptionalTypeABlWa +_T0xSg6SQLite13_OptionalTypeABl07WrappedC0Wt +* +join +_T0Sa36_reserveCapacityAssumingUniqueBufferySi8oldCount_tFSS_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFSS_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFTfq4ngn_nSS_Tg5 +_T0s12_ArrayBufferV5countSifsSS_Tg5 +_T0Sa034_makeUniqueAndReserveCapacityIfNotB0yyFSS_Tg5 +transcode +_T0S2Sx26stringInterpolationSegment_tclufCTfq4gn_n6SQLite7Binding_p_Tg5 +_T06SQLite10ExpressionVyytGACyxGAA0B4TypeAAlWl +_T06SQLite10ExpressionVySbSgGMa +_T0SbSgMa +__T06SQLite9CollationOAA11ExpressibleA2aDP10expressionAA10ExpressionVyytGfgTW +__T06SQLite9CollationOs23CustomStringConvertibleAAsADP11descriptionSSfgTW +__T06SQLite9CollationOwXX +__T06SQLite9CollationOwCP +__T06SQLite9CollationOwpr +__T06SQLite9CollationOwde +__T06SQLite9CollationOwxx +__T06SQLite9CollationOwCp +__T06SQLite9CollationOwcp +__T06SQLite9CollationOwca +__T06SQLite9CollationOwTk +__T06SQLite9CollationOwta +__T06SQLite9CollationOwal +__T06SQLite9CollationOwXx +__T06SQLite9CollationOwCc +__T06SQLite9CollationOwug +__T06SQLite9CollationOwup +__T06SQLite9CollationOwui +__T06SQLite9CollationOWV +__T06SQLite9CollationOMf +__T06SQLite9CollationOMF +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Collation.swift +_T06SQLite9CollationOMa +Collation.swift +get_field_types_Collation +_T06SQLite9CollationOwui +_T06SQLite9CollationOwup +_T06SQLite9CollationOwug +_T06SQLite9CollationOwCc +_T06SQLite9CollationOwXx +_T06SQLite9CollationOwal +_T06SQLite9CollationOwta +_T06SQLite9CollationOwTk +_T06SQLite9CollationOwca +_T06SQLite9CollationOwcp +_T06SQLite9CollationOwCp +_T06SQLite9CollationOwxx +_T06SQLite9CollationOwde +_T06SQLite9CollationOwpr +_T06SQLite9CollationOwCP +_T06SQLite9CollationOwXX +_T06SQLite9CollationOs23CustomStringConvertibleAAWa +_T06SQLite9CollationOAA11ExpressibleAAWa +__T06SQLite6SetterVAcA10ExpressionVyxG6column_AF5valuetcAA5ValueRzlu33_6CFD51AA217206E3BDBDDEEA75706437LlfC +__T06SQLite6SetterVAcA10ExpressionVyxG6column_x5valuetcAA5ValueRzlu33_6CFD51AA217206E3BDBDDEEA75706437LlfC +__T06SQLite6SetterVAcA10ExpressionVyxSgG6column_AEyxG5valuetcAA5ValueRzlu33_6CFD51AA217206E3BDBDDEEA75706437LlfC +__T06SQLite6SetterVAcA10ExpressionVyxSgG6column_AG5valuetcAA5ValueRzlu33_6CFD51AA217206E3BDBDDEEA75706437LlfC +__T06SQLite6SetterVAcA10ExpressionVyxSgG6column_AF5valuetcAA5ValueRzlu33_6CFD51AA217206E3BDBDDEEA75706437LlfC +__T06SQLite6SetterVAA11ExpressibleA2aDP10expressionAA10ExpressionVyytGfgTW +__T06SQLite2peoiAA6SetterVAA10ExpressionVyxG_xtAA5ValueRzAA6Number8DatatypeRpzlFSi_Tg5 +__T06SQLite2seoiAA6SetterVAA10ExpressionVyxG_xtAA5ValueRzAA6Number8DatatypeRpzlFSi_Tg5 +__T06SQLite2peoiAA6SetterVAA10ExpressionVyxG_xtAA5ValueRzAA6Number8DatatypeRpzlFSi_Tg5Tm +__T06SQLite2peoiAA6SetterVAA10ExpressionVyxG_AGtAA5ValueRzAA6Number8DatatypeRpzlFTm +__T06SQLite2peoiAA6SetterVAA10ExpressionVyxG_xtAA5ValueRzAA6Number8DatatypeRpzlFTm +__T06SQLite2reoiAA6SetterVAA10ExpressionVyxG_AGtAA5ValueRzs5Int64V8DatatypeRtzlFTm +__T06SQLite2reoiAA6SetterVAA10ExpressionVyxG_xtAA5ValueRzs5Int64V8DatatypeRtzlFTm +__T06SQLite2ppoPAA6SetterVAA10ExpressionVyxGAA5ValueRzs5Int64V8DatatypeRtzlFTm +__T06SQLite2ppoPAA6SetterVAA10ExpressionVyxSgGAA5ValueRzs5Int64V8DatatypeRtzlFTm +__T06SQLite1poiAA10ExpressionVyxGAE_AEtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1poiAA10ExpressionVyxGAE_xtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1poiAA10ExpressionVyxSgGAF_ADyxGtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1poiAA10ExpressionVyxSgGAF_AFtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1poiAA10ExpressionVyxSgGAF_xtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1soiAA10ExpressionVyxGAE_AEtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1soiAA10ExpressionVyxGAE_xtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1soiAA10ExpressionVyxSgGAF_ADyxGtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1soiAA10ExpressionVyxSgGAF_AFtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1soiAA10ExpressionVyxSgGAF_xtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1moiAA10ExpressionVyxGAE_AEtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1moiAA10ExpressionVyxGAE_xtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1moiAA10ExpressionVyxSgGAF_ADyxGtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1moiAA10ExpressionVyxSgGAF_AFtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1moiAA10ExpressionVyxSgGAF_xtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1doiAA10ExpressionVyxGAE_AEtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1doiAA10ExpressionVyxGAE_xtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1doiAA10ExpressionVyxSgGAF_ADyxGtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1doiAA10ExpressionVyxSgGAF_AFtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1doiAA10ExpressionVyxSgGAF_xtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1roiAA10ExpressionVyxGAE_AEtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1roiAA10ExpressionVyxGAE_xtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1roiAA10ExpressionVyxSgGAF_ADyxGtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1roiAA10ExpressionVyxSgGAF_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1roiAA10ExpressionVyxSgGAF_xtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2lloiAA10ExpressionVyxGAE_AEtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2lloiAA10ExpressionVyxGAE_xtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2lloiAA10ExpressionVyxSgGAF_ADyxGtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2lloiAA10ExpressionVyxSgGAF_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2lloiAA10ExpressionVyxSgGAF_xtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2ggoiAA10ExpressionVyxGAE_AEtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2ggoiAA10ExpressionVyxGAE_xtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2ggoiAA10ExpressionVyxSgGAF_ADyxGtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2ggoiAA10ExpressionVyxSgGAF_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2ggoiAA10ExpressionVyxSgGAF_xtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1aoiAA10ExpressionVyxGAE_AEtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1aoiAA10ExpressionVyxGAE_xtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1aoiAA10ExpressionVyxSgGAF_ADyxGtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1aoiAA10ExpressionVyxSgGAF_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1aoiAA10ExpressionVyxSgGAF_xtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1ooiAA10ExpressionVyxGAE_AEtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1ooiAA10ExpressionVyxGAE_xtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1ooiAA10ExpressionVyxSgGAF_ADyxGtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1ooiAA10ExpressionVyxSgGAF_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1ooiAA10ExpressionVyxSgGAF_xtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1xoiAA10ExpressionVyxGAE_AEtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1xoiAA10ExpressionVyxGAE_xtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1xoiAA10ExpressionVyxSgGAF_ADyxGtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1xoiAA10ExpressionVyxSgGAF_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1xoiAA10ExpressionVyxSgGAF_xtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite6SetterVwXX +__T06SQLite6SetterVwCP +__T06SQLite6SetterVwpr +__T06SQLite6SetterVwde +__T06SQLite6SetterVwxx +__T06SQLite6SetterVwCp +__T06SQLite6SetterVwcp +__T06SQLite6SetterVwca +___swift_assign_boxed_opaque_existential_1 +__T06SQLite6SetterVwTk +__T06SQLite6SetterVwtk +__T06SQLite6SetterVwta +__T06SQLite6SetterVwal +__T06SQLite6SetterVwXx +__T06SQLite6SetterVwCc +__T06SQLite6SetterVwTt +__T06SQLite6SetterVwtT +__T06SQLite10ExpressionVySiGACyxGAA0B4TypeAAlWL +__T06SQLite6SetterVWV +__T06SQLite6SetterVMf +__T06SQLite6SetterVMF +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Setter.swift +Setter.swift +_T06SQLite6SetterVMa +get_field_types_Setter +_T06SQLite6SetterVwtT +_T06SQLite6SetterVwTt +_T06SQLite6SetterVwCc +_T06SQLite6SetterVwXx +_T06SQLite6SetterVwal +_T06SQLite6SetterVwta +_T06SQLite6SetterVwtk +_T06SQLite6SetterVwTk +__swift_assign_boxed_opaque_existential_1 +_T06SQLite6SetterVwca +_T06SQLite6SetterVwcp +_T06SQLite6SetterVwCp +_T06SQLite6SetterVwxx +_T06SQLite6SetterVwde +_T06SQLite6SetterVwpr +_T06SQLite6SetterVwCP +_T06SQLite6SetterVwXX +_T06SQLite6SetterVAA11ExpressibleAAWa +++ +_T06SQLite10ExpressionVySiGACyxGAA0B4TypeAAlWl +%= +% ++= +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGycSS_Sb13deterministicxyctKAA5ValueRzlFxSayAA7Binding_pSgGcfU_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_GcSS_Sb13deterministicxq_ctKAA5ValueRzAaJR_r0_lFxSayAA7Binding_pSgGcfU_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_GcSS_Sb13deterministicxq_ctKAA5ValueRzAaJR_r0_lFAgHcfU0_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgGcSS_Sb13deterministicxAHctKAA5ValueRzAaKR_r0_lFxSayAA7Binding_pSgGcfU_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgGcSS_Sb13deterministicxAHctKAA5ValueRzAaKR_r0_lFAgIcfU0_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_GcSS_Sb13deterministicAGq_ctKAA5ValueRzAaKR_r0_lFAGSayAA7Binding_pSgGcfU_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_GcSS_Sb13deterministicxq_ctKAA5ValueRzAaJR_r0_lFxSayAA7Binding_pSgGcfU_Tm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_GcSS_Sb13deterministicAGq_ctKAA5ValueRzAaKR_r0_lFAhIcfU0_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_GcSS_Sb13deterministicxq_ctKAA5ValueRzAaJR_r0_lFAgHcfU0_Tm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgGcSS_Sb13deterministicAgIctKAA5ValueRzAaLR_r0_lFAGSayAA7Binding_pSgGcfU_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgGcSS_Sb13deterministicxAHctKAA5ValueRzAaKR_r0_lFxSayAA7Binding_pSgGcfU_Tm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgGcSS_Sb13deterministicAgIctKAA5ValueRzAaLR_r0_lFAhJcfU0_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgGcSS_Sb13deterministicxAHctKAA5ValueRzAaKR_r0_lFAgIcfU0_Tm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_GtcSS_Sb13deterministicxq__q0_tctKAA5ValueRzAaKR_AaKR0_r1_lFxSayAA7Binding_pSgGcfU_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_GtcSS_Sb13deterministicxq__q0_tctKAA5ValueRzAaKR_AaKR0_r1_lFAgH_AItcfU0_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgG_AFyq0_GtcSS_Sb13deterministicxAH_q0_tctKAA5ValueRzAaLR_AaLR0_r1_lFxSayAA7Binding_pSgGcfU_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgG_AFyq0_GtcSS_Sb13deterministicxAH_q0_tctKAA5ValueRzAaLR_AaLR0_r1_lFAgI_AJtcfU0_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_SgGtcSS_Sb13deterministicxq__AItctKAA5ValueRzAaLR_AaLR0_r1_lFxSayAA7Binding_pSgGcfU_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_SgGtcSS_Sb13deterministicxq__AItctKAA5ValueRzAaLR_AaLR0_r1_lFAgH_AJtcfU0_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_G_AFyq0_GtcSS_Sb13deterministicAGq__q0_tctKAA5ValueRzAaLR_AaLR0_r1_lFAGSayAA7Binding_pSgGcfU_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_GtcSS_Sb13deterministicxq__q0_tctKAA5ValueRzAaKR_AaKR0_r1_lFxSayAA7Binding_pSgGcfU_Tm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_G_AFyq0_GtcSS_Sb13deterministicAGq__q0_tctKAA5ValueRzAaLR_AaLR0_r1_lFAhI_AJtcfU0_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_GtcSS_Sb13deterministicxq__q0_tctKAA5ValueRzAaKR_AaKR0_r1_lFAgH_AItcfU0_Tm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgG_AFyq0_SgGtcSS_Sb13deterministicxAH_AJtctKAA5ValueRzAaMR_AaMR0_r1_lFxSayAA7Binding_pSgGcfU_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgG_AFyq0_SgGtcSS_Sb13deterministicxAH_AJtctKAA5ValueRzAaMR_AaMR0_r1_lFAgI_AKtcfU0_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgG_AFyq0_GtcSS_Sb13deterministicAgI_q0_tctKAA5ValueRzAaMR_AaMR0_r1_lFAGSayAA7Binding_pSgGcfU_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgG_AFyq0_GtcSS_Sb13deterministicxAH_q0_tctKAA5ValueRzAaLR_AaLR0_r1_lFxSayAA7Binding_pSgGcfU_Tm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgG_AFyq0_GtcSS_Sb13deterministicAgI_q0_tctKAA5ValueRzAaMR_AaMR0_r1_lFAhJ_AKtcfU0_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgG_AFyq0_GtcSS_Sb13deterministicxAH_q0_tctKAA5ValueRzAaLR_AaLR0_r1_lFAgI_AJtcfU0_Tm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_G_AFyq0_SgGtcSS_Sb13deterministicAGq__AJtctKAA5ValueRzAaMR_AaMR0_r1_lFAGSayAA7Binding_pSgGcfU_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_SgGtcSS_Sb13deterministicxq__AItctKAA5ValueRzAaLR_AaLR0_r1_lFxSayAA7Binding_pSgGcfU_Tm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_G_AFyq0_SgGtcSS_Sb13deterministicAGq__AJtctKAA5ValueRzAaMR_AaMR0_r1_lFAhI_AKtcfU0_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_SgGtcSS_Sb13deterministicxq__AItctKAA5ValueRzAaLR_AaLR0_r1_lFAgH_AJtcfU0_Tm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgG_AFyq0_SgGtcSS_Sb13deterministicAgI_AKtctKAA5ValueRzAaNR_AaNR0_r1_lFAGSayAA7Binding_pSgGcfU_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgG_AFyq0_SgGtcSS_Sb13deterministicAgI_AKtctKAA5ValueRzAaNR_AaNR0_r1_lFAhJ_ALtcfU0_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgG_AFyq0_SgGtcSS_Sb13deterministicxAH_AJtctKAA5ValueRzAaMR_AaMR0_r1_lFAgI_AKtcfU0_Tm +__T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxGSayAA11Expressible_pGcSS_SuSbxSayAA7Binding_pSgGctKAA5ValueRzlFAlMcfU_ +__T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxSgGSayAA11Expressible_pGcSS_SuSbAHSayAA7Binding_pSgGctKAA5ValueRzlFAmNcfU_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGycSS_Sb13deterministicxyctKAA5ValueRzlFAGycfU0_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGycSS_Sb13deterministicAGyctKAA5ValueRzlFAGSayAA7Binding_pSgGcfU_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGycSS_Sb13deterministicxyctKAA5ValueRzlFxSayAA7Binding_pSgGcfU_TATm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGycSS_Sb13deterministicAGyctKAA5ValueRzlFAHycfU0_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGycSS_Sb13deterministicxyctKAA5ValueRzlFAGycfU0_TATm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_GcSS_Sb13deterministicxq_ctKAA5ValueRzAaJR_r0_lFxSayAA7Binding_pSgGcfU_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_GcSS_Sb13deterministicxq_ctKAA5ValueRzAaJR_r0_lFAgHcfU0_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgGcSS_Sb13deterministicxAHctKAA5ValueRzAaKR_r0_lFxSayAA7Binding_pSgGcfU_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgGcSS_Sb13deterministicAgIctKAA5ValueRzAaLR_r0_lFAGSayAA7Binding_pSgGcfU_TATm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgGcSS_Sb13deterministicxAHctKAA5ValueRzAaKR_r0_lFAgIcfU0_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_GcSS_Sb13deterministicxq_ctKAA5ValueRzAaJR_r0_lFAgHcfU0_TATm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_GcSS_Sb13deterministicAGq_ctKAA5ValueRzAaKR_r0_lFAGSayAA7Binding_pSgGcfU_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_GcSS_Sb13deterministicxq_ctKAA5ValueRzAaJR_r0_lFxSayAA7Binding_pSgGcfU_TATm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_GcSS_Sb13deterministicAGq_ctKAA5ValueRzAaKR_r0_lFAhIcfU0_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgGcSS_Sb13deterministicAgIctKAA5ValueRzAaLR_r0_lFAGSayAA7Binding_pSgGcfU_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgGcSS_Sb13deterministicAgIctKAA5ValueRzAaLR_r0_lFAhJcfU0_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_GtcSS_Sb13deterministicxq__q0_tctKAA5ValueRzAaKR_AaKR0_r1_lFxSayAA7Binding_pSgGcfU_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_GtcSS_Sb13deterministicxq__q0_tctKAA5ValueRzAaKR_AaKR0_r1_lFAgH_AItcfU0_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgG_AFyq0_GtcSS_Sb13deterministicxAH_q0_tctKAA5ValueRzAaLR_AaLR0_r1_lFxSayAA7Binding_pSgGcfU_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_G_AFyq0_SgGtcSS_Sb13deterministicAGq__AJtctKAA5ValueRzAaMR_AaMR0_r1_lFAGSayAA7Binding_pSgGcfU_TATm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgG_AFyq0_GtcSS_Sb13deterministicxAH_q0_tctKAA5ValueRzAaLR_AaLR0_r1_lFAgI_AJtcfU0_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_GtcSS_Sb13deterministicxq__q0_tctKAA5ValueRzAaKR_AaKR0_r1_lFAgH_AItcfU0_TATm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_SgGtcSS_Sb13deterministicxq__AItctKAA5ValueRzAaLR_AaLR0_r1_lFxSayAA7Binding_pSgGcfU_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_SgGtcSS_Sb13deterministicxq__AItctKAA5ValueRzAaLR_AaLR0_r1_lFAgH_AJtcfU0_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_G_AFyq0_GtcSS_Sb13deterministicAGq__q0_tctKAA5ValueRzAaLR_AaLR0_r1_lFAGSayAA7Binding_pSgGcfU_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_GtcSS_Sb13deterministicxq__q0_tctKAA5ValueRzAaKR_AaKR0_r1_lFxSayAA7Binding_pSgGcfU_TATm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_G_AFyq0_GtcSS_Sb13deterministicAGq__q0_tctKAA5ValueRzAaLR_AaLR0_r1_lFAhI_AJtcfU0_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgG_AFyq0_SgGtcSS_Sb13deterministicxAH_AJtctKAA5ValueRzAaMR_AaMR0_r1_lFxSayAA7Binding_pSgGcfU_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgG_AFyq0_SgGtcSS_Sb13deterministicAgI_AKtctKAA5ValueRzAaNR_AaNR0_r1_lFAGSayAA7Binding_pSgGcfU_TATm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgG_AFyq0_SgGtcSS_Sb13deterministicxAH_AJtctKAA5ValueRzAaMR_AaMR0_r1_lFAgI_AKtcfU0_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgG_AFyq0_GtcSS_Sb13deterministicAgI_q0_tctKAA5ValueRzAaMR_AaMR0_r1_lFAGSayAA7Binding_pSgGcfU_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgG_AFyq0_GtcSS_Sb13deterministicAgI_q0_tctKAA5ValueRzAaMR_AaMR0_r1_lFAhJ_AKtcfU0_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_G_AFyq0_SgGtcSS_Sb13deterministicAGq__AJtctKAA5ValueRzAaMR_AaMR0_r1_lFAGSayAA7Binding_pSgGcfU_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_G_AFyq0_SgGtcSS_Sb13deterministicAGq__AJtctKAA5ValueRzAaMR_AaMR0_r1_lFAhI_AKtcfU0_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgG_AFyq0_SgGtcSS_Sb13deterministicAgI_AKtctKAA5ValueRzAaNR_AaNR0_r1_lFAGSayAA7Binding_pSgGcfU_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgG_AFyq0_SgGtcSS_Sb13deterministicAgI_AKtctKAA5ValueRzAaNR_AaNR0_r1_lFAhJ_ALtcfU0_TA +__T06SQLite5valuexAA7Binding_pAA5ValueRzlFTA +__T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxSgGSayAA11Expressible_pGcSS_SuSbAHSayAA7Binding_pSgGctKAA5ValueRzlFAmNcfU_TA +__T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxSgGSayAA11Expressible_pGcSS_SuSbAHSayAA7Binding_pSgGctKAA5ValueRzlFAiKcfU0_TA +__T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxGSayAA11Expressible_pGcSS_SuSbxSayAA7Binding_pSgGctKAA5ValueRzlFAhJcfU0_Tf4ggX_n +__T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxSgGSayAA11Expressible_pGcSS_SuSbAHSayAA7Binding_pSgGctKAA5ValueRzlFAiKcfU0_Tf4ggX_n +__T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxGSayAA11Expressible_pGcSS_SuSbxSayAA7Binding_pSgGctKAA5ValueRzlFAlMcfU_TA +__T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxGSayAA11Expressible_pGcSS_SuSbxSayAA7Binding_pSgGctKAA5ValueRzlFAhJcfU0_TA +__T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxSgGSayAA11Expressible_pGcSS_SuSbAHSayAA7Binding_pSgGctKAA5ValueRzlFAiKcfU0_TATm +__T06SQLite5valuexAA7Binding_pAA5ValueRzlFTA.94 +__T06SQLite5valuexAA7Binding_pAA5ValueRzlFTA.102 +__T06SQLite5valuexAA7Binding_pAA5ValueRzlFTA.110 +__T06SQLite5valuexAA7Binding_pAA5ValueRzlFTA.116 +__T06SQLite5valuexAA7Binding_pAA5ValueRzlFTA.120 +__T06SQLite5valuexAA7Binding_pAA5ValueRzlFTA.128 +__T06SQLite5valuexAA7Binding_pAA5ValueRzlFTA.134 +__T06SQLite5valuexAA7Binding_pAA5ValueRzlFTA.143 +__T06SQLite5valuexAA7Binding_pAA5ValueRzlFTA.151 +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/CustomFunctions.swift +_T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxSgGSayAA11Expressible_pGcSS_SuSbAHSayAA7Binding_pSgGctKAA5ValueRzlFAiKcfU0_TA +CustomFunctions.swift +_T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxSgGSayAA11Expressible_pGcSS_SuSbAHSayAA7Binding_pSgGctKAA5ValueRzlFAiKcfU0_ +_T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxGSayAA11Expressible_pGcSS_SuSbxSayAA7Binding_pSgGctKAA5ValueRzlFAlMcfU_TA +_T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxSgGSayAA11Expressible_pGcSS_SuSbAHSayAA7Binding_pSgGctKAA5ValueRzlFAiKcfU0_Tf4ggX_n +_T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxGSayAA11Expressible_pGcSS_SuSbxSayAA7Binding_pSgGctKAA5ValueRzlFAhJcfU0_Tf4ggX_n +objectdestroy.157 +_T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxSgGSayAA11Expressible_pGcSS_SuSbAHSayAA7Binding_pSgGctKAA5ValueRzlFAmNcfU_TA +objectdestroy.149 +objectdestroy.141 +objectdestroy.132 +objectdestroy.126 +objectdestroy.118 +objectdestroy.114 +objectdestroy.108 +objectdestroy.105 +objectdestroy.100 +objectdestroy.92 +_T06SQLite5valuexAA7Binding_pAA5ValueRzlFTA +objectdestroy.89 +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgG_AFyq0_SgGtcSS_Sb13deterministicAgI_AKtctKAA5ValueRzAaNR_AaNR0_r1_lFAGSayAA7Binding_pSgGcfU_TA +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_GtcSS_Sb13deterministicxq__q0_tctKAA5ValueRzAaKR_AaKR0_r1_lFxSayAA7Binding_pSgGcfU_TA +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_GtcSS_Sb13deterministicxq__q0_tctKAA5ValueRzAaKR_AaKR0_r1_lFAgH_AItcfU0_TA +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_G_AFyq0_SgGtcSS_Sb13deterministicAGq__AJtctKAA5ValueRzAaMR_AaMR0_r1_lFAGSayAA7Binding_pSgGcfU_TA +objectdestroy.35 +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_GcSS_Sb13deterministicxq_ctKAA5ValueRzAaJR_r0_lFxSayAA7Binding_pSgGcfU_TA +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_GcSS_Sb13deterministicxq_ctKAA5ValueRzAaJR_r0_lFAgHcfU0_TA +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgGcSS_Sb13deterministicAgIctKAA5ValueRzAaLR_r0_lFAGSayAA7Binding_pSgGcfU_TA +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGycSS_Sb13deterministicxyctKAA5ValueRzlFAGycfU0_TA +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGycSS_Sb13deterministicxyctKAA5ValueRzlFAGycfU0_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGycSS_Sb13deterministicxyctKAA5ValueRzlFxSayAA7Binding_pSgGcfU_TA +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGycSS_Sb13deterministicxyctKAA5ValueRzlFxSayAA7Binding_pSgGcfU_ +_T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxSgGSayAA11Expressible_pGcSS_SuSbAHSayAA7Binding_pSgGctKAA5ValueRzlFAmNcfU_ +_T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxGSayAA11Expressible_pGcSS_SuSbxSayAA7Binding_pSgGctKAA5ValueRzlFAlMcfU_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgG_AFyq0_SgGtcSS_Sb13deterministicxAH_AJtctKAA5ValueRzAaMR_AaMR0_r1_lFAgI_AKtcfU0_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgG_AFyq0_SgGtcSS_Sb13deterministicAgI_AKtctKAA5ValueRzAaNR_AaNR0_r1_lFAGSayAA7Binding_pSgGcfU_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_SgGtcSS_Sb13deterministicxq__AItctKAA5ValueRzAaLR_AaLR0_r1_lFAgH_AJtcfU0_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_SgGtcSS_Sb13deterministicxq__AItctKAA5ValueRzAaLR_AaLR0_r1_lFxSayAA7Binding_pSgGcfU_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgG_AFyq0_GtcSS_Sb13deterministicxAH_q0_tctKAA5ValueRzAaLR_AaLR0_r1_lFAgI_AJtcfU0_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgG_AFyq0_GtcSS_Sb13deterministicxAH_q0_tctKAA5ValueRzAaLR_AaLR0_r1_lFxSayAA7Binding_pSgGcfU_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgG_AFyq0_SgGtcSS_Sb13deterministicxAH_AJtctKAA5ValueRzAaMR_AaMR0_r1_lFxSayAA7Binding_pSgGcfU_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_GtcSS_Sb13deterministicxq__q0_tctKAA5ValueRzAaKR_AaKR0_r1_lFAgH_AItcfU0_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_GtcSS_Sb13deterministicxq__q0_tctKAA5ValueRzAaKR_AaKR0_r1_lFxSayAA7Binding_pSgGcfU_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgGcSS_Sb13deterministicxAHctKAA5ValueRzAaKR_r0_lFAgIcfU0_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgGcSS_Sb13deterministicxAHctKAA5ValueRzAaKR_r0_lFxSayAA7Binding_pSgGcfU_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_GcSS_Sb13deterministicxq_ctKAA5ValueRzAaJR_r0_lFAgHcfU0_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_GcSS_Sb13deterministicxq_ctKAA5ValueRzAaJR_r0_lFxSayAA7Binding_pSgGcfU_ +__T0Sa6appendyqd__10contentsOf_t7ElementQyd__Rszs8SequenceRd__lFSS_SaySSGTg5 +__T0Sa6appendyqd__10contentsOf_t7ElementQyd__Rszs8SequenceRd__lFSi_SaySiGTg5 +__T0s10CollectionPsE5count13IndexDistanceQzfgs9SubstringV8UTF8ViewV_Tg5 +__T06SQLite9QueryTypePAAE9tableNameAA11Expressible_pSb5alias_tFAA12VirtualTableV_Tg5 +__T06SQLite9QueryTypePAAE9tableNameAA11Expressible_pSb5alias_tF +_globalinit_33_5F0FD0443FF5032238ECC00E64F41F5E_func5 +_globalinit_33_5F0FD0443FF5032238ECC00E64F41F5E_func6 +_globalinit_33_5F0FD0443FF5032238ECC00E64F41F5E_func7 +__T06SQLite9TokenizerVs23CustomStringConvertibleAAsADP11descriptionSSfgTW +__T0SPys4Int8VGSpys5Int32VGAFSSSgIxyyyo_Ac2FSo8NSStringCSgIyByyya_TR +__T06SQLite9FTSConfigC12ColumnOptionOs9EquatableAAsAFP2eeoiSbx_xtFZTW +__T06SQLite9FTSConfigC12ColumnOptionOs8HashableAAsAFP9hashValueSifgTW +__T06SQLite10FTS4ConfigC9MatchInfoOs9EquatableAAsAFP2eeoiSbx_xtFZTW +__T06SQLite10FTS4ConfigC9MatchInfoOs8HashableAAsAFP9hashValueSifgTW +__T06SQLite10FTS4ConfigC9MatchInfoOs23CustomStringConvertibleAAsAFP11descriptionSSfgTW +__T06SQLite10FTS4ConfigC5OrderOs9EquatableAAsAFP2eeoiSbx_xtFZTW +__T06SQLite10FTS4ConfigC5OrderOs8HashableAAsAFP9hashValueSifgTW +__T06SQLite10FTS4ConfigC5OrderOs23CustomStringConvertibleAAsAFP11descriptionSSfgTW +__T06SQLite10FTS4ConfigCfE +__T0s26RangeReplaceableCollectionPsE6remove7ElementQz5IndexQz2at_tFs11_UIntBufferVys6UInt32Vs6UInt16VG_Tgq5 +__T0s15ContiguousArrayV15reserveCapacityySiF6SQLite11Expressible_p_Tg5 +__T0Sa16_copyToNewBufferySi8oldCount_tF6SQLite11Expressible_p_Tg5 +__T0Sa16_copyToNewBufferySi8oldCount_tF6SQLite11Expressible_p_SayAC9FTSConfigC12ColumnOptionOG7optionst_Tg5 +__T0Sa16_copyToNewBufferySi8oldCount_tFSS_Tg5Tm +__T0s17MutableCollectionPssAARzs012RandomAccessB0Rzs10Comparable7Elements8SequencePRpzlE4sortyyFs15ContiguousArrayVySiG_Tg5 +__T0s20_ArrayBufferProtocolPsE20_arrayAppendSequenceyqd__s0F0Rd__7ElementQyd__AERtzlFTfq4gn_ns01_aB0VySSG_s08IteratorF0Vys08IndexingH0VySaySSGGGTg5 +__T0s20_ArrayBufferProtocolPsE20_arrayAppendSequenceyqd__s0F0Rd__7ElementQyd__AERtzlFTfq4gn_ns01_aB0VySiG_s08IteratorF0Vys08IndexingH0VySaySiGGGTg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0VySSG_Tg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vy6SQLite11Expressible_p_SayAM9FTSConfigC12ColumnOptionOG7optionstG_Tg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFAEy6SQLite11Expressible_p_SayAK9FTSConfigC12ColumnOptionOG7optionstG_Tg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0VySiG_Tg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0VySSG_s07_IgnoreK0VySSGTg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0Vy6SQLite11Expressible_p_SayAM9FTSConfigC12ColumnOptionOG7optionstG_s07_IgnoreK0VyAmN_p_AsTtGTg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_nAEySiG_s07_IgnoreK0VySiGTg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_nAEy6SQLite11Expressible_p_SayAK9FTSConfigC12ColumnOptionOG7optionstG_s07_IgnoreK0VyAkL_p_AqRtGTg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0VySiG_s07_IgnoreK0VySiGTg5 +__T0Sa15reserveCapacityySiFSS_Tg5 +__T0Sa15reserveCapacityySiFSi_Tg5 +__T0s26_toStringReadOnlyPrintableSSxs06CustomB11ConvertibleRzlFTfq4g_nSi_Tg5 +__T0Sis10ComparablessAAP2leoiSbx_xtFZTW +__T0Sis10ComparablessAAP2geoiSbx_xtFZTW +__T0Sis13BinaryIntegerssAAP1doixx_xtFZTW +__T0s5Int32Vs35_ExpressibleByBuiltinIntegerLiteralssACPxBi2048_08_builtineF0_tcfCTW +__T0SS17UnicodeScalarViewV05_isOnaB8BoundarySbSS5IndexVFTfq4xn_n +__T0SS8UTF8ViewV8distanceSiSS5IndexV4from_AE2totFTfq4xxn_n +__T0s17_UnicodeEncoding_PsE10_transcodeyqd___qd_0_m4fromy13EncodedScalarQzc4intots8SequenceRd__s01_aB0Rd_0_8CodeUnitQyd_0_7ElementRtd__r0_lFZs0A0O4UTF8O_s11_StringCoreVAO5UTF16OTgq5012_T0s16_ValidL30BufferVys6UInt32VGIxy_AEIxi_TRs01_qlR0Vys0T0VGIxy_Tfq1nncn_nTfq4gXddg_n06_T0SS8l52ViewV16_forwardDistanceSiSS5IndexV4from_AE2totFys06_q2A6rsT6VGcfU_SiTfq1nnnc_n +__T0s14_introSortImplyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subD0Si10depthLimitts17MutableCollectionRzs012RandomAccessL0Rzs10Comparable7Elements8SequencePRpzlFTfq4ngn_nSrySiG_Tg5 +__T0s9_heapSortyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subC0ts17MutableCollectionRzs012RandomAccessI0Rzs10Comparable7Elements8SequencePRpzlFTfq4ng_nSrySiG_Tg5 +__T0s14_insertionSortyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subC0ts23BidirectionalCollectionRzs07MutableI0Rzs10Comparable7Elements8SequencePRpzlFTfq4ng_nSrySiG_Tg5 +__T0s9_siftDownyxz_5Indexs14_IndexableBasePQz5indexs5RangeVyAEG03subG0ts17MutableCollectionRzs012RandomAccessJ0Rzs10Comparable7Elements8SequencePRpzlFTfq4nng_nSrySiG_Tg5 +__T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tF6SQLite11Expressible_p_Tg5 +__T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tF6SQLite11Expressible_p_SayAE9FTSConfigC12ColumnOptionOG7optionst_Tg5 +__T0s6_sort3yxz_5Indexs14_IndexableBasePQzA2Ets17MutableCollectionRzs012RandomAccessF0Rzs10Comparable7Elements8SequencePRpzlFSrySiG_Tg5 +__T0Sis17FixedWidthIntegerssAAP3maxxfgZTW +__T0s20_ArrayBufferProtocolPsE019_outlinedMakeUniqueB0ySi11bufferCount_tFs011_ContiguousaB0VySiG_Tg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi8newCount_Si16requiredCapacitytFAEySiG_Tg5 +__T0Sus10ComparablessAAP1loiSbx_xtFZTW +__T0s18BidirectionalSliceV5index5IndexQzAE6before_tFSS8UTF8ViewV_Tgq5Tfq4xn_n +__T0s18BidirectionalSliceV5index5IndexQzAE5after_tFSS8UTF8ViewV_Tgq5Tfq4xn_n +__T0s10_IndexablePsE9subscript11SubSequenceQzqd__cs15RangeExpressionRd__5BoundQyd__5IndexRtzlufgs11_StringCoreV_s07PartialE4UpToVySiGTgq5 +__T0s30ReversedRandomAccessCollectionV9subscript7ElementQzs0abC5IndexVyxGcfgs11_StringCoreV_Tgq5 +__T0s26RangeReplaceableCollectionPsE14removeSubrangeys0A0Vy5IndexQzGFs16_ValidUTF8BufferVys6UInt64VG_Tgq5Tfq4xn_n +__T06SQLite9FTSConfigC7OptionsV6appendAESS_AA11Expressible_pSg5valuetFTf4gXnn_nTf4nnnnn_g +__T0s10_partition5Indexs14_IndexableBasePQzxz_s5RangeVyAEG03subE0ts17MutableCollectionRzs012RandomAccessH0Rzs10Comparable7Elements8SequencePRpzlFSrySiG_Tg5Tf4nx_n +__T06SQLite9FTSConfigC7OptionsV6appendAESS_SSSg5valuetFTf4gXgn_n +__T06SQLite9FTSConfigC6columnACXDAA11Expressible_p_SayAC12ColumnOptionOGtFTf4ngn_n +__T06SQLite9FTSConfigC7columnsACXDSayAA11Expressible_pGFTf4gn_n +__T06SQLite6ModuleV4FTS4ACSayAA11Expressible_pG_AA9TokenizerVSg8tokenizetFZTf4ggd_n +__T06SQLite9QueryTypePAAE6filterxAA10ExpressionVySbSgGFAA12VirtualTableV_Tg5Tf4gn_n +__T06SQLite10ConnectionC17registerTokenizerySS_SS_s5RangeVySS5IndexVGtSgSSc4nexttKFSSSgSPys4Int8VG_Spys5Int32VGARtcfU_TA +__T06SQLite9TokenizerVwXX +__T06SQLite9TokenizerVwCP +__T06SQLite9TokenizerVwpr +__T06SQLite9TokenizerVwde +__T06SQLite9TokenizerVwxx +__T06SQLite9TokenizerVwCp +__T06SQLite9TokenizerVwcp +__T06SQLite9TokenizerVwca +__T06SQLite9TokenizerVwTk +__T06SQLite9TokenizerVwta +__T06SQLite9TokenizerVwal +__T06SQLite9TokenizerVwXx +__T06SQLite9TokenizerVwCc +___swift_memcpy0_1 +__T06SQLite9FTSConfigC12ColumnOptionOwug +__T06SQLite9FTSConfigC12ColumnOptionOwup +__T06SQLite9FTSConfigC12ColumnOptionOwui +__T06SQLite10FTS4ConfigC9MatchInfoOwug +__T06SQLite10FTS4ConfigC9MatchInfoOwup +__T06SQLite10FTS4ConfigC9MatchInfoOwui +__T06SQLite10FTS4ConfigC5OrderOwxs +__T06SQLite10FTS4ConfigC5OrderOwxg +__T06SQLite10FTS4ConfigC5OrderOwug +__T06SQLite10FTS4ConfigC5OrderOwup +__T06SQLite10FTS4ConfigC5OrderOwui +__T06SQLite11Expressible_p_SayAA9FTSConfigC12ColumnOptionOG7optionstMa +__T06SQLite10ConnectionC17registerTokenizerySS_SS_s5RangeVySS5IndexVGtSgSSc4nexttKFSSSgSPys4Int8VG_Spys5Int32VGARtcfU_Tf4nnng_n +__T06SQLite9TokenizerV10moduleName33_5F0FD0443FF5032238ECC00E64F41F5ELLSSvZ +__T06SQLite9TokenizerVWV +__T06SQLite9TokenizerVMf +__T06SQLite9TokenizerVMF +__T06SQLite9FTSConfigC17columnDefinitionsSayAA11Expressible_p_SayAC12ColumnOptionOG7optionstGvWvd +__T06SQLite9FTSConfigC9tokenizerAA9TokenizerVSgvWvd +__T06SQLite9FTSConfigC8prefixesSaySiGvWvd +__T06SQLite9FTSConfigC21externalContentSchemaAA0E4Type_pSgvWvd +__T06SQLite9FTSConfigC13isContentlessSbvWvd +__T06SQLite9FTSConfigCML +__T06SQLite9FTSConfigCMf +__T06SQLite9FTSConfigC12ColumnOptionOWV +__T06SQLite9FTSConfigC12ColumnOptionOML +__T06SQLite9FTSConfigC12ColumnOptionOMf +__T06SQLite9FTSConfigC12ColumnOptionOMF +__T06SQLite9FTSConfigC7OptionsVMF +__T06SQLite9FTSConfigCMF +__T06SQLite10FTS4ConfigC16compressFunctionSSSgvWvd +__T06SQLite10FTS4ConfigC18uncompressFunctionSSSgvWvd +__T06SQLite10FTS4ConfigC10languageIdSSSgvWvd +__T06SQLite10FTS4ConfigC9matchInfoAC05MatchE0OSgvWvd +__T06SQLite10FTS4ConfigC5orderAC5OrderOSgvWvd +__T06SQLite10FTS4ConfigCML +__T06SQLite10FTS4ConfigCMf +__T06SQLite10FTS4ConfigC9MatchInfoOWV +__T06SQLite10FTS4ConfigC9MatchInfoOML +__T06SQLite10FTS4ConfigC9MatchInfoOMf +__T06SQLite10FTS4ConfigC9MatchInfoOMF +__T06SQLite10FTS4ConfigC5OrderOWV +__T06SQLite10FTS4ConfigC5OrderOML +__T06SQLite10FTS4ConfigC5OrderOMf +__T06SQLite10FTS4ConfigC5OrderOMF +__T06SQLite10FTS4ConfigCMF +__T06SQLite10FTS4ConfigC9MatchInfoOSgML +__T06SQLite10FTS4ConfigC5OrderOSgML +__T0Say6SQLite11Expressible_p_SayAA9FTSConfigC12ColumnOptionOG7optionstGML +__T06SQLite11Expressible_p_SayAA9FTSConfigC12ColumnOptionOG7optionstML +__T0Say6SQLite9FTSConfigC12ColumnOptionOGML +__T06SQLite9TokenizerVSgML +__T0SaySiGML +__T06SQLite10SchemaType_pSgML +__T06SQLite10SchemaType_pML +__T0SaySSGML +__T0s23_ContiguousArrayStorageCySiGML +__T0s23_ContiguousArrayStorageCy6SQLite11Expressible_p_SayAC9FTSConfigC12ColumnOptionOG7optionstGML +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Extensions/FTS4.swift +_T06SQLite10ConnectionC17registerTokenizerySS_SS_s5RangeVySS5IndexVGtSgSSc4nexttKFSSSgSPys4Int8VG_Spys5Int32VGARtcfU_Tf4nnng_n +samePosition +distance +_T06SQLite11Expressible_p_SayAA9FTSConfigC12ColumnOptionOG7optionstMa +_T0Say6SQLite9FTSConfigC12ColumnOptionOGMa +_T06SQLite9FTSConfigC12ColumnOptionOMa +initialize_metadata_Order +_T06SQLite10FTS4ConfigCMa +_T06SQLite10FTS4ConfigC5OrderOMa +get_field_types_Order +_T06SQLite10FTS4ConfigC5OrderOwui +_T06SQLite10FTS4ConfigC5OrderOwup +_T06SQLite10FTS4ConfigC5OrderOwug +_T06SQLite10FTS4ConfigC5OrderOwxg +_T06SQLite10FTS4ConfigC5OrderOwxs +initialize_metadata_MatchInfo +_T06SQLite10FTS4ConfigC9MatchInfoOMa +get_field_types_MatchInfo +_T06SQLite10FTS4ConfigC9MatchInfoOwui +_T06SQLite10FTS4ConfigC9MatchInfoOwup +_T06SQLite10FTS4ConfigC9MatchInfoOwug +get_field_types_FTS4Config +_T06SQLite10FTS4ConfigC5OrderOSgMa +_T06SQLite10FTS4ConfigC9MatchInfoOSgMa +initialize_metadata_ColumnOption +_T06SQLite9FTSConfigCMa +get_field_types_ColumnOption +_T06SQLite9FTSConfigC12ColumnOptionOwui +_T06SQLite9FTSConfigC12ColumnOptionOwup +_T06SQLite9FTSConfigC12ColumnOptionOwug +__swift_memcpy0_1 +get_field_types_FTSConfig +_T06SQLite10SchemaType_pSgMa +_T06SQLite10SchemaType_pMa +_T0SaySiGMa +_T06SQLite9TokenizerVSgMa +_T0Say6SQLite11Expressible_p_SayAA9FTSConfigC12ColumnOptionOG7optionstGMa +_T06SQLite9TokenizerVMa +get_field_types_Tokenizer +_T0SaySSGMa +_T06SQLite9TokenizerVwCc +_T06SQLite9TokenizerVwXx +_T06SQLite9TokenizerVwal +_T06SQLite9TokenizerVwta +_T06SQLite9TokenizerVwTk +_T06SQLite9TokenizerVwca +_T06SQLite9TokenizerVwcp +_T06SQLite9TokenizerVwCp +_T06SQLite9TokenizerVwxx +_T06SQLite9TokenizerVwde +_T06SQLite9TokenizerVwpr +_T06SQLite9TokenizerVwCP +_T06SQLite9TokenizerVwXX +_T06SQLite10FTS4ConfigC5OrderOs23CustomStringConvertibleAAWa +_T06SQLite10FTS4ConfigC5OrderOs8HashableAAWa +_T06SQLite10FTS4ConfigC5OrderOs9EquatableAAWa +_T06SQLite10FTS4ConfigC9MatchInfoOs23CustomStringConvertibleAAWa +_T06SQLite10FTS4ConfigC9MatchInfoOs8HashableAAWa +_T06SQLite10FTS4ConfigC9MatchInfoOs9EquatableAAWa +_T06SQLite9FTSConfigC12ColumnOptionOs8HashableAAWa +_T06SQLite9FTSConfigC12ColumnOptionOs9EquatableAAWa +_T06SQLite9TokenizerVs23CustomStringConvertibleAAWa +_T06SQLite10ConnectionC17registerTokenizerySS_SS_s5RangeVySS5IndexVGtSgSSc4nexttKFSSSgSPys4Int8VG_Spys5Int32VGARtcfU_TA +_T06SQLite10ConnectionC17registerTokenizerySS_SS_s5RangeVySS5IndexVGtSgSSc4nexttKFSSSgSPys4Int8VG_Spys5Int32VGARtcfU_ +objectdestroy.22 +FTS4 +columns +column +_T0Sa36_reserveCapacityAssumingUniqueBufferySi8oldCount_tF6SQLite11Expressible_p_SayAC9FTSConfigC12ColumnOptionOG7optionst_Tg5 +tokenizer +_T0Sa034_makeUniqueAndReserveCapacityIfNotB0yyF6SQLite11Expressible_p_SayAB9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tF6SQLite11Expressible_p_SayAC9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFTfq4ngn_n6SQLite11Expressible_p_SayAC9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s12_ArrayBufferV5countSifs6SQLite11Expressible_p_SayAD9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0Sa9_getCountSiyF6SQLite11Expressible_p_SayAB9FTSConfigC12ColumnOptionOG7optionst_Tg5 +arguments +_T0Sa36_reserveCapacityAssumingUniqueBufferySi8oldCount_tF6SQLite11Expressible_p_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tF6SQLite11Expressible_p_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFTfq4ngn_n6SQLite11Expressible_p_Tg5 +_T0Sa034_makeUniqueAndReserveCapacityIfNotB0yyF6SQLite11Expressible_p_Tg5 +_T0SS6SQLite11Expressible_ps5Error_pIxxrzo_SSAaB_psAC_pIxirzo_TR +_T06SQLite9FTSConfigC7OptionsV6appendAESS_SSSg5valuetFAA11Expressible_pSScfU_ +_T0s10_partition5Indexs14_IndexableBasePQzxz_s5RangeVyAEG03subE0ts17MutableCollectionRzs012RandomAccessH0Rzs10Comparable7Elements8SequencePRpzlFSrySiG_Tg5Tf4nx_n +_T0SryxGs17_MutableIndexableslsABP9formIndexy0D0Qzz5after_tFTWSi_Tg5 +_T0Sr9formIndexySiz5after_tFSi_Tg5 +_T0SryxGs23BidirectionalCollectionslsABP9formIndexy0D0Qzz6before_tFTWSi_Tg5 +_T0Sr9formIndexySiz6before_tFSi_Tg5 +_T0SryxGs17MutableCollectionslsABP9subscript7ElementQz5IndexQzcfgTWSi_Tg5 +_T0Sr9subscriptxSicfgSi_Tg5 +_T0SryxGs10CollectionslsABP5index5IndexQzAF_0C8DistanceQz8offsetBytFTWSi_Tg5 +_T0Sr5indexS2i_Si8offsetBytFSi_Tg5 +_T0SryxGs10CollectionslsABP8distance13IndexDistanceQz0C0Qz4from_AH2totFTWSi_Tg5 +_T0Sr8distanceS2i4from_Si2totFSi_Tg5 +_T0SryxGs23BidirectionalCollectionslsABP5index5IndexQzAF6before_tFTWSi_Tg5 +_T0Sr5indexS2i6before_tFSi_Tg5 +_T0SryxGs17MutableCollectionslsABP6swapAty5IndexQz_AFtFTWSi_Tg5 +_T0s17MutableCollectionPsE6swapAty5IndexQz_AEtFSrySiG_Tg5 +_T0SryxGs17MutableCollectionslsABP9subscript7ElementQz5IndexQzcfsTWSi_Tg5 +_T0Sr9subscriptxSicfsSi_Tg5 +_T0Sis10ComparablessAAP2geoiSbx_xtFZTW +_T0s26RangeReplaceableCollectionPsE14removeSubrangeys0A0Vy5IndexQzGFs16_ValidUTF8BufferVys6UInt64VG_Tgq5Tfq4xn_n +_T0s30ReversedRandomAccessCollectionV9subscript7ElementQzs0abC5IndexVyxGcfgs11_StringCoreV_Tgq5 +_T0s22RandomAccessCollectionPssAARzs10Strideable5IndexRpzAD_6StrideQZ0E8DistanceRtzs14CountableRangeVyAEG7IndicesRtzlE5indexA2E6before_tFs11_StringCoreV_Tgq5 +_T0s10_IndexablePsE20_failEarlyRangeChecky5IndexQz_s0D0VyAEG6boundstFs11_StringCoreV_Tgq5Tfq4nxn_n +_T0s10_IndexablePsE9subscript11SubSequenceQzqd__cs15RangeExpressionRd__5BoundQyd__5IndexRtzlufgs11_StringCoreV_s07PartialE4UpToVySiGTgq5 +_T0s18BidirectionalSliceV5index5IndexQzAE5after_tFSS8UTF8ViewV_Tgq5Tfq4xn_n +_T0s26RangeReplaceableCollectionPsE11removeFirstySiFs16_ValidUTF8BufferVys6UInt64VG_Tgq5 +_T0s18BidirectionalSliceV5index5IndexQzAE6before_tFSS8UTF8ViewV_Tgq5Tfq4xn_n +_T0s26RangeReplaceableCollectionPsExqd__cs8SequenceRd__7ElementQyd__ADRtzlufCs16_ValidUTF8BufferVys6UInt64VG_AHys6UInt32VGTgq5Tfq4nd_n +_T0Sus10ComparablessAAP1loiSbx_xtFZTW +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi8newCount_Si16requiredCapacitytFAEySiG_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB4Impls011_ContiguousaB0Vy7ElementQzGSi08countForB0_Si14minNewCapacitySi08requiredO0tFAEySiG_Tg5 +_T0s22_ContiguousArrayBufferVAByxGSi19_uninitializedCount_Si15minimumCapacitytcfCSi_Tg5 +_T0s23_ContiguousArrayStorageCySiGMa +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP8capacitySifgTWSi_Tg5 +_T0s22_ContiguousArrayBufferV8capacitySifgSi_Tg5 +_T0s20_ArrayBufferProtocolPsE019_outlinedMakeUniqueB0ySi11bufferCount_tFs011_ContiguousaB0VySiG_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP027requestUniqueMutableBackingC0ABy7ElementQzGSgSi15minimumCapacity_tFTWSi_Tg5 +_T0s22_ContiguousArrayBufferV027requestUniqueMutableBackingC0AByxGSgSi15minimumCapacity_tFSi_Tg5 +_T0Sis17FixedWidthIntegerssAAP3maxxfgZTW +_T0s6_sort3yxz_5Indexs14_IndexableBasePQzA2Ets17MutableCollectionRzs012RandomAccessF0Rzs10Comparable7Elements8SequencePRpzlFSrySiG_Tg5 +_T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tF6SQLite11Expressible_p_SayAE9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s9_siftDownyxz_5Indexs14_IndexableBasePQz5indexs5RangeVyAEG03subG0ts17MutableCollectionRzs012RandomAccessJ0Rzs10Comparable7Elements8SequencePRpzlFTfq4nng_nSrySiG_Tg5 +_T0SryxGs17_MutableIndexableslsABP5index5IndexQzAF5after_tFTWSi_Tg5 +_T0Sr5indexS2i5after_tFSi_Tg5 +_T0Sis13BinaryIntegerssAAP1poixx_xtFZTW +_T0s14_insertionSortyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subC0ts23BidirectionalCollectionRzs07MutableI0Rzs10Comparable7Elements8SequencePRpzlFTfq4ng_nSrySiG_Tg5 +_T0s9_heapSortyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subC0ts17MutableCollectionRzs012RandomAccessI0Rzs10Comparable7Elements8SequencePRpzlFTfq4ng_nSrySiG_Tg5 +_T0s8_heapifyyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subB0ts17MutableCollectionRzs012RandomAccessH0Rzs10Comparable7Elements8SequencePRpzlFTfq4ng_nSrySiG_Tg5 +_T0Sis10ComparablessAAP2leoiSbx_xtFZTW +_T0Sis13BinaryIntegerssAAP1doixx_xtFZTW +_T0s14_introSortImplyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subD0Si10depthLimitts17MutableCollectionRzs012RandomAccessL0Rzs10Comparable7Elements8SequencePRpzlFTfq4ngn_nSrySiG_Tg5 +_T0s10_partition5Indexs14_IndexableBasePQzxz_s5RangeVyAEG03subE0ts17MutableCollectionRzs012RandomAccessH0Rzs10Comparable7Elements8SequencePRpzlFSrySiG_Tg5 +_T0s17_UnicodeEncoding_PsE10_transcodeyqd___qd_0_m4fromy13EncodedScalarQzc4intots8SequenceRd__s01_aB0Rd_0_8CodeUnitQyd_0_7ElementRtd__r0_lFZs0A0O4UTF8O_s11_StringCoreVAO5UTF16OTgq5012_T0s16_ValidL30BufferVys6UInt32VGIxy_AEIxi_TRs01_qlR0Vys0T0VGIxy_Tfq1nncn_nTfq4gXddg_n06_T0SS8l52ViewV16_forwardDistanceSiSS5IndexV4from_AE2totFys06_q2A6rsT6VGcfU_SiTfq1nnnc_n +_T0SS8UTF8ViewV16_forwardDistanceSiSS5IndexV4from_AE2totFys06_ValidA6BufferVys6UInt32VGcfU_ +_T0SS8UTF8ViewV8distanceSiSS5IndexV4from_AE2totFTfq4xxn_n +_T0SS17UnicodeScalarViewV05_isOnaB8BoundarySbSS5IndexVFTfq4xn_n +_T0SS17UnicodeScalarViewV8endIndexSS0E0VfgTfq4x_n +_T0SS5IndexV17_transcodedOffsetSifgTfq4x_n +_T0s5Int32Vs35_ExpressibleByBuiltinIntegerLiteralssACPxBi2048_08_builtineF0_tcfCTW +_T0s26_toStringReadOnlyPrintableSSxs06CustomB11ConvertibleRzlFTfq4g_nSi_Tg5 +_T0Sis23CustomStringConvertiblessAAP11descriptionSSfgTW +_T0s14_int64ToStringSSs5Int64V_AC5radixSb9uppercasetF +_T0Sa15reserveCapacityySiFSi_Tg5 +_T0s22_ContiguousArrayBufferV18_initStorageHeaderySi5count_Si8capacitytFSi_Tg5 +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtFTfq4xnn_nSi_Tg5 +_T0s12_ArrayBufferV8endIndexSifgSi_Tg5 +_T0Sa9_getCountSiyFSi_Tg5 +_T0s12_ArrayBufferV20isUniquelyReferencedSbyFSi_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0VySiG_s07_IgnoreK0VySiGTg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subG0_AI12initializingtFTWSi_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFSi_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFTfq4xnn_nSi_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP19firstElementAddressSpy0E0QzGfgTWSi_Tg5 +_T0s12_ArrayBufferV19firstElementAddressSpyxGfgSi_Tg5 +_T0Sp10initializeySPyxG4from_Si5counttFSi_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8endIndexSifgTWSi_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP027requestUniqueMutableBackingB0s011_ContiguousaB0Vy7ElementQzGSgSi15minimumCapacity_tFTWSi_Tg5 +_T0s12_ArrayBufferV027requestUniqueMutableBackingB0s011_ContiguousaB0VyxGSgSi15minimumCapacity_tFSi_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifgTWSi_Tg5 +_T0s12_ArrayBufferV5countSifgSi_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_nAEy6SQLite11Expressible_p_SayAK9FTSConfigC12ColumnOptionOG7optionstG_s07_IgnoreK0VyAkL_p_AqRtGTg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subH0_AI12initializingtFTW6SQLite11Expressible_p_SayAO9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtF6SQLite11Expressible_p_SayAJ9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtFTfq4xnn_n6SQLite11Expressible_p_SayAJ9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP19firstElementAddressSpy0F0QzGfgTW6SQLite11Expressible_p_SayAJ9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s22_ContiguousArrayBufferV19firstElementAddressSpyxGfg6SQLite11Expressible_p_SayAE9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP8endIndexSifgTW6SQLite11Expressible_p_SayAG9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s22_ContiguousArrayBufferV8endIndexSifg6SQLite11Expressible_p_SayAD9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP027requestUniqueMutableBackingC0ABy7ElementQzGSgSi15minimumCapacity_tFTW6SQLite11Expressible_p_SayAL9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s22_ContiguousArrayBufferV027requestUniqueMutableBackingC0AByxGSgSi15minimumCapacity_tF6SQLite11Expressible_p_SayAG9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP5countSifgTW6SQLite11Expressible_p_SayAG9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s22_ContiguousArrayBufferV5countSifg6SQLite11Expressible_p_SayAD9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_nAEySiG_s07_IgnoreK0VySiGTg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subH0_AI12initializingtFTWSi_Tg5 +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtFSi_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP19firstElementAddressSpy0F0QzGfgTWSi_Tg5 +_T0s22_ContiguousArrayBufferV19firstElementAddressSpyxGfgSi_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP8endIndexSifgTWSi_Tg5 +_T0s22_ContiguousArrayBufferV8endIndexSifgSi_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP5countSifgTWSi_Tg5 +_T0s22_ContiguousArrayBufferV5countSifgSi_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0Vy6SQLite11Expressible_p_SayAM9FTSConfigC12ColumnOptionOG7optionstG_s07_IgnoreK0VyAmN_p_AsTtGTg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subG0_AI12initializingtFTW6SQLite11Expressible_p_SayAO9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtF6SQLite11Expressible_p_SayAJ9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFTfq4xnn_n6SQLite11Expressible_p_SayAJ9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP19firstElementAddressSpy0E0QzGfgTW6SQLite11Expressible_p_SayAJ9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s12_ArrayBufferV19firstElementAddressSpyxGfg6SQLite11Expressible_p_SayAE9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0Sp10initializeySPyxG4from_Si5counttF6SQLite11Expressible_p_SayAE9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8endIndexSifgTW6SQLite11Expressible_p_SayAG9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s12_ArrayBufferV8endIndexSifg6SQLite11Expressible_p_SayAD9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP027requestUniqueMutableBackingB0s011_ContiguousaB0Vy7ElementQzGSgSi15minimumCapacity_tFTW6SQLite11Expressible_p_SayAN9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s12_ArrayBufferV027requestUniqueMutableBackingB0s011_ContiguousaB0VyxGSgSi15minimumCapacity_tF6SQLite11Expressible_p_SayAI9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s12_ArrayBufferV20isUniquelyReferencedSbyF6SQLite11Expressible_p_SayAD9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifgTW6SQLite11Expressible_p_SayAG9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s12_ArrayBufferV5countSifg6SQLite11Expressible_p_SayAD9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0VySSG_s07_IgnoreK0VySSGTg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subG0_AI12initializingtFTWSS_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFSS_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFTfq4xnn_nSS_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP19firstElementAddressSpy0E0QzGfgTWSS_Tg5 +_T0s12_ArrayBufferV19firstElementAddressSpyxGfgSS_Tg5 +_T0Sp10initializeySPyxG4from_Si5counttFSS_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8endIndexSifgTWSS_Tg5 +_T0s12_ArrayBufferV8endIndexSifgSS_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP027requestUniqueMutableBackingB0s011_ContiguousaB0Vy7ElementQzGSgSi15minimumCapacity_tFTWSS_Tg5 +_T0s12_ArrayBufferV027requestUniqueMutableBackingB0s011_ContiguousaB0VyxGSgSi15minimumCapacity_tFSS_Tg5 +_T0s12_ArrayBufferV20isUniquelyReferencedSbyFSS_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifgTWSS_Tg5 +_T0s12_ArrayBufferV5countSifgSS_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0VySiG_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8capacitySifgTWSi_Tg5 +_T0s12_ArrayBufferV8capacitySifgSi_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFAEy6SQLite11Expressible_p_SayAK9FTSConfigC12ColumnOptionOG7optionstG_Tg5 +_T0s23_ContiguousArrayStorageCy6SQLite11Expressible_p_SayAC9FTSConfigC12ColumnOptionOG7optionstGMa +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP8capacitySifgTW6SQLite11Expressible_p_SayAG9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s22_ContiguousArrayBufferV8capacitySifg6SQLite11Expressible_p_SayAD9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vy6SQLite11Expressible_p_SayAM9FTSConfigC12ColumnOptionOG7optionstG_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8capacitySifgTW6SQLite11Expressible_p_SayAG9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s12_ArrayBufferV8capacitySifg6SQLite11Expressible_p_SayAD9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0VySSG_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8capacitySifgTWSS_Tg5 +_T0s12_ArrayBufferV8capacitySifgSS_Tg5 +_T0s20_ArrayBufferProtocolPsE20_arrayAppendSequenceyqd__s0F0Rd__7ElementQyd__AERtzlFTfq4gn_ns01_aB0VySiG_s08IteratorF0Vys08IndexingH0VySaySiGGGTg5 +_T0s16IteratorSequenceVyxGs0A8ProtocolssADRzlsADP4next7ElementQzSgyFTWs08IndexingA0VySaySiGG_Tg5 +_T0s16IteratorSequenceV4next7ElementQzSgyFs08IndexingA0VySaySiGG_Tg5 +_T0s16IndexingIteratorVyxGs0B8Protocolss14_IndexableBaseRzlsADP4next7ElementQzSgyFTWSaySiG_Tg5 +_T0SayxGs14_IndexableBaseslsABP9formIndexy0D0Qzz5after_tFTWSi_Tg5 +_T0Sa9formIndexySiz5after_tFSi_Tg5 +_T0SayxGs14_IndexableBaseslsABP9subscript7ElementQz5IndexQzcfgTWSi_Tg5 +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtFSi_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tFSi_Tg5 +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktFSi_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifsTWSi_Tg5 +_T0s12_ArrayBufferV5countSifsSi_Tg5 +_T0SayxGs14_IndexableBaseslsABP8endIndex0D0QzfgTWSi_Tg5 +_T0Sa8endIndexSifgSi_Tg5 +_T0s16IteratorSequenceVyxGs0B0ss0A8ProtocolRzlsADP04makeA00A0QzyFTWs08IndexingA0VySaySiGG_Tg5 +_T0s20_ArrayBufferProtocolPsE20_arrayAppendSequenceyqd__s0F0Rd__7ElementQyd__AERtzlFTfq4gn_ns01_aB0VySSG_s08IteratorF0Vys08IndexingH0VySaySSGGGTg5 +_T0s16IteratorSequenceVyxGs0A8ProtocolssADRzlsADP4next7ElementQzSgyFTWs08IndexingA0VySaySSGG_Tg5 +_T0s16IteratorSequenceV4next7ElementQzSgyFs08IndexingA0VySaySSGG_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifsTWSS_Tg5 +_T0s16IteratorSequenceVyxGs0B0ss0A8ProtocolRzlsADP04makeA00A0QzyFTWs08IndexingA0VySaySSGG_Tg5 +_T0s17MutableCollectionPssAARzs012RandomAccessB0Rzs10Comparable7Elements8SequencePRpzlE4sortyyFs15ContiguousArrayVySiG_Tg5 +_T0s15ContiguousArrayVyxGs17MutableCollectionslsADP011_withUnsafeC24BufferPointerIfSupportedqd__Sgqd__Spy7ElementQzG_SitKcKlFTWSi_ytTg5 +_T0s15ContiguousArrayV42_withUnsafeMutableBufferPointerIfSupportedqd__Sgqd__SpyxG_SitKcKlFSi_ytTg5 +_T0s15ContiguousArrayV30withUnsafeMutableBufferPointerqd__qd__SryxGzKcKlFSi_ytTg5 +_T0s15ContiguousArrayV30withUnsafeMutableBufferPointerqd__qd__SryxGzKcKlF6$deferL_yyr__lFSi_ytTg5 +_T0Sr5countSifgSi_Tg5 +_T0s15ContiguousArrayV42_withUnsafeMutableBufferPointerIfSupportedqd__Sgqd__SpyxG_SitKcKlFqd__SryxGzKcfU_Si_ytTg5 +_T0Spy7Elements8SequencePQzGSis5Error_pIxyyzo_AESiytsAF_pIxyyrzo_s17MutableCollectionRzs012RandomAccessE0Rzs10ComparableADRQlTRs15ContiguousArrayVySiG_Tg5 +_T0s17MutableCollectionPssAARzs012RandomAccessB0Rzs10Comparable7Elements8SequencePRpzlE4sortyyFySpyAHG_SitcfU_s15ContiguousArrayVySiG_Tg5 +_T0s17MutableCollectionPssAARzs012RandomAccessB0Rzs10Comparable7Elements8SequencePRpzlE4sortyyFSrySiG_Tg5 +_T0SryxGs17_MutableIndexableslsABP8endIndex0D0QzfgTWSi_Tg5 +_T0Sr8endIndexSifgSi_Tg5 +_T0s10_introSortyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subC0ts17MutableCollectionRzs012RandomAccessI0Rzs10Comparable7Elements8SequencePRpzlFTfq4ng_nSrySiG_Tg5 +_T0S2ryxGSpyxGSg5start_Si5counttcfCSi_Tg5 +_T0s15ContiguousArrayV9_getCountSiyFSi_Tg5 +_T0Sa16_copyToNewBufferySi8oldCount_tFSS_Tg5 +options +filter +_T0s14_ArrayProtocolPsE6filterSay7ElementQzGSbAEKcKFTfq4gn_nSay6SQLite11Expressible_p_SayAG9FTSConfigC12ColumnOptionOG7optionstG_Tg5 +_T0s15ContiguousArrayV6appendyxF6SQLite11Expressible_p_SayAD9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s15ContiguousArrayV36_reserveCapacityAssumingUniqueBufferySi8oldCount_tF6SQLite11Expressible_p_SayAE9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0SayxGs14_IndexableBaseslsABP9formIndexy0D0Qzz5after_tFTW6SQLite11Expressible_p_SayAH9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0Sa9formIndexySiz5after_tF6SQLite11Expressible_p_SayAC9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0SayxGs14_IndexableBaseslsABP9subscript7ElementQz5IndexQzcfgTW6SQLite11Expressible_p_SayAI9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtF6SQLite11Expressible_p_SayAE9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tF6SQLite11Expressible_p_SayAE9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s16IndexingIteratorVyxGs0B8Protocolss14_IndexableBaseRzlsADP4next7ElementQzSgyFTWSay6SQLite11Expressible_p_SayAK9FTSConfigC12ColumnOptionOG7optionstG_Tg5 +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktF6SQLite11Expressible_p_SayAF9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0SayxGs14_IndexableBaseslsABP8endIndex0D0QzfgTW6SQLite11Expressible_p_SayAG9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0Sa8endIndexSifg6SQLite11Expressible_p_SayAB9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s15ContiguousArrayV37_appendElementAssumeUniqueAndCapacityySi_x03newD0tF6SQLite11Expressible_p_SayAE9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s15ContiguousArrayV37_appendElementAssumeUniqueAndCapacityySi_x03newD0tFTfq4ngn_n6SQLite11Expressible_p_SayAE9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s15ContiguousArrayV9_getCountSiyF6SQLite11Expressible_p_SayAD9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s15ContiguousArrayV034_makeUniqueAndReserveCapacityIfNotD0yyF6SQLite11Expressible_p_SayAD9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T06SQLite11Expressible_pSayAA9FTSConfigC12ColumnOptionOGSbs5Error_pIxixdzo_AaB_p_AG7optionstSbsAH_pIxidzo_TR +_T06SQLite10FTS4ConfigC7optionsAA9FTSConfigC7OptionsVyFSbAA11Expressible_p_SayAF12ColumnOptionOGADtcfU_ +_T0s16IndexingIteratorVyxGs0B8Protocolss14_IndexableBaseRzlsADP4next7ElementQzSgyFTWSay6SQLite9FTSConfigC12ColumnOptionOG_Tg5 +_T0SayxGs14_IndexableBaseslsABP8endIndex0D0QzfgTW6SQLite9FTSConfigC12ColumnOptionO_Tg5 +_T0Sa8endIndexSifg6SQLite9FTSConfigC12ColumnOptionO_Tg5 +_T0Sa9_getCountSiyF6SQLite9FTSConfigC12ColumnOptionO_Tg5 +order +matchInfo +languageId +uncompress +compress +_T0s10CollectionPsE3mapSayqd__Gqd__7ElementQzKcKlFTfq4gn_nSaySiG_SSTg5 +_T0SiSSs5Error_pIxyozo_SiSSsAA_pIxirzo_TR +_T06SQLite9FTSConfigC7optionsAC7OptionsVyFSSSicfU_ +appendCommaSeparated +_T0SayxGs10CollectionslsABP9subscript7ElementQz5IndexQzcfgTWSi_Tg5 +_T0S2SBp21_builtinStringLiteral_Bw17utf8CodeUnitCountBi1_7isASCIItcfCTfq4nnnd_n +_T0SayxGs10CollectionslsABP5count13IndexDistanceQzfgTWSi_Tg5 +sorted +_T0SayxGs26RangeReplaceableCollectionslsABP6appendyqd__10contentsOf_ts8SequenceRd__7ElementQyd__AGRtzlFTWSS_SaySSGTg5 +formatColumnDefinitions +_T0s10CollectionPsE3mapSayqd__Gqd__7ElementQzKcKlFTfq4gn_nSay6SQLite11Expressible_p_SayAG9FTSConfigC12ColumnOptionOG7optionstG_AgH_pTg5 +_T0s15ContiguousArrayV6appendyxF6SQLite11Expressible_p_Tg5 +_T0s15ContiguousArrayV36_reserveCapacityAssumingUniqueBufferySi8oldCount_tF6SQLite11Expressible_p_Tg5 +_T0SayxGs10CollectionslsABP9subscript7ElementQz5IndexQzcfgTW6SQLite11Expressible_p_SayAI9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s15ContiguousArrayV37_appendElementAssumeUniqueAndCapacityySi_x03newD0tF6SQLite11Expressible_p_Tg5 +_T0s15ContiguousArrayV37_appendElementAssumeUniqueAndCapacityySi_x03newD0tFTfq4ngn_n6SQLite11Expressible_p_Tg5 +_T0s15ContiguousArrayV9_getCountSiyF6SQLite11Expressible_p_Tg5 +_T0s15ContiguousArrayV034_makeUniqueAndReserveCapacityIfNotD0yyF6SQLite11Expressible_p_Tg5 +_T0s22_ContiguousArrayBufferV5countSifg6SQLite11Expressible_p_Tg5 +_T06SQLite11Expressible_pSayAA9FTSConfigC12ColumnOptionOGAaB_ps5Error_pIxixrzo_AaB_p_AG7optionstAaB_psAH_pIxirzo_TR +_T06SQLite9FTSConfigC23formatColumnDefinitionsSayAA11Expressible_pGyFAaE_pAaE_p_SayAC0D6OptionOG7optionstcfU_ +_T0SayxGs10CollectionslsABP5count13IndexDistanceQzfgTW6SQLite11Expressible_p_SayAG9FTSConfigC12ColumnOptionOG7optionst_Tg5 +contentless +externalContent +_T0SayxGs26RangeReplaceableCollectionslsABP6appendyqd__10contentsOf_ts8SequenceRd__7ElementQyd__AGRtzlFTWSi_SaySiGTg5 +_T0SPys4Int8VGSpys5Int32VGAFSSSgIxyyyo_Ac2FSo8NSStringCSgIyByyya_TR +registerTokenizer +_T06SQLite9TokenizerV10moduleName33_5F0FD0443FF5032238ECC00E64F41F5ELLSSfau +globalinit_33_5F0FD0443FF5032238ECC00E64F41F5E_func7 +arguments.get +name.get +Custom +Unicode61 +_T0s10CollectionPsE3mapSayqd__Gqd__7ElementQzKcKlFTfq4gn_ns3SetVys9CharacterVG_SSTg5 +_T0s3SetVyxGs14_IndexableBasess8HashableRzlsADP9formIndexy0F0Qzz5after_tFTWs9CharacterV_Tg5 +_T0s10_IndexablePsE9formIndexy0C0Qzz5after_tFs3SetVys9CharacterVG_Tg5 +_T0s3SetVyxGs14_IndexableBasess8HashableRzlsADP5index5IndexQzAI5after_tFTWs9CharacterV_Tg5 +_T0s3SetV5indexAB5IndexVyx_GAF5after_tFs9CharacterV_Tg5 +_T0s3SetV5indexAB5IndexVyx_GAF5after_tFTfq4gn_ns9CharacterV_Tg5 +_T0s17_VariantSetBufferO5indexs0B0V5IndexVyx_GAH5after_tFTfq4gn_ns9CharacterV_Tg5 +_T0s3SetVyxGs10Collectionss8HashableRzlsADP9subscript7ElementQz5IndexQzcfgTWs9CharacterV_Tg5 +_T0s3SetV9subscriptxAB5IndexVyx_Gcfgs9CharacterV_Tg5 +_T0s17_VariantSetBufferO12assertingGetxs0B0V5IndexVyx_GFs9CharacterV_Tg5 +_T0s9CharacterVSSs5Error_pIxxozo_ABSSsAC_pIxirzo_TR +_T06SQLite9TokenizerV9Unicode61ACSbSg16removeDiacritics_s3SetVys9CharacterVG10tokencharsAK10separatorstFZSSAJcfU0_ +_T0s3SetVyxGs14_IndexableBasess8HashableRzlsADP10startIndex0F0QzfgTWs9CharacterV_Tg5 +_T0s3SetV10startIndexAB0C0Vyx_Gfgs9CharacterV_Tg5 +_T0s17_VariantSetBufferO10startIndexs0B0V0E0Vyx_Gfgs9CharacterV_Tg5 +_T06SQLite9TokenizerV9Unicode61ACSbSg16removeDiacritics_s3SetVys9CharacterVG10tokencharsAK10separatorstFZSSAJcfU_ +Porter.get +_T06SQLite9TokenizerV6PorterACfau +globalinit_33_5F0FD0443FF5032238ECC00E64F41F5E_func6 +Simple.get +_T06SQLite9TokenizerV6SimpleACfau +globalinit_33_5F0FD0443FF5032238ECC00E64F41F5E_func5 +match +_T0SayxGs26RangeReplaceableCollectionslsABP6appendyqd__10contentsOf_ts8SequenceRd__7ElementQyd__AGRtzlFTW6SQLite11Expressible_p_SayAjK_pGTg5 +_T0s9SubstringV8UTF8ViewVs10CollectionssAEP8distance13IndexDistanceQz0F0Qz4from_AK2totFTW +_T0s23_BidirectionalIndexablePsE8distance13IndexDistanceQz0D0Qz4from_AG2totFs9SubstringV8UTF8ViewV_Tgq5Tfq4xxn_n +_T0Sa24reserveCapacityForAppendySi16newElementsCount_tFSi_Tg5 +_T0SayxGs8SequenceslsABP13_copyContents8IteratorQz_SitSry7ElementQzG12initializing_tFTWSi_Tg5 +_T0Sa13_copyContentss16IndexingIteratorVySayxGG_SitSryxG12initializing_tFSi_Tg5 +_T0Sa12_getCapacitySiyFSi_Tg5 +_T0SayxGs8SequenceslsABP19underestimatedCountSifgTWSi_Tg5 +_T0s10CollectionPsE19underestimatedCountSifgSaySiG_Tg5 +_T0Sa24reserveCapacityForAppendySi16newElementsCount_tFSS_Tg5 +_T0Sr5countSifgSS_Tg5 +_T0SayxGs8SequenceslsABP13_copyContents8IteratorQz_SitSry7ElementQzG12initializing_tFTWSS_Tg5 +_T0Sa13_copyContentss16IndexingIteratorVySayxGG_SitSryxG12initializing_tFSS_Tg5 +_T0Sa12_getCapacitySiyFSS_Tg5 +_T0SayxGs8SequenceslsABP19underestimatedCountSifgTWSS_Tg5 +_T0s10CollectionPsE19underestimatedCountSifgSaySSG_Tg5 +_T0SayxGs10CollectionslsABP5count13IndexDistanceQzfgTWSS_Tg5 +_globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_func8 +__T0Sd6SQLite5ValueA2aBP16declaredDatatypeSSfgZTW +__T0Sd6SQLite5ValueA2aBP012fromDatatypeB00B4TypeQz0D0QzFZTW +__T0Sd6SQLite5ValueA2aBP08datatypeB08DatatypeQzfgTW +_globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_func9 +__T0s5Int64V6SQLite5ValueA2cDP16declaredDatatypeSSfgZTW +__T0s5Int64V6SQLite5ValueA2cDP012fromDatatypeC00C4TypeQz0E0QzFZTW +__T0s5Int64V6SQLite5ValueA2cDP08datatypeC08DatatypeQzfgTW +__T0SS6SQLite5ValueA2aBP16declaredDatatypeSSfgZTW +__T0SS6SQLite5ValueA2aBP012fromDatatypeB00B4TypeQz0D0QzFZTW +__T0SS6SQLite5ValueA2aBP08datatypeB08DatatypeQzfgTW +__T06SQLite4BlobVAA5ValueA2aDP16declaredDatatypeSSfgZTW +__T06SQLite4BlobVAA5ValueA2aDP012fromDatatypeC00C4TypeQz0E0QzFZTW +__T06SQLite4BlobVAA5ValueA2aDP08datatypeC08DatatypeQzfgTW +_globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_func12 +__T0Sb6SQLite5ValueA2aBP16declaredDatatypeSSfgZTW +__T0Sb6SQLite5ValueA2aBP012fromDatatypeB00B4TypeQz0D0QzFZTW +__T0Sb6SQLite5ValueA2aBP08datatypeB08DatatypeQzfgTW +_globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_func13 +__T0Si6SQLite5ValueA2aBP16declaredDatatypeSSfgZTW +__T0Si6SQLite5ValueA2aBP012fromDatatypeB00B4TypeQz0D0QzFZTW +__T0Si6SQLite5ValueA2aBP08datatypeB08DatatypeQzfgTW +__T06SQLite7Binding_pMF +__T06SQLite6Number_pMF +__T06SQLite5Value_pMF +__T0Sd6SQLite5ValueAAMA +__T0s5Int64V6SQLite5ValueACMA +__T0SS6SQLite5ValueAAMA +__T06SQLite4BlobVAA5ValueAAMA +__T0Sb6SQLite5ValueAAMA +__T0Si6SQLite5ValueAAMA +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Value.swift +_T0Si6SQLite7BindingAAWa +Value.swift +_T0Si6SQLite5ValueAAWa +_T0Si6SQLite6NumberAAWa +_T0Sb6SQLite11ExpressibleAAWa +_T0Sb6SQLite5ValueAAWa +_T0Sb6SQLite7BindingAAWa +_T06SQLite4BlobVAA11ExpressibleAAWa +_T06SQLite4BlobVAA5ValueAAWa +_T0SS6SQLite5ValueAAWa +_T0s5Int64V6SQLite11ExpressibleACWa +_T0s5Int64V6SQLite5ValueACWa +_T0s5Int64V6SQLite6NumberACWa +_T0Sd6SQLite11ExpressibleAAWa +_T0Sd6SQLite5ValueAAWa +_T0Sd6SQLite6NumberAAWa +_T0s5Int64V6SQLite7BindingACWa +_T0Sd6SQLite7BindingAAWa +_T06SQLite4BlobVAA7BindingAAWa +_T0SS6SQLite7BindingAAWa +_T0SS6SQLite11ExpressibleAAWa +_T0Si6SQLite11ExpressibleAAWa +_T0Si6SQLiteE16declaredDatatypeSSfau +declaredDatatype.materialize +declaredDatatype.set +globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_func13 +_T0s5Int64V6SQLiteE16declaredDatatypeSSfau +_T0Sb6SQLiteE16declaredDatatypeSSfau +globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_func12 +globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_func11 +globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_func10 +globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_func9 +_T0Sd6SQLiteE16declaredDatatypeSSfau +globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_func8 +__T06SQLite2teoiAA10ExpressionVySbGs11ClosedRangeVyxG_ADyxGtAA5ValueRzs10ComparableRzAaJ8DatatypeAaJPRpzsAkNRQlFTm +__T06SQLite2teoiAA10ExpressionVySbGs19PartialRangeThroughVyxG_ADyxGtAA5ValueRzs10ComparableRzAaJ8DatatypeAaJPRpzsAkNRQlFTm +__T06SQLite2oooiAA10ExpressionVySbGAE_AEtFTm +__T06SQLite2oooiAA10ExpressionVySbSgGADySbG_AFtFTm +__T06SQLite2oooiAA10ExpressionVySbSgGAF_ADySbGtFTm +__T06SQLite2oooiAA10ExpressionVySbSgGAF_AFtFTm +__T06SQLite2aaoiAA10ExpressionVySbGAE_SbtFTm +__T06SQLite2aaoiAA10ExpressionVySbSgGAF_SbtFTm +__T06SQLite2aaoiAA10ExpressionVySbGSb_AEtFTm +__T06SQLite2aaoiAA10ExpressionVySbSgGSb_AFtFTm +__T06SQLite1poiAA10ExpressionVyxGAE_AEtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_nTm +__T06SQLite1poiAA10ExpressionVyxGAE_xtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_nTm +__T06SQLite1poiAA10ExpressionVyxSgGAF_ADyxGtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_nTm +__T06SQLite1poiAA10ExpressionVyxSgGAF_AFtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_nTm +__T06SQLite1poiAA10ExpressionVyxSgGAF_xtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_nTm +__T06SQLite1roiAA10ExpressionVyxGAE_AEtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_nTm +__T06SQLite1roiAA10ExpressionVyxGAE_xtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_nTm +__T06SQLite1roiAA10ExpressionVyxSgGAF_ADyxGtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_nTm +__T06SQLite1roiAA10ExpressionVyxSgGAF_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_nTm +__T06SQLite1roiAA10ExpressionVyxSgGAF_xtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_nTm +__T06SQLite1topAA10ExpressionVyxGAeA5ValueRzs5Int64V8DatatypeRtzlFTf4g_n +__T06SQLite1topAA10ExpressionVyxSgGAfA5ValueRzs5Int64V8DatatypeRtzlFTf4g_n +__T06SQLite1xoiAA10ExpressionVyxSgGAF_ADyxGtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_nTm +__T06SQLite1poiAA10ExpressionVyxSgGADyxG_AFtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1poiAA10ExpressionVyxGx_AEtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1poiAA10ExpressionVyxSgGx_AFtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1soiAA10ExpressionVyxSgGADyxG_AFtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1soiAA10ExpressionVyxGx_AEtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1soiAA10ExpressionVyxSgGx_AFtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1moiAA10ExpressionVyxSgGADyxG_AFtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1moiAA10ExpressionVyxGx_AEtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1moiAA10ExpressionVyxSgGx_AFtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1doiAA10ExpressionVyxSgGADyxG_AFtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1poiAA10ExpressionVyxSgGADyxG_AFtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_nTm +__T06SQLite1doiAA10ExpressionVyxGx_AEtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1poiAA10ExpressionVyxGx_AEtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_nTm +__T06SQLite1doiAA10ExpressionVyxSgGx_AFtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1poiAA10ExpressionVyxSgGx_AFtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_nTm +__T06SQLite1sopAA10ExpressionVyxGAeA5ValueRzAA6Number8DatatypeRpzlFTf4g_n +__T06SQLite1sopAA10ExpressionVyxSgGAfA5ValueRzAA6Number8DatatypeRpzlFTf4g_n +__T06SQLite1roiAA10ExpressionVyxSgGADyxG_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1roiAA10ExpressionVyxGx_AEtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1roiAA10ExpressionVyxSgGx_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2lloiAA10ExpressionVyxSgGADyxG_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2lloiAA10ExpressionVyxGx_AEtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2lloiAA10ExpressionVyxSgGx_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2ggoiAA10ExpressionVyxSgGADyxG_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2ggoiAA10ExpressionVyxGx_AEtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2ggoiAA10ExpressionVyxSgGx_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1aoiAA10ExpressionVyxSgGADyxG_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1aoiAA10ExpressionVyxGx_AEtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1aoiAA10ExpressionVyxSgGx_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1ooiAA10ExpressionVyxSgGADyxG_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1roiAA10ExpressionVyxSgGADyxG_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_nTm +__T06SQLite1ooiAA10ExpressionVyxGx_AEtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1roiAA10ExpressionVyxGx_AEtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_nTm +__T06SQLite1ooiAA10ExpressionVyxSgGx_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1roiAA10ExpressionVyxSgGx_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_nTm +__T06SQLite1xoiAA10ExpressionVyxSgGADyxG_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1xoiAA10ExpressionVyxGx_AEtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1xoiAA10ExpressionVyxSgGx_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2eeoiAA10ExpressionVySbGADyxG_AFtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_n +__T06SQLite2eeoiAA10ExpressionVySbSgGADyxG_ADyxSgGtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_n +__T06SQLite2eeoiAA10ExpressionVySbSgGADyxSgG_ADyxGtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_n +__T06SQLite2eeoiAA10ExpressionVySbSgGADyxSgG_AHtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_n +__T06SQLite2eeoiAA10ExpressionVySbGADyxG_xtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_n +__T06SQLite2eeoiAA10ExpressionVySbSgGADyxSgG_AGtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gn_n +__T06SQLite2eeoiAA10ExpressionVySbGx_ADyxGtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_n +__T06SQLite2eeoiAA10ExpressionVySbSgGxSg_ADyAGGtAA5ValueRzs9Equatable8DatatypeRpzlFTf4ng_n +__T06SQLite2neoiAA10ExpressionVySbGADyxG_AFtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_n +__T06SQLite2neoiAA10ExpressionVySbSgGADyxG_ADyxSgGtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_n +__T06SQLite2neoiAA10ExpressionVySbSgGADyxSgG_ADyxGtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_n +__T06SQLite2neoiAA10ExpressionVySbSgGADyxSgG_AHtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_n +__T06SQLite2neoiAA10ExpressionVySbGADyxG_xtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_n +__T06SQLite2neoiAA10ExpressionVySbSgGADyxSgG_AGtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gn_n +__T06SQLite2neoiAA10ExpressionVySbGx_ADyxGtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_n +__T06SQLite2neoiAA10ExpressionVySbSgGxSg_ADyAGGtAA5ValueRzs9Equatable8DatatypeRpzlFTf4ng_n +__T06SQLite1goiAA10ExpressionVySbGADyxG_AFtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1goiAA10ExpressionVySbSgGADyxG_ADyxSgGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1goiAA10ExpressionVySbSgGADyxSgG_ADyxGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1goiAA10ExpressionVySbSgGADyxSgG_AHtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1goiAA10ExpressionVySbGADyxG_xtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1goiAA10ExpressionVySbSgGADyxSgG_xtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1goiAA10ExpressionVySbGx_ADyxGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1goiAA10ExpressionVySbSgGx_ADyxSgGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite2geoiAA10ExpressionVySbGADyxG_AFtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite2geoiAA10ExpressionVySbSgGADyxG_ADyxSgGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite2geoiAA10ExpressionVySbSgGADyxSgG_ADyxGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite2geoiAA10ExpressionVySbSgGADyxSgG_AHtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite2geoiAA10ExpressionVySbGADyxG_xtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite2geoiAA10ExpressionVySbSgGADyxSgG_xtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite2geoiAA10ExpressionVySbGx_ADyxGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite2geoiAA10ExpressionVySbSgGx_ADyxSgGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1loiAA10ExpressionVySbGADyxG_AFtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1loiAA10ExpressionVySbSgGADyxG_ADyxSgGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1loiAA10ExpressionVySbSgGADyxSgG_ADyxGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1loiAA10ExpressionVySbSgGADyxSgG_AHtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1loiAA10ExpressionVySbGADyxG_xtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1loiAA10ExpressionVySbSgGADyxSgG_xtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1loiAA10ExpressionVySbGx_ADyxGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1loiAA10ExpressionVySbSgGx_ADyxSgGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite2leoiAA10ExpressionVySbGADyxG_AFtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite2neoiAA10ExpressionVySbGADyxG_AFtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_nTm +__T06SQLite2leoiAA10ExpressionVySbSgGADyxG_ADyxSgGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite2leoiAA10ExpressionVySbSgGADyxSgG_ADyxGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite2leoiAA10ExpressionVySbSgGADyxSgG_AHtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite2neoiAA10ExpressionVySbSgGADyxSgG_AHtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_nTm +__T06SQLite2leoiAA10ExpressionVySbGADyxG_xtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite2neoiAA10ExpressionVySbGADyxG_xtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_nTm +__T06SQLite2leoiAA10ExpressionVySbSgGADyxSgG_xtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1goiAA10ExpressionVySbSgGADyxSgG_xtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_nTm +__T06SQLite2leoiAA10ExpressionVySbGx_ADyxGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite2neoiAA10ExpressionVySbGx_ADyxGtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_nTm +__T06SQLite2leoiAA10ExpressionVySbSgGx_ADyxSgGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1goiAA10ExpressionVySbSgGx_ADyxSgGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_nTm +__T06SQLite2teoiAA10ExpressionVySbGs11ClosedRangeVyxG_ADyxGtAA5ValueRzs10ComparableRzAaJ8DatatypeAaJPRpzsAkNRQlFTf4gg_n +__T06SQLite2teoiAA10ExpressionVySbSgGs11ClosedRangeVyxG_ADyxSgGtAA5ValueRzs10ComparableRzAaL8DatatypeAaLPRpzsAmPRQlFTf4gg_n +__T06SQLite2teoiAA10ExpressionVySbGs11ClosedRangeVyxG_ADyxGtAA5ValueRzs10ComparableRzAaJ8DatatypeAaJPRpzsAkNRQlFTf4gg_nTm +__T06SQLite2teoiAA10ExpressionVySbGs5RangeVyxG_ADyxGtAA5ValueRzs10ComparableRzAaJ8DatatypeAaJPRpzsAkNRQlFTf4gg_n +__T06SQLite2teoiAA10ExpressionVySbSgGs5RangeVyxG_ADyxSgGtAA5ValueRzs10ComparableRzAaL8DatatypeAaLPRpzsAmPRQlFTf4gg_n +__T06SQLite2teoiAA10ExpressionVySbGs5RangeVyxG_ADyxGtAA5ValueRzs10ComparableRzAaJ8DatatypeAaJPRpzsAkNRQlFTf4gg_nTm +__T06SQLite2teoiAA10ExpressionVySbGs19PartialRangeThroughVyxG_ADyxGtAA5ValueRzs10ComparableRzAaJ8DatatypeAaJPRpzsAkNRQlFTf4gg_n +__T06SQLite2teoiAA10ExpressionVySbSgGs19PartialRangeThroughVyxG_ADyxSgGtAA5ValueRzs10ComparableRzAaL8DatatypeAaLPRpzsAmPRQlFTf4gg_n +__T06SQLite2teoiAA10ExpressionVySbGs16PartialRangeUpToVyxG_ADyxGtAA5ValueRzs10ComparableRzAaJ8DatatypeAaJPRpzsAkNRQlFTf4gg_n +__T06SQLite2teoiAA10ExpressionVySbSgGs16PartialRangeUpToVyxG_ADyxSgGtAA5ValueRzs10ComparableRzAaL8DatatypeAaLPRpzsAmPRQlFTf4gg_n +__T06SQLite2teoiAA10ExpressionVySbGs16PartialRangeFromVyxG_ADyxGtAA5ValueRzs10ComparableRzAaJ8DatatypeAaJPRpzsAkNRQlFTf4gg_n +__T06SQLite2teoiAA10ExpressionVySbSgGs16PartialRangeFromVyxG_ADyxSgGtAA5ValueRzs10ComparableRzAaL8DatatypeAaLPRpzsAmPRQlFTf4gg_n +__T06SQLite2teoiAA10ExpressionVySbGs19PartialRangeThroughVyxG_ADyxGtAA5ValueRzs10ComparableRzAaJ8DatatypeAaJPRpzsAkNRQlFTf4gg_nTm +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Operators.swift +Operators.swift +~= +> +!= +<= +< +>= +^ +& +| +~ +- +! +&& +|| +>> +<< +/ +__T06SQLite9QueryTypePAAE9tableNameAA11Expressible_pSb5alias_tFAA5TableV_Tg5 +__T06SQLite9QueryTypePAAE9tableNameAA11Expressible_pSb5alias_tFAA4ViewV_Tg5 +__T06SQLite9QueryTypePAAE6create33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pSS_AaF_pAA8ModifierAELLOSgSbtFAA12VirtualTableV_Tg5 +__T06SQLite5TableV6createSSSb9temporary_Sb11ifNotExistsSb12withoutRowidyAA0B7BuilderCc5blocktFAA11Expressible_pSgALcfU_ +__T06SQLite5TableV6createSSAA9QueryType_p_Sb9temporarySb11ifNotExiststFAA11Expressible_pSgAIcfU_ +__T06SQLite5TableV9addColumn33_74E609AEF79A03B17828018C605761B0LLSSAA11Expressible_pF +__T06SQLite10definition33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pAaD_p_SSAA10PrimaryKeyOSgS2bAaD_pSgAhA9QueryType_p_AaD_ptSgAA9CollationOSgtF +__T06SQLite9QueryTypePAAE6rename33_74E609AEF79A03B17828018C605761B0LLSSx2to_tFAA5TableV_Tg5 +__T06SQLite9QueryTypePAAE6rename33_74E609AEF79A03B17828018C605761B0LLSSx2to_tFAA12VirtualTableV_Tg5 +__T06SQLite9QueryTypePAAE6rename33_74E609AEF79A03B17828018C605761B0LLSSx2to_tFAA5TableV_Tg5Tm +__T06SQLite5TableV9indexName33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pSayAaF_pGF +__T06SQLite9QueryTypePAAE9tableNameAA11Expressible_pSb9qualified_tFAA5TableV_Tg5 +__T06SQLite9QueryTypePAAE9tableNameAA11Expressible_pSb9qualified_tF +__T06SQLite5TableV11createIndexSSSayAA11Expressible_pGd_Sb6uniqueSb11ifNotExiststFAaE_pSgAIcfU_ +__T06SQLite9QueryTypePAAE8databaseAA11Expressible_pSS9namespace_tFAA5TableV_Tg5 +__T06SQLite4ViewV6createSSAA9QueryType_p_Sb9temporarySb11ifNotExiststFAA11Expressible_pSgAIcfU_ +__T06SQLite12VirtualTableV6createSSAA6ModuleV_Sb11ifNotExiststFAA11Expressible_pSgAIcfU_ +__T06SQLite12TableBuilderC10DependencyOs9EquatableAAsAFP2eeoiSbx_xtFZTW +__T06SQLite12TableBuilderC10DependencyOs8HashableAAsAFP9hashValueSifgTW +__T06SQLite12TableBuilderC10DependencyOs16RawRepresentableAAsAFPxSg0E5ValueQz03rawG0_tcfCTW +__T06SQLite12TableBuilderC10DependencyOs16RawRepresentableAAsAFP8rawValue0eH0QzfgTW +__T06SQLite12TableBuilderC10foreignKey33_74E609AEF79A03B17828018C605761B0LLyAA11Expressible_p_AA9QueryType_p_AaF_ptAC10DependencyOSgAJtF +__T06SQLite9reference33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pAA9QueryType_p_AaD_pt_tF +__T06SQLite12TableBuilderC10foreignKey33_74E609AEF79A03B17828018C605761B0LLyAA11Expressible_p_AA9QueryType_p_AaF_ptAC10DependencyOSgAJtFAaF_pAIcfU_ +__T06SQLite12TableBuilderC10foreignKey33_74E609AEF79A03B17828018C605761B0LLyAA11Expressible_p_AA9QueryType_p_AaF_ptAC10DependencyOSgAJtFAaF_pAIcfU0_ +__T06SQLite12TableBuilderC10foreignKey33_74E609AEF79A03B17828018C605761B0LLyAA11Expressible_p_AA9QueryType_p_AaF_ptAC10DependencyOSgAJtFAaF_pAIcfU_Tm +__T06SQLite12TableBuilderC10foreignKey33_74E609AEF79A03B17828018C605761B0LLyAA11Expressible_p_AA9QueryType_p_AaF_ptAC10DependencyOSgAJtFAaF_pSgAKcfU1_ +__T06SQLite10PrimaryKeyOs9EquatableAAsADP2eeoiSbx_xtFZTW +__T06SQLite10PrimaryKeyOs8HashableAAsADP9hashValueSifgTW +__T06SQLite6ModuleVAA11ExpressibleA2aDP10expressionAA10ExpressionVyytGfgTW +__T06SQLite9QueryTypePAAE6create33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pSS_AaF_pAA8ModifierAELLOSgSbtFAaF_pSgAJcfU0_ +__T06SQLite9QueryTypePAAE4drop33_74E609AEF79A03B17828018C605761B0LLS2S_AA11Expressible_pSbtFAaF_pSgAGcfU_ +__T06SQLite10definition33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pAaD_p_SSAA10PrimaryKeyOSgS2bAaD_pSgAhA9QueryType_p_AaD_ptSgAA9CollationOSgtFA2HcfU3_ +__T06SQLite5TableV6createSSSb9temporary_Sb11ifNotExistsSb12withoutRowidyAA0B7BuilderCc5blocktFAA11Expressible_pSgALcfU_Tm +_globalinit_33_14CB4A30965D85E6DF5BEBC63D2EB0EA_func14 +_globalinit_33_14CB4A30965D85E6DF5BEBC63D2EB0EA_func15 +_globalinit_33_14CB4A30965D85E6DF5BEBC63D2EB0EA_func16 +__T0SS10lowercasedSSyFTfq4x_n +__T0s11_StringCoreV11asciiBufferSrys5UInt8VGSgfgTfq4x_n +__T0Sr5countSifgs5UInt8V_Tgq5Tfq4x_n +__T0s10ComparablePsE2leoiSbx_xtFZs9CharacterV_Tgq5Tfq4ngd_n +__T0s10ComparablePsE2geoiSbx_xtFZs9CharacterV_Tgq5Tfq4gnd_n +__T0s2eeoiSbx_xts16RawRepresentableRzs9Equatable0B5ValueRpzlFTfq4gg_n6SQLite12TableBuilderC10DependencyO_Tg5 +__T0SS13CharacterViewVs8SequencessACP12makeIterator0E0QzyFTW +__T0SS13CharacterViewVs14_IndexableBasessACP9subscript7ElementQz5IndexQzcfgTW +__T0s8SequencePsE7flatMapSayqd__Gqd__Sg7ElementQzKcKlFSay6SQLite11Expressible_pSgG_AhI_pTg5Tf4gn_n +__T0SS13_compareASCIISiSSFTfq4gXx_nTfq4nndnnd_n +__T06SQLite5TableV9indexName33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pSayAaF_pGFS2S_s9CharacterVtcfU0_Tf4gXg_n +__T0s8SequencePsE6reduceqd__qd___qd__qd___7ElementQztKctKlFSS13CharacterViewV_SSTg507_T0SSs9D160VSSs5Error_pIxxxozo_SSABSSsAC_pIxiirzo_TR097_T06SQLite5TableV9indexName33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pSayAaF_pGFS2S_s9A7VtcfU0_Tf3nnnpf_nTf1ncn_nTf4xn_n +__T06SQLite9QueryTypePAAE4drop33_74E609AEF79A03B17828018C605761B0LLS2S_AA11Expressible_pSbtFTf4gXnnd_n +__T06SQLite9QueryTypePAAE4drop33_74E609AEF79A03B17828018C605761B0LLS2S_AA11Expressible_pSbtFAA4ViewV_Tg5Tf4gXnnn_n +__T06SQLite12TableBuilderC10DependencyOAESgSS8rawValue_tcfCTf4gXd_n +__T06SQLite12TableBuilderC10DependencyOwxs +__T06SQLite12TableBuilderC10DependencyOwxg +__T06SQLite12TableBuilderC10DependencyOwug +__T06SQLite12TableBuilderC10DependencyOwup +__T06SQLite12TableBuilderC10DependencyOwui +__T06SQLite10PrimaryKeyOwxs +__T06SQLite10PrimaryKeyOwxg +__T06SQLite10PrimaryKeyOwug +__T06SQLite10PrimaryKeyOwup +__T06SQLite10PrimaryKeyOwui +__T06SQLite6ModuleVwXX +__T06SQLite6ModuleVwCP +__T06SQLite6ModuleVwpr +__T06SQLite6ModuleVwde +__T06SQLite6ModuleVwxx +__T06SQLite6ModuleVwCp +__T06SQLite6ModuleVwcp +__T06SQLite6ModuleVwca +__T06SQLite6ModuleVwTk +__T06SQLite6ModuleVwta +__T06SQLite6ModuleVwal +__T06SQLite6ModuleVwXx +__T06SQLite6ModuleVwCc +__T06SQLite9QueryTypePAAE4drop33_74E609AEF79A03B17828018C605761B0LLS2S_AA11Expressible_pSbtFAA5TableV_Tg5Tf4gXnnn_n +__T06SQLite9QueryTypePAAE6create33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pSS_AaF_pAA8ModifierAELLOSgSbtFAA5TableV_Tg5 +__T06SQLite9QueryTypePAAE6create33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pSS_AaF_pAA8ModifierAELLOSgSbtFAA4ViewV_Tg5 +__T0s23_ContiguousArrayStorageCy6SQLite11Expressible_pSgGML +__T06SQLite11Expressible_pSgML +__T06SQLite12TableBuilderC11definitions33_74E609AEF79A03B17828018C605761B0LLSayAA11Expressible_pGvWvd +__T06SQLite12TableBuilderCML +__T06SQLite12TableBuilderCMf +__T06SQLite12TableBuilderC10DependencyOWV +__T06SQLite12TableBuilderC10DependencyOML +__T06SQLite12TableBuilderC10DependencyOMf +__T06SQLite12TableBuilderC10DependencyOMF +__T06SQLite12TableBuilderCMF +__T06SQLite10PrimaryKeyOWV +__T06SQLite10PrimaryKeyOMf +__T06SQLite10PrimaryKeyOMF +__T06SQLite6ModuleVWV +__T06SQLite6ModuleVMf +__T06SQLite6ModuleVMF +__T06SQLite8Modifier33_74E609AEF79A03B17828018C605761B0LLOMF +__T0Say6SQLite11Expressible_pGML +__T06SQLite12TableBuilderC10DependencyOs16RawRepresentableAAMA +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Schema.swift +objectdestroy.208 +_T06SQLite6ModuleVMa +get_field_types_Module +_T0Say6SQLite11Expressible_pGMa +_T06SQLite6ModuleVwCc +_T06SQLite6ModuleVwXx +_T06SQLite6ModuleVwal +_T06SQLite6ModuleVwta +_T06SQLite6ModuleVwTk +_T06SQLite6ModuleVwca +_T06SQLite6ModuleVwcp +_T06SQLite6ModuleVwCp +_T06SQLite6ModuleVwxx +_T06SQLite6ModuleVwde +_T06SQLite6ModuleVwpr +_T06SQLite6ModuleVwCP +_T06SQLite6ModuleVwXX +_T06SQLite10PrimaryKeyOMa +get_field_types_PrimaryKey +_T06SQLite10PrimaryKeyOwui +_T06SQLite10PrimaryKeyOwup +_T06SQLite10PrimaryKeyOwug +_T06SQLite10PrimaryKeyOwxg +_T06SQLite10PrimaryKeyOwxs +initialize_metadata_Dependency +_T06SQLite12TableBuilderCMa +_T06SQLite12TableBuilderC10DependencyOMa +get_field_types_Dependency +_T06SQLite12TableBuilderC10DependencyOwui +_T06SQLite12TableBuilderC10DependencyOwup +_T06SQLite12TableBuilderC10DependencyOwug +_T06SQLite12TableBuilderC10DependencyOwxg +_T06SQLite12TableBuilderC10DependencyOwxs +get_field_types_TableBuilder +_T06SQLite10PrimaryKeyOs8HashableAAWa +_T06SQLite10PrimaryKeyOs9EquatableAAWa +_T06SQLite12TableBuilderC10DependencyOs16RawRepresentableAAWa +_T06SQLite12TableBuilderC10DependencyOs8HashableAAWa +_T06SQLite12TableBuilderC10DependencyOs9EquatableAAWa +_T06SQLite6ModuleVAA11ExpressibleAAWa +drop +_T0s23_ContiguousArrayStorageCfD6SQLite11Expressible_pSg_Tg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZ6SQLite11Expressible_pSg_Tg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZTfq4gnn_n6SQLite11Expressible_pSg_Tg5 +_T0s23_ContiguousArrayStorageCy6SQLite11Expressible_pSgGMa +_T06SQLite11Expressible_pSgMa +_T0SSs9CharacterVSSs5Error_pIxxxozo_SSABSSsAC_pIxiirzo_TR097_T06SQLite5TableV9indexName33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pSayAaF_pGFS2S_s9A7VtcfU0_Tf3nnnpf_n +_T06SQLite5TableV9indexName33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pSayAaF_pGFS2S_s9CharacterVtcfU0_ +_T06SQLite5TableV9indexName33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pSayAaF_pGFS2S_s9CharacterVtcfU0_Tf4gXg_n +_T0s9CharacterVs10ComparablessACP2leoiSbx_xtFZTW +_T0s9CharacterVs10ComparablessACP2geoiSbx_xtFZTW +_T0SS13_compareASCIISiSSFTfq4gXx_nTfq4nndnnd_n +_T0s16IndexingIteratorVyxGs0B8Protocolss14_IndexableBaseRzlsADP4next7ElementQzSgyFTWSay6SQLite11Expressible_pSgG_Tg5 +_T0SayxGs14_IndexableBaseslsABP9formIndexy0D0Qzz5after_tFTW6SQLite11Expressible_pSg_Tg5 +_T0Sa9formIndexySiz5after_tF6SQLite11Expressible_pSg_Tg5 +_T0SayxGs14_IndexableBaseslsABP9subscript7ElementQz5IndexQzcfgTW6SQLite11Expressible_pSg_Tg5 +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtF6SQLite11Expressible_pSg_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tF6SQLite11Expressible_pSg_Tg5 +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktF6SQLite11Expressible_pSg_Tg5 +_T0SayxGs14_IndexableBaseslsABP8endIndex0D0QzfgTW6SQLite11Expressible_pSg_Tg5 +_T0Sa8endIndexSifg6SQLite11Expressible_pSg_Tg5 +_T0Sa9_getCountSiyF6SQLite11Expressible_pSg_Tg5 +_T0SayxGs8SequenceslsABP12makeIterator0C0QzyFTW6SQLite11Expressible_pSg_Tg5 +_T0s2eeoiSbx_xts16RawRepresentableRzs9Equatable0B5ValueRpzlFTfq4gg_n6SQLite12TableBuilderC10DependencyO_Tg5 +_T0s10ComparablePsE2geoiSbx_xtFZs9CharacterV_Tgq5Tfq4gnd_n +_T0SS13_compareASCIISiSSFTfq4gXx_n +_T0s9CharacterV11_largeUTF16s11_StringCoreVSgfg +_T0s10ComparablePsE2leoiSbx_xtFZs9CharacterV_Tgq5Tfq4ngd_n +_T0SS10lowercasedSSyFTfq4x_n +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0Vy6SQLite11Expressible_pG_s07_IgnoreK0VyAmN_pGTg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subG0_AI12initializingtFTW6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtF6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFTfq4xnn_n6SQLite11Expressible_p_Tg5 +_T0Sp10initializeySPyxG4from_Si5counttF6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8endIndexSifgTW6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP027requestUniqueMutableBackingB0s011_ContiguousaB0Vy7ElementQzGSgSi15minimumCapacity_tFTW6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferV027requestUniqueMutableBackingB0s011_ContiguousaB0VyxGSgSi15minimumCapacity_tF6SQLite11Expressible_p_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vy6SQLite11Expressible_pG_Tg5 +_T0Sa16_copyToNewBufferySi8oldCount_tF6SQLite11Expressible_p_Tg5 +_T06SQLite5TableV6createSSSb9temporary_Sb11ifNotExistsSb12withoutRowidyAA0B7BuilderCc5blocktFAA11Expressible_pSgALcfU_ +_T06SQLite12TableBuilderC10foreignKey33_74E609AEF79A03B17828018C605761B0LLyAA11Expressible_p_AA9QueryType_p_AaF_ptAC10DependencyOSgAJtFAaF_pAIcfU_ +reference +foreignKey +_T06SQLite12TableBuilderC10DependencyOAA11Expressible_ps5Error_pIxyrzo_AeaF_psAG_pIxirzo_TR +unique +primaryKey +rename +create +_T06SQLite12VirtualTableV10identifierSSfau +_T06SQLite4ViewV10identifierSSfau +dropIndex +indexName +_T0s10CollectionPsE3mapSayqd__Gqd__7ElementQzKcKlFTfq4gn_nSay6SQLite11Expressible_pG_SSTg5 +_T0SayxGs10CollectionslsABP9subscript7ElementQz5IndexQzcfgTW6SQLite11Expressible_p_Tg5 +lowercased +_T06SQLite11Expressible_pSSs5Error_pIxiozo_AaB_pSSsAC_pIxirzo_TR +_T06SQLite5TableV9indexName33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pSayAaF_pGFSSAaF_pcfU_ +createIndex +addColumn +definition +_T06SQLite9CollationOAA11Expressible_ps5Error_pIxxrzo_AcaD_psAE_pIxirzo_TR +_T06SQLite10definition33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pAaD_p_SSAA10PrimaryKeyOSgS2bAaD_pSgAhA9QueryType_p_AaD_ptSgAA9CollationOSgtFAaD_pALcfU2_ +_T06SQLite9QueryType_pAA11Expressible_pAaC_ps5Error_pIxiirzo_AaB_p_AaC_ptAaC_psAD_pIxirzo_TR +_T06SQLite10definition33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pAaD_p_SSAA10PrimaryKeyOSgS2bAaD_pSgAhA9QueryType_p_AaD_ptSgAA9CollationOSgtFAaD_pAaD_pcfU1_ +_T06SQLite10definition33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pAaD_p_SSAA10PrimaryKeyOSgS2bAaD_pSgAhA9QueryType_p_AaD_ptSgAA9CollationOSgtFAaD_pAaD_pcfU0_ +_T06SQLite10PrimaryKeyOAA11Expressible_ps5Error_pIxyrzo_AcaD_psAE_pIxirzo_TR +_T06SQLite10definition33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pAaD_p_SSAA10PrimaryKeyOSgS2bAaD_pSgAhA9QueryType_p_AaD_ptSgAA9CollationOSgtFAaD_pAFcfU_ +_T06SQLite5TableV10identifierSSfau +_T06SQLite8Modifier33_74E609AEF79A03B17828018C605761B0LLOAA11Expressible_ps5Error_pIxyrzo_AdaE_psAF_pIxirzo_TR +_T06SQLite9QueryTypePAAE6create33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pSS_AaF_pAA8ModifierAELLOSgSbtFAaF_pAHcfU_ +__T0Sa6appendyqd__10contentsOf_t7ElementQyd__Rszs8SequenceRd__lF6SQLite9QueryType_p_SayAfG_pGTg5 +__T06SQLite9QueryTypePAAE9tableNameAA11Expressible_pSb5alias_tFAA5TableV_Tg5Tm +__T06SQLite9QueryTypePAAE8databaseAA11Expressible_pSS9namespace_tFAA12VirtualTableV_Tg5 +__T06SQLite9QueryTypePAAE8databaseAA11Expressible_pSS9namespace_tF +__T06SQLite9QueryTypePAAE6select33_14CB4A30965D85E6DF5BEBC63D2EB0EALLqd__Sb_SayAA11Expressible_pGtAaBRd__lF +__T06SQLite10SchemaTypePAAE6selectxAA11Expressible_p_SayAaE_pGdtFTm +__T06SQLite10SchemaTypePAAE6selectxAA10ExpressionVyytGAFyAA7Binding_pGSg_AJtcFTm +__T06SQLite10SchemaTypePAAE6selectAA11ScalarQueryVyqd__SgGAA10ExpressionVyAGGAA5ValueRd__lFTm +__T06SQLite9QueryTypePAAE5group33_14CB4A30965D85E6DF5BEBC63D2EB0EALLxSayAA11Expressible_pG_AA10ExpressionVySbSgGSgtF +__T06SQLite9QueryTypePAAE5limit33_14CB4A30965D85E6DF5BEBC63D2EB0EALLxSiSg_AFtF +__T06SQLite9QueryTypePAAE12selectClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pfgAA5TableV_Tg5 +__T06SQLite9QueryTypePAAE12selectClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pfgAA4ViewV_Tg5 +__T06SQLite9QueryTypePAAE12selectClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pfgAA12VirtualTableV_Tg5Tm +__T06SQLite9QueryTypePAAE12selectClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pfgAA12VirtualTableV_Tg5 +__T06SQLite9QueryTypePAAE12selectClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pfg +__T06SQLite9QueryTypePAAE10joinClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA12VirtualTableV_Tg5 +__T06SQLite9QueryTypePAAE10joinClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfg +__T06SQLite9QueryTypePAAE10joinClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAaF_pAA04JoinC0O4type_AaB_p5queryAaF_p9conditiontcfU_ +__T06SQLite9QueryTypePAAE11whereClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA12VirtualTableV_Tg5 +__T06SQLite9QueryTypePAAE11whereClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfg +__T06SQLite9QueryTypePAAE13groupByClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA12VirtualTableV_Tg5 +__T06SQLite9QueryTypePAAE13groupByClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfg +__T06SQLite9QueryTypePAAE11orderClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA12VirtualTableV_Tg5 +__T06SQLite9QueryTypePAAE11orderClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfg +__T06SQLite9QueryTypePAAE17limitOffsetClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA12VirtualTableV_Tg5 +__T06SQLite9QueryTypePAAE17limitOffsetClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfg +__T06SQLite9QueryTypePAAE11unionClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA12VirtualTableV_Tg5 +__T06SQLite9QueryTypePAAE11unionClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfg +__T06SQLite9QueryTypePAAE6insert33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA6InsertVAA10OnConflictOSg_SayAA6SetterVGtFAA11Expressible_pAIcfU0_ +__T06SQLite9QueryTypePAAE6insert33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA6InsertVAA10OnConflictOSg_SayAA6SetterVGtFAA11Expressible_pSgAOcfU1_ +__T06SQLite9QueryTypePAAE6updateAA6UpdateVSayAA6SetterVGFAA11Expressible_pSgAKcfU0_ +__T06SQLite9QueryTypePAAE6deleteAA6DeleteVyFAA11Expressible_pSgAHcfU_ +__T06SQLite9QueryTypePAAE10expressionAA10ExpressionVyytGfgAA5TableV_Tg5 +__T06SQLite9QueryTypePAAE10expressionAA10ExpressionVyytGfgAA4ViewV_Tg5 +__T06SQLite9QueryTypePAAE10expressionAA10ExpressionVyytGfgAA12VirtualTableV_Tg5 +__T06SQLite9QueryTypePAAE10expressionAA10ExpressionVyytGfgAA11Expressible_pSgAIcfU_ +__T06SQLite9QueryTypePAAE6insert33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA6InsertVAA10OnConflictOSg_SayAA6SetterVGtFAA11Expressible_pSgAOcfU1_Tm +__T06SQLite5TableVAA10SchemaTypeA2aDP10identifierSSfgZTW +__T06SQLite5TableVAA9QueryTypeA2aDPxSS_SSSg8databasetcfCTW +__T06SQLite5TableVAA11ExpressibleA2aDP10expressionAA10ExpressionVyytGfgTW +__T06SQLite5TableVACSS_SSSg8databasetcfCTm +__T06SQLite4ViewVAA10SchemaTypeA2aDP10identifierSSfgZTW +__T06SQLite4ViewVAA9QueryTypeA2aDPxSS_SSSg8databasetcfCTW +__T06SQLite5TableVAA9QueryTypeA2aDPxSS_SSSg8databasetcfCTWTm +__T06SQLite4ViewVAA11ExpressibleA2aDP10expressionAA10ExpressionVyytGfgTW +__T06SQLite12VirtualTableVAA10SchemaTypeA2aDP10identifierSSfgZTW +__T06SQLite12VirtualTableVAA9QueryTypeA2aDP7clausesAA0D7ClausesVfgTW +__T06SQLite12VirtualTableVAA9QueryTypeA2aDP7clausesAA0D7ClausesVfsTW +__T06SQLite12VirtualTableVAA9QueryTypeA2aDP7clausesAA0D7ClausesVfmTW +__T06SQLite12VirtualTableVAA9QueryTypeA2aDPxSS_SSSg8databasetcfCTW +__T06SQLite12VirtualTableVAA11ExpressibleA2aDP10expressionAA10ExpressionVyytGfgTW +__T06SQLite5TableVAA11ExpressibleA2aDP10expressionAA10ExpressionVyytGfgTWTm +__T06SQLite11ScalarQueryVyxGAA0C4TypeAAlAaEP7clausesAA0C7ClausesVfgTW +__T06SQLite11ScalarQueryVyxGAA0C4TypeAAlAaEP7clausesAA0C7ClausesVfsTW +__T06SQLite11ScalarQueryVyxGAA0C4TypeAAlAaEP7clausesAA0C7ClausesVfmTW +__T06SQLite11ScalarQueryVyxGAA0C4TypeAAlAaEPxSS_SSSg8databasetcfCTW +__T06SQLite11ScalarQueryVyxGAA11ExpressibleAAlAaEP10expressionAA10ExpressionVyytGfgTW +__T06SQLite6SelectVyxGAA14ExpressionTypeAAlAaEP8templateSSfgTW +__T06SQLite6SelectVyxGAA14ExpressionTypeAAlAaEP8bindingsSayAA7Binding_pSgGfgTW +__T06SQLite6SelectVyxGAA14ExpressionTypeAAlAaEPxSS_SayAA7Binding_pSgGtcfCTW +__T06SQLite6InsertVAA14ExpressionTypeA2aDPxSS_SayAA7Binding_pSgGtcfCTW +__T06SQLite6UpdateVAA14ExpressionTypeA2aDPxSS_SayAA7Binding_pSgGtcfCTW +__T06SQLite6DeleteVAA14ExpressionTypeA2aDP8templateSSfgTW +__T06SQLite6DeleteVAA14ExpressionTypeA2aDP8bindingsSayAA7Binding_pSgGfgTW +__T06SQLite6DeleteVAA14ExpressionTypeA2aDPxSS_SayAA7Binding_pSgGtcfCTW +__T06SQLite11RowIteratorVAA08FailableC0A2aDP12failableNext7ElementQzSgyKFTW +__T06SQLite11RowIteratorVs0C8ProtocolAAsADP4next7ElementQzSgyFTW +__T06SQLite16FailableIteratorPAAE4next7ElementQzSgyFAA9StatementC_Tg5 +__T06SQLite10ConnectionC19columnNamesForQuery33_14CB4A30965D85E6DF5BEBC63D2EB0EALLs10DictionaryVySSSiGAA0F4Type_pKF +__T06SQLite10ConnectionC7prepares11AnySequenceVyAA3RowVGAA9QueryType_pKFs0D8IteratorVyAHGycfU_AHSgycfU_ +__T06SQLite10ConnectionC3runs5Int64VAA6InsertVKFAFyKcfU_ +__T06SQLite10ConnectionC3runSiAA6UpdateVKFSiyKcfU_ +__T06SQLite10ConnectionC3runSiAA6DeleteVKFSiyKcfU_Tm +__T06SQLite10ConnectionC3runSiAA6DeleteVKFSiyKcfU_ +__T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlF12valueAtIndexL_AESiAaIRzlF +__T06SQLite3RowV9subscriptxAA10ExpressionVyxGcAA5ValueRzlufgTm +__T06SQLite8JoinTypeOs9EquatableAAsADP2eeoiSbx_xtFZTW +__T06SQLite8JoinTypeOs16RawRepresentableAAsADPxSg0D5ValueQz03rawF0_tcfCTW +__T06SQLite8JoinTypeOs16RawRepresentableAAsADP8rawValue0dG0QzfgTW +__T06SQLite10OnConflictOs9EquatableAAsADP2eeoiSbx_xtFZTW +__T06SQLite10OnConflictOs8HashableAAsADP9hashValueSifgTW +__T06SQLite10OnConflictOs16RawRepresentableAAsADPxSg0D5ValueQz03rawF0_tcfCTW +__T06SQLite10OnConflictOs16RawRepresentableAAsADP8rawValue0dG0QzfgTW +__T0s7UnicodeO5UTF16O16transcodedLengthSi5count_Sb7isASCIItSgx2of_q_m9decodedAsSb27repairingIllFormedSequencests16IteratorProtocolRzs01_A8EncodingR_8CodeUnitQy_7ElementRtzr0_lFZs11_UIntBufferV0O0Vys6UInt64Vs6UInt16V_G_ADTgq5Tfq4xnnd_n +__T0s11_StringCoreVABs01_A6BufferVcfCTfq4nd_n +__T0s15ContiguousArrayV15reserveCapacityySiF6SQLite9QueryType_p_Tg5 +__T0Sa16_copyToNewBufferySi8oldCount_tF6SQLite9QueryType_p_Tg5 +__T0Sa16_copyToNewBufferySi8oldCount_tF6SQLite8JoinTypeO4type_AC05QueryI0_p5queryAC11Expressible_p9conditiont_Tg5 +__T0Sa16_copyToNewBufferySi8oldCount_tFSS13CharacterViewV_Tg5 +__T0Sa16_copyToNewBufferySi8oldCount_tF6SQLite9QueryType_p_Tg5Tm +__T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFTfq4ngn_n +__T0s17MutableCollectionPssAARzs012RandomAccessB0Rzs10Comparable7Elements8SequencePRpzlE4sortyyFs15ContiguousArrayVySSG_Tg5 +__T0s20_ArrayBufferProtocolPsE20_arrayAppendSequenceyqd__s0F0Rd__7ElementQyd__AERtzlFTfq4gn_ns01_aB0Vy6SQLite9QueryType_pG_s08IteratorF0Vys08IndexingK0VySayAjK_pGGGTg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFAEySSG_Tg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vy6SQLite9QueryType_pG_Tg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vy6SQLite8JoinTypeO4type_AM05QueryQ0_p5queryAM11Expressible_p9conditiontG_Tg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFAEy6SQLite9QueryType_pG_Tg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0VySS13CharacterViewVG_Tg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_nAEySSG_s07_IgnoreK0VySSGTg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0Vy6SQLite9QueryType_pG_s07_IgnoreK0VyAmN_pGTg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0Vy6SQLite8JoinTypeO4type_AM05QueryO0_p5queryAM11Expressible_p9conditiontG_s07_IgnoreK0VyAoP_AmQ_pArmS_pATtGTg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_nAEy6SQLite9QueryType_pG_s07_IgnoreK0VyAkL_pGTg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0VySSG_s31_InitializeMemoryFromCollectionVys05EmptyP0VySSGGTg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0VySS13CharacterViewVG_s07_IgnoreK0VyANGTg5 +__T0Sa15reserveCapacityySiF6SQLite9QueryType_p_Tg5 +__T0SSs9EquatablessAAP2eeoiSbx_xtFZTW +__T0s24_VariantDictionaryBufferO018ensureUniqueNativeC0Sb11reallocated_Sb15capacityChangedtSiFSS_SiTg5 +__T0s14_introSortImplyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subD0Si10depthLimitts17MutableCollectionRzs012RandomAccessL0Rzs10Comparable7Elements8SequencePRpzlFTfq4ngn_nSrySSG_Tg5 +__T0s9_heapSortyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subC0ts17MutableCollectionRzs012RandomAccessI0Rzs10Comparable7Elements8SequencePRpzlFTfq4ng_nSrySSG_Tg5 +__T0s14_insertionSortyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subC0ts23BidirectionalCollectionRzs07MutableI0Rzs10Comparable7Elements8SequencePRpzlFTfq4ng_nSrySSG_Tg5 +__T0s9_siftDownyxz_5Indexs14_IndexableBasePQz5indexs5RangeVyAEG03subG0ts17MutableCollectionRzs012RandomAccessJ0Rzs10Comparable7Elements8SequencePRpzlFTfq4nng_nSrySSG_Tg5 +__T0s10CollectionPsE5splitSay11SubSequenceQzGSi9maxSplits_Sb25omittingEmptySubsequencesSb7ElementQzKc14whereSeparatortKFTfq4nngn_nSS13CharacterViewV_Tg505_T0s9M174VSbs5Error_pIxxdzo_ABSbsAC_pIxidzo_TR0118_T06SQLite10ConnectionC19columnNamesForQuery33_14CB4A30965D85E6DF5BEBC63D2EB0EALLs10DictionaryVySSSiGAA0F4Type_pKFSbs9A5VcfU_Tf3npf_nTf1nncn_n +__T0SS9hasSuffixSbSSFTfq4gXx_n +__T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tF6SQLite9QueryType_p_Tg5 +__T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tFSS_Tg5Tm +__T0s23_NativeDictionaryBufferVss8HashableRzr0_lE12unsafeAddNewyx3key_q_5valuetFTfq4ggn_nSS_SiTg5 +__T0s6_sort3yxz_5Indexs14_IndexableBasePQzA2Ets17MutableCollectionRzs012RandomAccessF0Rzs10Comparable7Elements8SequencePRpzlFSrySSG_Tg5 +__T0s2eeoiSbx_xts16RawRepresentableRzs9Equatable0B5ValueRpzlFTfq4gg_n6SQLite8JoinTypeO_Tg5 +__T0s2eeoiSbx_xts16RawRepresentableRzs9Equatable0B5ValueRpzlFTfq4gg_n6SQLite10OnConflictO_Tg5 +__T0s9CharacterVABSScfCTfq4gXd_n +__T0SS13CharacterViewV21legacyGraphemeForwardSiSS5IndexV5start_AE3endSi0gF5UTF16tFTfq4xxnn_n +__T0s9CharacterVABSS26_largeRepresentationString_tcfCTfq4gXd_n +__T0s30_copySequenceToContiguousArrays0dE0Vy7ElementQzGxs0B0RzlFTfq4g_n6SQLite6CursorV_Tg5 +__T0SS13CharacterViewVs14_IndexableBasessACP10startIndex0F0QzfgTW +__T0SS13CharacterViewVs14_IndexableBasessACP8endIndex0F0QzfgTW +__T0SS13CharacterViewVs14_IndexableBasessACP9formIndexy0F0Qzz5after_tFTW +__T0SS5IndexVs9EquatablessACP2eeoiSbx_xtFZTW +__T0SS13CharacterViewV9subscriptABs5RangeVySS5IndexVGcfgTfq4xn_n +__T0SSs8HashablessAAP9hashValueSifgTW +__T0s32_copyCollectionToContiguousArrays0dE0Vy7ElementQzGxs0B0RzlFs10DictionaryV4KeysVySSSi_G_Tg5 +__T0s20_ArrayBufferProtocolPsE019_outlinedMakeUniqueB0ySi11bufferCount_tFs011_ContiguousaB0VySSG_Tg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi8newCount_Si16requiredCapacitytFAEySSG_Tg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi8newCount_Si16requiredCapacitytFs01_aB0VySSG_Tg5 +__T0s17MutableCollectionPsE6swapAty5IndexQz_AEtFSrySSG_Tg5 +__T06SQLite6SelectV8templateSSfgTfq4n_g +__T06SQLite6SelectV8bindingsSayAA7Binding_pSgGfgTfq4n_g +__T06SQLite11RowIteratorV12failableNextAA0B0VSgyKFTf4x_n +__T06SQLite9QueryTypePAAE6insert33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA6InsertVAA10OnConflictOSg_SayAA6SetterVGtFTf4ngn_n +__T0s22_ContiguousArrayBufferVAByxGSi19_uninitializedCount_Si15minimumCapacitytcfCSS_Tg5Tf4nnd_n +__T0S2ayxGqd__c7ElementQyd__Rszs8SequenceRd__lufCTfq4gn_nSS_s10DictionaryV4KeysVySSSi_GTg5Tf4nd_n +__T0s10_partition5Indexs14_IndexableBasePQzxz_s5RangeVyAEG03subE0ts17MutableCollectionRzs012RandomAccessH0Rzs10Comparable7Elements8SequencePRpzlFSrySSG_Tg5Tf4nx_n +__T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlF12valueAtIndexL_AESiAaIRzlFSb_Tg5Tf4ngX_n +__T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlFSbSScfU_Tf4gXg_n +__T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlF12valueAtIndexL_AESiAaIRzlFSi_Tg5Tf4ngX_n +__T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlF12valueAtIndexL_AESiAaIRzlFSd_Tg5Tf4ngX_n +__T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlFSi_Tg5Tf4xx_nTm +__T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlF12valueAtIndexL_AESiAaIRzlFSS_Tg5Tf4ngX_n +__T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlF12valueAtIndexL_AESiAaIRzlF10Foundation4DataV_Tg5Tf4ngX_n +__T0S2ayxGycfCTfq42n_g +__T06SQLite11ScalarQueryV7clausesAA0C7ClausesVfmTfq4dnn_n +__T06SQLite12VirtualTableVACSS_SSSg8databasetcfCTf4nnd_n +__T06SQLite4ViewVACSS_SSSg8databasetcfCTf4nnd_n +__T06SQLite5TableVACSS_SSSg8databasetcfCTf4nnd_n +__T06SQLite12VirtualTableVACSS_SSSg8databasetcfCTf4nnd_nTm +__T06SQLite11ScalarQueryV7clausesAA0C7ClausesVfsTfq4gn_n +__T06SQLite10SchemaTypePAAE6selectAA11ScalarQueryVyqd__GAA10ExpressionVyqd__GAA5ValueRd__lFTf4gn_n +__T06SQLite9QueryTypePAAE6insertAA6InsertVAA10OnConflictO2or_SayAA6SetterVGtFTf4ngn_n +__T06SQLite9QueryTypePAAE9namespaceAA10ExpressionVyqd__GAGlFTf4gn_n +__T06SQLite10ConnectionC7prepares11AnySequenceVyAA3RowVGAA9QueryType_pKFs0D8IteratorVyAHGycfU_TA +__T0s11AnyIteratorVy6SQLite3RowVGIxo_AFIxr_TRTA +__T0s12_SequenceBoxCys013_ClosureBasedA0Vys11AnyIteratorVy6SQLite3RowVGGGMa +__T0s21_ClosureBasedSequenceVys11AnyIteratorVy6SQLite3RowVGGMa +__T06SQLite10ConnectionC3runs5Int64VAA6InsertVKFAFyKcfU_TA +__T0s5Int64Vs5Error_pIxdzo_ABsAC_pIxrzo_TRTA +__T06SQLite10ConnectionC3runSiAA6UpdateVKFSiyKcfU_TA +__T0Sis5Error_pIxdzo_SisAA_pIxrzo_TRTA +__T06SQLite10ConnectionC3runSiAA6DeleteVKFSiyKcfU_TA +__T06SQLite10ConnectionC3runSiAA6UpdateVKFSiyKcfU_TATm +__T0s10CollectionPsE5splitSay11SubSequenceQzGSi9maxSplits_Sb25omittingEmptySubsequencesSb7ElementQzKc14whereSeparatortKF17appendSubsequenceL_Sb5IndexQz3end_tsAARzlFTfq4ngngg_nSS13CharacterViewV_Tg5Tf4xnnnn_n +__T06SQLite10ConnectionC19columnNamesForQuery33_14CB4A30965D85E6DF5BEBC63D2EB0EALLs10DictionaryVySSSiGAA0F4Type_pKFSbs9CharacterVcfU_Tf4g_n +__T0s20_ArrayBufferProtocolPsE23_arrayOutOfPlaceReplaceys5RangeVySiG_qd__4withSi5countts10CollectionRd__7ElementQyd__AJRtzlFTfq4xnnn_ns01_aB0VySSG_s05EmptyL0VySSGTg5Tf4nndnn_n +__T0s20_ArrayBufferProtocolPsE15replaceSubrangeys5RangeVySiG_Si4withqd__10elementsOfts10CollectionRd__7ElementQyd__AJRtzlFTfq4xnnn_ns01_aB0VySSG_s05EmptyJ0VySSGTg5Tf4nnndn_n +__T0Sa15replaceSubrangeys5RangeVySiG_qd__4witht7ElementQyd__Rszs10CollectionRd__lFTfq4xnn_nSS_s05EmptyF0VySSGTg5Tf4nndn_n +__T06SQLite10ConnectionC19columnNamesForQuery33_14CB4A30965D85E6DF5BEBC63D2EB0EALLs10DictionaryVySSSiGAA0F4Type_pKF10expandGlobL_yAaI_pKcSbFyAaI_pKcfU_S2ScfU0_Tf4gXn_n +__T0s24_VariantDictionaryBufferO17nativeUpdateValueq_Sgq__x6forKeytFSS_SiTg5Tf4nxn_n +__T06SQLite10ConnectionC19columnNamesForQuery33_14CB4A30965D85E6DF5BEBC63D2EB0EALLs10DictionaryVySSSiGAA0F4Type_pKF10expandGlobL_yAaI_pKcSbFyAaI_pKcfU_Tf4ngngg_n +__T06SQLite10ConnectionC3runs5Int64VAA6InsertVKFAFyKcfU_Tf4gg_n +__T06SQLite10ConnectionC3runSiAA6UpdateVKFSiyKcfU_Tf4gg_n +__T06SQLite10ConnectionC3runSiAA6DeleteVKFSiyKcfU_Tf4gg_n +__T06SQLite10ConnectionC3runSiAA6UpdateVKFSiyKcfU_Tf4gg_nTm +__T06SQLite8JoinTypeOACSgSS8rawValue_tcfCTf4gXd_n +__T06SQLite10OnConflictOACSgSS8rawValue_tcfCTf4gXd_n +__T0ytMa +__T06SQLite5TableVwCp +__T06SQLite5TableVwTk +___swift_memcpy240_8 +__T06SQLite5TableVwal +___swift_memmove_array240_8 +__T06SQLite4ViewVwCp +__T06SQLite4ViewVwTk +__T06SQLite4ViewVwal +__T06SQLite12VirtualTableVwCp +__T06SQLite5TableVwCpTm +__T06SQLite12VirtualTableVwTk +__T06SQLite12VirtualTableVwal +__T06SQLite11ScalarQueryVwXX +__T06SQLite11ScalarQueryVwCP +__T06SQLite11ScalarQueryVwpr +__T06SQLite11ScalarQueryVwde +__T06SQLite11ScalarQueryVwxx +__T06SQLite11ScalarQueryVwCp +__T06SQLite11ScalarQueryVwcp +__T06SQLite11ScalarQueryVwca +__T06SQLite11ScalarQueryVwTk +__T06SQLite11ScalarQueryVwta +__T06SQLite11ScalarQueryVwal +__T06SQLite11ScalarQueryVwXx +__T06SQLite11ScalarQueryVwCc +__T06SQLite11ScalarQueryVwxs +__T06SQLite11ScalarQueryVwxg +__T06SQLite6SelectVwCp +__T06SQLite6SelectVwTk +__T06SQLite6InsertVwCp +__T06SQLite6InsertVwTk +__T06SQLite6InsertVwal +__T06SQLite6UpdateVwCp +__T06SQLite6UpdateVwTk +__T06SQLite6UpdateVwal +__T06SQLite6DeleteVwXX +__T06SQLite6DeleteVwde +__T06SQLite6DeleteVwxx +__T06SQLite6DeleteVwCp +__T06SQLite6InsertVwCpTm +__T06SQLite6DeleteVwcp +__T06SQLite6DeleteVwca +__T06SQLite6DeleteVwTk +__T06SQLite6DeleteVwta +__T06SQLite6DeleteVwal +__T06SQLite6DeleteVwXx +__T06SQLite6DeleteVwCc +__T06SQLite11RowIteratorVwXX +__T06SQLite11RowIteratorVwCP +__T06SQLite11RowIteratorVwxx +__T06SQLite11RowIteratorVwCp +__T06SQLite11RowIteratorVwcp +__T06SQLite11RowIteratorVwca +___swift_memcpy16_8 +__T06SQLite11RowIteratorVwta +__T06SQLite11RowIteratorVwXx +__T06SQLite11RowIteratorVwCc +___swift_memmove_array16_8 +__T06SQLite11RowIteratorVwxs +__T06SQLite11RowIteratorVwxg +__T06SQLite3RowVwXX +__T06SQLite3RowVwCP +__T06SQLite3RowVwxx +__T06SQLite3RowVwCp +__T06SQLite3RowVwcp +__T06SQLite3RowVwca +__T06SQLite3RowVwta +__T06SQLite3RowVwXx +__T06SQLite3RowVwCc +__T06SQLite8JoinTypeOwxs +__T06SQLite8JoinTypeOwxg +__T06SQLite8JoinTypeOwup +__T06SQLite10OnConflictOwxs +__T06SQLite10OnConflictOwxg +__T06SQLite10OnConflictOwug +__T06SQLite10OnConflictOwup +__T06SQLite10OnConflictOwui +__T06SQLite12QueryClausesVwCp +__T06SQLite12QueryClausesVwTk +__T06SQLite12QueryClausesVwal +__T06SQLite8JoinTypeO4type_AA05QueryC0_p5queryAA11Expressible_p9conditiontMa +__T0Say6SQLite11Expressible_pG2by_AA10ExpressionVySbSgGSg6havingtSgMa +__T06SQLite10ConnectionC7prepares11AnySequenceVyAA3RowVGAA9QueryType_pKFs0D8IteratorVyAHGycfU_AHSgycfU_TA +__T06SQLite3RowVSgIxo_ADIxr_TRTA +__T0s12_IteratorBoxCys013_ClosureBasedA0Vy6SQLite3RowVGGMa +___swift_mutable_project_boxed_opaque_existential_1 +__T06SQLite9QueryTypePAAE17limitOffsetClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA5TableV_Tg5 +__T06SQLite9QueryTypePAAE17limitOffsetClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA4ViewV_Tg5 +__T06SQLite8JoinTypeOwug +__T06SQLite5TableVAA9QueryTypeA2aDP7clausesAA0C7ClausesVfgTW +__T06SQLite4ViewVAA9QueryTypeA2aDP7clausesAA0C7ClausesVfgTW +__T06SQLite5TableVwxs +__T06SQLite4ViewVwxs +__T06SQLite12VirtualTableVwxs +__T06SQLite12QueryClausesVwxs +__T06SQLite6SelectVwxx +__T06SQLite6UpdateVwxx +__T06SQLite6InsertVwxx +__T06SQLite5TableVwCc +__T06SQLite4ViewVwCc +__T06SQLite12VirtualTableVwCc +__T06SQLite12QueryClausesVwCc +__T06SQLite9QueryTypePAAE13groupByClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA5TableV_Tg5 +__T06SQLite9QueryTypePAAE13groupByClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA4ViewV_Tg5 +__T06SQLite5TableVAA9QueryTypeA2aDP7clausesAA0C7ClausesVfsTW +__T06SQLite4ViewVAA9QueryTypeA2aDP7clausesAA0C7ClausesVfsTW +__T06SQLite6SelectVwta +__T06SQLite6UpdateVwta +__T06SQLite6InsertVwta +__T06SQLite9QueryTypePAAE11whereClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA5TableV_Tg5 +__T06SQLite9QueryTypePAAE11whereClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA4ViewV_Tg5 +__T06SQLite9QueryTypePAAE10joinClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA5TableV_Tg5 +__T06SQLite9QueryTypePAAE10joinClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA4ViewV_Tg5 +__T0Sr8endIndexSifgs5UInt8V_Tgq5Tfq4x_n +__T0Sis5Error_pIxdzo_SisAA_pIxrzo_TRTA.65 +__T06SQLite5TableVwxx +__T06SQLite4ViewVwxx +__T06SQLite12VirtualTableVwxx +__T06SQLite12QueryClausesVwxx +__T06SQLite5TableVwXX +__T06SQLite4ViewVwXX +__T06SQLite12VirtualTableVwXX +__T06SQLite12QueryClausesVwXX +__T06SQLite9QueryTypePAAE11orderClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA5TableV_Tg5 +__T06SQLite9QueryTypePAAE11orderClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA4ViewV_Tg5 +__T06SQLite6UpdateVAA14ExpressionTypeA2aDP8templateSSfgTW +__T06SQLite6InsertVAA14ExpressionTypeA2aDP8templateSSfgTW +__T06SQLite5TableVwXx +__T06SQLite4ViewVwXx +__T06SQLite12VirtualTableVwXx +__T06SQLite12QueryClausesVwXx +__T06SQLite5TableVwca +__T06SQLite4ViewVwca +__T06SQLite12VirtualTableVwca +__T06SQLite12QueryClausesVwca +__T06SQLite6SelectVwXx +__T06SQLite6UpdateVwXx +__T06SQLite6InsertVwXx +__T06SQLite8JoinTypeOs8HashableAAsADP9hashValueSifgTW +__T06SQLite9QueryTypePAAE11unionClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA5TableV_Tg5 +__T06SQLite9QueryTypePAAE11unionClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA4ViewV_Tg5 +__T06SQLite6SelectVwca +__T06SQLite6UpdateVwca +__T06SQLite6InsertVwca +__T06SQLite6UpdateVAA14ExpressionTypeA2aDP8bindingsSayAA7Binding_pSgGfgTW +__T06SQLite6InsertVAA14ExpressionTypeA2aDP8bindingsSayAA7Binding_pSgGfgTW +__T06SQLite5TableVwcp +__T06SQLite4ViewVwcp +__T06SQLite12VirtualTableVwcp +__T06SQLite12QueryClausesVwcp +__T06SQLite5TableVAA9QueryTypeA2aDP7clausesAA0C7ClausesVfmTW +__T06SQLite4ViewVAA9QueryTypeA2aDP7clausesAA0C7ClausesVfmTW +__T06SQLite5TableVwta +__T06SQLite4ViewVwta +__T06SQLite12VirtualTableVwta +__T06SQLite12QueryClausesVwta +__T06SQLite6SelectVwCc +__T06SQLite6UpdateVwCc +__T06SQLite6InsertVwCc +__T06SQLite6SelectVwXX +__T06SQLite6UpdateVwXX +__T06SQLite6InsertVwXX +__T06SQLite5TableVwxg +__T06SQLite4ViewVwxg +__T06SQLite12VirtualTableVwxg +__T06SQLite12QueryClausesVwxg +__T06SQLite6SelectVwal +__T06SQLite5TableVwCP +__T06SQLite4ViewVwCP +__T06SQLite12VirtualTableVwCP +__T06SQLite6SelectVwCP +__T06SQLite6InsertVwCP +__T06SQLite6UpdateVwCP +__T06SQLite6DeleteVwCP +__T06SQLite12QueryClausesVwCP +__T06SQLite5TableVwpr +__T06SQLite4ViewVwpr +__T06SQLite12VirtualTableVwpr +__T06SQLite6SelectVwpr +__T06SQLite6InsertVwpr +__T06SQLite6UpdateVwpr +__T06SQLite6DeleteVwpr +__T06SQLite12QueryClausesVwpr +__T06SQLite5TableVwde +__T06SQLite4ViewVwde +__T06SQLite12VirtualTableVwde +__T06SQLite6SelectVwde +__T06SQLite6UpdateVwde +__T06SQLite6InsertVwde +__T06SQLite12QueryClausesVwde +__T06SQLite9QueryTypePAAE8databaseAA11Expressible_pSS9namespace_tFAA4ViewV_Tg5 +__T06SQLite6SelectVwcp +__T06SQLite6UpdateVwcp +__T06SQLite6InsertVwcp +__T06SQLite8JoinTypeOwui +__T0s12_SequenceBoxCys013_ClosureBasedA0Vys11AnyIteratorVy6SQLite3RowVGGGML +__T0s21_ClosureBasedSequenceVys11AnyIteratorVy6SQLite3RowVGGML +__T0s11AnyIteratorVy6SQLite3RowVGML +__T0s11AnyIteratorVy6SQLite3RowVGAByxGs0B8ProtocolslWL +__T0s21_ClosureBasedSequenceVys11AnyIteratorVy6SQLite3RowVGGAByxGs0C0ss0E8ProtocolRzlWL +__T0s11AnySequenceVy6SQLite3RowVGAByxGs0B0slWL +__T0s11AnySequenceVy6SQLite3RowVGML +__T06SQLite9QueryType_pMF +__T06SQLite10SchemaType_pMF +__T06SQLite5TableVWV +__T06SQLite5TableVMf +__T06SQLite5TableVMF +__T06SQLite4ViewVWV +__T06SQLite4ViewVMf +__T06SQLite4ViewVMF +__T06SQLite12VirtualTableVWV +__T06SQLite12VirtualTableVMf +__T06SQLite12VirtualTableVMF +__T06SQLite11ScalarQueryVWV +__T06SQLite11ScalarQueryVMP +__T06SQLite11ScalarQueryVMF +__T06SQLite6SelectVWV +__T06SQLite6SelectVMP +__T06SQLite6SelectVMF +__T06SQLite6InsertVWV +__T06SQLite6InsertVMf +__T06SQLite6InsertVMF +__T06SQLite6UpdateVWV +__T06SQLite6UpdateVMf +__T06SQLite6UpdateVMF +__T06SQLite6DeleteVWV +__T06SQLite6DeleteVMf +__T06SQLite6DeleteVMF +__T06SQLite11RowIteratorVWV +__T06SQLite11RowIteratorVMf +__T06SQLite11RowIteratorVMF +__T06SQLite3RowVWV +__T06SQLite3RowVMf +__T06SQLite3RowVMF +__T06SQLite8JoinTypeOWV +__T06SQLite8JoinTypeOMf +__T06SQLite8JoinTypeOMF +__T06SQLite10OnConflictOWV +__T06SQLite10OnConflictOMf +__T06SQLite10OnConflictOMF +__T06SQLite12QueryClausesVWV +__T06SQLite12QueryClausesVMf +__T06SQLite12QueryClausesVMF +__T0Sb8distinct_Say6SQLite11Expressible_pG7columnstML +__T0SS4name_SSSg5aliasAB8databasetML +__T0Say6SQLite8JoinTypeO4type_AA05QueryC0_p5queryAA11Expressible_p9conditiontGML +__T06SQLite8JoinTypeO4type_AA05QueryC0_p5queryAA11Expressible_p9conditiontML +__T06SQLite9QueryType_pML +__T06SQLite10ExpressionVySbSgGSgML +__T0Say6SQLite11Expressible_pG2by_AA10ExpressionVySbSgGSg6havingtSgML +__T0Say6SQLite11Expressible_pG2by_AA10ExpressionVySbSgGSg6havingtML +__T0Si6length_SiSg6offsettSgML +__T0Si6length_SiSg6offsettML +__T0Say6SQLite9QueryType_pGML +__T0s12_IteratorBoxCys013_ClosureBasedA0Vy6SQLite3RowVGGML +__T0s21_ClosureBasedIteratorVy6SQLite3RowVGML +__T0s21_ClosureBasedIteratorVy6SQLite3RowVGAByxGs0C8ProtocolslWL +__T0s23_ContiguousArrayStorageCy6SQLite9QueryType_pGML +__T0s37_HashableTypedNativeDictionaryStorageCySSSiGML +__T0s23_ContiguousArrayStorageCySS13CharacterViewVGML +__T0s23_ContiguousArrayStorageCy6SQLite8JoinTypeO4type_AC05QueryF0_p5queryAC11Expressible_p9conditiontGML +__T06SQLite6SelectVyxGAA14ExpressionTypeAAlMA +__T06SQLite6InsertVAA14ExpressionTypeAAMA +__T06SQLite6UpdateVAA14ExpressionTypeAAMA +__T06SQLite6DeleteVAA14ExpressionTypeAAMA +__T06SQLite11RowIteratorVs0C8ProtocolAAMA +__T06SQLite8JoinTypeOs16RawRepresentableAAMA +__T06SQLite10OnConflictOs16RawRepresentableAAMA +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Query.swift +objectdestroy.135 +objectdestroy.129 +__swift_mutable_project_boxed_opaque_existential_1 +objectdestroy.119 +objectdestroy.116 +_T0s12_IteratorBoxCys013_ClosureBasedA0Vy6SQLite3RowVGGMa +_T0s21_ClosureBasedIteratorVy6SQLite3RowVGAByxGs0C8ProtocolslWl +_T0s21_ClosureBasedIteratorVy6SQLite3RowVGMa +_T06SQLite3RowVSgIxo_ADIxr_TRTA +_T06SQLite3RowVSgIxo_ADIxr_TR +objectdestroy.113 +_T06SQLite10ConnectionC7prepares11AnySequenceVyAA3RowVGAA9QueryType_pKFs0D8IteratorVyAHGycfU_AHSgycfU_TA +objectdestroy.110 +_T0Say6SQLite11Expressible_pG2by_AA10ExpressionVySbSgGSg6havingtSgMa +_T0Say6SQLite11Expressible_pG2by_AA10ExpressionVySbSgGSg6havingtMa +_T06SQLite10ExpressionVySbSgGSgMa +_T06SQLite8JoinTypeO4type_AA05QueryC0_p5queryAA11Expressible_p9conditiontMa +_T06SQLite9QueryType_pMa +_T06SQLite12QueryClausesVMa +get_field_types_QueryClauses +_T0Say6SQLite9QueryType_pGMa +_T0Si6length_SiSg6offsettSgMa +_T0Si6length_SiSg6offsettMa +_T0Say6SQLite8JoinTypeO4type_AA05QueryC0_p5queryAA11Expressible_p9conditiontGMa +_T0SS4name_SSSg5aliasAB8databasetMa +_T0Sb8distinct_Say6SQLite11Expressible_pG7columnstMa +_T06SQLite12QueryClausesVwal +_T06SQLite12QueryClausesVwTk +_T06SQLite12QueryClausesVwCp +_T06SQLite10OnConflictOMa +get_field_types_OnConflict +_T06SQLite10OnConflictOwui +_T06SQLite10OnConflictOwup +_T06SQLite10OnConflictOwug +_T06SQLite10OnConflictOwxg +_T06SQLite10OnConflictOwxs +_T06SQLite8JoinTypeOMa +get_field_types_JoinType +_T06SQLite8JoinTypeOwup +_T06SQLite8JoinTypeOwxg +_T06SQLite8JoinTypeOwxs +get_field_types_Row +_T06SQLite3RowVwCc +_T06SQLite3RowVwXx +_T06SQLite3RowVwta +_T06SQLite3RowVwca +_T06SQLite3RowVwcp +_T06SQLite3RowVwCp +_T06SQLite3RowVwxx +_T06SQLite3RowVwCP +_T06SQLite3RowVwXX +_T06SQLite11RowIteratorVMa +get_field_types_RowIterator +_T06SQLite11RowIteratorVwxg +_T06SQLite11RowIteratorVwxs +__swift_memmove_array16_8 +_T06SQLite11RowIteratorVwCc +_T06SQLite11RowIteratorVwXx +_T06SQLite11RowIteratorVwta +__swift_memcpy16_8 +_T06SQLite11RowIteratorVwca +_T06SQLite11RowIteratorVwcp +_T06SQLite11RowIteratorVwCp +_T06SQLite11RowIteratorVwxx +_T06SQLite11RowIteratorVwCP +_T06SQLite11RowIteratorVwXX +_T06SQLite6DeleteVMa +get_field_types_Delete +_T06SQLite6DeleteVwCc +_T06SQLite6DeleteVwXx +_T06SQLite6DeleteVwal +_T06SQLite6DeleteVwta +_T06SQLite6DeleteVwTk +_T06SQLite6DeleteVwca +_T06SQLite6DeleteVwcp +_T06SQLite6InsertVwCp +_T06SQLite6DeleteVwxx +_T06SQLite6DeleteVwde +_T06SQLite6DeleteVwXX +_T06SQLite6UpdateVMa +get_field_types_Update +_T06SQLite6UpdateVwal +_T06SQLite6UpdateVwTk +_T06SQLite6InsertVMa +get_field_types_Insert +_T06SQLite6InsertVwal +_T06SQLite6InsertVwTk +create_generic_metadata_Select +get_field_types_Select +_T06SQLite6SelectVwTk +_T06SQLite6SelectVwCp +create_generic_metadata_ScalarQuery +get_field_types_ScalarQuery +_T06SQLite11ScalarQueryVwxg +_T06SQLite11ScalarQueryVwxs +_T06SQLite11ScalarQueryVwCc +_T06SQLite11ScalarQueryVwXx +_T06SQLite11ScalarQueryVwal +_T06SQLite11ScalarQueryVwta +_T06SQLite11ScalarQueryVwTk +_T06SQLite11ScalarQueryVwca +_T06SQLite11ScalarQueryVwcp +_T06SQLite11ScalarQueryVwCp +_T06SQLite11ScalarQueryVwxx +_T06SQLite11ScalarQueryVwde +_T06SQLite11ScalarQueryVwpr +_T06SQLite11ScalarQueryVwCP +_T06SQLite11ScalarQueryVwXX +_T06SQLite12VirtualTableVMa +get_field_types_VirtualTable +_T06SQLite12VirtualTableVwal +_T06SQLite12VirtualTableVwTk +_T06SQLite5TableVwCp +_T06SQLite4ViewVMa +get_field_types_View +_T06SQLite4ViewVwal +_T06SQLite4ViewVwTk +_T06SQLite5TableVMa +get_field_types_Table +__swift_memmove_array240_8 +_T06SQLite5TableVwal +__swift_memcpy240_8 +_T06SQLite5TableVwTk +_T06SQLite10OnConflictOs16RawRepresentableAAWa +_T06SQLite10OnConflictOs8HashableAAWa +_T06SQLite10OnConflictOs9EquatableAAWa +_T06SQLite8JoinTypeOs16RawRepresentableAAWa +_T06SQLite8JoinTypeOs8HashableAAWa +_T06SQLite8JoinTypeOs9EquatableAAWa +_T06SQLite11RowIteratorVs0C8ProtocolAAWa +_T06SQLite3RowVMa +_T06SQLite11RowIteratorVAA08FailableC0AAWa +_T06SQLite6DeleteVAA11ExpressibleAAWa +_T06SQLite6DeleteVAA14ExpressionTypeAAWa +_T06SQLite6UpdateVAA11ExpressibleAAWa +_T06SQLite6UpdateVAA14ExpressionTypeAAWa +_T06SQLite6InsertVAA11ExpressibleAAWa +_T06SQLite6InsertVAA14ExpressionTypeAAWa +_T06SQLite6SelectVyxGAA11ExpressibleAAlWa +_T06SQLite6SelectVyxGAA14ExpressionTypeAAlWa +_T0ytMa +_T06SQLite11ScalarQueryVyxGAA11ExpressibleAAlWa +_T06SQLite11ScalarQueryVyxGAA0C4TypeAAlWa +_T06SQLite12VirtualTableVAA11ExpressibleAAWa +_T06SQLite12VirtualTableVAA10SchemaTypeAAWa +_T06SQLite4ViewVAA11ExpressibleAAWa +_T06SQLite4ViewVAA9QueryTypeAAWa +_T06SQLite4ViewVAA10SchemaTypeAAWa +_T06SQLite5TableVAA11ExpressibleAAWa +_T06SQLite5TableVAA9QueryTypeAAWa +_T06SQLite5TableVAA10SchemaTypeAAWa +_T06SQLite12VirtualTableVAA9QueryTypeAAWa +_T06SQLite10ConnectionC3runSiAA6UpdateVKFSiyKcfU_Tf4gg_n +_T06SQLite10ConnectionC3runs5Int64VAA6InsertVKFAFyKcfU_Tf4gg_n +_T06SQLite10ConnectionC19columnNamesForQuery33_14CB4A30965D85E6DF5BEBC63D2EB0EALLs10DictionaryVySSSiGAA0F4Type_pKF10expandGlobL_yAaI_pKcSbFyAaI_pKcfU_Tf4ngngg_n +_T0s10CollectionPsE3mapSayqd__Gqd__7ElementQzKcKlFTfq4gn_nSaySSG_SSTg5 +_T0SayxGs10CollectionslsABP9subscript7ElementQz5IndexQzcfgTWSS_Tg5 +_T0s24_VariantDictionaryBufferO17nativeUpdateValueq_Sgq__x6forKeytFSS_SiTg5 +_T0S2Ss5Error_pIxxozo_S2SsAA_pIxirzo_TR +_T06SQLite10ConnectionC19columnNamesForQuery33_14CB4A30965D85E6DF5BEBC63D2EB0EALLs10DictionaryVySSSiGAA0F4Type_pKF10expandGlobL_yAaI_pKcSbFyAaI_pKcfU_S2ScfU0_ +_T06SQLite10ConnectionC19columnNamesForQuery33_14CB4A30965D85E6DF5BEBC63D2EB0EALLs10DictionaryVySSSiGAA0F4Type_pKF10expandGlobL_yAaI_pKcSbFyAaI_pKcfU_S2ScfU_ +_T0SS6SQLiteE5quoteSSs9CharacterVFfA_ +_T0SR5countSifgs6UInt16V_Tgq5Tfq4x_n +_T0s24_VariantDictionaryBufferO17nativeUpdateValueq_Sgq__x6forKeytFSS_SiTg5Tf4nxn_n +_T06SQLite10ConnectionC19columnNamesForQuery33_14CB4A30965D85E6DF5BEBC63D2EB0EALLs10DictionaryVySSSiGAA0F4Type_pKF10expandGlobL_yAaI_pKcSbFyAaI_pKcfU_S2ScfU0_Tf4gXn_n +_T0Sa15replaceSubrangeys5RangeVySiG_qd__4witht7ElementQyd__Rszs10CollectionRd__lFTfq4xnn_nSS_s05EmptyF0VySSGTg5Tf4nndn_n +_T0s20_ArrayBufferProtocolPsE15replaceSubrangeys5RangeVySiG_Si4withqd__10elementsOfts10CollectionRd__7ElementQyd__AJRtzlFTfq4xnnn_ns01_aB0VySSG_s05EmptyJ0VySSGTg5 +_T0s20_ArrayBufferProtocolPsE23_arrayOutOfPlaceReplaceys5RangeVySiG_qd__4withSi5countts10CollectionRd__7ElementQyd__AJRtzlFTfq4xnnn_ns01_aB0VySSG_s05EmptyL0VySSGTg5 +_T0s20_ArrayBufferProtocolPsE15replaceSubrangeys5RangeVySiG_Si4withqd__10elementsOfts10CollectionRd__7ElementQyd__AJRtzlFTfq4xnnn_ns01_aB0VySSG_s05EmptyJ0VySSGTg5Tf4nnndn_n +_T0s15EmptyCollectionVyxGs0B0slsADP9subscript7ElementQz5IndexQzcfgTWSS_Tg5 +_T0s15EmptyCollectionV9subscriptxSicfgSS_Tg5 +_T0Sp10moveAssignySpyxG4from_Si5counttFSS_Tg5 +_T0Sp14moveInitializeySpyxG4from_Si5counttFSS_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP20subscriptBaseAddressSpy7ElementQzGfgTWSS_Tg5 +_T0s20_ArrayBufferProtocolPsE20subscriptBaseAddressSpy7ElementQzGfgs01_aB0VySSG_Tg5 +_T0s20_ArrayBufferProtocolPsE23_arrayOutOfPlaceReplaceys5RangeVySiG_qd__4withSi5countts10CollectionRd__7ElementQyd__AJRtzlFTfq4xnnn_ns01_aB0VySSG_s05EmptyL0VySSGTg5Tf4nndnn_n +_T06SQLite10ConnectionC19columnNamesForQuery33_14CB4A30965D85E6DF5BEBC63D2EB0EALLs10DictionaryVySSSiGAA0F4Type_pKFSbs9CharacterVcfU_Tf4g_n +_T0s10CollectionPsE5splitSay11SubSequenceQzGSi9maxSplits_Sb25omittingEmptySubsequencesSb7ElementQzKc14whereSeparatortKF17appendSubsequenceL_Sb5IndexQz3end_tsAARzlFTfq4ngngg_nSS13CharacterViewV_Tg5Tf4xnnnn_n +_T0Sa36_reserveCapacityAssumingUniqueBufferySi8oldCount_tFSS13CharacterViewV_Tg5 +_T0SS13CharacterViewVs10CollectionssACP9subscript11SubSequenceQzs5RangeVy5IndexQzGcfgTW +_T0SS17UnicodeScalarViewV9subscriptABs5RangeVySS5IndexVGcfgTfq4xn_n +_T0s11_StringCoreV9subscriptABs5RangeVySiGcfgTfq4xx_n +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFSS13CharacterViewV_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFTfq4ngn_nSS13CharacterViewV_Tg5 +_T0s12_ArrayBufferV5countSifsSS13CharacterViewV_Tg5 +_T0Sa9_getCountSiyFSS13CharacterViewV_Tg5 +_T0Sa034_makeUniqueAndReserveCapacityIfNotB0yyFSS13CharacterViewV_Tg5 +_T0SS5IndexVs10ComparablessACP2leoiSbx_xtFZTW +_T06SQLite10ConnectionC3runSiAA6UpdateVKFSiyKcfU_TA +_T0Sis5Error_pIxdzo_SisAA_pIxrzo_TRTA +_T0s5Int64Vs5Error_pIxdzo_ABsAC_pIxrzo_TRTA +_T0s5Int64Vs5Error_pIxdzo_ABsAC_pIxrzo_TR +_T06SQLite10ConnectionC3runs5Int64VAA6InsertVKFAFyKcfU_TA +objectdestroy.48 +_T06SQLite6SelectVMa +_T0s21_ClosureBasedSequenceVys11AnyIteratorVy6SQLite3RowVGGMa +_T0s11AnyIteratorVy6SQLite3RowVGAByxGs0B8ProtocolslWl +_T0s11AnyIteratorVy6SQLite3RowVGMa +_T0s12_SequenceBoxCys013_ClosureBasedA0Vys11AnyIteratorVy6SQLite3RowVGGGMa +_T0s11AnySequenceVy6SQLite3RowVGAByxGs0B0slWl +_T0s11AnySequenceVy6SQLite3RowVGMa +_T0s21_ClosureBasedSequenceVys11AnyIteratorVy6SQLite3RowVGGAByxGs0C0ss0E8ProtocolRzlWl +_T0s11AnyIteratorVy6SQLite3RowVGIxo_AFIxr_TRTA +_T0s11AnyIteratorVy6SQLite3RowVGIxo_AFIxr_TR +_T06SQLite10ConnectionC7prepares11AnySequenceVyAA3RowVGAA9QueryType_pKFs0D8IteratorVyAHGycfU_TA +_T06SQLite10ConnectionC7prepares11AnySequenceVyAA3RowVGAA9QueryType_pKFs0D8IteratorVyAHGycfU_ +namespace +_T06SQLite11ScalarQueryVMa +select +clauses.set +clauses.materialize +_T06SQLite9QueryTypePAAE6filterxAA10ExpressionVySbSgGFAHyKXKfu_ +_T06SQLite10ExpressionVySbSgGAEs5Error_pIxxozo_A2EsAF_pIxirzo_TR +_T06SQLite9QueryTypePAAE6filterxAA10ExpressionVySbSgGFA2HcfU_ +_T0s14_ArrayProtocolPsE6filterSay7ElementQzGSbAEKcKFTfq4gn_nSaySSG_Tg5 +_T0SSSbs5Error_pIxxdzo_SSSbsAA_pIxidzo_TR +_T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlFSbSScfU_10Foundation4DataV_Tg5 +hasSuffix +valueAtIndex +_T0s10DictionaryV4KeysVyxq__Gs8Sequencess8HashableRzr0_lsAFP22_copyToContiguousArrays0gH0Vy7ElementQzGyFTWSS_SiTg5 +_T0s10CollectionPsE22_copyToContiguousArrays0dE0Vy7ElementQzGyFs10DictionaryV4KeysVySSSi_G_Tg5 +_T0S2ayxGqd__c7ElementQyd__Rszs8SequenceRd__lufCTfq4gn_nSS_s10DictionaryV4KeysVySSSi_GTg5 +_T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlFSbSScfU_SS_Tg5 +_T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlFSbSScfU_Si_Tg5 +_T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlFSbSScfU_Tf4gXg_n +_T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlFSbSScfU_Sb_Tg5 +_T0s10_partition5Indexs14_IndexableBasePQzxz_s5RangeVyAEG03subE0ts17MutableCollectionRzs012RandomAccessH0Rzs10Comparable7Elements8SequencePRpzlFSrySSG_Tg5Tf4nx_n +_T0SSs10ComparablessAAP1loiSbx_xtFZTW +_T0SryxGs17_MutableIndexableslsABP9formIndexy0D0Qzz5after_tFTWSS_Tg5 +_T0Sr9formIndexySiz5after_tFSS_Tg5 +_T0SryxGs23BidirectionalCollectionslsABP9formIndexy0D0Qzz6before_tFTWSS_Tg5 +_T0Sr9formIndexySiz6before_tFSS_Tg5 +_T0SryxGs17MutableCollectionslsABP9subscript7ElementQz5IndexQzcfgTWSS_Tg5 +_T0Sr9subscriptxSicfgSS_Tg5 +_T0SryxGs10CollectionslsABP5index5IndexQzAF_0C8DistanceQz8offsetBytFTWSS_Tg5 +_T0Sr5indexS2i_Si8offsetBytFSS_Tg5 +_T0SryxGs10CollectionslsABP8distance13IndexDistanceQz0C0Qz4from_AH2totFTWSS_Tg5 +_T0Sr8distanceS2i4from_Si2totFSS_Tg5 +_T0SryxGs23BidirectionalCollectionslsABP5index5IndexQzAF6before_tFTWSS_Tg5 +_T0Sr5indexS2i6before_tFSS_Tg5 +_T0SryxGs17MutableCollectionslsABP6swapAty5IndexQz_AFtFTWSS_Tg5 +_T0S2ayxGqd__c7ElementQyd__Rszs8SequenceRd__lufCTfq4gn_nSS_s10DictionaryV4KeysVySSSi_GTg5Tf4nd_n +_T0s32_copyCollectionToContiguousArrays0dE0Vy7ElementQzGxs0B0RzlFs10DictionaryV4KeysVySSSi_G_Tg5 +_T0s10DictionaryV4KeysVyxq__Gs14_IndexableBasess8HashableRzr0_lsAFP9formIndexy0G0Qzz5after_tFTWSS_SiTg5 +_T0s10_IndexablePsE9formIndexy0C0Qzz5after_tFs10DictionaryV4KeysVySSSi_G_Tg5 +_T0s10DictionaryV4KeysVyxq__Gs14_IndexableBasess8HashableRzr0_lsAFP5index5IndexQzAK5after_tFTWSS_SiTg5 +_T0s10DictionaryV4KeysV5indexAB5IndexVyxq__GAH5after_tFSS_SiTg5 +_T0s10DictionaryV4KeysV5indexAB5IndexVyxq__GAH5after_tFTfq4gn_nSS_SiTg5 +_T0s24_VariantDictionaryBufferO5indexs0B0V5IndexVyxq__GAH5after_tFTfq4gn_nSS_SiTg5 +_T0s10DictionaryV4KeysVyxq__Gs10Collectionss8HashableRzr0_lsAFP9subscript7ElementQz5IndexQzcfgTWSS_SiTg5 +_T0s10DictionaryV4KeysV9subscriptxAB5IndexVyxq__GcfgSS_SiTg5 +_T0s23_NativeDictionaryBufferV12assertingGetx3key_q_5valuets01_aB5IndexVyxq_GFSS_SiTg5 +_T0s10DictionaryV4KeysVyxq__Gs14_IndexableBasess8HashableRzr0_lsAFP10startIndex0G0QzfgTWSS_SiTg5 +_T0s10DictionaryV4KeysV10startIndexAB0D0Vyxq__GfgSS_SiTg5 +_T0s24_VariantDictionaryBufferO10startIndexs0B0V0E0Vyxq__GfgSS_SiTg5 +_T0s15ContiguousArrayVAByxGycfCSS_Tg5 +_T0s10DictionaryV4KeysVyxq__Gs10Collectionss8HashableRzr0_lsAFP5count13IndexDistanceQzfgTWSS_SiTg5 +_T0s10DictionaryV4KeysV5countSifgSS_SiTg5 +_T0s22_ContiguousArrayBufferVAByxGSi19_uninitializedCount_Si15minimumCapacitytcfCSS_Tg5Tf4nnd_n +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tF +update +_T0s10CollectionPsE3mapSayqd__Gqd__7ElementQzKcKlFTfq4gn_nSay6SQLite6SetterVG_AG11Expressible_pTg5 +_T0SayxGs10CollectionslsABP9subscript7ElementQz5IndexQzcfgTW6SQLite6SetterV_Tg5 +_T06SQLite9QueryTypePAAE6updateAA6UpdateVSayAA6SetterVGFAA11Expressible_pAHcfU_ +_T06SQLite10OnConflictOAA11Expressible_ps5Error_pIxyrzo_AcaD_psAE_pIxirzo_TR +_T0Say6SQLite11Expressible_pGAcA6SetterVA2Cs5Error_pIxxxioozo_AC7columns_AC6valuestAecG_AcHtsAF_pIxiirzo_TR +_T06SQLite9QueryTypePAAE6insert33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA6InsertVAA10OnConflictOSg_SayAA6SetterVGtFSayAA11Expressible_pG_AOtAO7columns_AO6valuest_ALtcfU_ +failableNext +row.get +columnCount.get +_T0Say6SQLite7Binding_pSgGAA3RowVSgs5Error_pIxxozo_AdGsAH_pIxirzo_TR +_T06SQLite11RowIteratorV12failableNextAA0B0VSgyKFAGSayAA7Binding_pSgGcfU_ +_T0S2ayxGqd__c7ElementQyd__Rszs8SequenceRd__lufCTfq4gn_n6SQLite7Binding_pSg_AE6CursorVTg5 +_copyToContiguousArray +_T0s17MutableCollectionPsE6swapAty5IndexQz_AEtFSrySSG_Tg5 +_T0SryxGs17MutableCollectionslsABP9subscript7ElementQz5IndexQzcfsTWSS_Tg5 +_T0Sr9subscriptxSicfsSS_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi8newCount_Si16requiredCapacitytFs01_aB0VySSG_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB4Impls011_ContiguousaB0Vy7ElementQzGSi08countForB0_Si14minNewCapacitySi08requiredO0tFs01_aB0VySSG_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi8newCount_Si16requiredCapacitytFAEySSG_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB4Impls011_ContiguousaB0Vy7ElementQzGSi08countForB0_Si14minNewCapacitySi08requiredO0tFAEySSG_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP8capacitySifgTWSS_Tg5 +_T0s22_ContiguousArrayBufferV8capacitySifgSS_Tg5 +_T0s20_ArrayBufferProtocolPsE019_outlinedMakeUniqueB0ySi11bufferCount_tFs011_ContiguousaB0VySSG_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP027requestUniqueMutableBackingC0ABy7ElementQzGSgSi15minimumCapacity_tFTWSS_Tg5 +_T0s22_ContiguousArrayBufferV027requestUniqueMutableBackingC0AByxGSgSi15minimumCapacity_tFSS_Tg5 +_T0SS13CharacterViewV9subscriptABs5RangeVySS5IndexVGcfgTfq4xn_n +_T0SS13CharacterViewV9subscripts0A0VSS5IndexVcfgTfq4xn_n +_T0s9CharacterVABs7UnicodeO6ScalarVcfCTfq4nd_n +_T0Sr8endIndexSifgs5UInt8V_Tgq5Tfq4x_n +_T0S2ryxGSpyxGSg5start_Si5counttcfCs5UInt8V_Tgq5Tfq4nnd_n +_T0s7UnicodeO6ScalarVADSgs6UInt16VcfCTfq4nd_n +_T0SS13CharacterViewVs14_IndexableBasessACP10startIndex0F0QzfgTW +_T0s7UnicodeO5UTF16O6decodes0A14DecodingResultOxzs16IteratorProtocolRzs6UInt16V7ElementRtzlFSS0A10ScalarViewV08_ScratchF0V_Tgq5 +_T0s26RangeReplaceableCollectionPsE6remove7ElementQz5IndexQz2at_tFs11_UIntBufferVys6UInt32Vs6UInt16VG_Tgq5 +_T0s9CharacterVABSS26_largeRepresentationString_tcfCTfq4gXd_n +_T0s11_StringCoreV12nativeBuffers01_aD0VSgfgAEyXlcfU_Tfq4g_nTfq4n_g +_T0SS13CharacterViewV21legacyGraphemeForwardSiSS5IndexV5start_AE3endSi0gF5UTF16tFTfq4xxnn_n +_T0s40_UnicodeGraphemeClusterBreakPropertyTrieV03getE8RawValues01_bcdehI0Vs6UInt32VF +_T0s9CharacterVABSScfCTfq4gXd_n +_T0s26RangeReplaceableCollectionPsE6appendyqd__10contentsOf_ts8SequenceRd__7ElementQyd__AFRtzlFs11_UIntBufferVys6UInt64Vs6UInt16VG_s11_StringCoreVTgq5Tfq4gXn_n +_T0SS13CharacterViewV42_measureExtendedGraphemeClusterForwardSlowS2i14relativeOffset_SS5IndexV5startAF3endSi0lK5UTF16tFTfq4nxxnn_n +_T0SS13CharacterViewV39_internalExtraCheckGraphemeBreakBetweenSbs6UInt16V_AEtFZTfq4nnd_n +_T0s2eeoiSbx_xts16RawRepresentableRzs9Equatable0B5ValueRpzlFTfq4gg_n6SQLite10OnConflictO_Tg5 +_T0s2eeoiSbx_xts16RawRepresentableRzs9Equatable0B5ValueRpzlFTfq4gg_n6SQLite8JoinTypeO_Tg5 +_T0s6_sort3yxz_5Indexs14_IndexableBasePQzA2Ets17MutableCollectionRzs012RandomAccessF0Rzs10Comparable7Elements8SequencePRpzlFSrySSG_Tg5 +_T0s23_NativeDictionaryBufferVss8HashableRzr0_lE12unsafeAddNewyx3key_q_5valuetFTfq4ggn_nSS_SiTg5 +_T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tFSS_Tg5 +_T0SS9hasSuffixSbSSFTfq4gXx_n +_T0Sr5countSifgs5UInt8V_Tgq5Tfq4x_n +_T0s11_StringCoreV11asciiBufferSrys5UInt8VGSgfgTfq4x_n +_T0s10CollectionPsE5splitSay11SubSequenceQzGSi9maxSplits_Sb25omittingEmptySubsequencesSb7ElementQzKc14whereSeparatortKFTfq4nngn_nSS13CharacterViewV_Tg505_T0s9M174VSbs5Error_pIxxdzo_ABSbsAC_pIxidzo_TR0118_T06SQLite10ConnectionC19columnNamesForQuery33_14CB4A30965D85E6DF5BEBC63D2EB0EALLs10DictionaryVySSSiGAA0F4Type_pKFSbs9A5VcfU_Tf3npf_nTf1nncn_n +_T0s10CollectionPsE5splitSay11SubSequenceQzGSi9maxSplits_Sb25omittingEmptySubsequencesSb7ElementQzKc14whereSeparatortKF17appendSubsequenceL_Sb5IndexQz3end_tsAARzlFTfq4ngngg_nSS13CharacterViewV_Tg5 +_T0SS13CharacterViewVs10CollectionssACP7isEmptySbfgTW +_T0s10CollectionPsE7isEmptySbfgSS13CharacterViewV_Tgq5 +_T0SS13CharacterViewVs10CollectionssACP9subscript7ElementQz5IndexQzcfgTW +_T0s9CharacterVSbs5Error_pIxxdzo_ABSbsAC_pIxidzo_TR0118_T06SQLite10ConnectionC19columnNamesForQuery33_14CB4A30965D85E6DF5BEBC63D2EB0EALLs10DictionaryVySSSiGAA0F4Type_pKFSbs9A5VcfU_Tf3npf_n +_T06SQLite10ConnectionC19columnNamesForQuery33_14CB4A30965D85E6DF5BEBC63D2EB0EALLs10DictionaryVySSSiGAA0F4Type_pKFSbs9CharacterVcfU_ +_T0s9_siftDownyxz_5Indexs14_IndexableBasePQz5indexs5RangeVyAEG03subG0ts17MutableCollectionRzs012RandomAccessJ0Rzs10Comparable7Elements8SequencePRpzlFTfq4nng_nSrySSG_Tg5 +_T0SryxGs17_MutableIndexableslsABP5index5IndexQzAF5after_tFTWSS_Tg5 +_T0Sr5indexS2i5after_tFSS_Tg5 +_T0s14_insertionSortyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subC0ts23BidirectionalCollectionRzs07MutableI0Rzs10Comparable7Elements8SequencePRpzlFTfq4ng_nSrySSG_Tg5 +_T0s9_heapSortyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subC0ts17MutableCollectionRzs012RandomAccessI0Rzs10Comparable7Elements8SequencePRpzlFTfq4ng_nSrySSG_Tg5 +_T0s8_heapifyyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subB0ts17MutableCollectionRzs012RandomAccessH0Rzs10Comparable7Elements8SequencePRpzlFTfq4ng_nSrySSG_Tg5 +_T0s14_introSortImplyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subD0Si10depthLimitts17MutableCollectionRzs012RandomAccessL0Rzs10Comparable7Elements8SequencePRpzlFTfq4ngn_nSrySSG_Tg5 +_T0s10_partition5Indexs14_IndexableBasePQzxz_s5RangeVyAEG03subE0ts17MutableCollectionRzs012RandomAccessH0Rzs10Comparable7Elements8SequencePRpzlFSrySSG_Tg5 +_T0s24_VariantDictionaryBufferO018ensureUniqueNativeC0Sb11reallocated_Sb15capacityChangedtSiFSS_SiTg5 +_T0s23_NativeDictionaryBufferVAByxq_GSi8capacity_s04_RawaB7StorageC7storagetcfCSS_SiTg5 +_T0s23_NativeDictionaryBufferVAByxq_GSi8capacity_s04_RawaB7StorageC7storagetcfCSS_SiTg5Tf4nnd_n +_T0s37_HashableTypedNativeDictionaryStorageCySSSiGMa +_T0Sa15reserveCapacityySiF6SQLite9QueryType_p_Tg5 +_T0s22_ContiguousArrayBufferV18_initStorageHeaderySi5count_Si8capacitytF6SQLite9QueryType_p_Tg5 +_T0s23_ContiguousArrayStorageCy6SQLite9QueryType_pGMa +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtFTfq4xnn_n6SQLite9QueryType_p_Tg5 +_T0s12_ArrayBufferV8endIndexSifg6SQLite9QueryType_p_Tg5 +_T0Sa9_getCountSiyF6SQLite9QueryType_p_Tg5 +_T0s12_ArrayBufferV20isUniquelyReferencedSbyF6SQLite9QueryType_p_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0VySS13CharacterViewVG_s07_IgnoreK0VyANGTg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subG0_AI12initializingtFTWSS13CharacterViewV_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFSS13CharacterViewV_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFTfq4xnn_nSS13CharacterViewV_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP19firstElementAddressSpy0E0QzGfgTWSS13CharacterViewV_Tg5 +_T0s12_ArrayBufferV19firstElementAddressSpyxGfgSS13CharacterViewV_Tg5 +_T0Sp10initializeySPyxG4from_Si5counttFSS13CharacterViewV_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8endIndexSifgTWSS13CharacterViewV_Tg5 +_T0s12_ArrayBufferV8endIndexSifgSS13CharacterViewV_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP027requestUniqueMutableBackingB0s011_ContiguousaB0Vy7ElementQzGSgSi15minimumCapacity_tFTWSS13CharacterViewV_Tg5 +_T0s12_ArrayBufferV027requestUniqueMutableBackingB0s011_ContiguousaB0VyxGSgSi15minimumCapacity_tFSS13CharacterViewV_Tg5 +_T0s12_ArrayBufferV20isUniquelyReferencedSbyFSS13CharacterViewV_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifgTWSS13CharacterViewV_Tg5 +_T0s12_ArrayBufferV5countSifgSS13CharacterViewV_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0VySSG_s31_InitializeMemoryFromCollectionVys05EmptyP0VySSGGTg5 +_T0s31_InitializeMemoryFromCollectionVyxGs16_PointerFunctionss0D0RzlsADP4callySpy7ElementQzG_Si5counttFTWs05EmptyD0VySSG_Tg5 +_T0s31_InitializeMemoryFromCollectionV4callySpy7ElementQzG_Si5counttFs05EmptyD0VySSG_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_nAEy6SQLite9QueryType_pG_s07_IgnoreK0VyAkL_pGTg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subH0_AI12initializingtFTW6SQLite9QueryType_p_Tg5 +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtF6SQLite9QueryType_p_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP19firstElementAddressSpy0F0QzGfgTW6SQLite9QueryType_p_Tg5 +_T0s22_ContiguousArrayBufferV19firstElementAddressSpyxGfg6SQLite9QueryType_p_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP8endIndexSifgTW6SQLite9QueryType_p_Tg5 +_T0s22_ContiguousArrayBufferV8endIndexSifg6SQLite9QueryType_p_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP027requestUniqueMutableBackingC0ABy7ElementQzGSgSi15minimumCapacity_tFTW6SQLite9QueryType_p_Tg5 +_T0s22_ContiguousArrayBufferV027requestUniqueMutableBackingC0AByxGSgSi15minimumCapacity_tF6SQLite9QueryType_p_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP5countSifgTW6SQLite9QueryType_p_Tg5 +_T0s22_ContiguousArrayBufferV5countSifg6SQLite9QueryType_p_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0Vy6SQLite8JoinTypeO4type_AM05QueryO0_p5queryAM11Expressible_p9conditiontG_s07_IgnoreK0VyAoP_AmQ_pArmS_pATtGTg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subG0_AI12initializingtFTW6SQLite8JoinTypeO4type_AO05QueryL0_p5queryAO11Expressible_p9conditiont_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtF6SQLite8JoinTypeO4type_AJ05QueryJ0_p5queryAJ11Expressible_p9conditiont_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFTfq4xnn_n6SQLite8JoinTypeO4type_AJ05QueryJ0_p5queryAJ11Expressible_p9conditiont_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP19firstElementAddressSpy0E0QzGfgTW6SQLite8JoinTypeO4type_AJ05QueryI0_p5queryAJ11Expressible_p9conditiont_Tg5 +_T0s12_ArrayBufferV19firstElementAddressSpyxGfg6SQLite8JoinTypeO4type_AE05QueryH0_p5queryAE11Expressible_p9conditiont_Tg5 +_T0Sp10initializeySPyxG4from_Si5counttF6SQLite8JoinTypeO4type_AE05QueryF0_p5queryAE11Expressible_p9conditiont_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8endIndexSifgTW6SQLite8JoinTypeO4type_AG05QueryH0_p5queryAG11Expressible_p9conditiont_Tg5 +_T0s12_ArrayBufferV8endIndexSifg6SQLite8JoinTypeO4type_AD05QueryG0_p5queryAD11Expressible_p9conditiont_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP027requestUniqueMutableBackingB0s011_ContiguousaB0Vy7ElementQzGSgSi15minimumCapacity_tFTW6SQLite8JoinTypeO4type_AN05QueryN0_p5queryAN11Expressible_p9conditiont_Tg5 +_T0s12_ArrayBufferV027requestUniqueMutableBackingB0s011_ContiguousaB0VyxGSgSi15minimumCapacity_tF6SQLite8JoinTypeO4type_AI05QueryL0_p5queryAI11Expressible_p9conditiont_Tg5 +_T0s12_ArrayBufferV20isUniquelyReferencedSbyF6SQLite8JoinTypeO4type_AD05QueryH0_p5queryAD11Expressible_p9conditiont_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifgTW6SQLite8JoinTypeO4type_AG05QueryG0_p5queryAG11Expressible_p9conditiont_Tg5 +_T0s12_ArrayBufferV5countSifg6SQLite8JoinTypeO4type_AD05QueryF0_p5queryAD11Expressible_p9conditiont_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0Vy6SQLite9QueryType_pG_s07_IgnoreK0VyAmN_pGTg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subG0_AI12initializingtFTW6SQLite9QueryType_p_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtF6SQLite9QueryType_p_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFTfq4xnn_n6SQLite9QueryType_p_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP19firstElementAddressSpy0E0QzGfgTW6SQLite9QueryType_p_Tg5 +_T0s12_ArrayBufferV19firstElementAddressSpyxGfg6SQLite9QueryType_p_Tg5 +_T0Sp10initializeySPyxG4from_Si5counttF6SQLite9QueryType_p_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8endIndexSifgTW6SQLite9QueryType_p_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP027requestUniqueMutableBackingB0s011_ContiguousaB0Vy7ElementQzGSgSi15minimumCapacity_tFTW6SQLite9QueryType_p_Tg5 +_T0s12_ArrayBufferV027requestUniqueMutableBackingB0s011_ContiguousaB0VyxGSgSi15minimumCapacity_tF6SQLite9QueryType_p_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifgTW6SQLite9QueryType_p_Tg5 +_T0s12_ArrayBufferV5countSifg6SQLite9QueryType_p_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_nAEySSG_s07_IgnoreK0VySSGTg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subH0_AI12initializingtFTWSS_Tg5 +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtFSS_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP19firstElementAddressSpy0F0QzGfgTWSS_Tg5 +_T0s22_ContiguousArrayBufferV19firstElementAddressSpyxGfgSS_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP8endIndexSifgTWSS_Tg5 +_T0s22_ContiguousArrayBufferV8endIndexSifgSS_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP5countSifgTWSS_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0VySS13CharacterViewVG_Tg5 +_T0s23_ContiguousArrayStorageCySS13CharacterViewVGMa +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8capacitySifgTWSS13CharacterViewV_Tg5 +_T0s12_ArrayBufferV8capacitySifgSS13CharacterViewV_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFAEy6SQLite9QueryType_pG_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP8capacitySifgTW6SQLite9QueryType_p_Tg5 +_T0s22_ContiguousArrayBufferV8capacitySifg6SQLite9QueryType_p_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vy6SQLite8JoinTypeO4type_AM05QueryQ0_p5queryAM11Expressible_p9conditiontG_Tg5 +_T0s23_ContiguousArrayStorageCy6SQLite8JoinTypeO4type_AC05QueryF0_p5queryAC11Expressible_p9conditiontGMa +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8capacitySifgTW6SQLite8JoinTypeO4type_AG05QueryG0_p5queryAG11Expressible_p9conditiont_Tg5 +_T0s12_ArrayBufferV8capacitySifg6SQLite8JoinTypeO4type_AD05QueryF0_p5queryAD11Expressible_p9conditiont_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vy6SQLite9QueryType_pG_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8capacitySifgTW6SQLite9QueryType_p_Tg5 +_T0s12_ArrayBufferV8capacitySifg6SQLite9QueryType_p_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFAEySSG_Tg5 +_T0s20_ArrayBufferProtocolPsE20_arrayAppendSequenceyqd__s0F0Rd__7ElementQyd__AERtzlFTfq4gn_ns01_aB0Vy6SQLite9QueryType_pG_s08IteratorF0Vys08IndexingK0VySayAjK_pGGGTg5 +_T0s16IteratorSequenceVyxGs0A8ProtocolssADRzlsADP4next7ElementQzSgyFTWs08IndexingA0VySay6SQLite9QueryType_pGG_Tg5 +_T0s16IteratorSequenceV4next7ElementQzSgyFs08IndexingA0VySay6SQLite9QueryType_pGG_Tg5 +_T0s16IndexingIteratorVyxGs0B8Protocolss14_IndexableBaseRzlsADP4next7ElementQzSgyFTWSay6SQLite9QueryType_pG_Tg5 +_T0SayxGs14_IndexableBaseslsABP9formIndexy0D0Qzz5after_tFTW6SQLite9QueryType_p_Tg5 +_T0Sa9formIndexySiz5after_tF6SQLite9QueryType_p_Tg5 +_T0SayxGs14_IndexableBaseslsABP9subscript7ElementQz5IndexQzcfgTW6SQLite9QueryType_p_Tg5 +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtF6SQLite05QueryG0_p_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tF6SQLite05QueryG0_p_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifsTW6SQLite9QueryType_p_Tg5 +_T0s12_ArrayBufferV5countSifs6SQLite9QueryType_p_Tg5 +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktF6SQLite05QueryE0_p_Tg5 +_T0SayxGs14_IndexableBaseslsABP8endIndex0D0QzfgTW6SQLite9QueryType_p_Tg5 +_T0Sa8endIndexSifg6SQLite9QueryType_p_Tg5 +_T0s16IteratorSequenceVyxGs0B0ss0A8ProtocolRzlsADP04makeA00A0QzyFTWs08IndexingA0VySay6SQLite9QueryType_pGG_Tg5 +_T0s17MutableCollectionPssAARzs012RandomAccessB0Rzs10Comparable7Elements8SequencePRpzlE4sortyyFs15ContiguousArrayVySSG_Tg5 +_T0s15ContiguousArrayVyxGs17MutableCollectionslsADP011_withUnsafeC24BufferPointerIfSupportedqd__Sgqd__Spy7ElementQzG_SitKcKlFTWSS_ytTg5 +_T0s15ContiguousArrayV42_withUnsafeMutableBufferPointerIfSupportedqd__Sgqd__SpyxG_SitKcKlFSS_ytTg5 +_T0s15ContiguousArrayV30withUnsafeMutableBufferPointerqd__qd__SryxGzKcKlFSS_ytTg5 +_T0s15ContiguousArrayV30withUnsafeMutableBufferPointerqd__qd__SryxGzKcKlF6$deferL_yyr__lFSS_ytTg5 +_T0s15ContiguousArrayV42_withUnsafeMutableBufferPointerIfSupportedqd__Sgqd__SpyxG_SitKcKlFqd__SryxGzKcfU_SS_ytTg5 +_T0Spy7Elements8SequencePQzGSis5Error_pIxyyzo_AESiytsAF_pIxyyrzo_s17MutableCollectionRzs012RandomAccessE0Rzs10ComparableADRQlTRs15ContiguousArrayVySSG_Tg5 +_T0s17MutableCollectionPssAARzs012RandomAccessB0Rzs10Comparable7Elements8SequencePRpzlE4sortyyFySpyAHG_SitcfU_s15ContiguousArrayVySSG_Tg5 +_T0s17MutableCollectionPssAARzs012RandomAccessB0Rzs10Comparable7Elements8SequencePRpzlE4sortyyFSrySSG_Tg5 +_T0SryxGs17_MutableIndexableslsABP8endIndex0D0QzfgTWSS_Tg5 +_T0Sr8endIndexSifgSS_Tg5 +_T0s10_introSortyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subC0ts17MutableCollectionRzs012RandomAccessI0Rzs10Comparable7Elements8SequencePRpzlFTfq4ng_nSrySSG_Tg5 +_T0S2ryxGSpyxGSg5start_Si5counttcfCSS_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFTfq4ngn_n +_T0s12_ArrayBufferV5countSifs +_T0Sa16_copyToNewBufferySi8oldCount_tF6SQLite9QueryType_p_Tg5 +_T0s15ContiguousArrayV15reserveCapacityySiF6SQLite9QueryType_p_Tg5 +_T0s15ContiguousArrayV9_getCountSiyF6SQLite9QueryType_p_Tg5 +_T0s7UnicodeO5UTF16O16transcodedLengthSi5count_Sb7isASCIItSgx2of_q_m9decodedAsSb27repairingIllFormedSequencests16IteratorProtocolRzs01_A8EncodingR_8CodeUnitQy_7ElementRtzr0_lFZs11_UIntBufferV0O0Vys6UInt64Vs6UInt16V_G_ADTgq5Tfq4xnnd_n +_T0s13_StringBufferV13fromCodeUnitsABSg_Sb8hadErrortx_q_m8encodingSb24repairIllFormedSequencesSi15minimumCapacityts8SequenceRzs16_UnicodeEncodingR_0D4UnitQy_7ElementRtzr0_lFZs05_UIntB0Vys6UInt64Vs6UInt16VG_s0P0O5UTF16OTgq5Tfq4xnnnd_n +_T06SQLite10ConnectionC3runSiAA6DeleteVKFSiyKcfU_ +_T06SQLite10ConnectionC3runSiAA6UpdateVKFSiyKcfU_ +_T06SQLite10ConnectionC3runs5Int64VAA6InsertVKFAFyKcfU_ +pluck +limit +_T0S3iSgs5Error_pIxyddzo_S2i6length_AA6offsettsAB_pIxirzo_TR +_T06SQLite9QueryTypePAAE5limit33_14CB4A30965D85E6DF5BEBC63D2EB0EALLxSiSg_AFtFSi_AFtSicfU_ +prepareRowIterator +_T06SQLite10ConnectionC7prepares11AnySequenceVyAA3RowVGAA9QueryType_pKFs0D8IteratorVyAHGycfU_AHSgycfU_ +_T06SQLite10ConnectionC7prepares11AnySequenceVyAA3RowVGAA9QueryType_pKFs0D8IteratorVyAHGycfU_AHSgycfU_Tf4gg_n +_T0Say6SQLite7Binding_pSgGAA3RowVs5Error_pIxxozo_AdFsAG_pIxirzo_TR +_T06SQLite10ConnectionC7prepares11AnySequenceVyAA3RowVGAA9QueryType_pKFs0D8IteratorVyAHGycfU_AHSgycfU_AHSayAA7Binding_pSgGcfU_ +columnNamesForQuery +_T0s10CollectionPsE3mapSayqd__Gqd__7ElementQzKcKlFTfq4gn_nSay6SQLite8JoinTypeO4type_AG05QueryF0_p5queryAG11Expressible_p9conditiontG_AgK_pTg5 +_T0s15ContiguousArrayV6appendyxF6SQLite9QueryType_p_Tg5 +_T0s15ContiguousArrayV36_reserveCapacityAssumingUniqueBufferySi8oldCount_tF6SQLite9QueryType_p_Tg5 +_T0SayxGs10CollectionslsABP9subscript7ElementQz5IndexQzcfgTW6SQLite8JoinTypeO4type_AI05QueryG0_p5queryAI11Expressible_p9conditiont_Tg5 +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtF6SQLite04JoinG0O4type_AE05QueryG0_p5queryAE11Expressible_p9conditiont_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tF6SQLite04JoinG0O4type_AE05QueryG0_p5queryAE11Expressible_p9conditiont_Tg5 +removeLast +_T0SayxGs26RangeReplaceableCollectionslsABP6remove7ElementQz5IndexQz2at_tFTWSS_Tg5 +_T0Sa6removexSi2at_tFSS_Tg5 +_T0s10CollectionPsE3mapSayqd__Gqd__7ElementQzKcKlFTfq4gn_nSaySS13CharacterViewVG_SSTg5 +_T0SayxGs10CollectionslsABP9subscript7ElementQz5IndexQzcfgTWSS13CharacterViewV_Tg5 +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtFSS13CharacterViewV_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tFSS13CharacterViewV_Tg5 +_T06SQLite10ConnectionC19columnNamesForQuery33_14CB4A30965D85E6DF5BEBC63D2EB0EALLs10DictionaryVySSSiGAA0F4Type_pKF10expandGlobL_yAaI_pKcSbFyAaI_pKcfU_ +expandGlob +_T0Sa9_getCountSiyF6SQLite8JoinTypeO4type_AB05QueryE0_p5queryAB11Expressible_p9conditiont_Tg5 +_T0SS7isEmptySbfgTfq4x_n +_T0SayxGs26RangeReplaceableCollectionslsABP6appendyqd__10contentsOf_ts8SequenceRd__7ElementQyd__AGRtzlFTW6SQLite9QueryType_p_SayAjK_pGTg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZ6SQLite9QueryType_p_Tg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZTfq4gnn_n6SQLite9QueryType_p_Tg5 +_T0s15ContiguousArrayV37_appendElementAssumeUniqueAndCapacityySi_x03newD0tF6SQLite9QueryType_p_Tg5 +_T0s15ContiguousArrayV37_appendElementAssumeUniqueAndCapacityySi_x03newD0tFTfq4ngn_n6SQLite9QueryType_p_Tg5 +_T0s15ContiguousArrayV034_makeUniqueAndReserveCapacityIfNotD0yyF6SQLite9QueryType_p_Tg5 +_T06SQLite8JoinTypeOAA05QueryC0_pAA11Expressible_pAaD_ps5Error_pIxyiirzo_AC4type_AaD_p5queryAaE_p9conditiontAaD_psAF_pIxirzo_TR +_T06SQLite10ConnectionC19columnNamesForQuery33_14CB4A30965D85E6DF5BEBC63D2EB0EALLs10DictionaryVySSSiGAA0F4Type_pKFAaI_pAA04JoinQ0O4type_AaI_p5queryAA11Expressible_p9conditiontcfU0_ +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktF6SQLite04JoinE0O4type_AF05QueryE0_p5queryAF11Expressible_p9conditiont_Tg5 +_T0SayxGs10CollectionslsABP5count13IndexDistanceQzfgTW6SQLite8JoinTypeO4type_AG05QueryG0_p5queryAG11Expressible_p9conditiont_Tg5 +_T0Sa15replaceSubrangeys5RangeVySiG_qd__4witht7ElementQyd__Rszs10CollectionRd__lFSS_s05EmptyF0VySSGTg5 +_T0Sa15replaceSubrangeys5RangeVySiG_qd__4witht7ElementQyd__Rszs10CollectionRd__lFTfq4xnn_nSS_s05EmptyF0VySSGTg5 +_T0SayxGs23BidirectionalCollectionslsABP5index5IndexQzAF6before_tFTWSS_Tg5 +_T0Sa5indexS2i6before_tFSS_Tg5 +_T0SayxGs10CollectionslsABP7isEmptySbfgTWSS_Tg5 +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktFSS13CharacterViewV_Tg5 +_T0SayxGs10CollectionslsABP5count13IndexDistanceQzfgTWSS13CharacterViewV_Tg5 +clauses.get +identifier.get +globalinit_33_14CB4A30965D85E6DF5BEBC63D2EB0EA_func16 +globalinit_33_14CB4A30965D85E6DF5BEBC63D2EB0EA_func15 +globalinit_33_14CB4A30965D85E6DF5BEBC63D2EB0EA_func14 +_T06SQLite9QueryTypePAAE6insert33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA6InsertVAA10OnConflictOSg_SayAA6SetterVGtFAA11Expressible_pSgAOcfU1_ +exists.get +delete +_T06SQLite9QueryTypePAAE6insert33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA6InsertVAA10OnConflictOSg_SayAA6SetterVGtFAA11Expressible_pAIcfU0_ +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZ6SQLite6SetterV_Tg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZTfq4gnn_n6SQLite6SetterV_Tg5 +alias +unionClause.get +_T0s10CollectionPsE3mapSayqd__Gqd__7ElementQzKcKlFTfq4gn_nSay6SQLite9QueryType_pG_AG11Expressible_pTg5 +_T0SayxGs10CollectionslsABP9subscript7ElementQz5IndexQzcfgTW6SQLite9QueryType_p_Tg5 +_T06SQLite9QueryTypePAAE11unionClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAaF_pAaB_pcfU_ +_T0SayxGs10CollectionslsABP5count13IndexDistanceQzfgTW6SQLite9QueryType_p_Tg5 +limitOffsetClause.get +orderClause.get +groupByClause.get +whereClause.get +_T06SQLite9QueryTypePAAE10joinClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAaF_pAA04JoinC0O4type_AaB_p5queryAaF_p9conditiontcfU_ +joinClause.get +_T0s10CollectionPsE3mapSayqd__Gqd__7ElementQzKcKlFTfq4gn_nSay6SQLite8JoinTypeO4type_AG05QueryF0_p5queryAG11Expressible_p9conditiontG_AgM_pTg5 +_T06SQLite8JoinTypeOAA05QueryC0_pAA11Expressible_pAaE_ps5Error_pIxyiirzo_AC4type_AaD_p5queryAaE_p9conditiontAaE_psAF_pIxirzo_TR +_T0SayxGs14_IndexableBaseslsABP8endIndex0D0QzfgTW6SQLite8JoinTypeO4type_AG05QueryG0_p5queryAG11Expressible_p9conditiont_Tg5 +_T0Sa8endIndexSifg6SQLite8JoinTypeO4type_AB05QueryE0_p5queryAB11Expressible_p9conditiont_Tg5 +_T0SayxGs14_IndexableBaseslsABP9formIndexy0D0Qzz5after_tFTW6SQLite8JoinTypeO4type_AH05QueryH0_p5queryAH11Expressible_p9conditiont_Tg5 +_T0Sa9formIndexySiz5after_tF6SQLite8JoinTypeO4type_AC05QueryF0_p5queryAC11Expressible_p9conditiont_Tg5 +selectClause.get +group +where +_T0Sa36_reserveCapacityAssumingUniqueBufferySi8oldCount_tF6SQLite8JoinTypeO4type_AC05QueryJ0_p5queryAC11Expressible_p9conditiont_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tF6SQLite8JoinTypeO4type_AC05QueryJ0_p5queryAC11Expressible_p9conditiont_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFTfq4ngn_n6SQLite8JoinTypeO4type_AC05QueryJ0_p5queryAC11Expressible_p9conditiont_Tg5 +_T0s12_ArrayBufferV5countSifs6SQLite8JoinTypeO4type_AD05QueryF0_p5queryAD11Expressible_p9conditiont_Tg5 +_T0Sa034_makeUniqueAndReserveCapacityIfNotB0yyF6SQLite8JoinTypeO4type_AB05QueryJ0_p5queryAB11Expressible_p9conditiont_Tg5 +_T06SQLite10ExpressionVySbSgGAA11Expressible_ps5Error_pIxxrzo_AeaF_psAG_pIxirzo_TR +_T06SQLite10ExpressionVySbSgGAEIxxo_AeA11Expressible_ps5Error_pIxxrzo_TR +_T06SQLite9QueryTypePAAE4joinxAA04JoinC0O_AaB_pAA10ExpressionVySbSgG2ontFA2JcfU_ +union +_T0Sa36_reserveCapacityAssumingUniqueBufferySi8oldCount_tF6SQLite9QueryType_p_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tF6SQLite9QueryType_p_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFTfq4ngn_n6SQLite9QueryType_p_Tg5 +_T0Sa034_makeUniqueAndReserveCapacityIfNotB0yyF6SQLite9QueryType_p_Tg5 +count +database +tableName +_T06SQLite9QueryTypePAAE9tableNameAA11Expressible_pSb9qualified_tFSSyKXKfu_ +_T06SQLite9QueryTypePAAE9tableNameAA11Expressible_pSb5alias_tFSSyKXKfu_ +_T0Sa24reserveCapacityForAppendySi16newElementsCount_tF6SQLite9QueryType_p_Tg5 +_T0Sr5countSifg6SQLite9QueryType_p_Tg5 +_T0SayxGs8SequenceslsABP13_copyContents8IteratorQz_SitSry7ElementQzG12initializing_tFTW6SQLite9QueryType_p_Tg5 +_T0Sa13_copyContentss16IndexingIteratorVySayxGG_SitSryxG12initializing_tF6SQLite9QueryType_p_Tg5 +_T0Sa12_getCapacitySiyF6SQLite9QueryType_p_Tg5 +_T0SayxGs8SequenceslsABP19underestimatedCountSifgTW6SQLite9QueryType_p_Tg5 +_T0s10CollectionPsE19underestimatedCountSifgSay6SQLite9QueryType_pG_Tg5 +_T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlFSbSScfU_ +__T06SQLite9StatementC11columnCountSifmytfU_ +__T06SQLite9StatementC11columnNamesSaySSGfmytfU_ +__T06SQLite9StatementC3rowAA6CursorVfmytfU_ +__T06SQLite9StatementC4bind33_BBABA35034D0672F50B2547BC77385B8LLyAA7Binding_pSg_Si7atIndextF +__T06SQLite9StatementC4stepSbyKFSbyKcfU_ +__T06SQLite9StatementCs8SequenceAAsADP12makeIterator0E0QzyFTW +__T06SQLite9StatementCs8SequenceAAsADP19underestimatedCountSifgTW +__T06SQLite9StatementCs8SequenceAAsADP3mapSayqd__Gqd__7ElementQzKcKlFTW +__T06SQLite9StatementCs8SequenceAAsADP6filterSay7ElementQzGSbAHKcKFTW +__T06SQLite9StatementCs8SequenceAAsADP7forEachyy7ElementQzKcKFTW +__T06SQLite9StatementCs8SequenceAAsADP9dropFirst03SubC0QzSiFTW +__T0s8SequencePssAARz03SubA0_7ElementQZADRtzsAaCRpzAC_ACQZAGRSlE9dropFirsts03AnyA0VyAFGSiF6SQLite9StatementC_Tg5 +__T0s8SequencePssAARz03SubA0_7ElementQZADRtzsAaCRpzAC_ACQZAGRSlE9dropFirsts03AnyA0VyAFGSiF6SQLite6CursorV_Tg5 +__T06SQLite9StatementCs8SequenceAAsADP8dropLast03SubC0QzSiFTW +__T0s8SequencePssAARz03SubA0_7ElementQZADRtzsAaCRpzAC_ACQZAGRSlE8dropLasts03AnyA0VyAFGSiF6SQLite9StatementC_Tg5 +__T0s8SequencePssAARz03SubA0_7ElementQZADRtzsAaCRpzAC_ACQZAGRSlE8dropLasts03AnyA0VyAFGSiF6SQLite6CursorV_Tg5 +__T06SQLite9StatementCs8SequenceAAsADP4drop03SubC0QzSb7ElementQzKc5while_tKFTW +__T06SQLite9StatementCs8SequenceAAsADP6prefix03SubC0QzSiFTW +__T0s8SequencePssAARz03SubA0_7ElementQZADRtzsAaCRpzAC_ACQZAGRSlE6prefixs03AnyA0VyAFGSiF6SQLite9StatementC_Tg5 +__T0s8SequencePssAARz03SubA0_7ElementQZADRtzsAaCRpzAC_ACQZAGRSlE6prefixs03AnyA0VyAFGSiF6SQLite6CursorV_Tg5 +__T06SQLite9StatementCs8SequenceAAsADP6prefix03SubC0QzSb7ElementQzKc5while_tKFTW +__T06SQLite9StatementCs8SequenceAAsADP6suffix03SubC0QzSiFTW +__T0s8SequencePsE6suffixs03AnyA0Vy7ElementQzGSiF6SQLite9StatementC_Tg5 +__T0s8SequencePsE6suffixs03AnyA0Vy7ElementQzGSiF6SQLite6CursorV_Tg5 +__T06SQLite9StatementCs8SequenceAAsADP5splitSay03SubC0QzGSi9maxSplits_Sb25omittingEmptySubsequencesSb7ElementQzKc14whereSeparatortKFTW +__T06SQLite9StatementCs8SequenceAAsADP31_customContainsEquatableElementSbSg0G0QzFTW +__T06SQLite9StatementCs8SequenceAAsADP18_preprocessingPassqd__Sgqd__yKcKlFTW +__T06SQLite9StatementCs8SequenceAAsADP22_copyToContiguousArrays0fG0Vy7ElementQzGyFTW +__T06SQLite9StatementCs8SequenceAAsADP13_copyContents8IteratorQz_SitSry7ElementQzG12initializing_tFTW +__T0s8SequencePsE13_copyContents8IteratorQz_SitSry7ElementQzG12initializing_tF6SQLite6CursorV_Tg5 +__T0s8SequencePsE13_copyContents8IteratorQz_SitSry7ElementQzG12initializing_tF6SQLite9StatementC_Tg5 +__T06SQLite9StatementCAA16FailableIteratorA2aDP12failableNext7ElementQzSgyKFTW +__T06SQLite9StatementCs16IteratorProtocolAAsADP4next7ElementQzSgyFTW +__T06SQLite9StatementCs23CustomStringConvertibleAAsADP11descriptionSSfgTW +__T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_ +__T06SQLite6CursorVs8SequenceAAsADP12makeIterator0E0QzyFTW +__T06SQLite6CursorVs8SequenceAAsADP19underestimatedCountSifgTW +__T06SQLite6CursorVs8SequenceAAsADP3mapSayqd__Gqd__7ElementQzKcKlFTW +__T06SQLite6CursorVs8SequenceAAsADP6filterSay7ElementQzGSbAHKcKFTW +__T06SQLite6CursorVs8SequenceAAsADP7forEachyy7ElementQzKcKFTW +__T06SQLite6CursorVs8SequenceAAsADP9dropFirst03SubC0QzSiFTW +__T06SQLite6CursorVs8SequenceAAsADP8dropLast03SubC0QzSiFTW +__T06SQLite6CursorVs8SequenceAAsADP4drop03SubC0QzSb7ElementQzKc5while_tKFTW +__T06SQLite6CursorVs8SequenceAAsADP6prefix03SubC0QzSiFTW +__T06SQLite6CursorVs8SequenceAAsADP6prefix03SubC0QzSb7ElementQzKc5while_tKFTW +__T06SQLite6CursorVs8SequenceAAsADP4drop03SubC0QzSb7ElementQzKc5while_tKFTWTm +__T06SQLite6CursorVs8SequenceAAsADP6suffix03SubC0QzSiFTW +__T06SQLite6CursorVs8SequenceAAsADP5splitSay03SubC0QzGSi9maxSplits_Sb25omittingEmptySubsequencesSb7ElementQzKc14whereSeparatortKFTW +__T06SQLite6CursorVs8SequenceAAsADP31_customContainsEquatableElementSbSg0G0QzFTW +__T06SQLite6CursorVs8SequenceAAsADP18_preprocessingPassqd__Sgqd__yKcKlFTW +__T06SQLite6CursorVs8SequenceAAsADP22_copyToContiguousArrays0fG0Vy7ElementQzGyFTW +__T06SQLite6CursorVs8SequenceAAsADP13_copyContents8IteratorQz_SitSry7ElementQzG12initializing_tFTW +__T0s18DictionaryIteratorV11_nativeNextx3key_q_5valuetSgyFSS_6SQLite7Binding_pSgTg5 +__T0Sa16_copyToNewBufferySi8oldCount_tFSay6SQLite7Binding_pSgG_Tg5 +__T0Sa16_copyToNewBufferySi8oldCount_tFs11AnySequenceVySay6SQLite7Binding_pSgGG_Tg5 +__T0Sa16_copyToNewBufferySi8oldCount_tF6SQLite7Binding_pSg_Tg5 +__T0Sa16_copyToNewBufferySi8oldCount_tFs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +__T0Sa16_copyToNewBufferySi8oldCount_tFSay6SQLite7Binding_pSgG_Tg5Tm +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFAEy6SQLite7Binding_pSgG_Tg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFAEySay6SQLite7Binding_pSgGG_Tg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0VySay6SQLite7Binding_pSgGG_Tg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vys11AnySequenceVySay6SQLite7Binding_pSgGGG_Tg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vys11AnySequenceVy6SQLite7Binding_pSgGG_Tg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_nAEy6SQLite7Binding_pSgG_s07_IgnoreK0VyAMGTg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_nAEySay6SQLite7Binding_pSgGG_s07_IgnoreK0VyANGTg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0VySay6SQLite7Binding_pSgGG_s07_IgnoreK0VyAPGTg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0Vys11AnySequenceVy6SQLite7Binding_pSgGG_s07_IgnoreK0VyARGTg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_n +__T0Sa15reserveCapacityySiFSay6SQLite7Binding_pSgG_Tg5 +__T0Sis10ComparablessAAP1loiSbx_xtFZTW +__T0Sis35_ExpressibleByBuiltinIntegerLiteralssAAPxBi2048_08_builtindE0_tcfCTW +__T0s5Int32Vs10ComparablessACP1loiSbx_xtFZTW +__T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tFSay6SQLite7Binding_pSgG_Tg5 +__T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tF6SQLite7Binding_pSg_Tg5Tm +__T0s8SequencePsE6filterSay7ElementQzGSbAEKcKFTfq4gn_n6SQLite9StatementC_Tg5 +__T0s8SequencePsE6filterSay7ElementQzGSbAEKcKFTfq4gn_n6SQLite6CursorV_Tg5 +__T0s8SequencePsE7forEachyy7ElementQzKcKFTfq4gn_n6SQLite9StatementC_Tg5 +__T0s8SequencePsE7forEachyy7ElementQzKcKFTfq4gn_n6SQLite6CursorV_Tg5 +__T0s8SequencePssAARz03SubA0_7ElementQZADRtzsAaCRpzAC_ACQZAGRSlE4drops03AnyA0VyAFGSbAFKc5while_tKFTfq4gn_n6SQLite6CursorV_Tg5 +__T0s18_DropWhileSequenceVAByxGx8iterator_7ElementQzSg04nextE0SbAFKc9predicatetKcfCs11AnyIteratorVy6SQLite7Binding_pSgG_Tg5 +__T0s8SequencePssAARz03SubA0_7ElementQZADRtzsAaCRpzAC_ACQZAGRSlE6prefixs03AnyA0VyAFGSbAFKc5while_tKFTfq4gn_n6SQLite9StatementC_Tg5 +__T0s8SequencePssAARz03SubA0_7ElementQZADRtzsAaCRpzAC_ACQZAGRSlE6prefixs03AnyA0VyAFGSbAFKc5while_tKFTfq4gn_n6SQLite6CursorV_Tg5 +__T0s8SequencePsE5splitSays03AnyA0Vy7ElementQzGGSi9maxSplits_Sb25omittingEmptySubsequencesSbAGKc14whereSeparatortKFTfq4nngn_n6SQLite9StatementC_Tg5 +__T0s8SequencePsE5splitSays03AnyA0Vy7ElementQzGGSi9maxSplits_Sb25omittingEmptySubsequencesSbAGKc14whereSeparatortKFTfq4nngn_n6SQLite6CursorV_Tg5 +__T0s8SequencePsE5splitSays03AnyA0Vy7ElementQzGGSi9maxSplits_Sb25omittingEmptySubsequencesSbAGKc14whereSeparatortKF17appendSubsequenceL_SbysAARzlFTfq4gng_n6SQLite9StatementC_Tg5 +__T0s8SequencePsE5splitSays03AnyA0Vy7ElementQzGGSi9maxSplits_Sb25omittingEmptySubsequencesSbAGKc14whereSeparatortKF17appendSubsequenceL_SbysAARzlFTfq4gng_n6SQLite6CursorV_Tg5 +__T0s8SequencePsE5splitSays03AnyA0Vy7ElementQzGGSi9maxSplits_Sb25omittingEmptySubsequencesSbAGKc14whereSeparatortKF17appendSubsequenceL_SbysAARzlFTfq4gng_n6SQLite9StatementC_Tg5Tm +__T0s30_copySequenceToContiguousArrays0dE0Vy7ElementQzGxs0B0RzlFTfq4g_n6SQLite9StatementC_Tg5 +___swift_memcpy_array16_8 +__T06SQLite9StatementC4stepSbyKFSbyKcfU_TA +__T0Sbs5Error_pIxdzo_SbsAA_pIxrzo_TRTA +__T06SQLite6CursorV9subscriptAA4BlobVSicfgTf4nx_n +__T06SQLite6CursorV9subscriptSSSicfgTf4nx_n +__T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA +__T0s12_IteratorBoxCys013_ClosureBasedA0Vy6SQLite7Binding_pSgGGMa +__T06SQLite7Binding_pSgMa +__T06SQLite7Binding_pMa +__T0Say6SQLite7Binding_pSgGMa +__T0s11AnySequenceVySay6SQLite7Binding_pSgGGMa +__T0s11AnyIteratorVy6SQLite7Binding_pSgGMa +__T0s11AnySequenceVy6SQLite7Binding_pSgGMa +__T0Say6SQLite7Binding_pSgGMaTm +__T0s11AnyIteratorVy6SQLite7Binding_pSgGAByxGs0B8ProtocolslWl +__T06SQLite6CursorVwxs +__T06SQLite6CursorVwxg +__T0s12_SequenceBoxCySay6SQLite7Binding_pSgGGMa +__T0s12_SequenceBoxCys30FlattenBidirectionalCollectionVySays10ArraySliceVy6SQLite7Binding_pSgGGGGMa +__T0s30FlattenBidirectionalCollectionVySays10ArraySliceVy6SQLite7Binding_pSgGGGMa +_swift_rt_swift_isUniquelyReferencedOrPinned_nonNull_native +__T0Sa11_copyBufferys06_ArrayB0VyxGzFZSay6SQLite7Binding_pSgG_Tg5Tf4nd_n +__T0s22_ContiguousArrayBufferVAByxGSi19_uninitializedCount_Si15minimumCapacitytcfC6SQLite7Binding_pSg_Tg5Tf4nnd_n +__T0Sa11_copyBufferys06_ArrayB0VyxGzFZ6SQLite7Binding_pSg_Tg5Tf4nd_n +_swift_rt_swift_tryPin +_swift_rt_swift_unpin +__T0s15_PrefixSequenceVys11AnyIteratorVy6SQLite7Binding_pSgGGMa +__T0s11AnySequenceVy6SQLite7Binding_pSgGAByxGs0B0slWl +__T0s18_DropWhileSequenceVys11AnyIteratorVy6SQLite7Binding_pSgGGMa +__T0s15_PrefixSequenceVys11AnyIteratorVy6SQLite7Binding_pSgGGMaTm +__T0s18_DropFirstSequenceVys11AnyIteratorVy6SQLite7Binding_pSgGGMa +__T0s23_ContiguousArrayStorageCySay6SQLite7Binding_pSgGGMa +__T0s12_SequenceBoxCySaySay6SQLite7Binding_pSgGGGMa +__T0s10ArraySliceVySay6SQLite7Binding_pSgGGMa +__T0s11AnyIteratorVy6SQLite7Binding_pSgGAByxGs0B8ProtocolslWlTm +__T0s12_SequenceBoxCys30FlattenBidirectionalCollectionVySays10ArraySliceVySay6SQLite7Binding_pSgGGGGGMa +__T0s30FlattenBidirectionalCollectionVySays10ArraySliceVySay6SQLite7Binding_pSgGGGGMa +__T0s12_SequenceBoxCys07_PrefixA0Vy6SQLite9StatementCGGMa +__T0s11AnySequenceVySay6SQLite7Binding_pSgGGAByxGs0B0slWl +__T0s12_SequenceBoxCys15EmptyCollectionVySay6SQLite7Binding_pSgGGGMa +__T0s18_DropWhileSequenceVAByxGx8iterator_7ElementQzSg04nextE0SbAFKc9predicatetKcfC6SQLite9StatementC_Tg5Tf4nnnd_n +__T0s12_SequenceBoxCys010_DropWhileA0Vy6SQLite9StatementCGGMa +__T0s12_SequenceBoxCys010_DropFirstA0Vy6SQLite9StatementCGGMa +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0Vys11AnySequenceVySay6SQLite7Binding_pSgGGG_s07_IgnoreK0VyASGTg5 +__T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA.20 +__T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA.31 +__T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA.40 +__T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA.45 +__T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA.50 +__T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA.55 +__T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA.60 +__T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA.65 +__T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA.70 +__T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA.75 +__T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA.84 +__T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA.101 +__T0s12_IteratorBoxCys013_ClosureBasedA0Vy6SQLite7Binding_pSgGGML +__T0s21_ClosureBasedIteratorVy6SQLite7Binding_pSgGML +__T0s21_ClosureBasedIteratorVy6SQLite7Binding_pSgGAByxGs0C8ProtocolslWL +__T0s11AnySequenceVySay6SQLite7Binding_pSgGGML +__T0s11AnyIteratorVy6SQLite7Binding_pSgGML +__T0s11AnySequenceVy6SQLite7Binding_pSgGML +__T0s11AnyIteratorVy6SQLite7Binding_pSgGAByxGs0B8ProtocolslWL +__T06SQLite9StatementC6handle33_BBABA35034D0672F50B2547BC77385B8LLs13OpaquePointerVSgvWvd +__T06SQLite9StatementC10connection33_BBABA35034D0672F50B2547BC77385B8LLAA10ConnectionCvWvd +__T06SQLite9StatementC0024columnCountstorage_wnAHf33_BBABA35034D0672F50B2547BC77385B8LLSiSgvWvd +__T06SQLite9StatementC0024columnNamesstorage_wnAHf33_BBABA35034D0672F50B2547BC77385B8LLSaySSGSgvWvd +__T06SQLite9StatementC0016rowstorage_cCJAc33_BBABA35034D0672F50B2547BC77385B8LLAA6CursorVSgvWvd +__T06SQLite9StatementCML +__T06SQLite9StatementCMf +__T06SQLite9StatementCMF +__T06SQLite16FailableIterator_pMF +__T06SQLite6CursorVWV +__T06SQLite6CursorVMf +__T06SQLite6CursorVMF +__T0SaySSGSgML +__T06SQLite6CursorVSgML +__T0s12_SequenceBoxCySay6SQLite7Binding_pSgGGML +__T0Say6SQLite7Binding_pSgGSayxGs8SequenceslWL +__T0s10ArraySliceVy6SQLite7Binding_pSgGAByxGs8SequenceslWL +__T0s10ArraySliceVy6SQLite7Binding_pSgGML +__T0s23_ContiguousArrayStorageCys11AnySequenceVy6SQLite7Binding_pSgGGML +__T0s23_ContiguousArrayStorageCys0B5SliceVy6SQLite7Binding_pSgGGML +__T0s12_SequenceBoxCys30FlattenBidirectionalCollectionVySays10ArraySliceVy6SQLite7Binding_pSgGGGGML +__T0s30FlattenBidirectionalCollectionVySays10ArraySliceVy6SQLite7Binding_pSgGGGML +__T0Says10ArraySliceVy6SQLite7Binding_pSgGGML +__T0Says10ArraySliceVy6SQLite7Binding_pSgGGSayxGs23BidirectionalCollectionslWL +__T0s10ArraySliceVy6SQLite7Binding_pSgGAByxGs23BidirectionalCollectionslWL +__T0s30FlattenBidirectionalCollectionVySays10ArraySliceVy6SQLite7Binding_pSgGGGAByxGs8Sequencess0bC0RzsAM7ElementRpzlWL +__T0s18BidirectionalSliceVys07FlattenA10CollectionVySays05ArrayB0Vy6SQLite7Binding_pSgGGGGAByxGs8Sequencess01_A9IndexableRzlWL +__T0s18BidirectionalSliceVys07FlattenA10CollectionVySays05ArrayB0Vy6SQLite7Binding_pSgGGGGML +__T0s30FlattenBidirectionalCollectionVySays10ArraySliceVy6SQLite7Binding_pSgGGGAByxGs01_B9Indexabless0bC0RzsAM7ElementRpzlWL +__T0s12_SequenceBoxCys07_PrefixA0Vys11AnyIteratorVy6SQLite7Binding_pSgGGGML +__T0s15_PrefixSequenceVys11AnyIteratorVy6SQLite7Binding_pSgGGML +__T0s15_PrefixSequenceVys11AnyIteratorVy6SQLite7Binding_pSgGGAByxGs0B0ss0D8ProtocolRzlWL +__T0s11AnySequenceVy6SQLite7Binding_pSgGAByxGs0B0slWL +__T0s12_SequenceBoxCys15EmptyCollectionVy6SQLite7Binding_pSgGGML +__T0s15EmptyCollectionVy6SQLite7Binding_pSgGML +__T0s15EmptyCollectionVy6SQLite7Binding_pSgGAByxGs8SequenceslWL +__T0s12_SequenceBoxCys010_DropWhileA0Vys11AnyIteratorVy6SQLite7Binding_pSgGGGML +__T0s18_DropWhileSequenceVys11AnyIteratorVy6SQLite7Binding_pSgGGML +__T0s18_DropWhileSequenceVys11AnyIteratorVy6SQLite7Binding_pSgGGAByxGs0C0ss0E8ProtocolRzlWL +__T0s19_AnyIteratorBoxBaseCy6SQLite7Binding_pSgGML +__T0s12_SequenceBoxCy6SQLite6CursorVGML +__T0s12_SequenceBoxCys010_DropFirstA0Vys11AnyIteratorVy6SQLite7Binding_pSgGGGML +__T0s18_DropFirstSequenceVys11AnyIteratorVy6SQLite7Binding_pSgGGML +__T0s18_DropFirstSequenceVys11AnyIteratorVy6SQLite7Binding_pSgGGAByxGs0C0ss0E8ProtocolRzlWL +__T0s23_ContiguousArrayStorageCySay6SQLite7Binding_pSgGGML +__T0s12_SequenceBoxCySaySay6SQLite7Binding_pSgGGGML +__T0SaySay6SQLite7Binding_pSgGGML +__T0SaySay6SQLite7Binding_pSgGGSayxGs8SequenceslWL +__T0s10ArraySliceVySay6SQLite7Binding_pSgGGAByxGs8SequenceslWL +__T0s10ArraySliceVySay6SQLite7Binding_pSgGGML +__T0s23_ContiguousArrayStorageCys11AnySequenceVySay6SQLite7Binding_pSgGGGML +__T0s23_ContiguousArrayStorageCys0B5SliceVySay6SQLite7Binding_pSgGGGML +__T0s12_SequenceBoxCys30FlattenBidirectionalCollectionVySays10ArraySliceVySay6SQLite7Binding_pSgGGGGGML +__T0s30FlattenBidirectionalCollectionVySays10ArraySliceVySay6SQLite7Binding_pSgGGGGML +__T0Says10ArraySliceVySay6SQLite7Binding_pSgGGGML +__T0Says10ArraySliceVySay6SQLite7Binding_pSgGGGSayxGs23BidirectionalCollectionslWL +__T0s10ArraySliceVySay6SQLite7Binding_pSgGGAByxGs23BidirectionalCollectionslWL +__T0s30FlattenBidirectionalCollectionVySays10ArraySliceVySay6SQLite7Binding_pSgGGGGAByxGs8Sequencess0bC0RzsAN7ElementRpzlWL +__T0s18BidirectionalSliceVys07FlattenA10CollectionVySays05ArrayB0VySay6SQLite7Binding_pSgGGGGGAByxGs8Sequencess01_A9IndexableRzlWL +__T0s18BidirectionalSliceVys07FlattenA10CollectionVySays05ArrayB0VySay6SQLite7Binding_pSgGGGGGML +__T0s30FlattenBidirectionalCollectionVySays10ArraySliceVySay6SQLite7Binding_pSgGGGGAByxGs01_B9Indexabless0bC0RzsAN7ElementRpzlWL +__T0s12_SequenceBoxCys07_PrefixA0Vy6SQLite9StatementCGGML +__T0s15_PrefixSequenceVy6SQLite9StatementCGML +__T0s15_PrefixSequenceVy6SQLite9StatementCGAByxGs0B0ss16IteratorProtocolRzlWL +__T0s11AnySequenceVySay6SQLite7Binding_pSgGGAByxGs0B0slWL +__T0s12_SequenceBoxCys15EmptyCollectionVySay6SQLite7Binding_pSgGGGML +__T0s15EmptyCollectionVySay6SQLite7Binding_pSgGGML +__T0s15EmptyCollectionVySay6SQLite7Binding_pSgGGAByxGs8SequenceslWL +__T0s12_SequenceBoxCys010_DropWhileA0Vy6SQLite9StatementCGGML +__T0s18_DropWhileSequenceVy6SQLite9StatementCGML +__T0s18_DropWhileSequenceVy6SQLite9StatementCGAByxGs0C0ss16IteratorProtocolRzlWL +__T0s12_SequenceBoxCy6SQLite9StatementCGML +__T0s12_SequenceBoxCys010_DropFirstA0Vy6SQLite9StatementCGGML +__T0s18_DropFirstSequenceVy6SQLite9StatementCGML +__T0s18_DropFirstSequenceVy6SQLite9StatementCGAByxGs0C0ss16IteratorProtocolRzlWL +__T06SQLite9StatementCs8SequenceAAMA +__T06SQLite9StatementCs16IteratorProtocolAAMA +__T06SQLite6CursorVs8SequenceAAMA +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Statement.swift +_T0s12_SequenceBoxCys010_DropFirstA0Vy6SQLite9StatementCGGMa +Statement.swift +_T0s18_DropFirstSequenceVy6SQLite9StatementCGAByxGs0C0ss16IteratorProtocolRzlWl +_T0s18_DropFirstSequenceVy6SQLite9StatementCGMa +_T06SQLite9StatementCMa +_T0s12_SequenceBoxCys010_DropWhileA0Vy6SQLite9StatementCGGMa +_T0s18_DropWhileSequenceVy6SQLite9StatementCGAByxGs0C0ss16IteratorProtocolRzlWl +_T0s18_DropWhileSequenceVy6SQLite9StatementCGMa +_T0s18_DropWhileSequenceVAByxGx8iterator_7ElementQzSg04nextE0SbAFKc9predicatetKcfC6SQLite9StatementC_Tg5Tf4nnnd_n +_T0s12_SequenceBoxCys15EmptyCollectionVySay6SQLite7Binding_pSgGGGMa +_T0s15EmptyCollectionVySay6SQLite7Binding_pSgGGAByxGs8SequenceslWl +_T0s15EmptyCollectionVySay6SQLite7Binding_pSgGGMa +_T0s11AnySequenceVySay6SQLite7Binding_pSgGGAByxGs0B0slWl +_T0s11AnySequenceVySay6SQLite7Binding_pSgGGMa +_T0s12_SequenceBoxCys07_PrefixA0Vy6SQLite9StatementCGGMa +_T0s15_PrefixSequenceVy6SQLite9StatementCGAByxGs0B0ss16IteratorProtocolRzlWl +_T0s15_PrefixSequenceVy6SQLite9StatementCGMa +_T0s30FlattenBidirectionalCollectionVySays10ArraySliceVySay6SQLite7Binding_pSgGGGGMa +_T0s10ArraySliceVySay6SQLite7Binding_pSgGGAByxGs23BidirectionalCollectionslWl +_T0Says10ArraySliceVySay6SQLite7Binding_pSgGGGSayxGs23BidirectionalCollectionslWl +_T0Says10ArraySliceVySay6SQLite7Binding_pSgGGGMa +_T0s12_SequenceBoxCys30FlattenBidirectionalCollectionVySays10ArraySliceVySay6SQLite7Binding_pSgGGGGGMa +_T0s18BidirectionalSliceVys07FlattenA10CollectionVySays05ArrayB0VySay6SQLite7Binding_pSgGGGGGAByxGs8Sequencess01_A9IndexableRzlWl +_T0s18BidirectionalSliceVys07FlattenA10CollectionVySays05ArrayB0VySay6SQLite7Binding_pSgGGGGGMa +_T0s30FlattenBidirectionalCollectionVySays10ArraySliceVySay6SQLite7Binding_pSgGGGGAByxGs01_B9Indexabless0bC0RzsAN7ElementRpzlWl +_T0s30FlattenBidirectionalCollectionVySays10ArraySliceVySay6SQLite7Binding_pSgGGGGAByxGs8Sequencess0bC0RzsAN7ElementRpzlWl +_T0s11AnyIteratorVy6SQLite7Binding_pSgGAByxGs0B8ProtocolslWl +_T0s11AnyIteratorVy6SQLite7Binding_pSgGMa +_T0s12_SequenceBoxCySaySay6SQLite7Binding_pSgGGGMa +_T0s10ArraySliceVySay6SQLite7Binding_pSgGGAByxGs8SequenceslWl +_T0SaySay6SQLite7Binding_pSgGGSayxGs8SequenceslWl +_T0SaySay6SQLite7Binding_pSgGGMa +_T0s15_PrefixSequenceVys11AnyIteratorVy6SQLite7Binding_pSgGGMa +_T0Sa11_copyBufferys06_ArrayB0VyxGzFZ6SQLite7Binding_pSg_Tg5Tf4nd_n +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFTfq4xnn_n6SQLite7Binding_pSg_Tg5 +_T0Sp10initializeySPyxG4from_Si5counttF6SQLite7Binding_pSg_Tg5 +_T0s22RandomAccessCollectionPssAARzs10Strideable5IndexRpzAD_6StrideQZ0E8DistanceRtzs14CountableRangeVyAEG7IndicesRtzlE7indicesALfgs12_ArrayBufferVy6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferVyxGs14_IndexableBaseslsADP8endIndex0F0QzfgTW6SQLite7Binding_pSg_Tg5 +_T0s12_ArrayBufferV8endIndexSifg6SQLite7Binding_pSg_Tg5 +_T0s22_ContiguousArrayBufferVAByxGSi19_uninitializedCount_Si15minimumCapacitytcfC6SQLite7Binding_pSg_Tg5 +_T0s22_ContiguousArrayBufferVAByxGSi19_uninitializedCount_Si15minimumCapacitytcfC6SQLite7Binding_pSg_Tg5Tf4nnd_n +_T0Sa11_copyBufferys06_ArrayB0VyxGzFZSay6SQLite7Binding_pSgG_Tg5Tf4nd_n +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFTfq4xnn_nSay6SQLite7Binding_pSgG_Tg5 +_T0Sp10initializeySPyxG4from_Si5counttFSay6SQLite7Binding_pSgG_Tg5 +_T0s22_ContiguousArrayBufferVAByxGSi19_uninitializedCount_Si15minimumCapacitytcfCSay6SQLite7Binding_pSgG_Tg5 +_T0s22_ContiguousArrayBufferVAByxGSi19_uninitializedCount_Si15minimumCapacitytcfCSay6SQLite7Binding_pSgG_Tg5Tf4nnd_n +_T0s30FlattenBidirectionalCollectionVySays10ArraySliceVy6SQLite7Binding_pSgGGGMa +_T0s10ArraySliceVy6SQLite7Binding_pSgGAByxGs23BidirectionalCollectionslWl +_T0s10ArraySliceVy6SQLite7Binding_pSgGMa +_T0Says10ArraySliceVy6SQLite7Binding_pSgGGSayxGs23BidirectionalCollectionslWl +_T0Says10ArraySliceVy6SQLite7Binding_pSgGGMa +_T0s12_SequenceBoxCys30FlattenBidirectionalCollectionVySays10ArraySliceVy6SQLite7Binding_pSgGGGGMa +_T0s18BidirectionalSliceVys07FlattenA10CollectionVySays05ArrayB0Vy6SQLite7Binding_pSgGGGGAByxGs8Sequencess01_A9IndexableRzlWl +_T0s18BidirectionalSliceVys07FlattenA10CollectionVySays05ArrayB0Vy6SQLite7Binding_pSgGGGGMa +_T0s30FlattenBidirectionalCollectionVySays10ArraySliceVy6SQLite7Binding_pSgGGGAByxGs01_B9Indexabless0bC0RzsAM7ElementRpzlWl +_T0s30FlattenBidirectionalCollectionVySays10ArraySliceVy6SQLite7Binding_pSgGGGAByxGs8Sequencess0bC0RzsAM7ElementRpzlWl +_T0s12_SequenceBoxCySay6SQLite7Binding_pSgGGMa +_T0s10ArraySliceVy6SQLite7Binding_pSgGAByxGs8SequenceslWl +_T0Say6SQLite7Binding_pSgGSayxGs8SequenceslWl +_T06SQLite6CursorVMa +get_field_types_Cursor +_T06SQLite6CursorVwxg +_T06SQLite6CursorVwxs +get_field_types_Statement +_T06SQLite6CursorVSgMa +_T0SaySSGSgMa +_T06SQLite6CursorVs8SequenceAAWa +_T06SQLite9StatementCs23CustomStringConvertibleAAWa +_T06SQLite9StatementCAA16FailableIteratorAAWa +_T06SQLite9StatementCs8SequenceAAWa +_T06SQLite9StatementCs16IteratorProtocolAAWa +_T0s12_IteratorBoxCys013_ClosureBasedA0Vy6SQLite7Binding_pSgGGMa +_T0s21_ClosureBasedIteratorVy6SQLite7Binding_pSgGAByxGs0C8ProtocolslWl +_T0s21_ClosureBasedIteratorVy6SQLite7Binding_pSgGMa +_T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA +objectdestroy.14 +_T0s32_copyCollectionToContiguousArrays0dE0Vy7ElementQzGxs0B0RzlFSRys5UInt8VG_Tg5Tf4x_n +_T0Sbs5Error_pIxdzo_SbsAA_pIxrzo_TRTA +_T0Sbs5Error_pIxdzo_SbsAA_pIxrzo_TR +_T06SQLite9StatementC4stepSbyKFSbyKcfU_TA +__swift_memcpy_array16_8 +makeIterator +_T0s23_NativeDictionaryBufferV5indexs01_aB5IndexVyxq_GAF5after_tFSS_6SQLite7Binding_pSgTg5 +reset +_T0s30_copySequenceToContiguousArrays0dE0Vy7ElementQzGxs0B0RzlFTfq4g_n6SQLite9StatementC_Tg5 +_T0s30_copySequenceToContiguousArrays0dE0Vy7ElementQzGxs0B0RzlFTfq4g_n6SQLite6CursorV_Tg5 +_T0s12_IteratorBoxCfDs013_ClosureBasedA0Vy6SQLite7Binding_pSgG_Tg5 +_T0s11AnyIteratorVyxGs0B8ProtocolslsADP4next7ElementQzSgyFTW6SQLite7Binding_pSg_Tg5 +_T0s11AnyIteratorV4nextxSgyF6SQLite7Binding_pSg_Tg5 +_T0s12_IteratorBoxC4next7ElementQzSgyFs013_ClosureBasedA0Vy6SQLite7Binding_pSgG_Tg5 +_T0s21_ClosureBasedIteratorVyxGs0C8ProtocolslsADP4next7ElementQzSgyFTW6SQLite7Binding_pSg_Tg5 +_T0s21_ClosureBasedIteratorV4nextxSgyF6SQLite7Binding_pSg_Tg5 +_T0s8SequencePsE5splitSays03AnyA0Vy7ElementQzGGSi9maxSplits_Sb25omittingEmptySubsequencesSbAGKc14whereSeparatortKF17appendSubsequenceL_SbysAARzlFTfq4gng_n6SQLite9StatementC_Tg5 +_T0Sa36_reserveCapacityAssumingUniqueBufferySi8oldCount_tFs11AnySequenceVySay6SQLite7Binding_pSgGG_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFs11AnySequenceVySay6SQLite7Binding_pSgGG_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFTfq4ngn_ns11AnySequenceVySay6SQLite7Binding_pSgGG_Tg5 +_T0s12_ArrayBufferV5countSifss11AnySequenceVySay6SQLite7Binding_pSgGG_Tg5 +_T0Sa9_getCountSiyFs11AnySequenceVySay6SQLite7Binding_pSgGG_Tg5 +_T0Sa034_makeUniqueAndReserveCapacityIfNotB0yyFs11AnySequenceVySay6SQLite7Binding_pSgGG_Tg5 +_T0Sa9_getCountSiyFSay6SQLite7Binding_pSgG_Tg5 +_T0s8SequencePsE5splitSays03AnyA0Vy7ElementQzGGSi9maxSplits_Sb25omittingEmptySubsequencesSbAGKc14whereSeparatortKFTfq4nngn_n6SQLite6CursorV_Tg5 +_T0Sa36_reserveCapacityAssumingUniqueBufferySi8oldCount_tFs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0Sa36_reserveCapacityAssumingUniqueBufferySi8oldCount_tF6SQLite7Binding_pSg_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tF6SQLite7Binding_pSg_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFTfq4ngn_n6SQLite7Binding_pSg_Tg5 +_T0Sa034_makeUniqueAndReserveCapacityIfNotB0yyF6SQLite7Binding_pSg_Tg5 +_T0Sa9_getCountSiyFs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFTfq4ngn_ns11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV5countSifss11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0Sa034_makeUniqueAndReserveCapacityIfNotB0yyFs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s8SequencePsE5splitSays03AnyA0Vy7ElementQzGGSi9maxSplits_Sb25omittingEmptySubsequencesSbAGKc14whereSeparatortKFTfq4nngn_n6SQLite9StatementC_Tg5 +_T0Sa36_reserveCapacityAssumingUniqueBufferySi8oldCount_tFSay6SQLite7Binding_pSgG_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFSay6SQLite7Binding_pSgG_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFTfq4ngn_nSay6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV5countSifsSay6SQLite7Binding_pSgG_Tg5 +_T0Sa034_makeUniqueAndReserveCapacityIfNotB0yyFSay6SQLite7Binding_pSgG_Tg5 +_T0s8SequencePssAARz03SubA0_7ElementQZADRtzsAaCRpzAC_ACQZAGRSlE6prefixs03AnyA0VyAFGSbAFKc5while_tKFTfq4gn_n6SQLite6CursorV_Tg5 +_T0s8SequencePssAARz03SubA0_7ElementQZADRtzsAaCRpzAC_ACQZAGRSlE6prefixs03AnyA0VyAFGSbAFKc5while_tKFTfq4gn_n6SQLite9StatementC_Tg5 +_T0s18_DropWhileSequenceVAByxGx8iterator_7ElementQzSg04nextE0SbAFKc9predicatetKcfCs11AnyIteratorVy6SQLite7Binding_pSgG_Tg5 +_T0s19_AnyIteratorBoxBaseC4nextxSgyF6SQLite7Binding_pSg_Tg5 +_T0s19_AnyIteratorBoxBaseCy6SQLite7Binding_pSgGMa +_T0s8SequencePssAARz03SubA0_7ElementQZADRtzsAaCRpzAC_ACQZAGRSlE4drops03AnyA0VyAFGSbAFKc5while_tKFTfq4gn_n6SQLite6CursorV_Tg5 +_T0s12_SequenceBoxCys010_DropWhileA0Vys11AnyIteratorVy6SQLite7Binding_pSgGGGMa +_T0s18_DropWhileSequenceVys11AnyIteratorVy6SQLite7Binding_pSgGGAByxGs0C0ss0E8ProtocolRzlWl +_T0s8SequencePsE7forEachyy7ElementQzKcKFTfq4gn_n6SQLite6CursorV_Tg5 +_T0s8SequencePsE7forEachyy7ElementQzKcKFTfq4gn_n6SQLite9StatementC_Tg5 +_T0s8SequencePsE6filterSay7ElementQzGSbAEKcKFTfq4gn_n6SQLite6CursorV_Tg5 +_T0s8SequencePsE6filterSay7ElementQzGSbAEKcKFTfq4gn_n6SQLite9StatementC_Tg5 +_T0s15ContiguousArrayV6appendyxFSay6SQLite7Binding_pSgG_Tg5 +_T0s15ContiguousArrayV36_reserveCapacityAssumingUniqueBufferySi8oldCount_tFSay6SQLite7Binding_pSgG_Tg5 +_T0s15ContiguousArrayV37_appendElementAssumeUniqueAndCapacityySi_x03newD0tFSay6SQLite7Binding_pSgG_Tg5 +_T0s15ContiguousArrayV37_appendElementAssumeUniqueAndCapacityySi_x03newD0tFTfq4ngn_nSay6SQLite7Binding_pSgG_Tg5 +_T0s15ContiguousArrayV9_getCountSiyFSay6SQLite7Binding_pSgG_Tg5 +_T0s15ContiguousArrayV034_makeUniqueAndReserveCapacityIfNotD0yyFSay6SQLite7Binding_pSgG_Tg5 +_T0s22_ContiguousArrayBufferV5countSifgSay6SQLite7Binding_pSgG_Tg5 +_T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tF6SQLite7Binding_pSg_Tg5 +_T0s13_StringBufferV13fromCodeUnitsABSg_Sb8hadErrortx_q_m8encodingSb24repairIllFormedSequencesSi15minimumCapacityts8SequenceRzs16_UnicodeEncodingR_0D4UnitQy_7ElementRtzr0_lFZSRys5UInt8VG_s0P0O4UTF8OTgq5Tfq4xnnnd_n +_T0s26RangeReplaceableCollectionPsE6remove7ElementQz5IndexQz2at_tFs11_UIntBufferVys6UInt32Vs5UInt8VG_Tgq5 +_T0s7UnicodeO5UTF16O6encodes11_UIntBufferVys6UInt32Vs6UInt16VGSgAB6ScalarVFZTfq4nd_n +_T0Sis35_ExpressibleByBuiltinIntegerLiteralssAAPxBi2048_08_builtindE0_tcfCTW +_T0Sa15reserveCapacityySiFSay6SQLite7Binding_pSgG_Tg5 +_T0s22_ContiguousArrayBufferV18_initStorageHeaderySi5count_Si8capacitytFSay6SQLite7Binding_pSgG_Tg5 +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtFTfq4xnn_nSay6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV8endIndexSifgSay6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV20isUniquelyReferencedSbyFSay6SQLite7Binding_pSgG_Tg5 +_T0Sa15reserveCapacityySiF6SQLite7Binding_pSg_Tg5 +_T0s22_ContiguousArrayBufferV18_initStorageHeaderySi5count_Si8capacitytF6SQLite7Binding_pSg_Tg5 +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtFTfq4xnn_n6SQLite7Binding_pSg_Tg5 +_T0s12_ArrayBufferV20isUniquelyReferencedSbyF6SQLite7Binding_pSg_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_n +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0Vys11AnySequenceVy6SQLite7Binding_pSgGG_s07_IgnoreK0VyARGTg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subG0_AI12initializingtFTWs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFTfq4xnn_ns11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP19firstElementAddressSpy0E0QzGfgTWs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV19firstElementAddressSpyxGfgs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0Sp10initializeySPyxG4from_Si5counttFs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8endIndexSifgTWs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV8endIndexSifgs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP027requestUniqueMutableBackingB0s011_ContiguousaB0Vy7ElementQzGSgSi15minimumCapacity_tFTWs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV027requestUniqueMutableBackingB0s011_ContiguousaB0VyxGSgSi15minimumCapacity_tFs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV20isUniquelyReferencedSbyFs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifgTWs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV5countSifgs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0VySay6SQLite7Binding_pSgGG_s07_IgnoreK0VyAPGTg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subG0_AI12initializingtFTWSay6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFSay6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP19firstElementAddressSpy0E0QzGfgTWSay6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV19firstElementAddressSpyxGfgSay6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8endIndexSifgTWSay6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP027requestUniqueMutableBackingB0s011_ContiguousaB0Vy7ElementQzGSgSi15minimumCapacity_tFTWSay6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV027requestUniqueMutableBackingB0s011_ContiguousaB0VyxGSgSi15minimumCapacity_tFSay6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifgTWSay6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV5countSifgSay6SQLite7Binding_pSgG_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_nAEySay6SQLite7Binding_pSgGG_s07_IgnoreK0VyANGTg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subH0_AI12initializingtFTWSay6SQLite7Binding_pSgG_Tg5 +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtFSay6SQLite7Binding_pSgG_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP19firstElementAddressSpy0F0QzGfgTWSay6SQLite7Binding_pSgG_Tg5 +_T0s22_ContiguousArrayBufferV19firstElementAddressSpyxGfgSay6SQLite7Binding_pSgG_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP8endIndexSifgTWSay6SQLite7Binding_pSgG_Tg5 +_T0s22_ContiguousArrayBufferV8endIndexSifgSay6SQLite7Binding_pSgG_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP027requestUniqueMutableBackingC0ABy7ElementQzGSgSi15minimumCapacity_tFTWSay6SQLite7Binding_pSgG_Tg5 +_T0s22_ContiguousArrayBufferV027requestUniqueMutableBackingC0AByxGSgSi15minimumCapacity_tFSay6SQLite7Binding_pSgG_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP5countSifgTWSay6SQLite7Binding_pSgG_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_nAEy6SQLite7Binding_pSgG_s07_IgnoreK0VyAMGTg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subH0_AI12initializingtFTW6SQLite7Binding_pSg_Tg5 +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtF6SQLite7Binding_pSg_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP19firstElementAddressSpy0F0QzGfgTW6SQLite7Binding_pSg_Tg5 +_T0s22_ContiguousArrayBufferV19firstElementAddressSpyxGfg6SQLite7Binding_pSg_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP8endIndexSifgTW6SQLite7Binding_pSg_Tg5 +_T0s22_ContiguousArrayBufferV8endIndexSifg6SQLite7Binding_pSg_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP027requestUniqueMutableBackingC0ABy7ElementQzGSgSi15minimumCapacity_tFTW6SQLite7Binding_pSg_Tg5 +_T0s22_ContiguousArrayBufferV027requestUniqueMutableBackingC0AByxGSgSi15minimumCapacity_tF6SQLite7Binding_pSg_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP5countSifgTW6SQLite7Binding_pSg_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0Vy6SQLite7Binding_pSgG_s07_IgnoreK0VyAOGTg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subG0_AI12initializingtFTW6SQLite7Binding_pSg_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtF6SQLite7Binding_pSg_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8endIndexSifgTW6SQLite7Binding_pSg_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP027requestUniqueMutableBackingB0s011_ContiguousaB0Vy7ElementQzGSgSi15minimumCapacity_tFTW6SQLite7Binding_pSg_Tg5 +_T0s12_ArrayBufferV027requestUniqueMutableBackingB0s011_ContiguousaB0VyxGSgSi15minimumCapacity_tF6SQLite7Binding_pSg_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vys11AnySequenceVy6SQLite7Binding_pSgGG_Tg5 +_T0s23_ContiguousArrayStorageCys11AnySequenceVy6SQLite7Binding_pSgGGMa +_T0s11AnySequenceVy6SQLite7Binding_pSgGMa +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8capacitySifgTWs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV8capacitySifgs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vys11AnySequenceVySay6SQLite7Binding_pSgGGG_Tg5 +_T0s23_ContiguousArrayStorageCys11AnySequenceVySay6SQLite7Binding_pSgGGGMa +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8capacitySifgTWs11AnySequenceVySay6SQLite7Binding_pSgGG_Tg5 +_T0s12_ArrayBufferV8capacitySifgs11AnySequenceVySay6SQLite7Binding_pSgGG_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0VySay6SQLite7Binding_pSgGG_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8capacitySifgTWSay6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV8capacitySifgSay6SQLite7Binding_pSgG_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFAEySay6SQLite7Binding_pSgGG_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP8capacitySifgTWSay6SQLite7Binding_pSgG_Tg5 +_T0s22_ContiguousArrayBufferV8capacitySifgSay6SQLite7Binding_pSgG_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFAEy6SQLite7Binding_pSgG_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP8capacitySifgTW6SQLite7Binding_pSg_Tg5 +_T0s22_ContiguousArrayBufferV8capacitySifg6SQLite7Binding_pSg_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vy6SQLite7Binding_pSgG_Tg5 +_T0Sa16_copyToNewBufferySi8oldCount_tFSay6SQLite7Binding_pSgG_Tg5 +_T0s18DictionaryIteratorV11_nativeNextx3key_q_5valuetSgyFSS_6SQLite7Binding_pSgTg5 +_T0s7UnicodeO4UTF8O13ForwardParserV14_invalidLengths5UInt8VyFTfq4x_n +_T0s13_StringBufferVABSi8capacity_Si11initialSizeSi12elementWidthtcfCTfq4nnnd_n +_T0s7UnicodeO5UTF16O16transcodedLengthSi5count_Sb7isASCIItSgx2of_q_m9decodedAsSb27repairingIllFormedSequencests16IteratorProtocolRzs01_A8EncodingR_8CodeUnitQy_7ElementRtzr0_lFZs019UnsafeBufferPointerO0Vys5UInt8VG_AB4UTF8OTgq5Tfq4xnnd_n +_copyContents +_preprocessingPass +_customContainsEquatableElement +split +suffix +dropLast +dropFirst +forEach +underestimatedCount.get +_T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_ +_T0Sr5countSifgSay6SQLite7Binding_pSgG_Tg5 +_T0Sr5countSifgSay6SQLite7Binding_pSgG_Tg5Tf4x_n +_T0Sr5countSifg6SQLite7Binding_pSg_Tg5Tf4x_n +_T0s12_ArrayBufferV9subscripts06_SliceB0VyxGs5RangeVySiGcfgTfq4xn_n6SQLite7Binding_pSg_Tg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZs0D5SliceVy6SQLite7Binding_pSgG_Tg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZTfq4gnn_ns0D5SliceVy6SQLite7Binding_pSgG_Tg5 +_T0s23_ContiguousArrayStorageCys0B5SliceVy6SQLite7Binding_pSgGGMa +_T0Sa11_checkIndexySiF6SQLite7Binding_pSg_Tg5 +_T0Sa18_getElementAddressSpyxGSiF6SQLite7Binding_pSg_Tg5 +_T0Sa29_makeMutableAndUniqueOrPinnedyyF6SQLite7Binding_pSg_Tg5 +_T0Sa11_copyBufferys06_ArrayB0VyxGzFZ6SQLite7Binding_pSg_Tg5 +_T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA.40 +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtFSay6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tFSay6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV9subscripts06_SliceB0VyxGs5RangeVySiGcfgTfq4xn_nSay6SQLite7Binding_pSgG_Tg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZs0D5SliceVySay6SQLite7Binding_pSgGG_Tg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZTfq4gnn_ns0D5SliceVySay6SQLite7Binding_pSgGG_Tg5 +_T0s23_ContiguousArrayStorageCys0B5SliceVySay6SQLite7Binding_pSgGGGMa +_T0Sa11_checkIndexySiFSay6SQLite7Binding_pSgG_Tg5 +_T0Sa18_getElementAddressSpyxGSiFSay6SQLite7Binding_pSgG_Tg5 +_T0Sa29_makeMutableAndUniqueOrPinnedyyFSay6SQLite7Binding_pSgG_Tg5 +_T0Sa11_copyBufferys06_ArrayB0VyxGzFZSay6SQLite7Binding_pSgG_Tg5 +_T0s12_SequenceBoxCys07_PrefixA0Vys11AnyIteratorVy6SQLite7Binding_pSgGGGMa +_T0s15_PrefixSequenceVys11AnyIteratorVy6SQLite7Binding_pSgGGAByxGs0B0ss0D8ProtocolRzlWl +_T0s12_SequenceBoxCys15EmptyCollectionVy6SQLite7Binding_pSgGGMa +_T0s15EmptyCollectionVy6SQLite7Binding_pSgGAByxGs8SequenceslWl +_T0s15EmptyCollectionVy6SQLite7Binding_pSgGMa +_T0s8SequencePssAARz03SubA0_7ElementQZADRtzsAaCRpzAC_ACQZAGRSlE4drops03AnyA0VyAFGSbAFKc5while_tKFTfq4gn_n6SQLite9StatementC_Tg5 +_T0s18_DropWhileSequenceVAByxGx8iterator_7ElementQzSg04nextE0SbAFKc9predicatetKcfC6SQLite9StatementC_Tg5 +_T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA.60 +_T0s12_SequenceBoxCy6SQLite6CursorVGMa +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktFSay6SQLite7Binding_pSgG_Tg5 +_T0s12_SequenceBoxCy6SQLite9StatementCGMa +_T0s12_SequenceBoxCys010_DropFirstA0Vys11AnyIteratorVy6SQLite7Binding_pSgGGGMa +_T0s18_DropFirstSequenceVys11AnyIteratorVy6SQLite7Binding_pSgGGAByxGs0C0ss0E8ProtocolRzlWl +_T06SQLite9StatementC4stepSbyKFSbyKcfU_ +_T06SQLite9StatementC4stepSbyKFSbyKcfU_Tf4g_n +step +row.materialize +row.set +columnNames.materialize +columnNames.set +columnCount.materialize +columnCount.set +columnNames.get +_T0s10CollectionPsE3mapSayqd__Gqd__7ElementQzKcKlFTfq4gn_ns14CountableRangeVys5Int32VG_SSTg5 +_T0s5Int32VSSs5Error_pIxyozo_ABSSsAC_pIxirzo_TR +_T06SQLite9StatementC11columnNamesSaySSGfgSSs5Int32VcfU_ +_T0s14CountableRangeVyxGs14_IndexableBasess10ComparableRzs11_StrideableRzs13SignedInteger6StridesAFPRpzlsADP9formIndexy0K0Qzz5after_tFTWs5Int32V_Tg5 +_T0s10_IndexablePsE9formIndexy0C0Qzz5after_tFs14CountableRangeVys5Int32VG_Tg5 +_T0s14CountableRangeVyxGs14_IndexableBasess10ComparableRzs11_StrideableRzs13SignedInteger6StridesAFPRpzlsADP5index5IndexQzAN5after_tFTWs5Int32V_Tg5 +_T0s14CountableRangeV5indexxx5after_tFs5Int32V_Tg5 +_T0s10_IndexablePsE20_failEarlyRangeChecky5IndexQz_s0D0VyAEG6boundstFTfq4ngd_ns09CountableD0Vys5Int32VG_Tg5 +_T0s5Int32Vs11_StrideablessACP8advancedx6StrideQz2by_tFTW +_T0s14CountableRangeVyxGs10Collectionss10ComparableRzs11_StrideableRzs13SignedInteger6StridesAFPRpzlsADP5count13IndexDistanceQzfgTWs5Int32V_Tg5 +_T0s14CountableRangeVyxGs10Collectionss10ComparableRzs11_StrideableRzs13SignedInteger6StridesAFPRpzlsADP8distance13IndexDistanceQz0J0Qz4from_AP2totFTWs5Int32V_Tg5 +_T0s14CountableRangeV8distance6Strides11_StrideablePQzx4from_x2totFs5Int32V_Tg5 +_T0s5Int32Vs11_StrideablessACP8distance6StrideQzx2to_tFTW +__T06SQLite14ExpressionTypePA2aBRzAA5Value010UnderlyingC0Rpzs10ComparableAE_8DatatypeRPzlE3maxAA0B0VyAFSgGfgTm +__T06SQLite14ExpressionTypePA2aBRzAA09_OptionalC0010UnderlyingC0RpzAA5ValueAE_07WrappedC0RPzlE5countAA0B0VySiGfgTm +__T06SQLite14ExpressionTypePA2aBRzAA09_OptionalC0010UnderlyingC0RpzAA5ValueAE_07WrappedC0RPzs10ComparableAE_AH8DatatypeRPzlE3maxAA0B0VyAFGfgTm +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/AggregateFunctions.swift +AggregateFunctions.swift +total.get +max.get +average.get +distinct.get +__T06SQLite10FTS5ConfigC6DetailOs9EquatableAAsAFP2eeoiSbx_xtFZTW +__T06SQLite10FTS5ConfigC6DetailOs8HashableAAsAFP9hashValueSifgTW +__T06SQLite10FTS5ConfigC6DetailOs23CustomStringConvertibleAAsAFP11descriptionSSfgTW +__T06SQLite10FTS5ConfigCfE +__T06SQLite10FTS5ConfigC6DetailOwxs +__T06SQLite10FTS5ConfigC6DetailOwxg +__T06SQLite10FTS5ConfigC6DetailOwug +__T06SQLite10FTS5ConfigC6DetailOwup +__T06SQLite10FTS5ConfigC6DetailOwui +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFAEy6SQLite11Expressible_pG_Tg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_nAEy6SQLite11Expressible_pG_s07_IgnoreK0VyAkL_pGTg5 +__T06SQLite10FTS5ConfigC6detailAC6DetailOSgvWvd +__T06SQLite10FTS5ConfigC12contentRowIdAA11Expressible_pSgvWvd +__T06SQLite10FTS5ConfigC10columnSizeSiSgvWvd +__T06SQLite10FTS5ConfigCML +__T06SQLite10FTS5ConfigCMf +__T06SQLite10FTS5ConfigC6DetailOWV +__T06SQLite10FTS5ConfigC6DetailOML +__T06SQLite10FTS5ConfigC6DetailOMf +__T06SQLite10FTS5ConfigC6DetailOMF +__T06SQLite10FTS5ConfigCMF +__T06SQLite10FTS5ConfigC6DetailOSgML +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Extensions/FTS5.swift +FTS5.swift +_T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tF6SQLite11Expressible_p_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_nAEy6SQLite11Expressible_pG_s07_IgnoreK0VyAkL_pGTg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subH0_AI12initializingtFTW6SQLite11Expressible_p_Tg5 +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtF6SQLite11Expressible_p_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP19firstElementAddressSpy0F0QzGfgTW6SQLite11Expressible_p_Tg5 +_T0s22_ContiguousArrayBufferV19firstElementAddressSpyxGfg6SQLite11Expressible_p_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP8endIndexSifgTW6SQLite11Expressible_p_Tg5 +_T0s22_ContiguousArrayBufferV8endIndexSifg6SQLite11Expressible_p_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP027requestUniqueMutableBackingC0ABy7ElementQzGSgSi15minimumCapacity_tFTW6SQLite11Expressible_p_Tg5 +_T0s22_ContiguousArrayBufferV027requestUniqueMutableBackingC0AByxGSgSi15minimumCapacity_tF6SQLite11Expressible_p_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP5countSifgTW6SQLite11Expressible_p_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFAEy6SQLite11Expressible_pG_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP8capacitySifgTW6SQLite11Expressible_p_Tg5 +_T0s22_ContiguousArrayBufferV8capacitySifg6SQLite11Expressible_p_Tg5 +_T0s15ContiguousArrayV15reserveCapacityySiF6SQLite11Expressible_p_Tg5 +initialize_metadata_Detail +_T06SQLite10FTS5ConfigCMa +_T06SQLite10FTS5ConfigC6DetailOMa +get_field_types_Detail +_T06SQLite10FTS5ConfigC6DetailOwui +_T06SQLite10FTS5ConfigC6DetailOwup +_T06SQLite10FTS5ConfigC6DetailOwug +_T06SQLite10FTS5ConfigC6DetailOwxg +_T06SQLite10FTS5ConfigC6DetailOwxs +get_field_types_FTS5Config +_T06SQLite10FTS5ConfigC6DetailOSgMa +_T06SQLite10FTS5ConfigC6DetailOs23CustomStringConvertibleAAWa +_T06SQLite10FTS5ConfigC6DetailOs8HashableAAWa +_T06SQLite10FTS5ConfigC6DetailOs9EquatableAAWa +_T06SQLite10FTS5ConfigC23formatColumnDefinitionsSayAA11Expressible_pGyFAaE_pAaE_p_SayAA9FTSConfigC0E6OptionOG7optionstcfU_ +detail +columnSize +contentRowId +FTS5 +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Extensions/Cipher.swift +__T06SQLite10QueryErrorOWy +__T06SQLite10QueryErrorOWy.1 +__T06SQLite10QueryErrorOs0C0AAsADP7_domainSSfgTW +__T06SQLite10QueryErrorOs0C0AAsADP5_codeSifgTW +__T06SQLite10QueryErrorOs0C0AAsADP9_userInfoyXlSgfgTW +__T06SQLite10QueryErrorOs0C0AAsADP5_codeSifgTWTm +__T06SQLite10QueryErrorOs0C0AAsADP19_getEmbeddedNSErroryXlSgyFTW +__T06SQLite10QueryErrorOs23CustomStringConvertibleAAsADP11descriptionSSfgTW +__T0s26_toStringReadOnlyPrintableSSxs06CustomB11ConvertibleRzlFTfq4g_nSaySSG_Tg5 +__T0Sa16_makeDescriptionSSSb7isDebug_tFTfq4dn_nSS_Tg5 +__T06SQLite10QueryErrorOwXX +__T06SQLite10QueryErrorOwCP +__T06SQLite10QueryErrorOwpr +__T06SQLite10QueryErrorOwde +__T06SQLite10QueryErrorOwxx +__T06SQLite10QueryErrorOwCp +__T06SQLite10QueryErrorOwcp +__T06SQLite10QueryErrorOwca +__T06SQLite10QueryErrorOwTk +___swift_memcpy33_8 +__T06SQLite10QueryErrorOwta +__T06SQLite10QueryErrorOwal +__T06SQLite10QueryErrorOwXx +__T06SQLite10QueryErrorOwCc +__T06SQLite10QueryErrorOwug +__T06SQLite10QueryErrorOwup +__T06SQLite10QueryErrorOwui +__T06SQLite10QueryErrorOWV +__T06SQLite10QueryErrorOMf +__T06SQLite10QueryErrorOMF +__T0SS4name_tML +__T0SS4name_SaySSG7columnstML +__T0SS4name_SaySSG7similartML +__T06SQLite10QueryErrorOmML +__T0s23_ContiguousArrayStorageCyypGML +__T06SQLite10QueryErrorOMB +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Errors.swift +_T06SQLite10QueryErrorOMa +Errors.swift +get_field_types_QueryError +_T0SS4name_SaySSG7similartMa +_T0SS4name_SaySSG7columnstMa +_T0SS4name_tMa +_T06SQLite10QueryErrorOwui +_T06SQLite10QueryErrorOwup +_T06SQLite10QueryErrorOwug +_T06SQLite10QueryErrorOwCc +_T06SQLite10QueryErrorOwXx +_T06SQLite10QueryErrorOwal +_T06SQLite10QueryErrorOwta +__swift_memcpy33_8 +_T06SQLite10QueryErrorOwTk +_T06SQLite10QueryErrorOwca +_T06SQLite10QueryErrorOwcp +_T06SQLite10QueryErrorOwCp +_T06SQLite10QueryErrorOwxx +_T06SQLite10QueryErrorOwde +_T06SQLite10QueryErrorOwpr +_T06SQLite10QueryErrorOwCP +_T06SQLite10QueryErrorOwXX +_T06SQLite10QueryErrorOs23CustomStringConvertibleAAWa +_T06SQLite10QueryErrorOs0C0AAWa +_T0Sa16_makeDescriptionSSSb7isDebug_tFTfq4dn_nSS_Tg5 +_T0s23_ContiguousArrayStorageCyypGMa +_T0s26_toStringReadOnlyPrintableSSxs06CustomB11ConvertibleRzlFTfq4g_nSaySSG_Tg5 +_T0SayxGs23CustomStringConvertibleslsABP11descriptionSSfgTWSS_Tg5 +_T0Sa11descriptionSSfgSS_Tg5 +_T06SQLite10QueryErrorOmMa +__T010Foundation4DateV6SQLiteE4dateAD10ExpressionVyACSgGfgTm +__T06SQLite10ExpressionVAA10Foundation4DateVRszlE4dateACyAFGfgTm +__T0Sis13BinaryIntegerssAAP1poixx_xtFZTW +__T0s15_arrayForceCastSayq_GSayxGr0_lFTfq4g_nSS_6SQLite7Binding_pSgTg5 +__T0s15_arrayForceCastSayq_GSayxGr0_lFq_xcfU_SS_6SQLite7Binding_pSgTG5 +__T06SQLite13DateFunctionsC12timefunction33_3D9A7DDFD1DBFF80DDF2749686001716LLAA10ExpressionVy10Foundation0B0VSgGSS_SS10timestringSaySSG9modifierstFZTf4gXgXgd_n +__T06SQLite13DateFunctionsCML +__T06SQLite13DateFunctionsCMf +__T06SQLite13DateFunctionsCMF +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/DateAndTimeFunctions.swift +DateAndTimeFunctions.swift +_T06SQLite13DateFunctionsCMa +get_field_types_DateFunctions +timefunction +_arrayForceCast +_T0SayxGs26RangeReplaceableCollectionslsABP15reserveCapacityy13IndexDistanceQzFTWSS_Tg5 +_T0s15_arrayForceCastSayq_GSayxGr0_lFq_xcfU_SS_6SQLite7Binding_pSgTG5 +_T0s15_arrayForceCastSayq_GSayxGr0_lFq_xcfU_SS_6SQLite7Binding_pSgTg5 +_T0s15_arrayForceCastSayq_GSayxGr0_lFTfq4g_nSS_6SQLite7Binding_pSgTg5 +_T0s10CollectionPsE3mapSayqd__Gqd__7ElementQzKcKlFTfq4gn_nSaySSG_6SQLite7Binding_pSgTg5 +_T0Sa15reserveCapacityySiFSS_Tg5 +_T0s22_ContiguousArrayBufferV18_initStorageHeaderySi5count_Si8capacitytFSS_Tg5 +_T0s15ContiguousArrayV15reserveCapacityySiF6SQLite7Binding_pSg_Tg5 +date.get +date +strftime +julianday +datetime +time +/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/DerivedSources/SQLite_vers.c +__ZL15__ARCLite__loadv +__ZL58__arclite_NSMutableDictionary__setObject_forKeyedSubscriptP19NSMutableDictionaryP13objc_selectorP11objc_objectS4_ +__ZL22add_image_hook_swiftV1PK11mach_headerl +__ZL42__arclite_NSUndoManagerProxy_isKindOfClassP11objc_objectP13objc_selectorP10objc_class +__ZL13replaceMethodP10objc_classP13objc_selectorPFP11objc_objectS4_S2_zEPS6_ +__ZL30__arclite_NSManagedObject_initP11objc_objectP13objc_selector +__ZL41__arclite_NSManagedObject_allocWithEntityP11objc_objectP13objc_selectorS0_ +__ZL36__arclite_NSManagedObject_allocBatchP11objc_objectP13objc_selectorPS0_S0_j +__ZL37__arclite_NSKKMS_fastIndexForKnownKeyP11objc_objectP13objc_selectorS0_ +__ZL28__arclite_NSKKMS_indexForKeyP11objc_objectP13objc_selectorS0_ +__ZL29__arclite_NSKKsD_objectForKeyP11objc_objectP13objc_selectorS0_ +__ZL35__arclite_NSKKsD_removeObjectForKeyP11objc_objectP13objc_selectorS0_ +__ZL33__arclite_NSKKsD_setObject_forKeyP11objc_objectP13objc_selectorS0_S0_ +__ZL41__arclite_NSKKsD_addEntriesFromDictionaryP11objc_objectP13objc_selectorP12NSDictionary +__ZL28__arclite_objc_readClassPairP10objc_classPK15objc_image_info +__ZL32__arclite_objc_allocateClassPairP10objc_classPKcm +__ZL32__arclite_object_getIndexedIvarsP11objc_object +__ZL23__arclite_objc_getClassPKc +__ZL27__arclite_objc_getMetaClassPKc +__ZL31__arclite_objc_getRequiredClassPKc +__ZL26__arclite_objc_lookUpClassPKc +__ZL26__arclite_objc_getProtocolPKc +__ZL23__arclite_class_getNameP10objc_class +__ZL26__arclite_protocol_getNameP8Protocol +__ZL37__arclite_objc_copyClassNamesForImagePKcPj +__ZL17transcribeMethodsP10objc_classP15glue_class_ro_t +__ZL19transcribeProtocolsP10objc_classP15glue_class_ro_t +__ZL20transcribePropertiesP10objc_classP15glue_class_ro_t +__ZL14initialize_impP11objc_objectP13objc_selector +__ZL18allocateMaybeSwiftP18glue_swift_class_tm +__ZL22copySwiftV1MangledNamePKcb +__ZL13demangledNamePKcb +__ZL16scanMangledFieldRPKcS0_S1_Ri +__ZL30arclite_uninitialized_functionv +__ZL12cxxConstructP11objc_object +__ZL20fixStringForCoreDataP11objc_object +_OBJC_METACLASS_$___ARCLite__ +__ZL24OBJC_CLASS_$___ARCLite__ +__ZL31OBJC_METACLASS_RO_$___ARCLite__ +__non_lazy_classes +__ZL27OBJC_CLASS_RO_$___ARCLite__ +__ZL11_class_name +__ZL32OBJC_$_CLASS_METHODS___ARCLite__ +__ZL17_load_method_name +__ZL17_load_method_type +l_OBJC_PROTOCOL_$___ARCLiteKeyedSubscripting__ +l_OBJC_LABEL_PROTOCOL_$___ARCLiteKeyedSubscripting__ +l_OBJC_PROTOCOL_REFERENCE_$___ARCLiteKeyedSubscripting__ +__ZL30NSUndoManagerProxy_targetClass +__ZL29original_NSManagedObject_init +__ZL40original_NSManagedObject_allocWithEntity +__ZL35original_NSManagedObject_allocBatch +__ZL25NSMutableDictionary_class +__ZL22NSConstantString_class +__ZL14NSString_class +__ZL36original_NSKKMS_fastIndexForKnownKey +__ZL27original_NSKKMS_indexForKey +__ZL28original_NSKKsD_objectForKey +__ZL34original_NSKKsD_removeObjectForKey +__ZL32original_NSKKsD_setObject_forKey +__ZL40original_NSKKsD_addEntriesFromDictionary +__ZZL22add_image_hook_swiftV1PK11mach_headerlE7patches +__ZGVZL22add_image_hook_swiftV1PK11mach_headerlE7patches +__ZL31original_objc_allocateClassPair +__ZL31original_object_getIndexedIvars +__ZL22original_objc_getClass +__ZL26original_objc_getMetaClass +__ZL30original_objc_getRequiredClass +__ZL25original_objc_lookUpClass +__ZL25original_objc_getProtocol +__ZL22original_class_getName +__ZL25original_protocol_getName +__ZL36original_objc_copyClassNamesForImage +__ZL12demangleLock +__ZL9Demangled +/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x objective-c++ -arch arm64 -fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -std=c++11 -Wno-trigraphs -fno-exceptions -fno-rtti -fno-sanitize=vptr -mpascal-strings -Os -Wno-missing-field-initializers -Wmissing-prototypes -Wno-implicit-atomic-properties -Wno-arc-repeated-use-of-weak -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wno-missing-braces -Wparentheses -Wswitch -Wno-unused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wno-empty-body -Wno-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wno-constant-conversion -Wno-int-conversion -Wno-bool-conversion -Wno-enum-conversion -Wno-float-conversion -Wno-non-literal-null-conversion -Wno-objc-literal-conversion -Wshorten-64-to-32 -Wno-newline-eof -Wno-selector -Wno-strict-selector-match -Wno-undeclared-selector -Wno-deprecated-implementations -Wno-c++11-extensions -D NDEBUG=1 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.Internal.sdk -fstrict-aliasing -Wprotocol -Wdeprecated-declarations -Winvalid-offsetof -miphoneos-version-min=4.3 -g -fno-threadsafe-statics -Wno-sign-conversion -Wno-infinite-recursion -Wno-move -Wno-comma -Wno-block-capture-autoreleasing -Wno-strict-prototypes -Wno-range-loop-analysis -fembed-bitcode=all -iquote /Library/Caches/com.apple.xbs/Binaries/arclite_iOS/install/TempContent/Objects/arclite.build/arclite_iOS.build/arclite_iphoneos-generated-files.hmap -I /Library/Caches/com.apple.xbs/Binaries/arclite_iOS/install/TempContent/Objects/arclite.build/arclite_iOS.build/arclite_iphoneos-own-target-headers.hmap -I /Library/Caches/com.apple.xbs/Binaries/arclite_iOS/install/TempContent/Objects/arclite.build/arclite_iOS.build/arclite_iphoneos-all-target-headers.hmap -iquote /Library/Caches/com.apple.xbs/Binaries/arclite_iOS/install/TempContent/Objects/arclite.build/arclite_iOS.build/arclite_iphoneos-project-headers.hmap -I /Library/Caches/com.apple.xbs/Binaries/arclite_iOS/install/Symbols/BuiltProducts/include -I /Library/Caches/com.apple.xbs/Binaries/arclite_iOS/install/TempContent/Objects/arclite.build/arclite_iOS.build/DerivedSources/arm64 -I /Library/Caches/com.apple.xbs/Binaries/arclite_iOS/install/TempContent/Objects/arclite.build/arclite_iOS.build/DerivedSources -F/Library/Caches/com.apple.xbs/Binaries/arclite_iOS/install/Symbols/BuiltProducts -iframework /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.Internal.sdk/System/Library/PrivateFrameworks -Wall -Wextra -Wno-gcc-compat -Wno-error=incomplete-umbrella -Wno-error=invalid-ios-deployment-target -Wno-error=incomplete-umbrella -Wno-error=invalid-ios-deployment-target -MMD -MT dependencies -MF /Library/Caches/com.apple.xbs/Binaries/arclite_iOS/install/TempContent/Objects/arclite.build/arclite_iOS.build/Objects-normal/arm64/arclite.d --serialize-diagnostics /Library/Caches/com.apple.xbs/Binaries/arclite_iOS/install/TempContent/Objects/arclite.build/arclite_iOS.build/Objects-normal/arm64/arclite.dia -c /Library/Caches/com.apple.xbs/Sources/arclite_iOS/arclite-67/source/arclite.mm -o /Library/Caches/com.apple.xbs/Binaries/arclite_iOS/install/TempContent/Objects/arclite.build/arclite_iOS.build/Objects-normal/arm64/arclite.o -mlinker-version=302.3.1 +/Library/Caches/com.apple.xbs/Sources/arclite_iOS/arclite-67/source/arclite.mm +/Library/Caches/com.apple.xbs/Sources/arclite_iOS/arclite-67 +fixStringForCoreData +cxxConstruct +arclite_uninitialized_function +scanMangledField +isdigit +/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.Internal.sdk/usr/include/ctype.h +__isctype +demangledName +copySwiftV1DemangledName +copySwiftV1MangledName +allocateMaybeSwift +word_align +isSwift +initialize_imp +transcribeProperties +property_list_nth +transcribeProtocols +transcribeMethods +data +method_list_nth +__arclite_objc_copyClassNamesForImage +__arclite_protocol_getName +__arclite_class_getName +__arclite_objc_getProtocol +__arclite_objc_lookUpClass +__arclite_objc_getRequiredClass +__arclite_objc_getMetaClass +__arclite_objc_getClass +__arclite_object_getIndexedIvars +__arclite_objc_allocateClassPair +metaclass +__arclite_objc_readClassPair +transcribeIvars +ivar_list_nth +max +alignment +ro +fastFlags +__arclite_NSKKsD_addEntriesFromDictionary +__arclite_NSKKsD_setObject_forKey +__arclite_NSKKsD_removeObjectForKey +__arclite_NSKKsD_objectForKey +__arclite_NSKKMS_indexForKey +__arclite_NSKKMS_fastIndexForKnownKey +__arclite_NSManagedObject_allocBatch +__arclite_NSManagedObject_allocWithEntity +__arclite_NSManagedObject_init +replaceMethod +__arclite_NSUndoManagerProxy_isKindOfClass +add_image_hook_swiftV1 +patch_lazy_pointers +patch_t +patch_t +patch_t +patch_t +patch_t +patch_t +patch_t +patch_t +__arclite_NSMutableDictionary__setObject_forKeyedSubscript +__ARCLite__load +install_swiftV1 +install_dict_nil_value +addOrReplaceMethod +keyedGetter diff --git a/Carthage/Build/iOS/7430C825-EAE4-3BE0-BBD2-3770390308D2.bcsymbolmap b/Carthage/Build/iOS/7430C825-EAE4-3BE0-BBD2-3770390308D2.bcsymbolmap new file mode 100644 index 0000000..6334be6 --- /dev/null +++ b/Carthage/Build/iOS/7430C825-EAE4-3BE0-BBD2-3770390308D2.bcsymbolmap @@ -0,0 +1,4908 @@ +BCSymbolMap Version: 2.0 +____SQLiteRegisterTokenizer_block_invoke +___SQLiteTokenizerCreate +___SQLiteTokenizerDestroy +___SQLiteTokenizerOpen +___SQLiteTokenizerClose +___SQLiteTokenizerNext +___llvm_profile_runtime_user +__SQLiteRegisterTokenizer.onceToken +___SQLiteTokenizerMap +___block_descriptor_tmp +___block_literal_global +___SQLiteTokenizerModule +___llvm_coverage_mapping +Apple LLVM version 9.0.0 (clang-900.0.38) +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLiteObjc/SQLite-Bridging.m +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift +__SQLiteTokenizerNext +__SQLiteTokenizerClose +__SQLiteTokenizerOpen +__SQLiteTokenizerDestroy +__SQLiteTokenizerCreate +___SQLiteRegisterTokenizer_block_invoke +_SQLiteRegisterTokenizer +_dispatch_once +/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk/usr/include/dispatch/once.h +_swift_rt_swift_retain +_swift_rt_swift_release +__T0SS6SQLiteE4wrapAA10ExpressionVyxGAA11Expressible_plFSd_Tg5 +__T0SS6SQLiteE4wrapAA10ExpressionVyxGAA11Expressible_plFSdSg_Tg5 +__T0SS6SQLiteE4wrapAA10ExpressionVyxGAA11Expressible_plF10Foundation4DataV_Tg5 +__T0SS6SQLiteE4wrapAA10ExpressionVyxGAA11Expressible_plFSi_Tg5 +__T0SS6SQLiteE4wrapAA10ExpressionVyxGAA11Expressible_plFSiSg_Tg5 +__T0SS6SQLiteE4wrapAA10ExpressionVyxGAA11Expressible_plFSS_Tg5 +__T0SS6SQLiteE4wrapAA10ExpressionVyxGAA11Expressible_plFSSSg_Tg5 +__T0SS6SQLiteE4wrapAA10ExpressionVyxGAA11Expressible_plF +___swift_allocate_boxed_opaque_existential_1 +_swift_rt_swift_getExistentialTypeMetadata +__T06SQLite14ExpressionTypePA2aBRz10Foundation4DataV010UnderlyingC0RtzlE6randomAA0B0VyAFGSiFZTm +__T0SS6SQLiteE5infixAA10ExpressionVyxGAA11Expressible_p_AaF_pSb4wraptlFSb_Tg5 +__T0SS6SQLiteE5infixAA10ExpressionVyxGAA11Expressible_p_AaF_pSb4wraptlFSS_Tg5 +__T0SS6SQLiteE5infixAA10ExpressionVyxGAA11Expressible_p_AaF_pSb4wraptlFSbSg_Tg5 +__T0SS6SQLiteE5infixAA10ExpressionVyxGAA11Expressible_p_AaF_pSb4wraptlFSSSg_Tg5 +__T06SQLite14ExpressionTypePA2aBRz10Foundation4DataV010UnderlyingC0RtzlE6lengthAA0B0VySiGfgTm +__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE15lowercaseStringAA0B0VySSGfgTm +__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE4likeAA0B0VySbGSS_s9CharacterVSg6escapetFTm +__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE4likeAA0B0VySbGAHySSG_s9CharacterVSg6escapetFTm +__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE4globAA0B0VySbGSSFTm +__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE7collateAA0B0VySSGAA9CollationOFTm +__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE5ltrimAA0B0VySSGs3SetVys9CharacterVGSgFTm +__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE7replaceAA0B0VySSGSS_SS4withtFTm +__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE9substringAA0B0VySSGSi_SiSg6lengthtFTm +__T0Sa6appendyqd__10contentsOf_t7ElementQyd__Rszs8SequenceRd__lF6SQLite7Binding_pSg_SayAHGTg5 +__T0SS6SQLiteE4joinAA11Expressible_pSayAaC_pGF +__T0S2SSaySSG19stringInterpolationd_tcfCTfq4nd_n +__T0s11_StringCoreV6appendyABFTfq4gXn_n +__T0s8SequencePsE8containsS2b7ElementQzKc5where_tKFSRys6UInt16VG_Tgq505_T0s6E37VSbs5Error_pIxydzo_ABSbsAC_pIxidzo_TRAHSbs0H0_pIxydzo_Tfq1cn_nTfq4ng_n +__T0S2Ss9CharacterVcfCTfq4nd_n +__T0s13_StringBufferV13fromCodeUnitsABSg_Sb8hadErrortx_q_m8encodingSb24repairIllFormedSequencesSi15minimumCapacityts8SequenceRzs16_UnicodeEncodingR_0D4UnitQy_7ElementRtzr0_lFZs05_UIntB0Vys6UInt64Vs6UInt16VG_s0P0O5UTF16OTgq5Tfq4xnnnd_n +__T0SS13CharacterViewV6appendyx10contentsOf_ts8SequenceRzs0A0V7ElementRtzlFs3SetVyAGG_Tg5 +__T0s11_StringCoreV6appendyx10contentsOf_ts8SequenceRzs6UInt16V7ElementRtzlFs11_UIntBufferVys6UInt64VAGG_Tgq5Tfq4xn_n +__T0s10CollectionPsE5count13IndexDistanceQzfgSS9UTF16ViewV_Tgq5 +__T0s8SequencePssAARzs14StringProtocol7ElementRpzlE7_joinedS2S9separator_tFSiycfU_SaySSG_Tg5 +__T0s20_ArrayBufferProtocolPsE20_arrayAppendSequenceyqd__s0F0Rd__7ElementQyd__AERtzlFTfq4gn_ns01_aB0Vy6SQLite7Binding_pSgG_s08IteratorF0Vys08IndexingJ0VySayALGGGTg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vy6SQLite7Binding_pSgG_Tg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0Vy6SQLite7Binding_pSgG_s07_IgnoreK0VyAOGTg5 +__T0Sa15reserveCapacityySiF6SQLite7Binding_pSg_Tg5 +__T0s27_toStringReadOnlyStreamableSSxs010TextOutputE0RzlFTfq4g_nSS_Tg5Tf4n_g +__T0s23BidirectionalCollectionPssAARzSS7ElementRtzlE6joinedS2S9separator_tFSaySSG_Tg5Tf4gXn_n +__T0SS6SQLiteE4wrapAA10ExpressionVyxGSayAA11Expressible_pGlFTf4gn_n +_swift_rt_swift_deallocObject +_swift_rt_swift_allocObject +__T0Sa28_allocateBufferUninitializeds06_ArrayB0VyxGSi15minimumCapacity_tFZSS_Tg5Tf4nd_n +__T0S2ayxGx9repeating_Si5counttcfCSS_Tg5Tf4gXnd_n +__T0s10CollectionP6SQLitesAARzAC5Value7ElementRpzSi13IndexDistanceRtzlE8containsAC10ExpressionVySbGAKyAFGFAC7Binding_pSgAFcfU_TA +__T0s10CollectionP6SQLitesAARzAC5Value7ElementRpzSi13IndexDistanceRtzlE8containsAC10ExpressionVySbSgGAKyAFSgGFAC7Binding_pSgAFcfU_TA +__T0s10CollectionP6SQLitesAARzAC5Value7ElementRpzSi13IndexDistanceRtzlE8containsAC10ExpressionVySbGAKyAFGFAC7Binding_pSgAFcfU_TATm +__T06SQLite2qqoiAA10ExpressionVyxGADyxSgG_xtAA5ValueRzlFTf4gg_n +__T06SQLite2qqoiAA10ExpressionVyxGADyxSgG_AEtAA5ValueRzlFTf4gg_n +__T06SQLite2qqoiAA10ExpressionVyxGADyxSgG_AGtAA5ValueRzlFTf4gg_n +__T0s23_NativeDictionaryBufferVss8HashableRzr0_lE9fromArrayAByxq_GSayx_q_tGFZTfq4gn_ns17CodingUserInfoKeyV_ypTg5Tf4nd_n +__T0s16_NativeSetBufferVss8HashableRzlE9fromArrayAByxGSayxGFZTfq4gn_ns9CharacterV_Tg5Tf4nd_n +_swift_rt_swift_storeEnumTagSinglePayload +___swift_destroy_boxed_opaque_existential_0 +__swift_dead_method_stub +___swift_destroy_boxed_opaque_existential_1 +_swift_rt_swift_release_n +_swift_rt_swift_retain_n +_globalinit_33_6C6C58A93ECDD528D3D6564FAC7933BD_token0 +_globalinit_33_79F5A2E9E6411E14122CA7C8A9C356C7_token1 +_globalinit_33_79F5A2E9E6411E14122CA7C8A9C356C7_token2 +_globalinit_33_55DAAD62B9B6B0C7112F93C647075291_token3 +_globalinit_33_6574432B243886442F79BBD7FC6A56C2_token4 +_globalinit_33_5F0FD0443FF5032238ECC00E64F41F5E_token5 +_globalinit_33_5F0FD0443FF5032238ECC00E64F41F5E_token6 +_globalinit_33_5F0FD0443FF5032238ECC00E64F41F5E_token7 +_globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_token8 +_globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_token9 +_globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_token10 +_globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_token11 +_globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_token12 +_globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_token13 +_globalinit_33_14CB4A30965D85E6DF5BEBC63D2EB0EA_token14 +_globalinit_33_14CB4A30965D85E6DF5BEBC63D2EB0EA_token15 +_globalinit_33_14CB4A30965D85E6DF5BEBC63D2EB0EA_token16 +__T0s23_ContiguousArrayStorageCy6SQLite11Expressible_pGML +__T06SQLite11Expressible_pML +__T0s23_ContiguousArrayStorageCySSGML +__T0s23_ContiguousArrayStorageCy6SQLite7Binding_pSgGML +__T06SQLite7Binding_pSgML +__T06SQLite7Binding_pML +__T06SQLite10ExpressionVySSGML +__T06SQLite10ExpressionVyytGML +__swift_FORCE_LOAD_$_swiftFoundation_$_SQLite +__swift_FORCE_LOAD_$_swiftObjectiveC_$_SQLite +__swift_FORCE_LOAD_$_swiftDarwin_$_SQLite +__swift_FORCE_LOAD_$_swiftCoreFoundation_$_SQLite +__swift_FORCE_LOAD_$_swiftDispatch_$_SQLite +__T0s30_HashableTypedNativeSetStorageCys9CharacterVGML +__T0s17_HeapBufferHeaderVys07_StringB5IVarsVGML +__T0s37_HashableTypedNativeDictionaryStorageCys17CodingUserInfoKeyVypGML +__T0ypML +__T0s13ManagedBufferCys05_HeapB6HeaderVys07_StringB5IVarsVGs6UInt16VGML +___swift_reflection_version +___profc__T06SQLite14ExpressionTypePA2aBRzAA6Number010UnderlyingC0RpzlE13absoluteValueAA0B0VyAFGfg +___profd__T06SQLite14ExpressionTypePA2aBRzAA6Number010UnderlyingC0RpzlE13absoluteValueAA0B0VyAFGfg +___profc__T06SQLite14ExpressionTypePA2aBRzAA09_OptionalC0010UnderlyingC0RpzAA6NumberAE_07WrappedC0RPzlE13absoluteValueAA0B0VyAFGfg +___profd__T06SQLite14ExpressionTypePA2aBRzAA09_OptionalC0010UnderlyingC0RpzAA6NumberAE_07WrappedC0RPzlE13absoluteValueAA0B0VyAFGfg +___profc__T06SQLite14ExpressionTypePA2aBRzSd010UnderlyingC0RtzlE5roundAA0B0VySdGSiSgF +___profd__T06SQLite14ExpressionTypePA2aBRzSd010UnderlyingC0RtzlE5roundAA0B0VySdGSiSgF +___profc__T06SQLite14ExpressionTypePA2aBRzSdSg010UnderlyingC0RtzlE5roundAA0B0VyADGSiSgF +___profd__T06SQLite14ExpressionTypePA2aBRzSdSg010UnderlyingC0RtzlE5roundAA0B0VyADGSiSgF +___profc__T06SQLite14ExpressionTypePA2aBRzAA5Value010UnderlyingC0Rpzs5Int64VAE_8DatatypeRTzlE6randomAA0B0VyAFGyFZ +___profd__T06SQLite14ExpressionTypePA2aBRzAA5Value010UnderlyingC0Rpzs5Int64VAE_8DatatypeRTzlE6randomAA0B0VyAFGyFZ +___profc__T06SQLite14ExpressionTypePA2aBRz10Foundation4DataV010UnderlyingC0RtzlE6randomAA0B0VyAFGSiFZ +___profd__T06SQLite14ExpressionTypePA2aBRz10Foundation4DataV010UnderlyingC0RtzlE6randomAA0B0VyAFGSiFZ +___profc__T06SQLite14ExpressionTypePA2aBRz10Foundation4DataV010UnderlyingC0RtzlE8allZerosAA0B0VyAFGSiFZ +___profd__T06SQLite14ExpressionTypePA2aBRz10Foundation4DataV010UnderlyingC0RtzlE8allZerosAA0B0VyAFGSiFZ +___profc__T06SQLite14ExpressionTypePA2aBRz10Foundation4DataV010UnderlyingC0RtzlE6lengthAA0B0VySiGfg +___profd__T06SQLite14ExpressionTypePA2aBRz10Foundation4DataV010UnderlyingC0RtzlE6lengthAA0B0VySiGfg +___profc__T06SQLite14ExpressionTypePA2aBRz10Foundation4DataVSg010UnderlyingC0RtzlE6lengthAA0B0VySiSgGfg +___profd__T06SQLite14ExpressionTypePA2aBRz10Foundation4DataVSg010UnderlyingC0RtzlE6lengthAA0B0VySiSgGfg +___profc__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE6lengthAA0B0VySiGfg +___profd__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE6lengthAA0B0VySiGfg +___profc__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE15lowercaseStringAA0B0VySSGfg +___profd__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE15lowercaseStringAA0B0VySSGfg +___profc__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE15uppercaseStringAA0B0VySSGfg +___profd__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE15uppercaseStringAA0B0VySSGfg +___profc__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE4likeAA0B0VySbGSS_s9CharacterVSg6escapetF +___profd__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE4likeAA0B0VySbGSS_s9CharacterVSg6escapetF +___profc__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE4likeAA0B0VySbGAHySSG_s9CharacterVSg6escapetF +___profd__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE4likeAA0B0VySbGAHySSG_s9CharacterVSg6escapetF +___profc__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE4globAA0B0VySbGSSF +___profd__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE4globAA0B0VySbGSSF +___profc__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE5matchAA0B0VySbGSSF +___profd__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE5matchAA0B0VySbGSSF +___profc__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE6regexpAA0B0VySbGSSF +___profd__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE6regexpAA0B0VySbGSSF +___profc__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE7collateAA0B0VySSGAA9CollationOF +___profd__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE7collateAA0B0VySSGAA9CollationOF +___profc__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE5ltrimAA0B0VySSGs3SetVys9CharacterVGSgF +___profd__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE5ltrimAA0B0VySSGs3SetVys9CharacterVGSgF +___profc__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE5rtrimAA0B0VySSGs3SetVys9CharacterVGSgF +___profd__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE5rtrimAA0B0VySSGs3SetVys9CharacterVGSgF +___profc__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE4trimAA0B0VySSGs3SetVys9CharacterVGSgF +___profd__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE4trimAA0B0VySSGs3SetVys9CharacterVGSgF +___profc__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE7replaceAA0B0VySSGSS_SS4withtF +___profd__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE7replaceAA0B0VySSGSS_SS4withtF +___profc__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE9substringAA0B0VySSGSi_SiSg6lengthtF +___profd__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE9substringAA0B0VySSGSi_SiSg6lengthtF +___profc__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE9subscriptAA0B0VySSGs5RangeVySiGcfg +___profd__T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE9subscriptAA0B0VySSGs5RangeVySiGcfg +___profc__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE6lengthAA0B0VySiSgGfg +___profd__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE6lengthAA0B0VySiSgGfg +___profc__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE15lowercaseStringAA0B0VyADGfg +___profd__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE15lowercaseStringAA0B0VyADGfg +___profc__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE15uppercaseStringAA0B0VyADGfg +___profd__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE15uppercaseStringAA0B0VyADGfg +___profc__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE4likeAA0B0VySbSgGSS_s9CharacterVSg6escapetF +___profd__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE4likeAA0B0VySbSgGSS_s9CharacterVSg6escapetF +___profc__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE4likeAA0B0VySbSgGAIySSG_s9CharacterVSg6escapetF +___profd__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE4likeAA0B0VySbSgGAIySSG_s9CharacterVSg6escapetF +___profc__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE4globAA0B0VySbSgGSSF +___profd__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE4globAA0B0VySbSgGSSF +___profc__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE5matchAA0B0VySbGSSF +___profd__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE5matchAA0B0VySbGSSF +___profc__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE6regexpAA0B0VySbSgGSSF +___profd__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE6regexpAA0B0VySbSgGSSF +___profc__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE7collateAA0B0VyADGAA9CollationOF +___profd__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE7collateAA0B0VyADGAA9CollationOF +___profc__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE5ltrimAA0B0VyADGs3SetVys9CharacterVGSgF +___profd__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE5ltrimAA0B0VyADGs3SetVys9CharacterVGSgF +___profc__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE5rtrimAA0B0VyADGs3SetVys9CharacterVGSgF +___profd__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE5rtrimAA0B0VyADGs3SetVys9CharacterVGSgF +___profc__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE4trimAA0B0VyADGs3SetVys9CharacterVGSgF +___profd__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE4trimAA0B0VyADGs3SetVys9CharacterVGSgF +___profc__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE7replaceAA0B0VyADGSS_SS4withtF +___profd__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE7replaceAA0B0VyADGSS_SS4withtF +___profc__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE9substringAA0B0VyADGSi_SiSg6lengthtF +___profd__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE9substringAA0B0VyADGSi_SiSg6lengthtF +___profc__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE9subscriptAA0B0VyADGs5RangeVySiGcfg +___profd__T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE9subscriptAA0B0VyADGs5RangeVySiGcfg +___profc__T0s10CollectionP6SQLitesAARzAC5Value7ElementRpzSi13IndexDistanceRtzlE8containsAC10ExpressionVySbGAKyAFGF +___profd__T0s10CollectionP6SQLitesAARzAC5Value7ElementRpzSi13IndexDistanceRtzlE8containsAC10ExpressionVySbGAKyAFGF +___profc__T0s10CollectionP6SQLitesAARzAC5Value7ElementRpzSi13IndexDistanceRtzlE8containsAC10ExpressionVySbSgGAKyAFSgGF +___profd__T0s10CollectionP6SQLitesAARzAC5Value7ElementRpzSi13IndexDistanceRtzlE8containsAC10ExpressionVySbSgGAKyAFSgGF +___profc__T0SS6SQLiteE4likeAA10ExpressionVySbGADySSG_s9CharacterVSg6escapetF +___profd__T0SS6SQLiteE4likeAA10ExpressionVySbGADySSG_s9CharacterVSg6escapetF +___profc__T06SQLite2qqoiAA10ExpressionVyxGADyxSgG_xtAA5ValueRzlF +___profd__T06SQLite2qqoiAA10ExpressionVyxGADyxSgG_xtAA5ValueRzlF +___profc__T06SQLite2qqoiAA10ExpressionVyxGADyxSgG_AEtAA5ValueRzlF +___profd__T06SQLite2qqoiAA10ExpressionVyxGADyxSgG_AEtAA5ValueRzlF +___profc__T06SQLite2qqoiAA10ExpressionVyxGADyxSgG_AGtAA5ValueRzlF +___profd__T06SQLite2qqoiAA10ExpressionVyxGADyxSgG_AGtAA5ValueRzlF +___profc_/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Helpers.swift:_T06SQLite4wrapAA10ExpressionVyxGSayAA11Expressible_pG_SS8functiontlF +___profd_/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Helpers.swift:_T06SQLite4wrapAA10ExpressionVyxGSayAA11Expressible_pG_SS8functiontlF +___profc_/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Helpers.swift:_T06SQLite4wrapAA10ExpressionVyxGAA11Expressible_p_SS8functiontlF +___profd_/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Helpers.swift:_T06SQLite4wrapAA10ExpressionVyxGAA11Expressible_p_SS8functiontlF +___profc_/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Helpers.swift:_T0SS6SQLiteE4wrapAA10ExpressionVyxGSayAA11Expressible_pGlF +___profd_/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Helpers.swift:_T0SS6SQLiteE4wrapAA10ExpressionVyxGSayAA11Expressible_pGlF +___profc__T06SQLite10ExpressionVACyxGSS_SayAA7Binding_pSgGtcfC +___profd__T06SQLite10ExpressionVACyxGSS_SayAA7Binding_pSgGtcfC +-emit-bc "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/CoreFunctions.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Coding.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Extensions/RTree.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Blob.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Foundation.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Connection.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Expression.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Helpers.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Collation.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Setter.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/CustomFunctions.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Extensions/FTS4.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Value.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Operators.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Schema.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Query.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Statement.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/AggregateFunctions.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Extensions/FTS5.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Extensions/Cipher.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Errors.swift" "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/DateAndTimeFunctions.swift" -target armv7-apple-ios8.0 -enable-objc-interop -sdk /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.sdk -I /Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Products/Release-iphoneos -I "/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/CocoaPods/iphoneos" -F /Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Products/Release-iphoneos -application-extension -g -import-underlying-module -module-cache-path /Users/mongolsuragch/Library/Developer/Xcode/DerivedData/ModuleCache -profile-generate -profile-coverage-mapping -swift-version 4 -serialize-debugging-options -report-errors-to-debugger -Xcc "-I/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/swift-overrides.hmap" -Xcc -iquote -Xcc "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/SQLite-generated-files.hmap" -Xcc "-I/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/SQLite-own-target-headers.hmap" -Xcc "-I/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/SQLite-all-non-framework-target-headers.hmap" -Xcc -ivfsoverlay -Xcc /Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/all-product-headers.yaml -Xcc -iquote -Xcc "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/SQLite-project-headers.hmap" -Xcc -I/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Products/Release-iphoneos/include -Xcc "-I/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/DerivedSources/armv7" -Xcc "-I/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/DerivedSources" -Xcc -ivfsoverlay -Xcc "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/unextended-module-overlay.yaml" -Xcc "-working-directory/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift" -emit-module-doc-path "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/armv7/SQLite.swiftdoc" -serialize-diagnostics-path "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/armv7/CoreFunctions.dia" -O -module-name SQLite -emit-module-path "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/armv7/SQLite.swiftmodule" -emit-objc-header-path "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/armv7/SQLite-Swift.h" -emit-dependencies-path "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/armv7/CoreFunctions.d" -num-threads 4 -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/armv7/CoreFunctions.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/armv7/Coding.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/armv7/RTree.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/armv7/Blob.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/armv7/Foundation.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/armv7/Connection.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/armv7/Expression.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/armv7/Helpers.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/armv7/Collation.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/armv7/Setter.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/armv7/CustomFunctions.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/armv7/FTS4.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/armv7/Value.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/armv7/Operators.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/armv7/Schema.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/armv7/Query.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/armv7/Statement.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/armv7/AggregateFunctions.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/armv7/FTS5.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/armv7/Cipher.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/armv7/Errors.bc" -o "/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/Objects-normal/armv7/DateAndTimeFunctions.bc" -resource-dir /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/lib/swift + +Apple Swift version 4.0.2 (swiftlang-900.0.69.2 clang-900.0.38) +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/CoreFunctions.swift +__swift_destroy_boxed_opaque_existential_0 +CoreFunctions.swift +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed +_T0s16_NativeSetBufferVss8HashableRzlE9fromArrayAByxGSayxGFZTfq4gn_ns9CharacterV_Tg5Tf4nd_n +_T0s9CharacterVs9EquatablessACP2eeoiSbx_xtFZTW +_T0s11_StringCoreVABs01_A6BufferVcfCTfq4nd_n +_T0s13_StringBufferV9usedCountSifg +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtFs9CharacterV_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tFs9CharacterV_Tg5 +_T0Sp10initializeyx2to_Si5counttFSu_Tgq5 +_T0s9CharacterVs8HashablessACP9hashValueSifgTW +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktFs9CharacterV_Tg5 +_T0s20ManagedBufferPointerV08_elementC0Spyq_Gfgs05_HeapB6HeaderVys07_StringB5IVarsVG_s6UInt16VTgq5 +_T0Sp10initializeyx2to_Si5counttFTfq4gnn_ns9CharacterV_Tg5 +_T0s30_HashableTypedNativeSetStorageCys9CharacterVGMa +_T0Sd18exponentBitPatternSufg +_T0Sa9_getCountSiyFs9CharacterV_Tg5 +_T0s23_NativeDictionaryBufferVss8HashableRzr0_lE9fromArrayAByxq_GSayx_q_tGFZTfq4gn_ns17CodingUserInfoKeyV_ypTg5Tf4nd_n +_T0s17CodingUserInfoKeyVs9EquatablessACP2eeoiSbx_xtFZTW +_T0s17CodingUserInfoKeyV2eeoiSbAB_ABtFZTfq4gXgXd_n +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtFs17CodingUserInfoKeyV_ypt_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tFs17CodingUserInfoKeyV_ypt_Tg5 +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktFs17CodingUserInfoKeyV_ypt_Tg5 +_T0Sp10initializeyx2to_Si5counttFTfq4gnn_nyp_Tg5 +_T0Sp10initializeyx2to_Si5counttFTfq4gnn_ns17CodingUserInfoKeyV_Tg5 +_T0s17CodingUserInfoKeyVs8HashablessACP9hashValueSifgTW +_T0s23_NativeDictionaryBufferVAByxq_GSi8capacity_s04_RawaB7StorageC7storagetcfCs17CodingUserInfoKeyV_ypTg5 +_T0s23_NativeDictionaryBufferVAByxq_GSi8capacity_s04_RawaB7StorageC7storagetcfCs17CodingUserInfoKeyV_ypTg5Tf4nnd_n +_T0s37_HashableTypedNativeDictionaryStorageCys17CodingUserInfoKeyVypGMa +_T0ypMa +_T0Sa9_getCountSiyFs17CodingUserInfoKeyV_ypt_Tg5 +?? +_T0s23_ContiguousArrayStorageCfD6SQLite11Expressible_p_Tg5 +wrap +_allocateUninitializedArray +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZ6SQLite11Expressible_p_Tg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZTfq4gnn_n6SQLite11Expressible_p_Tg5 +_T0s23_ContiguousArrayStorageCy6SQLite11Expressible_pGMa +_T06SQLite11Expressible_pMa +_T0s10CollectionP6SQLitesAARzAC5Value7ElementRpzSi13IndexDistanceRtzlE8containsAC10ExpressionVySbGAKyAFGFAC7Binding_pSgAFcfU_TA +_T0s10CollectionP6SQLitesAARzAC5Value7ElementRpzSi13IndexDistanceRtzlE8containsAC10ExpressionVySbGAKyAFGFAC7Binding_pSgAFcfU_ +objectdestroy.47 +objectdestroy.40 +init +_T0S2ayxGx9repeating_Si5counttcfCTfq4gnn_nSS_Tg5 +_T0Sa22_allocateUninitializedSayxG_SpyxGtSiFZSS_Tg5 +_T0S2ayxGSi19_uninitializedCount_tcfCSS_Tg5 +_T0Sa28_allocateBufferUninitializeds06_ArrayB0VyxGSi15minimumCapacity_tFZSS_Tg5 +_T0Sa28_allocateBufferUninitializeds06_ArrayB0VyxGSi15minimumCapacity_tFZSS_Tg5Tf4nd_n +_T0s22_ContiguousArrayBufferVAByxGSi19_uninitializedCount_Si15minimumCapacitytcfCSS_Tg5 +_T0s23_ContiguousArrayStorageCySSGMa +objectdestroy.26 +objectdestroy +joined +_T0s16IndexingIteratorVyxGs0B8Protocolss14_IndexableBaseRzlsADP4next7ElementQzSgyFTWSaySSG_Tg5 +next +_T0Sis9EquatablessAAP2eeoiSbx_xtFZTW +_T0SayxGs14_IndexableBaseslsABP9formIndexy0D0Qzz5after_tFTWSS_Tg5 +_T0Sa9formIndexySiz5after_tFSS_Tg5 +_T0SayxGs14_IndexableBaseslsABP9subscript7ElementQz5IndexQzcfgTWSS_Tg5 +subscript.get +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktFSS_Tg5 +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtFSS_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tFSS_Tg5 +_T0SayxGs14_IndexableBaseslsABP8endIndex0D0QzfgTWSS_Tg5 +_T0Sa8endIndexSifgSS_Tg5 +_T0Sa9_getCountSiyFSS_Tg5 +_T0SayxGs8SequenceslsABP12makeIterator0C0QzyFTWSS_Tg5 +_T0SayxGs8SequenceslsABP18_preprocessingPassqd__Sgqd__yKcKlFTWSS_SiTg5 +_T0s10CollectionPsE18_preprocessingPassqd__Sgqd__yKcKlFSaySSG_SiTg5 +_T0Sis5Error_pIxdzo_SisAA_pIxrzo_TR +_T0SS5utf16SS9UTF16ViewVfgTfq4x_g +_T0s27_toStringReadOnlyStreamableSSxs010TextOutputE0RzlFTfq4g_nSS_Tg5Tf4n_g +_T0SSs20TextOutputStreamablessAAP5writeyqd__z2to_ts0aB6StreamRd__lFTWSS_Tg5 +_T0s20_ArrayBufferProtocolPsE20_arrayAppendSequenceyqd__s0F0Rd__7ElementQyd__AERtzlFTfq4gn_ns01_aB0Vy6SQLite7Binding_pSgG_s08IteratorF0Vys08IndexingJ0VySayALGGGTg5 +_T0s16IteratorSequenceVyxGs0A8ProtocolssADRzlsADP4next7ElementQzSgyFTWs08IndexingA0VySay6SQLite7Binding_pSgGG_Tg5 +_T0s16IteratorSequenceV4next7ElementQzSgyFs08IndexingA0VySay6SQLite7Binding_pSgGG_Tg5 +_T0s16IndexingIteratorVyxGs0B8Protocolss14_IndexableBaseRzlsADP4next7ElementQzSgyFTWSay6SQLite7Binding_pSgG_Tg5 +_T0SayxGs14_IndexableBaseslsABP9formIndexy0D0Qzz5after_tFTW6SQLite7Binding_pSg_Tg5 +_T0Sa9formIndexySiz5after_tF6SQLite7Binding_pSg_Tg5 +_T0SayxGs14_IndexableBaseslsABP9subscript7ElementQz5IndexQzcfgTW6SQLite7Binding_pSg_Tg5 +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtF6SQLite7Binding_pSg_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tF6SQLite7Binding_pSg_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifsTW6SQLite7Binding_pSg_Tg5 +_T0s12_ArrayBufferV5countSifs6SQLite7Binding_pSg_Tg5 +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktF6SQLite7Binding_pSg_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP19firstElementAddressSpy0E0QzGfgTW6SQLite7Binding_pSg_Tg5 +_T0s12_ArrayBufferV19firstElementAddressSpyxGfg6SQLite7Binding_pSg_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8capacitySifgTW6SQLite7Binding_pSg_Tg5 +_T0s12_ArrayBufferV8capacitySifg6SQLite7Binding_pSg_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifgTW6SQLite7Binding_pSg_Tg5 +_T0s12_ArrayBufferV5countSifg6SQLite7Binding_pSg_Tg5 +_T0SayxGs14_IndexableBaseslsABP8endIndex0D0QzfgTW6SQLite7Binding_pSg_Tg5 +_T0Sa8endIndexSifg6SQLite7Binding_pSg_Tg5 +_T0Sa9_getCountSiyF6SQLite7Binding_pSg_Tg5 +_T0s16IteratorSequenceVyxGs0B0ss0A8ProtocolRzlsADP04makeA00A0QzyFTWs08IndexingA0VySay6SQLite7Binding_pSgGG_Tg5 +_T0s11_StringCoreV6appendyx10contentsOf_ts8SequenceRzs6UInt16V7ElementRtzlFs11_UIntBufferVys6UInt64VAGG_Tgq5Tfq4xn_n +_T0s20ManagedBufferPointerVAByxq_GyXlXp010_uncheckedB5Class_Si15minimumCapacitytcfCs05_HeapB6HeaderVys07_StringB5IVarsVG_s6UInt16VTgq5Tfq4nnd_n +_T0s20ManagedBufferPointerV8capacitySifgs05_HeapB6HeaderVys07_StringB5IVarsVG_s6UInt16VTgq5 +_T0Sp10initializeyx2to_Si5counttFs17_HeapBufferHeaderVys07_StringE5IVarsVG_Tgq5 +_T0s13ManagedBufferCys05_HeapB6HeaderVys07_StringB5IVarsVGs6UInt16VGMa +_T0s17_HeapBufferHeaderVys07_StringB5IVarsVGMa +_T0S2RyxGSPyxGSg5start_Si5counttcfCs6UInt16V_Tgq5Tfq4nnd_n +_T0SS13CharacterViewV6appendyx10contentsOf_ts8SequenceRzs0A0V7ElementRtzlFs3SetVyAGG_Tg5 +_T0s11SetIteratorVyxGs0B8Protocolss8HashableRzlsADP4next7ElementQzSgyFTWs9CharacterV_Tg5 +_T0s11SetIteratorV4nextxSgyFs9CharacterV_Tg5 +_T0s11SetIteratorV11_nativeNextxSgyFs9CharacterV_Tg5 +_T0s16_NativeSetBufferV12assertingGetxs01_aB5IndexVyxGFs9CharacterV_Tg5 +_T0s3SetVyxGs8Sequencess8HashableRzlsADP12makeIterator0E0QzyFTWs9CharacterV_Tg5 +_T0s3SetV12makeIterators0aC0VyxGyFs9CharacterV_Tg5 +_T0s16_NativeSetBufferV5indexs01_aB5IndexVyxGAF5after_tFs9CharacterV_Tg5 +_T0s3SetVyxGs8Sequencess8HashableRzlsADP19underestimatedCountSifgTWs9CharacterV_Tg5 +_T0s10CollectionPsE19underestimatedCountSifgs3SetVys9CharacterVG_Tg5 +_T0s3SetVyxGs10Collectionss8HashableRzlsADP5count13IndexDistanceQzfgTWs9CharacterV_Tg5 +_T0s3SetV5countSifgs9CharacterV_Tg5 +_T0S2Ss9CharacterVcfCTfq4nd_n +_T0S2SSaySSG19stringInterpolationd_tcfCTfq4nd_n +_T06SQLite11ScalarQueryVACyxGSS_SSSg8databasetcfcfA0_ +_T06SQLite12VirtualTableVACSS_SSSg8databasetcfcfA0_ +Query.swift +_T06SQLite4ViewVACSS_SSSg8databasetcfcfA0_ +_T06SQLite5TableVACSS_SSSg8databasetcfcfA0_ +_T06SQLite12TableBuilderC10foreignKeyyAA10ExpressionVyxG_AFyq_GAFyq0_Gt_AA9QueryType_p10referencesAG_AhItAC10DependencyOSg6updateAN6deletetAA5ValueRzAaQR_AaQR0_r1_lFfA2_ +_T06SQLite12TableBuilderC10foreignKeyyAA10ExpressionVyxG_AFyq_Gt_AA9QueryType_p10referencesAG_AHtAC10DependencyOSg6updateAM6deletetAA5ValueRzAaPR_r0_lFfA2_ +_T06SQLite12TableBuilderC10foreignKeyyAA10ExpressionVyxSgG_AA9QueryType_p10referencesAFyxGAC10DependencyOSg6updateAN6deletetAA5ValueRzlFfA3_ +_T06SQLite12TableBuilderC10foreignKeyyAA10ExpressionVyxSgG_AA9QueryType_p10referencesAFyxGAC10DependencyOSg6updateAN6deletetAA5ValueRzlFfA2_ +_T06SQLite12TableBuilderC10foreignKeyyAA10ExpressionVyxG_AA9QueryType_p10referencesAgC10DependencyOSg6updateAL6deletetAA5ValueRzlFfA3_ +_T06SQLite12TableBuilderC10foreignKeyyAA10ExpressionVyxG_AA9QueryType_p10referencesAgC10DependencyOSg6updateAL6deletetAA5ValueRzlFfA2_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxSgG_Sb6uniqueAFySbSgG5checkx12defaultValueAA9CollationO7collatetAA0I0RzSS8DatatypeRtzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxSgG_Sb6uniqueAFySbSgG5checkAH12defaultValueAA9CollationO7collatetAA0I0RzSS8DatatypeRtzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxSgG_Sb6uniqueAFySbSgG5checkAFyxGSg12defaultValueAA9CollationO7collatetAA0I0RzSS8DatatypeRtzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxSgG_Sb6uniqueAFySbGSg5checkx12defaultValueAA9CollationO7collatetAA0I0RzSS8DatatypeRtzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxSgG_Sb6uniqueAFySbGSg5checkAH12defaultValueAA9CollationO7collatetAA0I0RzSS8DatatypeRtzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxSgG_Sb6uniqueAFySbGSg5checkAFyxGSg12defaultValueAA9CollationO7collatetAA0I0RzSS8DatatypeRtzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxG_Sb6uniqueAFySbSgG5checkx12defaultValueAA9CollationO7collatetAA0I0RzSS8DatatypeRtzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxG_Sb6uniqueAFySbSgG5checkAGSg12defaultValueAA9CollationO7collatetAA0I0RzSS8DatatypeRtzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxG_Sb6uniqueAFySbGSg5checkx12defaultValueAA9CollationO7collatetAA0I0RzSS8DatatypeRtzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxG_Sb6uniqueAFySbGSg5checkAGSg12defaultValueAA9CollationO7collatetAA0I0RzSS8DatatypeRtzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxSgG_Sb6uniqueAFySbSgG5checkAA9QueryType_p10referencesAFyxGtAA5ValueRzs5Int64V8DatatypeRtzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxSgG_Sb6uniqueAFySbGSg5checkAA9QueryType_p10referencesAFyxGtAA5ValueRzs5Int64V8DatatypeRtzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxG_Sb6uniqueAFySbSgG5checkAA9QueryType_p10referencesAGtAA5ValueRzs5Int64V8DatatypeRtzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxG_Sb6uniqueAFySbGSg5checkAA9QueryType_p10referencesAGtAA5ValueRzs5Int64V8DatatypeRtzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxG_AA10PrimaryKeyO07primaryG0AFySbGSg5checktAA5ValueRzs5Int64V8DatatypeRtzlFfA1_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxSgG_Sb6uniqueAFySbSgG5checkx12defaultValuetAA0I0RzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxSgG_Sb6uniqueAFySbSgG5checkAH12defaultValuetAA0I0RzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxSgG_Sb6uniqueAFySbSgG5checkAFyxGSg12defaultValuetAA0I0RzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxSgG_Sb6uniqueAFySbGSg5checkx12defaultValuetAA0I0RzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxSgG_Sb6uniqueAFySbGSg5checkAH12defaultValuetAA0I0RzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxSgG_Sb6uniqueAFySbGSg5checkAFyxGSg12defaultValuetAA0I0RzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxG_Sb6uniqueAFySbSgG5checkx12defaultValuetAA0I0RzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxG_Sb6uniqueAFySbSgG5checkAGSg12defaultValuetAA0I0RzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxG_Sb6uniqueAFySbGSg5checkx12defaultValuetAA0I0RzlFfA0_ +_T06SQLite12TableBuilderC6columnyAA10ExpressionVyxG_Sb6uniqueAFySbGSg5checkAGSg12defaultValuetAA0I0RzlFfA0_ +_T06SQLite12VirtualTableV6createSSAA6ModuleV_Sb11ifNotExiststFfA0_ +Schema.swift +_T06SQLite4ViewV4dropSSSb8ifExists_tFfA_ +_T06SQLite4ViewV6createSSAA9QueryType_p_Sb9temporarySb11ifNotExiststFfA1_ +_T06SQLite4ViewV6createSSAA9QueryType_p_Sb9temporarySb11ifNotExiststFfA0_ +_T06SQLite5TableV9dropIndexSSSayAA11Expressible_pGd_Sb8ifExiststFfA0_ +_T06SQLite5TableV11createIndexSSSayAA11Expressible_pGd_Sb6uniqueSb11ifNotExiststFfA1_ +_T06SQLite5TableV11createIndexSSSayAA11Expressible_pGd_Sb6uniqueSb11ifNotExiststFfA0_ +_T06SQLite5TableV9addColumnSSAA10ExpressionVyxSgG_AFySbGSg5checkAG12defaultValueAA9CollationO7collatetAA0H0RzSS8DatatypeRtzlFfA1_ +_T06SQLite5TableV9addColumnSSAA10ExpressionVyxSgG_Sb6uniqueAFySbSgG5checkAA9QueryType_p10referencesAFyxGtAA5ValueRzs5Int64V8DatatypeRtzlFfA0_ +_T06SQLite5TableV9addColumnSSAA10ExpressionVyxSgG_Sb6uniqueAFySbGSg5checkAA9QueryType_p10referencesAFyxGtAA5ValueRzs5Int64V8DatatypeRtzlFfA0_ +_T06SQLite5TableV9addColumnSSAA10ExpressionVyxG_Sb6uniqueAFySbSgG5checkAA9QueryType_p10referencesAGtAA5ValueRzs5Int64V8DatatypeRtzlFfA0_ +_T06SQLite5TableV9addColumnSSAA10ExpressionVyxG_Sb6uniqueAFySbGSg5checkAA9QueryType_p10referencesAGtAA5ValueRzs5Int64V8DatatypeRtzlFfA0_ +_T06SQLite5TableV6createSSAA9QueryType_p_Sb9temporarySb11ifNotExiststFfA1_ +_T06SQLite5TableV6createSSAA9QueryType_p_Sb9temporarySb11ifNotExiststFfA0_ +_T06SQLite5TableV6createSSSb9temporary_Sb11ifNotExistsSb12withoutRowidyAA0B7BuilderCc5blocktFfA1_ +_T06SQLite5TableV6createSSSb9temporary_Sb11ifNotExistsSb12withoutRowidyAA0B7BuilderCc5blocktFfA0_ +_T06SQLite5TableV6createSSSb9temporary_Sb11ifNotExistsSb12withoutRowidyAA0B7BuilderCc5blocktFfA_ +_T06SQLite10SchemaTypePAAE4dropSSSb8ifExists_tFfA_ +_T06SQLite9FTSConfigC6columnACXDAA11Expressible_p_SayAC12ColumnOptionOGtFfA0_ +_T06SQLite9TokenizerV9Unicode61ACSbSg16removeDiacritics_s3SetVys9CharacterVG10tokencharsAK10separatorstFZfA0_ +FTS4.swift +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Extensions +_T0s3SetVAByxGSayxG12arrayLiterald_tcfCTfq4gn_ns9CharacterV_Tg5 +_T0s16_NativeSetBufferVss8HashableRzlE9fromArrayAByxGSayxGFZTfq4gn_ns9CharacterV_Tg5 +_T06SQLite9TokenizerV9Unicode61ACSbSg16removeDiacritics_s3SetVys9CharacterVG10tokencharsAK10separatorstFZfA_ +_T06SQLite6ModuleV4FTS4ACSayAA11Expressible_pG_AA9TokenizerVSg8tokenizetFZfA_ +_T06SQLite6ModuleV4FTS4ACSayAA11Expressible_pG_AA9TokenizerVSg8tokenizetFZfA0_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_GtcSS_Sb13deterministicxq__q0_tctKAA5ValueRzAaKR_AaKR0_r1_lFfA0_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_GcSS_Sb13deterministicxq_ctKAA5ValueRzAaJR_r0_lFfA0_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGycSS_Sb13deterministicAGyctKAA5ValueRzlFfA0_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGycSS_Sb13deterministicxyctKAA5ValueRzlFfA0_ +_T06SQLite10ConnectionC14createFunctionySS_SuSg13argumentCountSb13deterministicAA7Binding_pSgSayAIGctFfA1_ +Connection.swift +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core +_T06SQLite10ConnectionC14createFunctionySS_SuSg13argumentCountSb13deterministicAA7Binding_pSgSayAIGctFfA0_ +_T06SQLite10ConnectionC9savepointySS_yyKc5blocktKFfA_ +_T06SQLite10ConnectionC11transactionyAC15TransactionModeO_yyKc5blocktKFfA_ +_T06SQLite10ConnectionCACSS_Sb8readonlytKcfcfA0_ +_T06SQLite10ConnectionC11busyTimeoutSdvfi +_T06SQLite10ConnectionCA2C8LocationO_Sb8readonlytKcfcfA0_ +_T06SQLite10ConnectionCA2C8LocationO_Sb8readonlytKcfcfA_ +append +_T0Sa24reserveCapacityForAppendySi16newElementsCount_tF6SQLite7Binding_pSg_Tg5 +_T0Sr5countSifg6SQLite7Binding_pSg_Tg5 +_T0SayxGs8SequenceslsABP13_copyContents8IteratorQz_SitSry7ElementQzG12initializing_tFTW6SQLite7Binding_pSg_Tg5 +_T0Sa13_copyContentss16IndexingIteratorVySayxGG_SitSryxG12initializing_tF6SQLite7Binding_pSg_Tg5 +_T0Sa12_getCapacitySiyF6SQLite7Binding_pSg_Tg5 +_T0SayxGs8SequenceslsABP19underestimatedCountSifgTW6SQLite7Binding_pSg_Tg5 +_T0s10CollectionPsE19underestimatedCountSifgSay6SQLite7Binding_pSgG_Tg5 +_T0SayxGs10CollectionslsABP5count13IndexDistanceQzfgTW6SQLite7Binding_pSg_Tg5 +count.get +_T06SQLite3RowV7decoders7Decoder_ps10DictionaryVys17CodingUserInfoKeyVypG04userH0_tFfA_ +Coding.swift +_T0s10DictionaryVAByxq_GSayx_q_tG17dictionaryLiterald_tcfCTfq4gn_ns17CodingUserInfoKeyV_ypTg5 +_T0s23_NativeDictionaryBufferVss8HashableRzr0_lE9fromArrayAByxq_GSayx_q_tGFZTfq4gn_ns17CodingUserInfoKeyV_ypTg5 +_T06SQLite3RowV6decodexs10DictionaryVys17CodingUserInfoKeyVypG04userG0_tKs9DecodableRzlFfA_ +_T06SQLite3RowV6decodexs10DictionaryVys17CodingUserInfoKeyVypG04userG0_tKs9DecodableRzlFfA_Tf4_n +_T06SQLite9QueryTypePAAE6insertAA6InsertVs9Encodable_p_s10DictionaryVys17CodingUserInfoKeyVypG04userJ0SayAA6SetterVG12otherSetterstKFfA1_ +like ++ +_T0SayxGs26RangeReplaceableCollectionslsABP6appendyqd__10contentsOf_ts8SequenceRd__7ElementQyd__AGRtzlFTW6SQLite7Binding_pSg_SayALGTg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZ6SQLite7Binding_pSg_Tg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZTfq4gnn_n6SQLite7Binding_pSg_Tg5 +_T0s23_ContiguousArrayStorageCy6SQLite7Binding_pSgGMa +_T06SQLite7Binding_pSgMa +_T06SQLite7Binding_pMa +_T0s27_toStringReadOnlyStreamableSSxs010TextOutputE0RzlFTfq4g_nSS_Tg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZSS_Tg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZTfq4gnn_nSS_Tg5 +_T06SQLite10ExpressionVySSGMa +_T0SS6SQLiteE4likeAA10ExpressionVySbGADySSG_s9CharacterVSg6escapetFfA0_ +contains +_T06SQLite10ExpressionVyytGMa +substring +_T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE9substringAA0B0VyADGSi_SiSg6lengthtFfA0_ +replace +trim +_T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE4trimAA0B0VyADGs3SetVys9CharacterVGSgFfA_ +ltrim +_T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE5rtrimAA0B0VyADGs3SetVys9CharacterVGSgFfA_ +_T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE5ltrimAA0B0VyADGs3SetVys9CharacterVGSgFfA_ +collate +glob +_T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE4likeAA0B0VySbSgGAIySSG_s9CharacterVSg6escapetFfA0_ +_T06SQLite14ExpressionTypePA2aBRzSSSg010UnderlyingC0RtzlE4likeAA0B0VySbSgGSS_s9CharacterVSg6escapetFfA0_ +lowercaseString.get +length.get +_T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE9substringAA0B0VySSGSi_SiSg6lengthtFfA0_ +_T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE4trimAA0B0VySSGs3SetVys9CharacterVGSgFfA_ +_T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE5rtrimAA0B0VySSGs3SetVys9CharacterVGSgFfA_ +_T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE5ltrimAA0B0VySSGs3SetVys9CharacterVGSgFfA_ +_T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE4likeAA0B0VySbGAHySSG_s9CharacterVSg6escapetFfA0_ +_T06SQLite14ExpressionTypePA2aBRzSS010UnderlyingC0RtzlE4likeAA0B0VySbGSS_s9CharacterVSg6escapetFfA0_ +random +round +_T06SQLite14ExpressionTypePA2aBRzSdSg010UnderlyingC0RtzlE5roundAA0B0VyADGSiSgFfA_ +_T06SQLite14ExpressionTypePA2aBRzSd010UnderlyingC0RtzlE5roundAA0B0VySdGSiSgFfA_ +absoluteValue.get +__swift_allocate_boxed_opaque_existential_1 +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLCMa +___swift_project_boxed_opaque_existential_1 +__T06SQLite9QueryTypePAAE6insertAA6InsertVs9Encodable_p_s10DictionaryVys17CodingUserInfoKeyVypG04userJ0SayAA6SetterVG12otherSetterstKFTm +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC10codingPathSays9CodingKey_pGfg +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCAFy_xGAD7encoder_tcfc +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC05superB0s0B0_pyF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC05superB0s0B0_px6forKey_tF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC9encodeNilyx6forKey_tKF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeySi_x6forKeytKF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeySb_x6forKeytKF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeySf_x6forKeytKF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeySd_x6forKeytKF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeySS_x6forKeytKF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeyqd___x6forKeytKs9EncodableRd__lF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeys4Int8V_x6forKeytKF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeys5Int16V_x6forKeytKF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeys5Int32V_x6forKeytKF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeys5Int64V_x6forKeytKF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeySu_x6forKeytKF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeys5UInt8V_x6forKeytKF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeys4Int8V_x6forKeytKFTm +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeys6UInt16V_x6forKeytKF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeys5Int16V_x6forKeytKFTm +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeys6UInt32V_x6forKeytKF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeys5Int32V_x6forKeytKFTm +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeys6UInt64V_x6forKeytKF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeys5Int64V_x6forKeytKFTm +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC06nestedK0s0ijK0Vyqd__Gqd__m7keyedBy_x6forKeyts06CodingP0Rd__lF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC013nestedUnkeyedK0s0mjK0_px6forKey_tF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCfd +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCfD +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP10codingPathSaysAI_pGfgTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP9encodeNily0N0Qz03forN0_tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6encodeySb_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6encodeySi_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6encodeys4Int8V_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6encodeys5Int16V_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6encodeys5Int32V_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6encodeys5Int64V_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6encodeySu_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6encodeys5UInt8V_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6encodeys6UInt16V_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6encodeys6UInt32V_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6encodeys6UInt64V_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6encodeySf_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6encodeySd_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6encodeySS_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6encodeyqd___0N0Qz03forN0tKs9EncodableRd__lFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP17encodeConditionalyqd___0N0Qz03forN0tKRld__Cs9EncodableRd__lFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentySbSg_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentySiSg_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentys4Int8VSg_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentys5Int16VSg_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentys5Int32VSg_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentys5Int64VSg_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentySuSg_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentys5UInt8VSg_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentys4Int8VSg_0N0Qz03forN0tKFTWTm +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentys6UInt16VSg_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentys5Int16VSg_0N0Qz03forN0tKFTWTm +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentys6UInt32VSg_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentys6UInt64VSg_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentySfSg_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentySdSg_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentySSSg_0N0Qz03forN0tKFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15encodeIfPresentyqd__Sg_0N0Qz03forN0tKs9EncodableRd__lFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP06nestedK0s0ijK0Vyqd__Gqd__m7keyedBy_0N0Qz03forN0tsAIRd__lFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP013nestedUnkeyedK0s0pjK0_p0N0Qz03forN0_tFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP05superB0s0B0_pyFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP05superB0s0B0_p0N0Qz03forN0_tFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC9containers22KeyedEncodingContainerVyxGxm7keyedBy_ts9CodingKeyRzlF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLCfD +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLCs0B0AAsAEP10codingPathSays9CodingKey_pGfgTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLCs0B0AAsAEP8userInfos10DictionaryVys010CodingUserJ3KeyVypGfgTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLCs0B0AAsAEP9containers22KeyedEncodingContainerVyqd__Gqd__m7keyedBy_ts9CodingKeyRd__lFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLCs0B0AAsAEP16unkeyedContainers015UnkeyedEncodingJ0_pyFTW +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLCs0B0AAsAEP20singleValueContainers06Singlej8EncodingK0_pyFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC10codingPathSays9CodingKey_pGfg +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCAFy_xGAA3RowV3row_tcfc +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC7allKeysSayxGfg +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC8containsSbxF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC9decodeNilSbx6forKey_tKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodeS2bm_x6forKeytKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodeS2im_x6forKeytKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodes4Int8VAIm_x6forKeytKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodes5Int16VAIm_x6forKeytKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodes5Int32VAIm_x6forKeytKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodes5Int64VAIm_x6forKeytKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodeS2um_x6forKeytKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodes5UInt8VAIm_x6forKeytKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodes4Int8VAIm_x6forKeytKFTm +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodes6UInt16VAIm_x6forKeytKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodes5Int16VAIm_x6forKeytKFTm +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodes6UInt32VAIm_x6forKeytKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodes5Int32VAIm_x6forKeytKFTm +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodes6UInt64VAIm_x6forKeytKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodes5Int64VAIm_x6forKeytKFTm +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodeS2fm_x6forKeytKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodeS2dm_x6forKeytKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodeS2Sm_x6forKeytKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC6decodeqd__qd__m_x6forKeytKs9DecodableRd__lF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC06nestedK0s0ijK0Vyqd__Gqd__m7keyedBy_x6forKeytKs06CodingP0Rd__lF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC013nestedUnkeyedK0s0mjK0_px6forKey_tKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC05superB0s0B0_pyKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC05superB0s0B0_px6forKey_tKF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC013nestedUnkeyedK0s0mjK0_px6forKey_tKFTm +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCfd +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCfD +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP10codingPathSaysAI_pGfgTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP7allKeysSay0N0QzGfgTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP8containsSb0N0QzFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP9decodeNilSb0N0Qz03forN0_tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6decodeS2bm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6decodeS2im_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6decodes4Int8VAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6decodes5Int16VAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6decodes5Int32VAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6decodes5Int64VAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6decodeS2um_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6decodes5UInt8VAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6decodes6UInt16VAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6decodes6UInt32VAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6decodes6UInt64VAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6decodeS2fm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6decodeS2dm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6decodeS2Sm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP6decodeqd__qd__m_0N0Qz03forN0tKs9DecodableRd__lFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresentSbSgSbm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresentSiSgSim_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresents4Int8VSgAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresents5Int16VSgAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresents5Int32VSgAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresents5Int64VSgAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresentSuSgSum_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresents5UInt8VSgAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresents4Int8VSgAMm_0N0Qz03forN0tKFTWTm +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresents6UInt16VSgAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresents5Int16VSgAMm_0N0Qz03forN0tKFTWTm +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresents6UInt32VSgAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresents6UInt64VSgAMm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresentSfSgSfm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresentSiSgSim_0N0Qz03forN0tKFTWTm +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresentSdSgSdm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresents5Int64VSgAMm_0N0Qz03forN0tKFTWTm +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresentSSSgSSm_0N0Qz03forN0tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP15decodeIfPresentqd__Sgqd__m_0N0Qz03forN0tKs9DecodableRd__lFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP06nestedK0s0ijK0Vyqd__Gqd__m7keyedBy_0N0Qz03forN0tKsAIRd__lFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP013nestedUnkeyedK0s0pjK0_p0N0Qz03forN0_tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP05superB0s0B0_pyKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlsAHP05superB0s0B0_p0N0Qz03forN0_tKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC9containers22KeyedDecodingContainerVyxGxm7keyedBy_tKs9CodingKeyRzlF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCfD +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCs0B0AAsAEP10codingPathSays9CodingKey_pGfgTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCs0B0AAsAEP8userInfos10DictionaryVys010CodingUserJ3KeyVypGfgTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCs0B0AAsAEP9containers22KeyedDecodingContainerVyqd__Gqd__m7keyedBy_tKs9CodingKeyRd__lFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCs0B0AAsAEP16unkeyedContainers015UnkeyedDecodingJ0_pyKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCs0B0AAsAEP20singleValueContainers06Singlej8DecodingK0_pyKFTW +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCs0B0AAsAEP16unkeyedContainers015UnkeyedDecodingJ0_pyKFTWTm +__T0Sa6appendyqd__10contentsOf_t7ElementQyd__Rszs8SequenceRd__lF6SQLite6SetterV_SayAHGTg5 +__T0Sa16_copyToNewBufferySi8oldCount_tF6SQLite6SetterV_Tg5 +__T0s20_ArrayBufferProtocolPsE20_arrayAppendSequenceyqd__s0F0Rd__7ElementQyd__AERtzlFTfq4gn_ns01_aB0Vy6SQLite6SetterVG_s08IteratorF0Vys08IndexingJ0VySayALGGGTg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vy6SQLite6SetterVG_Tg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0Vy6SQLite6SetterVG_s07_IgnoreK0VyAOGTg5 +__T0Sa15reserveCapacityySiF6SQLite6SetterV_Tg5 +__T0SS6SQLiteE5quoteSSs9CharacterVFTf4gn_n +__T06SQLite9QueryTypePAAE6insertAA6InsertVSayAA6SetterVGFTf4gn_n +__T06SQLite9QueryTypePAAE6updateAA6UpdateVSayAA6SetterVGFTf4gn_n +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCMa +_swift_rt_swift_getInitializedObjCClass +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCMa +_swift_rt_swift_getGenericMetadata +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCMa +_swift_rt_swift_slowAlloc +_swift_rt_swift_slowDealloc +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzl0N0Wt +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzl0N0sAIPWT +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC10codingPathSays9CodingKey_pGfgTf4n_g +__T06SQLite14ExpressionTypePA2aBRzAA09_OptionalC0010UnderlyingC0RpzAA5ValueAE_07WrappedC0RPzlExAISg5value_tcfCAA0B0VySSSgG_Tg5Tf4nd_n +__T0Sa6appendyxFTfq43gn_n +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC6encodeySS_x6forKeytKFTf4gXnn_n +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC06nestedK0s0ijK0Vyqd__Gqd__m7keyedBy_x6forKeyts06CodingP0Rd__lFTf4ddd_n +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC10codingPathSays9CodingKey_pGfgTf4n_g +__T0s8SequencePsE7flatMapSayqd__Gqd__Sg7ElementQzKcKlFTfq4gn_n +__T06SQLite3RowV8hasValueSbSS3for_tFTf4gXx_n +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC8containsSbxFTf4gn_n +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC9decodeNilSbx6forKey_tKFTf4gn_n +__T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlFSb_Tg5Tf4xx_n +__T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlFSi_Tg5Tf4xx_n +__T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlFSd_Tg5Tf4xx_n +__T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlFSS_Tg5Tf4xx_n +__T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlF10Foundation4DataV_Tg5Tf4xx_n +_swift_rt_swift_dynamicCast +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC7allKeysSayxGfgxSgSScfU_TA +__T0SSxSgs5Error_pIxxrzo_SSAAsAB_pIxirzo_s9CodingKeyRzlTRTA +_swift_rt_swift_getEnumCaseSinglePayload +_swift_rt_swift_isUniquelyReferenced_nonNull_native +___swift_deallocate_boxed_opaque_existential_1 +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzl0N0Wt +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzl0N0sAIPWT +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLCMm +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC7settersSayAA6SetterVGvWvd +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC10codingPathSays9CodingKey_pGvWvd +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC8userInfos10DictionaryVys010CodingUserJ3KeyVypGvWvd +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLCMn +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLCML +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLCMf +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCMn +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC7encoderADvWvd +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerC10codingPathSays9CodingKey_pGvWvd +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCMP +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCMF +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLCMF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCMm +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC3rowAA3RowVvWvd +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC10codingPathSays9CodingKey_pGvWvd +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC8userInfos10DictionaryVys010CodingUserJ3KeyVypGvWvd +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCMn +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCML +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCMf +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCMn +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC10codingPathSays9CodingKey_pGvWvd +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC3rowAA3RowVvWvd +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCMP +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCMF +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCMF +__T0Says9CodingKey_pGML +__T0s9CodingKey_pML +__T0s10DictionaryVys17CodingUserInfoKeyVypGML +__T0Say6SQLite6SetterVGML +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlWP +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlWP +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCs0B0AAWP +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLCs0B0AAWP +__T0s10DictionaryV4KeysVySSSi_GML +__T0s10DictionaryVySSSiGML +__T0s10DictionaryV4KeysVySSSi_GADyxq__Gs8Sequencess8HashableRzr0_lWL +__T06SQLite10ExpressionVySSSgGML +__T0SSSgML +__T06SQLite10ExpressionVy10Foundation4DataVGML +__T0s23_ContiguousArrayStorageCy6SQLite6SetterVGML +__T06SQLite10ExpressionVySdGML +__T06SQLite10ExpressionVySbGML +__T06SQLite10ExpressionVySiGML +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlMA +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzlMA +_objc_classes +__T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLCN +__T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCN +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Coding.swift +__swift_deallocate_boxed_opaque_existential_1 +objectdestroy.16 +objectdestroy.11 +_T0SSxSgs5Error_pIxxrzo_SSAAsAB_pIxirzo_s9CodingKeyRzlTRTA +_T0SSxSgs5Error_pIxxrzo_SSAAsAB_pIxirzo_s9CodingKeyRzlTR +objectdestroy.8 +_T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC7allKeysSayxGfgxSgSScfU_TA +_T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerC7allKeysSayxGfgxSgSScfU_ +decodeNil +hasValue +flatMap +_T0Sa22_allocateUninitializedSayxG_SpyxGtSiFZ +_T0S2ayxGSi19_uninitializedCount_tcfC +codingPath.get +nestedContainer +encode +_T0Sa36_reserveCapacityAssumingUniqueBufferySi8oldCount_tF6SQLite6SetterV_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tF6SQLite6SetterV_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFTfq4ngn_n6SQLite6SetterV_Tg5 +_T0s12_ArrayBufferV5countSifs6SQLite6SetterV_Tg5 +_T0Sa9_getCountSiyF6SQLite6SetterV_Tg5 +_T0Sa034_makeUniqueAndReserveCapacityIfNotB0yyF6SQLite6SetterV_Tg5 +<- +quote +_T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzl0N0sAIPWT +_T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCy_xGs0ijK8ProtocolAAs9CodingKeyRzl0N0Wt +create_generic_metadata_SQLiteKeyedDecodingContainer +_T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLCMa +_T06SQLite0A7Decoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedDecodingContainerCMa +get_field_types_SQLiteKeyedDecodingContainer +_T0Says9CodingKey_pGMa +_T0s9CodingKey_pMa +get_field_types_SQLiteDecoder +_T0s10DictionaryVys17CodingUserInfoKeyVypGMa +create_generic_metadata_SQLiteKeyedEncodingContainer +_T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLCMa +_T06SQLite0A7Encoder33_AC67620244ED67AEDED85ABF4E1A1948LLC0A22KeyedEncodingContainerCMa +get_field_types_SQLiteKeyedEncodingContainer +get_field_types_SQLiteEncoder +_T0Say6SQLite6SetterVGMa +_T0Sa15reserveCapacityySiF6SQLite6SetterV_Tg5 +_T0s22_ContiguousArrayBufferV18_initStorageHeaderySi5count_Si8capacitytF6SQLite6SetterV_Tg5 +_T0s23_ContiguousArrayStorageCy6SQLite6SetterVGMa +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtFTfq4xnn_n6SQLite6SetterV_Tg5 +_T0s12_ArrayBufferV8endIndexSifg6SQLite6SetterV_Tg5 +_T0s12_ArrayBufferV20isUniquelyReferencedSbyF6SQLite6SetterV_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0Vy6SQLite6SetterVG_s07_IgnoreK0VyAOGTg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subG0_AI12initializingtFTW6SQLite6SetterV_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtF6SQLite6SetterV_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFTfq4xnn_n6SQLite6SetterV_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP19firstElementAddressSpy0E0QzGfgTW6SQLite6SetterV_Tg5 +_T0s12_ArrayBufferV19firstElementAddressSpyxGfg6SQLite6SetterV_Tg5 +_T0Sp10initializeySPyxG4from_Si5counttF6SQLite6SetterV_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8endIndexSifgTW6SQLite6SetterV_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP027requestUniqueMutableBackingB0s011_ContiguousaB0Vy7ElementQzGSgSi15minimumCapacity_tFTW6SQLite6SetterV_Tg5 +_T0s12_ArrayBufferV027requestUniqueMutableBackingB0s011_ContiguousaB0VyxGSgSi15minimumCapacity_tF6SQLite6SetterV_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifgTW6SQLite6SetterV_Tg5 +_T0s12_ArrayBufferV5countSifg6SQLite6SetterV_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vy6SQLite6SetterVG_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8capacitySifgTW6SQLite6SetterV_Tg5 +_T0s12_ArrayBufferV8capacitySifg6SQLite6SetterV_Tg5 +_T0s20_ArrayBufferProtocolPsE20_arrayAppendSequenceyqd__s0F0Rd__7ElementQyd__AERtzlFTfq4gn_ns01_aB0Vy6SQLite6SetterVG_s08IteratorF0Vys08IndexingJ0VySayALGGGTg5 +_T0s16IteratorSequenceVyxGs0A8ProtocolssADRzlsADP4next7ElementQzSgyFTWs08IndexingA0VySay6SQLite6SetterVGG_Tg5 +_T0s16IteratorSequenceV4next7ElementQzSgyFs08IndexingA0VySay6SQLite6SetterVGG_Tg5 +_T0s16IndexingIteratorVyxGs0B8Protocolss14_IndexableBaseRzlsADP4next7ElementQzSgyFTWSay6SQLite6SetterVG_Tg5 +_T0SayxGs14_IndexableBaseslsABP9formIndexy0D0Qzz5after_tFTW6SQLite6SetterV_Tg5 +_T0Sa9formIndexySiz5after_tF6SQLite6SetterV_Tg5 +_T0SayxGs14_IndexableBaseslsABP9subscript7ElementQz5IndexQzcfgTW6SQLite6SetterV_Tg5 +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtF6SQLite6SetterV_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tF6SQLite6SetterV_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifsTW6SQLite6SetterV_Tg5 +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktF6SQLite6SetterV_Tg5 +_T0SayxGs14_IndexableBaseslsABP8endIndex0D0QzfgTW6SQLite6SetterV_Tg5 +_T0Sa8endIndexSifg6SQLite6SetterV_Tg5 +_T0s16IteratorSequenceVyxGs0B0ss0A8ProtocolRzlsADP04makeA00A0QzyFTWs08IndexingA0VySay6SQLite6SetterVGG_Tg5 +_T0Sa16_copyToNewBufferySi8oldCount_tF6SQLite6SetterV_Tg5 +_T0Sa24reserveCapacityForAppendySi16newElementsCount_tF6SQLite6SetterV_Tg5 +_T0Sr5countSifg6SQLite6SetterV_Tg5 +_T0SayxGs8SequenceslsABP13_copyContents8IteratorQz_SitSry7ElementQzG12initializing_tFTW6SQLite6SetterV_Tg5 +_T0Sa13_copyContentss16IndexingIteratorVySayxGG_SitSryxG12initializing_tF6SQLite6SetterV_Tg5 +_T0Sa12_getCapacitySiyF6SQLite6SetterV_Tg5 +_T0SayxGs8SequenceslsABP19underestimatedCountSifgTW6SQLite6SetterV_Tg5 +_T0s10CollectionPsE19underestimatedCountSifgSay6SQLite6SetterVG_Tg5 +_T0SayxGs10CollectionslsABP5count13IndexDistanceQzfgTW6SQLite6SetterV_Tg5 +unkeyedContainer +container +userInfo.get +deinit +superDecoder +nestedUnkeyedContainer +decodeIfPresent +decode +allKeys.get +get +== +_T0s10DictionaryV4KeysVySSSi_GADyxq__Gs8Sequencess8HashableRzr0_lWl +_T0s10DictionaryV4KeysVySSSi_GMa +_T0s10DictionaryVySSSiGMa +singleValueContainer +superEncoder +encodeIfPresent +encodeConditional +encodeNil +_T06SQLite10ExpressionVySSSgGMa +_T0SSSgMa +_T06SQLite10ExpressionVy10Foundation4DataVGMa +_T06SQLite10ExpressionVySdGMa +_T06SQLite10ExpressionVySbGMa +_T06SQLite10ExpressionVySiGMa +datatypeValue.get +decoder +insert +_T0SayxGs26RangeReplaceableCollectionslsABP6appendyqd__10contentsOf_ts8SequenceRd__7ElementQyd__AGRtzlFTW6SQLite6SetterV_SayALGTg5 +__swift_destroy_boxed_opaque_existential_1 +__swift_project_boxed_opaque_existential_1 +__T0Sa6appendyqd__10contentsOf_t7ElementQyd__Rszs8SequenceRd__lF6SQLite11Expressible_p_SayAfG_pGTg5 +__T0s20_ArrayBufferProtocolPsE20_arrayAppendSequenceyqd__s0F0Rd__7ElementQyd__AERtzlFTfq4gn_ns01_aB0Vy6SQLite11Expressible_pG_s08IteratorF0Vys08IndexingJ0VySayAjK_pGGGTg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vy6SQLite11Expressible_pG_Tg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0Vy6SQLite11Expressible_pG_s07_IgnoreK0VyAmN_pGTg5 +__T0Sa15reserveCapacityySiF6SQLite11Expressible_p_Tg5 +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Extensions/RTree.swift +RTree.swift +_T0Sa15reserveCapacityySiF6SQLite11Expressible_p_Tg5 +_T0s22_ContiguousArrayBufferV18_initStorageHeaderySi5count_Si8capacitytF6SQLite11Expressible_p_Tg5 +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtFTfq4xnn_n6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferV8endIndexSifg6SQLite11Expressible_p_Tg5 +_T0Sa9_getCountSiyF6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferV20isUniquelyReferencedSbyF6SQLite11Expressible_p_Tg5 +_T0s20_ArrayBufferProtocolPsE20_arrayAppendSequenceyqd__s0F0Rd__7ElementQyd__AERtzlFTfq4gn_ns01_aB0Vy6SQLite11Expressible_pG_s08IteratorF0Vys08IndexingJ0VySayAjK_pGGGTg5 +_T0s16IteratorSequenceVyxGs0A8ProtocolssADRzlsADP4next7ElementQzSgyFTWs08IndexingA0VySay6SQLite11Expressible_pGG_Tg5 +_T0s16IteratorSequenceV4next7ElementQzSgyFs08IndexingA0VySay6SQLite11Expressible_pGG_Tg5 +_T0s16IndexingIteratorVyxGs0B8Protocolss14_IndexableBaseRzlsADP4next7ElementQzSgyFTWSay6SQLite11Expressible_pG_Tg5 +_T0SayxGs14_IndexableBaseslsABP9formIndexy0D0Qzz5after_tFTW6SQLite11Expressible_p_Tg5 +_T0Sa9formIndexySiz5after_tF6SQLite11Expressible_p_Tg5 +_T0SayxGs14_IndexableBaseslsABP9subscript7ElementQz5IndexQzcfgTW6SQLite11Expressible_p_Tg5 +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtF6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tF6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifsTW6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferV5countSifs6SQLite11Expressible_p_Tg5 +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktF6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP19firstElementAddressSpy0E0QzGfgTW6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferV19firstElementAddressSpyxGfg6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8capacitySifgTW6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferV8capacitySifg6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifgTW6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferV5countSifg6SQLite11Expressible_p_Tg5 +_T0SayxGs14_IndexableBaseslsABP8endIndex0D0QzfgTW6SQLite11Expressible_p_Tg5 +_T0Sa8endIndexSifg6SQLite11Expressible_p_Tg5 +_T0s16IteratorSequenceVyxGs0B0ss0A8ProtocolRzlsADP04makeA00A0QzyFTWs08IndexingA0VySay6SQLite11Expressible_pGG_Tg5 +_T0Sa24reserveCapacityForAppendySi16newElementsCount_tF6SQLite11Expressible_p_Tg5 +_T0Sr5countSifg6SQLite11Expressible_p_Tg5 +_T0SayxGs8SequenceslsABP13_copyContents8IteratorQz_SitSry7ElementQzG12initializing_tFTW6SQLite11Expressible_p_Tg5 +_T0Sa13_copyContentss16IndexingIteratorVySayxGG_SitSryxG12initializing_tF6SQLite11Expressible_p_Tg5 +_T0Sa12_getCapacitySiyF6SQLite11Expressible_p_Tg5 +_T0SayxGs8SequenceslsABP19underestimatedCountSifgTW6SQLite11Expressible_p_Tg5 +_T0s10CollectionPsE19underestimatedCountSifgSay6SQLite11Expressible_pG_Tg5 +_T0SayxGs10CollectionslsABP5count13IndexDistanceQzfgTW6SQLite11Expressible_p_Tg5 +RTree +_T0SayxGs14_IndexableBaseslsABP9formIndexy0D0Qzz5after_tFTW +_T0Sa9formIndexySiz5after_tF +_T0SayxGs14_IndexableBaseslsABP8endIndex0D0QzfgTW +_T0Sa8endIndexSifg +_T0SayxGs14_IndexableBaseslsABP9subscript7ElementQz5IndexQzcfgTW +__T06SQLite4BlobVs23CustomStringConvertibleAAsADP11descriptionSSfgTW +__T06SQLite4BlobVs9EquatableAAsADP2eeoiSbx_xtFZTW +__T0SS21_fromCodeUnitSequenceSSSgxm_q_5inputts16_UnicodeEncodingRzs10CollectionR_7ElementQy_0bC0Rtzr0_lFZs0F0O4UTF8O_SRys5UInt8VGTgq5Tfq4nxd_n +__T0s15ContiguousArrayV15reserveCapacityySiFSS_Tg5 +__T0s2eeoiSbSayxG_ABts9EquatableRzlFTfq4gg_ns5UInt8V_Tg5 +__T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tFSS_Tg5 +__T0s22_ContiguousArrayBufferVAByxGSi19_uninitializedCount_Si15minimumCapacitytcfCs5UInt8V_Tg5Tf4nnd_n +__T06SQLite4BlobVwXX +__T06SQLite4BlobVwCP +___swift_noop_self_return +___swift_noop_void_return +__T06SQLite4BlobVwcp +__T06SQLite4BlobVwca +___swift_memcpy4_4 +__T06SQLite4BlobVwta +__T06SQLite4BlobVwXx +__T06SQLite4BlobVwCc +___swift_memmove_array4_4 +__T06SQLite4BlobVwxs +__T06SQLite4BlobVwxg +__T06SQLite4BlobVwCp +__T06SQLite4BlobVwxx +__T06SQLite4BlobVWV +__T06SQLite4BlobVMf +__T06SQLite4BlobVMF +__T0Says5UInt8VGML +__T0s23_ContiguousArrayStorageCys5UInt8VGML +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Blob.swift +_T06SQLite4BlobVMa +Blob.swift +get_field_types_Blob +_T0Says5UInt8VGMa +_T06SQLite4BlobVwxg +_T06SQLite4BlobVwxs +__swift_memmove_array4_4 +_T06SQLite4BlobVwCc +_T06SQLite4BlobVwXx +_T06SQLite4BlobVwta +__swift_memcpy4_4 +_T06SQLite4BlobVwca +_T06SQLite4BlobVwcp +__swift_noop_void_return +__swift_noop_self_return +_T06SQLite4BlobVwCP +_T06SQLite4BlobVwXX +_T06SQLite4BlobVs9EquatableAAWa +_T06SQLite4BlobVs23CustomStringConvertibleAAWa +_T0s22_ContiguousArrayBufferVAByxGSi19_uninitializedCount_Si15minimumCapacitytcfCs5UInt8V_Tg5Tf4nnd_n +_T0s23_ContiguousArrayStorageCys5UInt8VGMa +_T0s2eeoiSbSayxG_ABts9EquatableRzlFTfq4gg_ns5UInt8V_Tg5 +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktFs5UInt8V_Tg5 +_T0s5UInt8Vs9EquatablessACP2eeoiSbx_xtFZTW +_T0s12_ArrayBufferV8identitySVfgs5UInt8V_Tg5 +_T0Sa9_getCountSiyFs5UInt8V_Tg5 +_T0s15ContiguousArrayV15reserveCapacityySiFSS_Tg5 +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtFTfq4xnn_nSS_Tg5 +_T0s15ContiguousArrayV9_getCountSiyFSS_Tg5 +description.get +toHex +map +_T0s10CollectionPsE3mapSayqd__Gqd__7ElementQzKcKlFTfq4gn_nSays5UInt8VG_SSTg5 +_T0s15ContiguousArrayV6appendyxFSS_Tg5 +_T0s15ContiguousArrayV36_reserveCapacityAssumingUniqueBufferySi8oldCount_tFSS_Tg5 +_T0SayxGs10CollectionslsABP9subscript7ElementQz5IndexQzcfgTWs5UInt8V_Tg5 +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtFs5UInt8V_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tFs5UInt8V_Tg5 +_T0s15ContiguousArrayV37_appendElementAssumeUniqueAndCapacityySi_x03newD0tFSS_Tg5 +_T0s15ContiguousArrayV37_appendElementAssumeUniqueAndCapacityySi_x03newD0tFTfq4ngn_nSS_Tg5 +_T0s15ContiguousArrayV034_makeUniqueAndReserveCapacityIfNotD0yyFSS_Tg5 +_T0s22_ContiguousArrayBufferV5countSifgSS_Tg5 +_T0s5UInt8VSSs5Error_pIxyozo_ABSSsAC_pIxirzo_TR +_T06SQLite4BlobV5toHexSSyFSSs5UInt8VcfU_ +_T0SS1poiS2S_SStFZTfq4gXgXd_n +_T0s15_uint64ToStringSSs6UInt64V_s5Int64V5radixSb9uppercasetF +_T0S2RyxGSPyxGSg5start_Si5counttcfCs5UInt8V_Tgq5Tfq4nnd_n +_T0SayxGs10CollectionslsABP5count13IndexDistanceQzfgTWs5UInt8V_Tg5 +_T0S2ayxGqd__c7ElementQyd__Rszs8SequenceRd__lufCTfq4gn_ns5UInt8V_SRyAFGTg5 +_T0SRyxGs8SequenceslsABP22_copyToContiguousArrays0dE0Vy7ElementQzGyFTWs5UInt8V_Tg5 +_T0s10CollectionPsE22_copyToContiguousArrays0dE0Vy7ElementQzGyFSRys5UInt8VG_Tg5 +_T0s32_copyCollectionToContiguousArrays0dE0Vy7ElementQzGxs0B0RzlFSRys5UInt8VG_Tg5 +_T0SRyxGs14_IndexableBaseslsABP9formIndexy0D0Qzz5after_tFTWs5UInt8V_Tg5 +_T0SR9formIndexySiz5after_tFs5UInt8V_Tg5 +_T0SRyxGs10CollectionslsABP5count13IndexDistanceQzfgTWs5UInt8V_Tg5 +_T0SR5countSifgs5UInt8V_Tg5 +_T0SRyxGs10CollectionslsABP9subscript7ElementQz5IndexQzcfgTWs5UInt8V_Tg5 +_T0SR9subscriptxSicfgs5UInt8V_Tg5 +_T0s22_ContiguousArrayBufferVAByxGSi19_uninitializedCount_Si15minimumCapacitytcfCs5UInt8V_Tg5 +_T0s15ContiguousArrayVAByxGycfCs5UInt8V_Tg5 +bytes.get +__T010Foundation4DataV6SQLiteE13datatypeValueAD4BlobVfgAGSPys5UInt8VGcfU_ +__T0SPys5UInt8VG6SQLite4BlobVs5Error_pIxyozo_AcFsAG_pIxyrzo_TR +__T010Foundation4DataV6SQLite5ValueA2dEP16declaredDatatypeSSfgZTW +__T010Foundation4DataV6SQLite5ValueA2dEP012fromDatatypeD00D4TypeQz0F0QzFZTW +__T010Foundation4DataV6SQLite5ValueA2dEP08datatypeD08DatatypeQzfgTW +__T010Foundation4DataV6SQLite11ExpressibleA2dEP10expressionAD10ExpressionVyytGfgTW +__T010Foundation4DateV6SQLite5ValueA2dEP16declaredDatatypeSSfgZTW +__T010Foundation4DateV6SQLite5ValueA2dEP012fromDatatypeD00D4TypeQz0F0QzFZTW +__T010Foundation4DateV6SQLite5ValueA2dEP08datatypeD08DatatypeQzfgTW +__T010Foundation4DateV6SQLite11ExpressibleA2dEP10expressionAD10ExpressionVyytGfgTW +_globalinit_33_6C6C58A93ECDD528D3D6564FAC7933BD_func0 +__T06SQLite13dateFormatterSo04DateC0CvfiADycfU_ +_globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_func10 +_globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_func11 +__T010Foundation4DataV6SQLiteE13datatypeValueAD4BlobVfgAGSPys5UInt8VGcfU_TA +__T0SPys5UInt8VG6SQLite4BlobVs5Error_pIxyozo_AcFsAG_pIxyrzo_TRTA +__T010Foundation4DataV15withUnsafeBytesxxSPyq_GKcKr0_lFxs0D16RawBufferPointerVKcfU_6SQLite4BlobV_s5UInt8VTG5 +__T010Foundation4DataV15withUnsafeBytesxxSPyq_GKcKr0_lFxs0D16RawBufferPointerVKcfU_6SQLite4BlobV_s5UInt8VTG5TA +__T010Foundation4DataV6SQLiteE13datatypeValueAD4BlobVfgAGSPys5UInt8VGcfU_Tf4ngX_n +__T010Foundation4DataV6SQLiteE13datatypeValueAD4BlobVfgAGSPys5UInt8VGcfU_TA.10 +__T010Foundation4DataV15withUnsafeBytesxxSPyq_GKcKr0_lFxs0D16RawBufferPointerVKcfU_6SQLite4BlobV_s5UInt8VTG5TA.18 +__T0SPys5UInt8VG6SQLite4BlobVs5Error_pIxyozo_AcFsAG_pIxyrzo_TRTA.14 +__T010Foundation4DataV6SQLite5ValueADMA +__T010Foundation4DateV6SQLite5ValueADMA +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Foundation.swift +_T010Foundation4DataV6SQLiteE13datatypeValueAD4BlobVfgAGSPys5UInt8VGcfU_Tf4ngX_n +Foundation.swift +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite +objectdestroy.12 +_T010Foundation4DateV6SQLite11ExpressibleADWa +_T010Foundation4DateV6SQLite5ValueADWa +_T010Foundation4DataV6SQLite11ExpressibleADWa +_T010Foundation4DataV6SQLite5ValueADWa +_T010Foundation4DataV15withUnsafeBytesxxSPyq_GKcKr0_lFxs0D16RawBufferPointerVKcfU_6SQLite4BlobV_s5UInt8VTG5TA +_T010Foundation4DataV15withUnsafeBytesxxSPyq_GKcKr0_lFxs0D16RawBufferPointerVKcfU_6SQLite4BlobV_s5UInt8VTG5 +_T010Foundation4DataV15withUnsafeBytesxxSPyq_GKcKr0_lFxs0D16RawBufferPointerVKcfU_6SQLite4BlobV_s5UInt8VTg5 +_T0SPys5UInt8VG6SQLite4BlobVs5Error_pIxyozo_AcFsAG_pIxyrzo_TRTA +_T0SPys5UInt8VG6SQLite4BlobVs5Error_pIxyozo_AcFsAG_pIxyrzo_TR +_T010Foundation4DataV6SQLiteE13datatypeValueAD4BlobVfgAGSPys5UInt8VGcfU_TA +_T010Foundation4DataV6SQLiteE13datatypeValueAD4BlobVfgAGSPys5UInt8VGcfU_ +_T06SQLite13dateFormatterSo04DateC0CvfiADycfU_ +globalinit_33_6C6C58A93ECDD528D3D6564FAC7933BD_func0 +_T06SQLite13dateFormatterSo04DateC0Cfau +fromDatatypeValue +declaredDatatype.get +_T0SS6SQLiteE16declaredDatatypeSSfau +withUnsafeBytes +_T06SQLite4BlobV16declaredDatatypeSSfau +__T06SQLite10ConnectionC9OperationOs9EquatableAAsAFP2eeoiSbx_xtFZTW +__T06SQLite10ConnectionC7executeySSKFs5Int32VyKcfU_ +__T06SQLite10ConnectionC15TransactionModeOs9EquatableAAsAFP2eeoiSbx_xtFZTW +__T06SQLite10ConnectionC15TransactionModeOs8HashableAAsAFP9hashValueSifgTW +__T06SQLite10ConnectionC15TransactionModeOs16RawRepresentableAAsAFPxSg0E5ValueQz03rawG0_tcfCTW +__T06SQLite10ConnectionC15TransactionModeOs16RawRepresentableAAsAFP8rawValue0eH0QzfgTW +__T06SQLite10ConnectionC11transaction33_79F5A2E9E6411E14122CA7C8A9C356C7LLySS_yyKcS2S2ortKFyyKcfU_ +__T06SQLite10ConnectionC11busyTimeoutSdfmytfU_ +__T0s5Int32VABIxyd_A2BIyByd_TR +__T06SQLite10ConnectionC11busyHandlerySbSicSgFs5Int32VSvSg_AGtcfU0_To +__T06SQLite10ConnectionC8trace_v233_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgF +__T06SQLite10ConnectionC8trace_v133_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgF +__T0SVIxy_SVIyBy_TR +__T06SQLite10ConnectionC8trace_v133_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgFySvSg_SPys4Int8VGSgtcfU0_ +__T06SQLite10ConnectionC8trace_v133_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgFySvSg_SPys4Int8VGSgtcfU0_To +__T0s5Int32VSPys4Int8VGAEs5Int64VIxyyyy_Ab2eGIyByyyy_TR +__T06SQLite10ConnectionC10updateHookyyAC9OperationO_S2Ss5Int64VtcSgFySvSg_s5Int32VSPys4Int8VGSgApHtcfU0_ +__T06SQLite10ConnectionC10updateHookyyAC9OperationO_S2Ss5Int64VtcSgFySvSg_s5Int32VSPys4Int8VGSgApHtcfU0_To +__T06SQLite10ConnectionC10commitHookyyyKcSgFs5Int32VycfU_ +__T0s5Int32VIxd_ABIyBd_TR +__T06SQLite10ConnectionC10commitHookyyyKcSgFs5Int32VSvSgcfU0_To +__T0Ix_IyB_TR +__T06SQLite10ConnectionC12rollbackHookyyycSgFySvSgcfU0_To +__T06SQLite10ConnectionC14createFunctionySS_SuSg13argumentCountSb13deterministicAA7Binding_pSgSayAIGctFys13OpaquePointerVSg_s5Int32VSpyAMGSgtcfU0_AISicfU_ +__T0s10CollectionPsE5count13IndexDistanceQzfgSS13CharacterViewV_Tg5 +__T0s13OpaquePointerVSgs5Int32VSpyACGSgIxyyy_AceGIyByyy_TR +__T06SQLite10ConnectionC14createFunctionySS_SuSg13argumentCountSb13deterministicAA7Binding_pSgSayAIGctFys13OpaquePointerVSg_s5Int32VSpyAMGSgtcfU1_To +__T0S2Vs5Int32VIxyyd_S2VABIyByyd_TR +__T06SQLite10ConnectionC15createCollationySS_SC16ComparisonResultOSS_SStctKFs5Int32VSvSg_AHSVSgAhJtcfU0_To +_globalinit_33_79F5A2E9E6411E14122CA7C8A9C356C7_func1 +__T06SQLite10ConnectionCs23CustomStringConvertibleAAsADP11descriptionSSfgTW +__T06SQLite10ConnectionC8LocationOs23CustomStringConvertibleAAsAFP11descriptionSSfgTW +_globalinit_33_79F5A2E9E6411E14122CA7C8A9C356C7_func2 +__T0s3SetV8containsSbxFs5Int32V_Tg5 +__T06SQLite6ResultOs5ErrorAAsADP7_domainSSfgTW +__T06SQLite6ResultOs5ErrorAAsADP5_codeSifgTW +__T06SQLite6ResultOs5ErrorAAsADP9_userInfoyXlSgfgTW +__T06SQLite6ResultOs5ErrorAAsADP5_codeSifgTWTm +__T06SQLite6ResultOs5ErrorAAsADP19_getEmbeddedNSErroryXlSgyFTW +__T06SQLite6ResultOs23CustomStringConvertibleAAsADP11descriptionSSfgTW +__T06SQLite10ConnectionC8trace_v233_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgFs5Int32Vs6UInt32V_SvSgA2KtcfU0_To +_globalinit_33_6574432B243886442F79BBD7FC6A56C2_func4 +__T0s15ContiguousArrayV15reserveCapacityySiF6SQLite7Binding_pSg_Tg5 +__T0s26_toStringReadOnlyPrintableSSxs06CustomB11ConvertibleRzlFTfq4g_n6SQLite9StatementC_Tg5 +__T0s26_toStringReadOnlyPrintableSSxs06CustomB11ConvertibleRzlFTfq4g_ns5Int32V_Tg5 +__T0SS11utf8CStrings15ContiguousArrayVys4Int8VGfgTfq4x_n +__T0s15ContiguousArrayV15reserveCapacityySiFs4Int8V_Tgq5 +__T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tFs4Int8V_Tgq5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFAEys4Int8VG_Tgq5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFAEys4Int8VG_s07_IgnoreK0VyALGTgq5Tfq4nnndn_n +__T0s14_decodeCStringSS6result_Sb11repairsMadetSgSPy8CodeUnitQzG_xm2asSi6lengthSb016repairingInvalidF5Unitsts16_UnicodeEncodingRzlFs0M0O4UTF8O_Tgq5 +__T0s13_StringBufferV13fromCodeUnitsABSg_Sb8hadErrortx_q_m8encodingSb24repairIllFormedSequencesSi15minimumCapacityts8SequenceRzs16_UnicodeEncodingR_0D4UnitQy_7ElementRtzr0_lFZSRys5UInt8VG_s0P0O4UTF8OTgq5Tfq4xnnnd_n +__T0s24_VariantDictionaryBufferO17nativeUpdateValueq_Sgq__x6forKeytFSi_ys13OpaquePointerVSg_s5Int32VSpyAHGSgtXBTg5 +__T0s24_VariantDictionaryBufferO018ensureUniqueNativeC0Sb11reallocated_Sb15capacityChangedtSiFSi_ys13OpaquePointerVSg_s5Int32VSpyAHGSgtXBTg5 +__T0s24_VariantDictionaryBufferO018ensureUniqueNativeC0Sb11reallocated_Sb15capacityChangedtSiFSS_s0B0VySiys13OpaquePointerVSg_s5Int32VSpyAJGSgtXBGTg5 +__T0s24_VariantDictionaryBufferO018ensureUniqueNativeC0Sb11reallocated_Sb15capacityChangedtSiFSS_s5Int32VSV_SVtXBTg5 +__T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tF6SQLite7Binding_pSg_Tg5 +__T0SS8UTF8ViewV6_countSix9fromUTF16_ts8SequenceRzs6UInt16V7ElementRtzlFSRyAGG_Tgq5Tfq4xd_n +__T0SS8UTF8ViewV6_countSix9fromUTF16_ts8SequenceRzs6UInt16V7ElementRtzlFs11_StringCoreV_Tgq5Tfq4gXd_n +__T0s24_VariantDictionaryBufferO12nativeDeleteys07_NativebC0Vyxq_G_Si11idealBucketSi6offsettFTfq4gnnn_nSS_s0B0VySiys13OpaquePointerVSg_s5Int32VSpyAMGSgtXBGTg5 +__T0s23_NativeDictionaryBufferVss8HashableRzr0_lE12unsafeAddNewyx3key_q_5valuetFTfq4ggn_nSi_ys13OpaquePointerVSg_s5Int32VSpyAIGSgtXBTg5 +__T0s23_NativeDictionaryBufferVss8HashableRzr0_lE12unsafeAddNewyx3key_q_5valuetFTfq4ggn_nSS_s0B0VySiys13OpaquePointerVSg_s5Int32VSpyAKGSgtXBGTg5 +__T0s23_NativeDictionaryBufferVss8HashableRzr0_lE12unsafeAddNewyx3key_q_5valuetFTfq4ggn_nSS_s5Int32VSV_SVtXBTg5 +__T0s2eeoiSbx_xts16RawRepresentableRzs9Equatable0B5ValueRpzlFTfq4gg_n6SQLite10ConnectionC15TransactionModeO_Tg5 +__T0SS13CharacterViewV39_internalExtraCheckGraphemeBreakBetweenSbs6UInt16V_AEtFZTfq4nnd_n +__T0SS13CharacterViewV42_measureExtendedGraphemeClusterForwardSlowS2i14relativeOffset_SS5IndexV5startAF3endSi0lK5UTF16tFTfq4nxxnn_n +__T0s7UnicodeO5UTF16O6decodes0A14DecodingResultOxzs16IteratorProtocolRzs6UInt16V7ElementRtzlFSS0A10ScalarViewV08_ScratchF0V_Tgq5 +__T0Sis11_StrideablessAAP8advancedx6StrideQz2by_tFTW +__T0s23_BidirectionalIndexablePsE8distance13IndexDistanceQz0D0Qz4from_AG2totFSS13CharacterViewV_Tgq5Tfq4xxn_n +__T0SS13CharacterViewV43_measureExtendedGraphemeClusterBackwardSlowS2i9endOffset_SS5IndexV5startAF0I0Si0iK5UTF16tFTfq4nxxnn_n +__T0s19_ThreadLocalStorageV17getUBreakIterators13OpaquePointerVs11_StringCoreV3for_tFZTfq4gXd_n +__T0SS13CharacterViewV22legacyGraphemeBackwardSiSS5IndexV5start_AE3endSi0hF5UTF16tFTfq4xxnn_n +__T06SQLite6ResultOACSgs5Int32V9errorCode_AA10ConnectionC10connectionAA9StatementCSg9statementtcfCTf4ngnd_n +__T06SQLite10ConnectionC9OperationOAEs5Int32V8rawValue_tc33_79F5A2E9E6411E14122CA7C8A9C356C7LlfCTf4nd_n +__T06SQLite10ConnectionCA2C8LocationO_Sb8readonlytKcfcTf4gnn_n +__T06SQLite10ConnectionC7executeySSKFs5Int32VyKcfU_Tf4ggX_n +__T06SQLite10ConnectionC7executeySSKFs5Int32VyKcfU_TA +__T0s5Int32Vs5Error_pIxdzo_ABsAC_pIxrzo_TRTA +__T06SQLite9StatementC4bindACSayAA7Binding_pSgGFTf4gn_nTf4nn_g +__T06SQLite9StatementCAcA10ConnectionC_SStKcfcTf4ggXn_n +__T06SQLite10ConnectionC7prepareAA9StatementCSS_SayAA7Binding_pSgGdtKFTf4gXnn_n +__T06SQLite9StatementC4bindACs10DictionaryVySSAA7Binding_pSgGFTf4gn_n +__T06SQLite10ConnectionC3runAA9StatementCSS_SayAA7Binding_pSgGtKFTf4gXnn_n +__T0s32_copyCollectionToContiguousArrays0dE0Vy7ElementQzGxs0B0RzlFSRys5UInt8VG_Tg5Tf4x_n +__T0S2SSPys5UInt8VG7cString_tcfCTfq4nd_n +__T06SQLite10ConnectionC15TransactionModeOAESgSS8rawValue_tcfCTf4gXd_n +__T0s23_ContiguousArrayStorageCySSGMa +__T06SQLite10ConnectionC11transaction33_79F5A2E9E6411E14122CA7C8A9C356C7LLySS_yyKcS2S2ortKFyyKcfU_Tf4ggXggXx_n +__T06SQLite10ConnectionC11transaction33_79F5A2E9E6411E14122CA7C8A9C356C7LLySS_yyKcS2S2ortKFTf4gXggXgXn_n +__T06SQLite10ConnectionC11busyTimeoutSdfWTf4dn_n +__T06SQLite10ConnectionC11busyHandlerySbSicSgFs5Int32VAGcfU_TA +_block_copy_helper +_block_destroy_helper +__T06SQLite10ConnectionC10updateHookyyAC9OperationO_S2Ss5Int64VtcSgFys5Int32V_SPys4Int8VGAnHtcfU_TA +__T06SQLite10ConnectionC10commitHookyyyKcSgFs5Int32VycfU_TA +__T06SQLite10ConnectionC12rollbackHookyyycSgFyycfU_TA +__T06SQLite10ConnectionC10updateHookyyAC9OperationO_S2Ss5Int64VtcSgFys5Int32V_SPys4Int8VGAnHtcfU_Tf4nnnng_n +__T0s23_NativeDictionaryBufferVss8HashableRzr0_lE9fromArrayAByxq_GSayx_q_tGFZTfq4gn_nSi_ys13OpaquePointerVSg_s5Int32VSpyAIGSgtXBTg5Tf4nd_n +__T0s24_VariantDictionaryBufferO17nativeUpdateValueq_Sgq__x6forKeytFSS_s0B0VySiys13OpaquePointerVSg_s5Int32VSpyAJGSgtXBGTg5Tf4nxn_n +__T0s24_VariantDictionaryBufferO18nativeRemoveObjectq_Sgx6forKey_tFSS_s0B0VySiys13OpaquePointerVSg_s5Int32VSpyAJGSgtXBGTg5Tf4xn_n +__T06SQLite10ConnectionC14createFunctionySS_SuSg13argumentCountSb13deterministicAA7Binding_pSgSayAIGctFTf4gXnngn_n +__T06SQLite10ConnectionC15createCollationySS_SC16ComparisonResultOSS_SStctKFs5Int32VSV_SVtcfU_TA +__T06SQLite10ConnectionC14createFunctionySS_SuSg13argumentCountSb13deterministicAA7Binding_pSgSayAIGctFys13OpaquePointerVSg_s5Int32VSpyAMGSgtcfU0_Tf4nnng_n +__T0s24_VariantDictionaryBufferO17nativeUpdateValueq_Sgq__x6forKeytFSS_s5Int32VSV_SVtXBTg5Tf4nxn_n +__T06SQLite10ConnectionC8LocationOwXX +__T06SQLite10ConnectionC8LocationOwCP +__T06SQLite10ConnectionC8LocationOwpr +__T06SQLite10ConnectionC8LocationOwde +__T06SQLite10ConnectionC8LocationOwxx +__T06SQLite10ConnectionC8LocationOwCp +__T06SQLite10ConnectionC8LocationOwcp +__T06SQLite10ConnectionC8LocationOwca +__T06SQLite10ConnectionC8LocationOwTk +___swift_memcpy13_4 +__T06SQLite10ConnectionC8LocationOwta +__T06SQLite10ConnectionC8LocationOwal +___swift_copy_outline_existential_box_pointer4 +__T06SQLite10ConnectionC8LocationOwXx +__T06SQLite10ConnectionC8LocationOwCc +___swift_memmove_array16_4 +__T06SQLite10ConnectionC8LocationOwug +__T06SQLite10ConnectionC8LocationOwup +__T06SQLite10ConnectionC8LocationOwui +___swift_memcpy1_1 +___swift_memcpy_array1_1 +___swift_memmove_array1_1 +__T06SQLite10ConnectionC9OperationOwup +__T06SQLite10ConnectionC15TransactionModeOwxs +__T06SQLite10ConnectionC15TransactionModeOwxg +__T06SQLite10ConnectionC15TransactionModeOwug +__T06SQLite10ConnectionC15TransactionModeOwup +__T06SQLite10ConnectionC15TransactionModeOwui +__T06SQLite6ResultOwXX +__T06SQLite6ResultOwde +__T06SQLite6ResultOwxx +__T06SQLite6ResultOwCp +__T06SQLite6ResultOwcp +__T06SQLite6ResultOwca +__T06SQLite6ResultOwTk +___swift_memcpy20_4 +__T06SQLite6ResultOwta +__T06SQLite6ResultOwal +__T06SQLite6ResultOwXx +__T06SQLite6ResultOwCc +___swift_memmove_array20_4 +__T06SQLite6ResultOwug +__T06SQLite6ResultOwup +__T06SQLite6ResultOwui +__T0ys5Int32V_SPys4Int8VGAEs5Int64VtXBSgMa +__T0ys13OpaquePointerVSg_s5Int32VSpyACGSgtXBMa +__T0s37_HashableTypedNativeDictionaryStorageCySSs5Int32VSV_SVtXBGMa +__T06SQLite10ConnectionC15createCollationySS_SC16ComparisonResultOSS_SStctKFs5Int32VSvSg_AHSVSgAhJtcfU0_Tf4ndndn_n +__T06SQLite10ConnectionC14createFunctionySS_SuSg13argumentCountSb13deterministicAA7Binding_pSgSayAIGctFys13OpaquePointerVSg_s5Int32VSpyAMGSgtcfU0_TA +__T06SQLite10ConnectionC8trace_v233_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgFySVcfU_TA +__T0s16_NativeSetBufferVss8HashableRzlE9fromArrayAByxGSayxGFZTfq4gn_ns5Int32V_Tg5Tf4nd_n +__T06SQLite10ConnectionC8trace_v233_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgFs5Int32Vs6UInt32V_SvSgA2KtcfU0_Tf4dnnd_n +__T06SQLite10ConnectionC8trace_v133_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgFySVcfU_TA +__T06SQLite10ConnectionC8trace_v233_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgFySVcfU_TATm +__T06SQLite10ConnectionC11transaction33_79F5A2E9E6411E14122CA7C8A9C356C7LLySS_yyKcS2S2ortKFyyKcfU_TA +__T0s5Error_pIxzo_ytsAA_pIxrzo_TRTA +__T06SQLite10ConnectionC9OperationOwug +__T06SQLite10ConnectionC9OperationOwxg +_block_destroy_helper.20 +_block_destroy_helper.28 +_block_destroy_helper.36 +_block_destroy_helper.42 +_block_destroy_helper.60 +_block_destroy_helper.72 +_block_destroy_helper.78 +_block_copy_helper.19 +_block_copy_helper.27 +_block_copy_helper.35 +_block_copy_helper.41 +_block_copy_helper.59 +_block_copy_helper.71 +_block_copy_helper.77 +__T06SQLite10ConnectionC9OperationOs8HashableAAsAFP9hashValueSifgTW +__T06SQLite10ConnectionC9OperationOwxs +__T06SQLite6ResultOwCP +__T06SQLite6ResultOwpr +__T06SQLite10ConnectionC9OperationOwui +__T06SQLite10ConnectionC8queueKey33_79F5A2E9E6411E14122CA7C8A9C356C7LL8Dispatch0o8SpecificD0CySiGvZ +__T06SQLite6ResultO12successCodes33_79F5A2E9E6411E14122CA7C8A9C356C7LLs3SetVys5Int32VGvZ +__T0So13DispatchQueueCML +__T0yXlML +_block_descriptor +__T0s5Int32VABXBML +_block_descriptor.21 +__T0ys5Int32V_SPys4Int8VGAEs5Int64VtXBML +__T0s5Int32V_SPys4Int8VGAEs5Int64VtML +__T0SPys4Int8VGML +_block_descriptor.29 +__T0s5Int32VyXBML +_block_descriptor.37 +__T0yyXBML +_block_descriptor.43 +__T0s5Int32VSV_SVtXBML +__T0SV_SVtML +__T06SQLite10ConnectionC7_handle33_79F5A2E9E6411E14122CA7C8A9C356C7LLs13OpaquePointerVSgvWvd +__T06SQLite10ConnectionC11busyHandler33_79F5A2E9E6411E14122CA7C8A9C356C7LLs5Int32VAGXBSgvWvd +__T06SQLite10ConnectionC5trace33_79F5A2E9E6411E14122CA7C8A9C356C7LLySVXBSgvWvd +__T06SQLite10ConnectionC10updateHook33_79F5A2E9E6411E14122CA7C8A9C356C7LLys5Int32V_SPys4Int8VGAJs5Int64VtXBSgvWvd +__T06SQLite10ConnectionC10commitHook33_79F5A2E9E6411E14122CA7C8A9C356C7LLs5Int32VyXBSgvWvd +__T06SQLite10ConnectionC12rollbackHook33_79F5A2E9E6411E14122CA7C8A9C356C7LLyyXBSgvWvd +__T06SQLite10ConnectionC9functions33_79F5A2E9E6411E14122CA7C8A9C356C7LLs10DictionaryVySSAGySiys13OpaquePointerVSg_s5Int32VSpyAJGSgtXBGGvWvd +__T06SQLite10ConnectionC10collations33_79F5A2E9E6411E14122CA7C8A9C356C7LLs10DictionaryVySSs5Int32VSV_SVtXBGvWvd +__T06SQLite10ConnectionC5queue33_79F5A2E9E6411E14122CA7C8A9C356C7LLSo13DispatchQueueCvWvd +__T06SQLite10ConnectionC0025queueContextstorage_hqFBg33_79F5A2E9E6411E14122CA7C8A9C356C7LLSiSgvWvd +__T06SQLite10ConnectionCML +__T06SQLite10ConnectionCMf +__T06SQLite10ConnectionC8LocationOWV +__T06SQLite10ConnectionC8LocationOML +__T06SQLite10ConnectionC8LocationOMf +__T06SQLite10ConnectionC8LocationOMF +__T06SQLite10ConnectionC9OperationOWV +__T06SQLite10ConnectionC9OperationOML +__T06SQLite10ConnectionC9OperationOMf +__T06SQLite10ConnectionC9OperationOMF +__T06SQLite10ConnectionC15TransactionModeOWV +__T06SQLite10ConnectionC15TransactionModeOML +__T06SQLite10ConnectionC15TransactionModeOMf +__T06SQLite10ConnectionC15TransactionModeOMF +__T06SQLite10ConnectionCMF +__T06SQLite6ResultOWV +__T06SQLite6ResultOMf +__T06SQLite6ResultOMF +__T0SS7message_s5Int32V4code6SQLite9StatementCSg9statementtML +__T06SQLite9StatementCSgML +__T0s13OpaquePointerVSgML +__T0s5Int32VABXBSgML +__T0ySVXBSgML +__T0ySVXBML +__T0ys5Int32V_SPys4Int8VGAEs5Int64VtXBSgML +__T0s5Int32VyXBSgML +__T0yyXBSgML +__T0s10DictionaryVySSABySiys13OpaquePointerVSg_s5Int32VSpyAEGSgtXBGGML +__T0s10DictionaryVySiys13OpaquePointerVSg_s5Int32VSpyAEGSgtXBGML +__T0ys13OpaquePointerVSg_s5Int32VSpyACGSgtXBML +__T0s13OpaquePointerVSg_s5Int32VSpyACGSgtML +__T0Spys13OpaquePointerVSgGSgML +__T0Spys13OpaquePointerVSgGML +__T0s10DictionaryVySSs5Int32VSV_SVtXBGML +__T0SiSgML +__T06SQLite6ResultOmML +__T0s37_HashableTypedNativeDictionaryStorageCySSs5Int32VSV_SVtXBGML +_block_descriptor.61 +__T0s37_HashableTypedNativeDictionaryStorageCySiys13OpaquePointerVSg_s5Int32VSpyAEGSgtXBGML +__T0s37_HashableTypedNativeDictionaryStorageCySSs0D0VySiys13OpaquePointerVSg_s5Int32VSpyAGGSgtXBGGML +__T06SQLite16SQLITE_TRANSIENTySvSgXCv +_block_descriptor.73 +_block_descriptor.79 +__T0s23_ContiguousArrayStorageCys5Int32VGML +__T0s30_HashableTypedNativeSetStorageCys5Int32VGML +__T0s23_ContiguousArrayStorageCys4Int8VGML +__T08Dispatch0A11SpecificKeyCySiGML +__T06SQLite10ConnectionC15TransactionModeOs16RawRepresentableAAMA +__T0So13DispatchQueueCMF +__T0SC16ComparisonResultOMB +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Connection.swift +_T0s5Error_pIxzo_ytsAA_pIxrzo_TRTA +_T0s5Error_pIxzo_ytsAA_pIxrzo_TR +_T06SQLite10ConnectionC11transaction33_79F5A2E9E6411E14122CA7C8A9C356C7LLySS_yyKcS2S2ortKFyyKcfU_TA +objectdestroy.81 +_T06SQLite10ConnectionC8trace_v233_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgFySVcfU_TA +_T06SQLite10ConnectionC8trace_v233_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgFySVcfU_ +_T06SQLite10ConnectionC8trace_v233_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgFySVcfU_Tf4ng_n +_T06SQLite10ConnectionC8trace_v233_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgFs5Int32Vs6UInt32V_SvSgA2KtcfU0_Tf4dnnd_n +_T0s16_NativeSetBufferVss8HashableRzlE9fromArrayAByxGSayxGFZTfq4gn_ns5Int32V_Tg5Tf4nd_n +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtFs5Int32V_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tFs5Int32V_Tg5 +_T0Sp10initializeyx2to_Si5counttFTfq4gnn_ns5Int32V_Tg5 +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktFs5Int32V_Tg5 +_T0s5Int32Vs9EquatablessACP2eeoiSbx_xtFZTW +_T0s30_HashableTypedNativeSetStorageCys5Int32VGMa +_T0Sa9_getCountSiyFs5Int32V_Tg5 +objectdestroy.65 +_T06SQLite10ConnectionC14createFunctionySS_SuSg13argumentCountSb13deterministicAA7Binding_pSgSayAIGctFys13OpaquePointerVSg_s5Int32VSpyAMGSgtcfU0_TA +_T06SQLite10ConnectionC14createFunctionySS_SuSg13argumentCountSb13deterministicAA7Binding_pSgSayAIGctFys13OpaquePointerVSg_s5Int32VSpyAMGSgtcfU0_ +_T06SQLite10ConnectionC15createCollationySS_SC16ComparisonResultOSS_SStctKFs5Int32VSvSg_AHSVSgAhJtcfU0_Tf4ndndn_n +_T0s37_HashableTypedNativeDictionaryStorageCySSs5Int32VSV_SVtXBGMa +_T0s5Int32VSV_SVtXBMa +_T0SV_SVtMa +_T0ys13OpaquePointerVSg_s5Int32VSpyACGSgtXBMa +_T0s13OpaquePointerVSg_s5Int32VSpyACGSgtMa +_T0Spys13OpaquePointerVSgGSgMa +_T0Spys13OpaquePointerVSgGMa +_T0s13OpaquePointerVSgMa +_T0ys5Int32V_SPys4Int8VGAEs5Int64VtXBSgMa +_T0ys5Int32V_SPys4Int8VGAEs5Int64VtXBMa +_T0s5Int32V_SPys4Int8VGAEs5Int64VtMa +_T0SPys4Int8VGMa +_T06SQLite6ResultOMa +get_field_types_Result +_T0SS7message_s5Int32V4code6SQLite9StatementCSg9statementtMa +_T06SQLite9StatementCSgMa +_T06SQLite6ResultOwui +_T06SQLite6ResultOwup +_T06SQLite6ResultOwug +__swift_memmove_array20_4 +_T06SQLite6ResultOwCc +_T06SQLite6ResultOwXx +_T06SQLite6ResultOwal +_T06SQLite6ResultOwta +__swift_memcpy20_4 +_T06SQLite6ResultOwTk +_T06SQLite6ResultOwca +_T06SQLite6ResultOwcp +_T06SQLite6ResultOwCp +_T06SQLite6ResultOwxx +_T06SQLite6ResultOwde +_T06SQLite6ResultOwXX +initialize_metadata_TransactionMode +_T06SQLite10ConnectionCMa +_T06SQLite10ConnectionC15TransactionModeOMa +get_field_types_TransactionMode +_T06SQLite10ConnectionC15TransactionModeOwui +_T06SQLite10ConnectionC15TransactionModeOwup +_T06SQLite10ConnectionC15TransactionModeOwug +_T06SQLite10ConnectionC15TransactionModeOwxg +_T06SQLite10ConnectionC15TransactionModeOwxs +initialize_metadata_Operation +_T06SQLite10ConnectionC9OperationOMa +get_field_types_Operation +_T06SQLite10ConnectionC9OperationOwup +__swift_memmove_array1_1 +__swift_memcpy_array1_1 +__swift_memcpy1_1 +initialize_metadata_Location +_T06SQLite10ConnectionC8LocationOMa +get_field_types_Location +_T06SQLite10ConnectionC8LocationOwui +_T06SQLite10ConnectionC8LocationOwup +_T06SQLite10ConnectionC8LocationOwug +__swift_memmove_array16_4 +_T06SQLite10ConnectionC8LocationOwCc +_T06SQLite10ConnectionC8LocationOwXx +__swift_copy_outline_existential_box_pointer4 +_T06SQLite10ConnectionC8LocationOwal +_T06SQLite10ConnectionC8LocationOwta +__swift_memcpy13_4 +_T06SQLite10ConnectionC8LocationOwTk +_T06SQLite10ConnectionC8LocationOwca +_T06SQLite10ConnectionC8LocationOwcp +_T06SQLite10ConnectionC8LocationOwCp +_T06SQLite10ConnectionC8LocationOwxx +_T06SQLite10ConnectionC8LocationOwde +_T06SQLite10ConnectionC8LocationOwpr +_T06SQLite10ConnectionC8LocationOwCP +_T06SQLite10ConnectionC8LocationOwXX +get_field_types_Connection +_T0SiSgMa +_T0So13DispatchQueueCMa +_T0s10DictionaryVySSs5Int32VSV_SVtXBGMa +_T0s10DictionaryVySSABySiys13OpaquePointerVSg_s5Int32VSpyAEGSgtXBGGMa +_T0s10DictionaryVySiys13OpaquePointerVSg_s5Int32VSpyAEGSgtXBGMa +_T0yyXBSgMa +_T0yyXBMa +_T0s5Int32VyXBSgMa +_T0s5Int32VyXBMa +_T0ySVXBSgMa +_T0ySVXBMa +_T0s5Int32VABXBSgMa +_T0s5Int32VABXBMa +_T06SQLite6ResultOs23CustomStringConvertibleAAWa +_T06SQLite10ConnectionC8LocationOs23CustomStringConvertibleAAWa +_T06SQLite10ConnectionCs23CustomStringConvertibleAAWa +_T06SQLite6ResultOs5ErrorAAWa +_T06SQLite10ConnectionC15TransactionModeOs16RawRepresentableAAWa +_T06SQLite10ConnectionC15TransactionModeOs8HashableAAWa +_T06SQLite10ConnectionC15TransactionModeOs9EquatableAAWa +_T06SQLite10ConnectionC9OperationOs8HashableAAWa +_T06SQLite10ConnectionC9OperationOs9EquatableAAWa +_T0s24_VariantDictionaryBufferO17nativeUpdateValueq_Sgq__x6forKeytFSS_s5Int32VSV_SVtXBTg5Tf4nxn_n +_T0SSs9EquatablessAAP2eeoiSbx_xtFZTW +_T0Sp10initializeyx2to_Si5counttFTfq4gnn_ns5Int32VSV_SVtXB_Tg5 +_T0Sp10initializeyx2to_Si5counttFTfq4gnn_nSS_Tg5 +_T0SSs8HashablessAAP9hashValueSifgTW +_T06SQLite10ConnectionC14createFunctionySS_SuSg13argumentCountSb13deterministicAA7Binding_pSgSayAIGctFys13OpaquePointerVSg_s5Int32VSpyAMGSgtcfU0_Tf4nnng_n +_T0s10CollectionPsE3mapSayqd__Gqd__7ElementQzKcKlFTfq4gn_ns14CountableRangeVySiG_6SQLite7Binding_pSgTg5 +_T0s14CountableRangeVyxGs14_IndexableBasess10ComparableRzs11_StrideableRzs13SignedInteger6StridesAFPRpzlsADP9formIndexy0K0Qzz5after_tFTWSi_Tg5 +_T0s10_IndexablePsE9formIndexy0C0Qzz5after_tFs14CountableRangeVySiG_Tg5 +_T0s14CountableRangeVyxGs14_IndexableBasess10ComparableRzs11_StrideableRzs13SignedInteger6StridesAFPRpzlsADP5index5IndexQzAN5after_tFTWSi_Tg5 +_T0s14CountableRangeV5indexxx5after_tFSi_Tg5 +_T0Sis11_StrideablessAAP8advancedx6StrideQz2by_tFTW +_T0s10_IndexablePsE20_failEarlyRangeChecky5IndexQz_s0D0VyAEG6boundstFTfq4ngd_ns09CountableD0VySiG_Tg5 +_T0s15ContiguousArrayV6appendyxF6SQLite7Binding_pSg_Tg5 +_T0s15ContiguousArrayV36_reserveCapacityAssumingUniqueBufferySi8oldCount_tF6SQLite7Binding_pSg_Tg5 +_convertConstStringToUTF8PointerArgument +_T06SQLite16SQLITE_TRANSIENTySvSgXCfau +_T0s5Int32Vs13BinaryIntegerssACPxqd__18truncatingIfNeeded_tcsACRd__lufCTWSi_Tg5 +_T0s17FixedWidthIntegerPsExqd__18truncatingIfNeeded_tcs06BinaryC0Rd__lufCqd__s5Int32VXMTA2FRszsADRd__r__lItMiyd_Tpq5Si_Tg5 +_T0s15ContiguousArrayV37_appendElementAssumeUniqueAndCapacityySi_x03newD0tF6SQLite7Binding_pSg_Tg5 +_T0s15ContiguousArrayV37_appendElementAssumeUniqueAndCapacityySi_x03newD0tFTfq4ngn_n6SQLite7Binding_pSg_Tg5 +_T0s15ContiguousArrayV9_getCountSiyF6SQLite7Binding_pSg_Tg5 +_T0s15ContiguousArrayV034_makeUniqueAndReserveCapacityIfNotD0yyF6SQLite7Binding_pSg_Tg5 +_T0s22_ContiguousArrayBufferV5countSifg6SQLite7Binding_pSg_Tg5 +_T0Si6SQLite7Binding_pSgs5Error_pIxyrzo_SiACsAD_pIxirzo_TR +_T06SQLite10ConnectionC15createCollationySS_SC16ComparisonResultOSS_SStctKFs5Int32VSV_SVtcfU_TA +_T06SQLite10ConnectionC15createCollationySS_SC16ComparisonResultOSS_SStctKFs5Int32VSV_SVtcfU_ +createFunction +_T0SuSis5Error_pIxydzo_SuSisAA_pIxirzo_TR +_T06SQLite10ConnectionC14createFunctionySS_SuSg13argumentCountSb13deterministicAA7Binding_pSgSayAIGctFSiSucfU_ +handle.get +subscript.set +_T0s10DictionaryV11removeValueq_Sgx6forKey_tFSS_ABySiys13OpaquePointerVSg_s5Int32VSpyAHGSgtXBGTg5 +_T0s24_VariantDictionaryBufferO18nativeRemoveObjectq_Sgx6forKey_tFSS_s0B0VySiys13OpaquePointerVSg_s5Int32VSpyAJGSgtXBGTg5 +_T0s24_VariantDictionaryBufferO17nativeUpdateValueq_Sgq__x6forKeytFSS_s0B0VySiys13OpaquePointerVSg_s5Int32VSpyAJGSgtXBGTg5 +_T0s10DictionaryVAByxq_GSayx_q_tG17dictionaryLiterald_tcfCTfq4gn_nSi_ys13OpaquePointerVSg_s5Int32VSpyAHGSgtXBTg5 +_T0s23_NativeDictionaryBufferVss8HashableRzr0_lE9fromArrayAByxq_GSayx_q_tGFZTfq4gn_nSi_ys13OpaquePointerVSg_s5Int32VSpyAIGSgtXBTg5 +_T06SQLite10ConnectionC14createFunctionySS_SuSg13argumentCountSb13deterministicAA7Binding_pSgSayAIGctFSiyKXKfu_ +_T0Sis10ComparablessAAP1loiSbx_xtFZTW +_T0s24_VariantDictionaryBufferO18nativeRemoveObjectq_Sgx6forKey_tFSS_s0B0VySiys13OpaquePointerVSg_s5Int32VSpyAJGSgtXBGTg5Tf4xn_n +_T0s24_VariantDictionaryBufferO17nativeUpdateValueq_Sgq__x6forKeytFSS_s0B0VySiys13OpaquePointerVSg_s5Int32VSpyAJGSgtXBGTg5Tf4nxn_n +_T0Sp10initializeyx2to_Si5counttFTfq4gnn_ns10DictionaryVySiys13OpaquePointerVSg_s5Int32VSpyAHGSgtXBG_Tg5 +_T0s23_NativeDictionaryBufferVss8HashableRzr0_lE9fromArrayAByxq_GSayx_q_tGFZTfq4gn_nSi_ys13OpaquePointerVSg_s5Int32VSpyAIGSgtXBTg5Tf4nd_n +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtFSi_ys13OpaquePointerVSg_s5Int32VSpyAGGSgtXBt_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tFSi_ys13OpaquePointerVSg_s5Int32VSpyAGGSgtXBt_Tg5 +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktFSi_ys13OpaquePointerVSg_s5Int32VSpyAHGSgtXBt_Tg5 +_T0Sp10initializeyx2to_Si5counttFTfq4gnn_nSi_Tg5 +_T0Sp10initializeyx2to_Si5counttFTfq4gnn_nys13OpaquePointerVSg_s5Int32VSpyAFGSgtXB_Tg5 +_T0s23_NativeDictionaryBufferVAByxq_GSi8capacity_s04_RawaB7StorageC7storagetcfCSi_ys13OpaquePointerVSg_s5Int32VSpyAJGSgtXBTg5 +_T0s23_NativeDictionaryBufferVAByxq_GSi8capacity_s04_RawaB7StorageC7storagetcfCSi_ys13OpaquePointerVSg_s5Int32VSpyAJGSgtXBTg5Tf4nnd_n +_T0s37_HashableTypedNativeDictionaryStorageCySiys13OpaquePointerVSg_s5Int32VSpyAEGSgtXBGMa +_T0Sa9_getCountSiyFSi_ys13OpaquePointerVSg_s5Int32VSpyADGSgtXBt_Tg5 +_T06SQLite10ConnectionC10updateHookyyAC9OperationO_S2Ss5Int64VtcSgFys5Int32V_SPys4Int8VGAnHtcfU_Tf4nnnng_n +_T06SQLite10ConnectionC12rollbackHookyyycSgFyycfU_TA +_T06SQLite10ConnectionC12rollbackHookyyycSgFyycfU_ +_T06SQLite10ConnectionC10commitHookyyyKcSgFs5Int32VycfU_TA +_T06SQLite10ConnectionC10updateHookyyAC9OperationO_S2Ss5Int64VtcSgFys5Int32V_SPys4Int8VGAnHtcfU_TA +_T06SQLite10ConnectionC10updateHookyyAC9OperationO_S2Ss5Int64VtcSgFys5Int32V_SPys4Int8VGAnHtcfU_ +block_destroy_helper +block_copy_helper +_T06SQLite10ConnectionC11busyHandlerySbSicSgFs5Int32VAGcfU_TA +_T06SQLite10ConnectionC11busyHandlerySbSicSgFs5Int32VAGcfU_ +_T06SQLite10ConnectionC11busyHandlerySbSicSgFs5Int32VAGcfU_Tf4ng_n +objectdestroy.10 +busyTimeout.didset +transaction +sync +queueContext.get +_T06SQLite10ConnectionC11transaction33_79F5A2E9E6411E14122CA7C8A9C356C7LLySS_yyKcS2S2ortKFyyKcfU_ +_T06SQLite10ConnectionC8queueKey33_79F5A2E9E6411E14122CA7C8A9C356C7LL8Dispatch0o8SpecificD0CySiGfau +_T06SQLite10ConnectionC11transaction33_79F5A2E9E6411E14122CA7C8A9C356C7LLySS_yyKcS2S2ortKFyyKcfU_Tf4ggXggXx_n +run +prepare +bind +_T0Sa22_allocateUninitializedSayxG_SpyxGtSiFZ6SQLite7Binding_pSg_Tg5 +_T0S2ayxGSi19_uninitializedCount_tcfC6SQLite7Binding_pSg_Tg5 +isEmpty.get +_T0s5Int32Vs5Error_pIxdzo_ABsAC_pIxrzo_TRTA +_T0s5Int32Vs5Error_pIxdzo_ABsAC_pIxrzo_TR +_T06SQLite10ConnectionC7executeySSKFs5Int32VyKcfU_TA +_T06SQLite10ConnectionC7executeySSKFs5Int32VyKcfU_Tf4ggX_n +check +_T0So13DispatchQueueC0A0E10AttributesVs10SetAlgebraACsAFPxqd__cs8SequenceRd__7ElementQyd__AIRtzlufCTWSayAEG_Tg5 +_T0s10SetAlgebraPsExqd__cs8SequenceRd__7ElementQyd__ADRtzlufCSo13DispatchQueueC0E0E10AttributesV_SayAKGTg5 +_T0s10SetAlgebraPsExqd__cs8SequenceRd__7ElementQyd__ADRtzlufCSo13DispatchQueueC0E0E10AttributesV_SayAKGTg5Tf4gd_n +_T0So13DispatchQueueC0A0E10AttributesVs10SetAlgebraACsAFP6insertSb8inserted_7ElementQz17memberAfterInserttAKFTW +_T0s16IndexingIteratorVyxGs0B8Protocolss14_IndexableBaseRzlsADP4next7ElementQzSgyFTWSaySo13DispatchQueueC0H0E10AttributesVG_Tg5 +_T0SayxGs14_IndexableBaseslsABP9formIndexy0D0Qzz5after_tFTWSo13DispatchQueueC0F0E10AttributesV_Tg5 +_T0Sa9formIndexySiz5after_tFSo13DispatchQueueC0D0E10AttributesV_Tg5 +_T0SayxGs14_IndexableBaseslsABP9subscript7ElementQz5IndexQzcfgTWSo13DispatchQueueC0F0E10AttributesV_Tg5 +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktFSo13DispatchQueueC0L0E10AttributesV_Tg5 +_T0SayxGs14_IndexableBaseslsABP8endIndex0D0QzfgTWSo13DispatchQueueC0E0E10AttributesV_Tg5 +_T0Sa8endIndexSifgSo13DispatchQueueC0C0E10AttributesV_Tg5 +_T0Sa9_getCountSiyFSo13DispatchQueueC0C0E10AttributesV_Tg5 +_T0So13DispatchQueueC0A0E10AttributesVs10SetAlgebraACsAFPxycfCTW +_T06SQLite6ResultO12successCodes33_79F5A2E9E6411E14122CA7C8A9C356C7LLs3SetVys5Int32VGfau +_T0SS13CharacterViewV22legacyGraphemeBackwardSiSS5IndexV5start_AE3endSi0hF5UTF16tFTfq4xxnn_n +_T0s19_ThreadLocalStorageV17getUBreakIterators13OpaquePointerVs11_StringCoreV3for_tFZTfq4gXd_n +_T0SS13CharacterViewV43_measureExtendedGraphemeClusterBackwardSlowS2i9endOffset_SS5IndexV5startAF0I0Si0iK5UTF16tFTfq4nxxnn_n +_T0s23_BidirectionalIndexablePsE8distance13IndexDistanceQz0D0Qz4from_AG2totFSS13CharacterViewV_Tgq5Tfq4xxn_n +_T0s11_StringCoreV10startASCIISpys5UInt8VGfg +_T0SS13CharacterViewV42_measureExtendedGraphemeClusterForwardSlowS2i14relativeOffset_SS5IndexV5startAF3endSi0lK5UTF16tF +_T0Sr9subscriptxSicfgs5UInt8V_Tgq5 +_T0Sr9subscriptxSicfgs5UInt8V_Tgq5Tfq4nx_n +_T0Sr8endIndexSifgs5UInt8V_Tgq5 +_T0Sr8endIndexSifgs5UInt8V_Tgq5Tfq4x_n +_T0S2ryxGSpyxGSg5start_Si5counttcfCs5UInt8V_Tgq5 +_T0S2ryxGSpyxGSg5start_Si5counttcfCs5UInt8V_Tgq5Tfq4nnd_n +_T0SS13CharacterViewV39_internalExtraCheckGraphemeBreakBetweenSbs6UInt16V_AEtFZ +_T0s11_StringCoreV8_pointerSvSi11toElementAt_tF +_T0s11_StringCoreV12elementShiftSifg +_T0SS13CharacterViewV43_measureExtendedGraphemeClusterBackwardSlowS2i9endOffset_SS5IndexV5startAF0I0Si0iK5UTF16tF +_T0s2eeoiSbx_xts16RawRepresentableRzs9Equatable0B5ValueRpzlFTfq4gg_n6SQLite10ConnectionC15TransactionModeO_Tg5 +rawValue.get +_T0s23_NativeDictionaryBufferVss8HashableRzr0_lE12unsafeAddNewyx3key_q_5valuetFTfq4ggn_nSS_s5Int32VSV_SVtXBTg5 +_T0s23_NativeDictionaryBufferVss8HashableRzr0_lE12unsafeAddNewyx3key_q_5valuetFTfq4ggn_nSS_s0B0VySiys13OpaquePointerVSg_s5Int32VSpyAKGSgtXBGTg5 +_T0s23_NativeDictionaryBufferVss8HashableRzr0_lE12unsafeAddNewyx3key_q_5valuetFTfq4ggn_nSi_ys13OpaquePointerVSg_s5Int32VSpyAIGSgtXBTg5 +_T0s24_VariantDictionaryBufferO12nativeDeleteys07_NativebC0Vyxq_G_Si11idealBucketSi6offsettFTfq4gnnn_nSS_s0B0VySiys13OpaquePointerVSg_s5Int32VSpyAMGSgtXBGTg5 +_T0SS8UTF8ViewV6_countSix9fromUTF16_ts8SequenceRzs6UInt16V7ElementRtzlFs11_StringCoreV_Tgq5Tfq4gXd_n +_T0SS8UTF8ViewV6_countSix9fromUTF16_ts8SequenceRzs6UInt16V7ElementRtzlFSRyAGG_Tgq5Tfq4xd_n +_T0s24_VariantDictionaryBufferO018ensureUniqueNativeC0Sb11reallocated_Sb15capacityChangedtSiFSS_s5Int32VSV_SVtXBTg5 +_T0s24_CocoaDictionaryIteratorC4nextyXl_yXltSgyF +_T0Sv4loadxSi14fromByteOffset_xm2astlFs9UnmanagedVyyXlG_Tgq5Tfq4ndn_n +_T0yXlMa +_T0s23_NativeDictionaryBufferVAByxq_GSi8capacity_s04_RawaB7StorageC7storagetcfCSS_s5Int32VSV_SVtXBTg5 +_T0s23_NativeDictionaryBufferVAByxq_GSi8capacity_s04_RawaB7StorageC7storagetcfCSS_s5Int32VSV_SVtXBTg5Tf4nnd_n +_T0s24_VariantDictionaryBufferO018ensureUniqueNativeC0Sb11reallocated_Sb15capacityChangedtSiFSS_s0B0VySiys13OpaquePointerVSg_s5Int32VSpyAJGSgtXBGTg5 +_T0s23_NativeDictionaryBufferVAByxq_GSi8capacity_s04_RawaB7StorageC7storagetcfCSS_s0B0VySiys13OpaquePointerVSg_s5Int32VSpyALGSgtXBGTg5 +_T0s23_NativeDictionaryBufferVAByxq_GSi8capacity_s04_RawaB7StorageC7storagetcfCSS_s0B0VySiys13OpaquePointerVSg_s5Int32VSpyALGSgtXBGTg5Tf4nnd_n +_T0s37_HashableTypedNativeDictionaryStorageCySSs0D0VySiys13OpaquePointerVSg_s5Int32VSpyAGGSgtXBGGMa +_T0s24_VariantDictionaryBufferO018ensureUniqueNativeC0Sb11reallocated_Sb15capacityChangedtSiFSi_ys13OpaquePointerVSg_s5Int32VSpyAHGSgtXBTg5 +_T0s24_VariantDictionaryBufferO17nativeUpdateValueq_Sgq__x6forKeytFSi_ys13OpaquePointerVSg_s5Int32VSpyAHGSgtXBTg5 +_T0s14_decodeCStringSS6result_Sb11repairsMadetSgSPy8CodeUnitQzG_xm2asSi6lengthSb016repairingInvalidF5Unitsts16_UnicodeEncodingRzlFs0M0O4UTF8O_Tgq5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFAEys4Int8VG_s07_IgnoreK0VyALGTgq5Tfq4nnndn_n +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtFs4Int8V_Tgq5Tfq4xnn_n +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFAEys4Int8VG_Tgq5 +_T0s23_ContiguousArrayStorageCys4Int8VGMa +_T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tFs4Int8V_Tgq5 +_T0s15ContiguousArrayV15reserveCapacityySiFs4Int8V_Tgq5 +_T0SS11utf8CStrings15ContiguousArrayVys4Int8VGfgTfq4x_n +_T0SS8UTF8ViewV5countSifg +_T0s26_toStringReadOnlyPrintableSSxs06CustomB11ConvertibleRzlFTfq4g_ns5Int32V_Tg5 +_T0s5Int32Vs23CustomStringConvertiblessACP11descriptionSSfgTW +_T0s26_toStringReadOnlyPrintableSSxs06CustomB11ConvertibleRzlFTfq4g_n6SQLite9StatementC_Tg5 +_T06SQLite10ConnectionC8trace_v233_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgFs5Int32Vs6UInt32V_SvSgA2KtcfU0_To +_T06SQLite10ConnectionC8trace_v233_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgFs5Int32Vs6UInt32V_SvSgA2KtcfU0_ +_getEmbeddedNSError +_code.get +_domain.get +_T06SQLite6ResultOmMa +globalinit_33_79F5A2E9E6411E14122CA7C8A9C356C7_func2 +_T0s3SetVAByxGSayxG12arrayLiterald_tcfCTfq4gn_ns5Int32V_Tg5 +_T0s16_NativeSetBufferVss8HashableRzlE9fromArrayAByxGSayxGFZTfq4gn_ns5Int32V_Tg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZs5Int32V_Tg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZTfq4gnn_ns5Int32V_Tg5 +_T0s23_ContiguousArrayStorageCys5Int32VGMa +globalinit_33_79F5A2E9E6411E14122CA7C8A9C356C7_func1 +_T08Dispatch0A11SpecificKeyCySiGMa +_T06SQLite10ConnectionC15createCollationySS_SC16ComparisonResultOSS_SStctKFs5Int32VSvSg_AHSVSgAhJtcfU0_To +_T06SQLite10ConnectionC15createCollationySS_SC16ComparisonResultOSS_SStctKFs5Int32VSvSg_AHSVSgAhJtcfU0_ +_T0S2Vs5Int32VIxyyd_S2VABIyByyd_TR +createCollation +_T0s24_VariantDictionaryBufferO17nativeUpdateValueq_Sgq__x6forKeytFSS_s5Int32VSV_SVtXBTg5 +_T06SQLite10ConnectionC14createFunctionySS_SuSg13argumentCountSb13deterministicAA7Binding_pSgSayAIGctFys13OpaquePointerVSg_s5Int32VSpyAMGSgtcfU1_To +_T06SQLite10ConnectionC14createFunctionySS_SuSg13argumentCountSb13deterministicAA7Binding_pSgSayAIGctFys13OpaquePointerVSg_s5Int32VSpyAMGSgtcfU1_ +_T0s13OpaquePointerVSgs5Int32VSpyACGSgIxyyy_AceGIyByyy_TR +_T0SS13CharacterViewVs14_IndexableBasessACP8endIndex0F0QzfgTW +_T0SS5IndexVABSi13encodedOffset_tcfCTfq4nd_n +_T0SS13CharacterViewVs14_IndexableBasessACP10startIndex0F0QzfgTW +_T0SS13CharacterViewVs10CollectionssACP8distance13IndexDistanceQz0E0Qz4from_AI2totFTW +_T06SQLite10ConnectionC14createFunctionySS_SuSg13argumentCountSb13deterministicAA7Binding_pSgSayAIGctFys13OpaquePointerVSg_s5Int32VSpyAMGSgtcfU0_AISicfU_ +_T06SQLite10ConnectionC12rollbackHookyyycSgFySvSgcfU0_To +_T06SQLite10ConnectionC12rollbackHookyyycSgFySvSgcfU0_ +_T0Ix_IyB_TR +rollbackHook +_T06SQLite10ConnectionC10commitHookyyyKcSgFs5Int32VSvSgcfU0_To +_T06SQLite10ConnectionC10commitHookyyyKcSgFs5Int32VSvSgcfU0_ +_T0s5Int32VIxd_ABIyBd_TR +_T06SQLite10ConnectionC10commitHookyyyKcSgFs5Int32VycfU_ +_T06SQLite10ConnectionC10commitHookyyyKcSgFs5Int32VycfU_Tf4g_n +commitHook +_T06SQLite10ConnectionC10updateHookyyAC9OperationO_S2Ss5Int64VtcSgFySvSg_s5Int32VSPys4Int8VGSgApHtcfU0_To +_T06SQLite10ConnectionC10updateHookyyAC9OperationO_S2Ss5Int64VtcSgFySvSg_s5Int32VSPys4Int8VGSgApHtcfU0_ +_T0s5Int32VSPys4Int8VGAEs5Int64VIxyyyy_Ab2eGIyByyyy_TR +updateHook +_T06SQLite10ConnectionC8trace_v133_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgFySvSg_SPys4Int8VGSgtcfU0_To +_T06SQLite10ConnectionC8trace_v133_79F5A2E9E6411E14122CA7C8A9C356C7LLyySScSgFySvSg_SPys4Int8VGSgtcfU0_ +_T0SVIxy_SVIyBy_TR +trace_v1 +trace_v2 +trace +_stdlib_isOSVersionAtLeast +_T06SQLite10ConnectionC11busyHandlerySbSicSgFs5Int32VSvSg_AGtcfU0_To +_T06SQLite10ConnectionC11busyHandlerySbSicSgFs5Int32VSvSg_AGtcfU0_ +_T0s5Int32VABIxyd_A2BIyByd_TR +busyHandler +busyTimeout.materialize +busyTimeout.set +busyTimeout.get +interrupt +savepoint +hashValue.get +scalar +_T06SQLite10ConnectionC7executeySSKFs5Int32VyKcfU_ +execute +totalChanges.get +changes.get +lastInsertRowid.get +readonly.get +__derived_enum_equals +__T06SQLite5ValuePAAE10expressionAA10ExpressionVyytGfg10Foundation4DateV_Tg5 +__T06SQLite5ValuePAAE10expressionAA10ExpressionVyytGfgSS_Tg5 +__T06SQLite10ExpressionVyxGAA0B4TypeAAlAaEP8templateSSfgTW +__T06SQLite10ExpressionVyxGAA0B4TypeAAlAaEP8bindingsSayAA7Binding_pSgGfgTW +__T06SQLite10ExpressionVyxGAA0B4TypeAAlAaEPxSS_SayAA7Binding_pSgGtcfCTW +__T06SQLite10ExpressionVyxGAA11ExpressibleAAlAaEP10expressionACyytGfgTW +__T06SQLite9transcodeSSAA7Binding_pSgF +__T06SQLite14ExpressionTypePAAE3ascAA11Expressible_pfgTm +_globalinit_33_55DAAD62B9B6B0C7112F93C647075291_func3 +__T0Sd6SQLite11ExpressibleA2aBP10expressionAA10ExpressionVyytGfgTW +__T0s5Int64V6SQLite11ExpressibleA2cDP10expressionAC10ExpressionVyytGfgTW +__T0SS6SQLite11ExpressibleA2aBP10expressionAA10ExpressionVyytGfgTW +__T06SQLite4BlobVAA11ExpressibleA2aDP10expressionAA10ExpressionVyytGfgTW +__T0Sb6SQLite11ExpressibleA2aBP10expressionAA10ExpressionVyytGfgTW +__T0Si6SQLite11ExpressibleA2aBP10expressionAA10ExpressionVyytGfgTW +__T06SQLite6SelectVyxGAA11ExpressibleAAlAaEP10expressionAA10ExpressionVyytGfgTW +__T06SQLite6DeleteVAA11ExpressibleA2aDP10expressionAA10ExpressionVyytGfgTW +__T0s11_StringCoreV13_copyElementsySv_Si15srcElementWidthSv8dstStartSi0hfG0Si5counttFZTfq4nnnnnd_n +__T0SS13CharacterViewV9subscripts0A0VSS5IndexVcfgTfq4xn_n +__T06SQLite14ExpressionTypePA2aBRzAA5Value010UnderlyingC0RpzlExAF5value_tcfCAA0B0Vy10Foundation4DataVG_Tg5Tf4xd_n +__T06SQLite10ExpressionV8templateSSfgTfq4n_g +__T06SQLite10ExpressionV8bindingsSayAA7Binding_pSgGfgTfq4n_g +__T0s8SequencePsE6reduceqd__qd___qd__qd___7ElementQztKctKlFSS13CharacterViewV_SSTg507_T0SSs9D41VSSs5Error_pIxxxozo_SSABSSsAC_pIxiirzo_TRSSs0D0VSSs0I0_pIxxxozo_Tf1ncn_nTf4xng_n +__T06SQLite11ExpressiblePAAE5asSQLSSyFS2S_s9CharacterVtcfU_TA +__T06SQLite11ExpressiblePAAE5asSQLSSyFS2S_s9CharacterVtcfU_Tf4gXggXn_n +__T06SQLite4castAA10ExpressionVyq_GADyxGAA5ValueRzAaGR_r0_lFTf4g_n +__T06SQLite4castAA10ExpressionVyq_SgGADyxSgGAA5ValueRzAaIR_r0_lFTf4g_n +__T06SQLite4castAA10ExpressionVyq_GADyxGAA5ValueRzAaGR_r0_lFTf4g_nTm +__T06SQLite10ExpressionVyxGAA0B4TypeAAl010UnderlyingC0Wt +__T06SQLite10ExpressionVwXX +__T06SQLite10ExpressionVwCP +__T06SQLite10ExpressionVwpr +__T06SQLite10ExpressionVwde +__T06SQLite10ExpressionVwxx +__T06SQLite10ExpressionVwCp +__T06SQLite10ExpressionVwcp +__T06SQLite10ExpressionVwca +__T06SQLite10ExpressionVwTk +___swift_memcpy16_4 +__T06SQLite10ExpressionVwta +__T06SQLite10ExpressionVwal +__T06SQLite10ExpressionVwXx +__T06SQLite10ExpressionVwCc +__T06SQLite6UpdateVAA11ExpressibleA2aDP10expressionAA10ExpressionVyytGfgTW +__T06SQLite6InsertVAA11ExpressibleA2aDP10expressionAA10ExpressionVyytGfgTW +__T06SQLite14ExpressionType_pMF +__T06SQLite10ExpressionVWV +__T06SQLite10ExpressionVMP +__T06SQLite10ExpressionVMF +__T06SQLite11Expressible_pMF +__T0Say6SQLite7Binding_pSgGML +__T06SQLite10ExpressionVyxGAA0B4TypeAAlMA +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Expression.swift +Expression.swift +objectdestroy.15 +objectdestroy.7 +create_generic_metadata_Expression +get_field_types_Expression +_T0Say6SQLite7Binding_pSgGMa +_T06SQLite10ExpressionVwCc +_T06SQLite10ExpressionVwXx +_T06SQLite10ExpressionVwal +_T06SQLite10ExpressionVwta +__swift_memcpy16_4 +_T06SQLite10ExpressionVwTk +_T06SQLite10ExpressionVwca +_T06SQLite10ExpressionVwcp +_T06SQLite10ExpressionVwCp +_T06SQLite10ExpressionVwxx +_T06SQLite10ExpressionVwde +_T06SQLite10ExpressionVwpr +_T06SQLite10ExpressionVwCP +_T06SQLite10ExpressionVwXX +_T06SQLite10ExpressionVyxGAA0B4TypeAAl010UnderlyingC0Wt +_T06SQLite10ExpressionVyxGAA11ExpressibleAAlWa +cast +_T06SQLite11ExpressiblePAAE5asSQLSSyFS2S_s9CharacterVtcfU_Tf4gXggXn_n +objectdestroy.3 +_T06SQLite11ExpressiblePAAE5asSQLSSyFS2S_s9CharacterVtcfU_TA +_T06SQLite11ExpressiblePAAE5asSQLSSyFS2S_s9CharacterVtcfU_ +_T06SQLite10ExpressionVyxGAA0B4TypeAAlWa +_T06SQLite10ExpressionVMa +reduce +_T0s16IndexingIteratorVyxGs0B8Protocolss14_IndexableBaseRzlsADP4next7ElementQzSgyFTWSS13CharacterViewV_Tg5 +_T0SS13CharacterViewVs14_IndexableBasessACP9formIndexy0F0Qzz5after_tFTW +_T0SS13CharacterViewVs8SequencessACP12makeIterator0E0QzyFTW +_T0SSs9CharacterVSSs5Error_pIxxxozo_SSABSSsAC_pIxiirzo_TR +_T0SS13CharacterViewVs14_IndexableBasessACP9subscript7ElementQz5IndexQzcfgTW +_T0SS5IndexVs9EquatablessACP2eeoiSbx_xtFZTW +bindings.get +template.get +_T0s11_StringCoreV6appendyABFTfq4gXn_n +_T0s11_StringCoreV22isRepresentableAsASCIISbyFTfq4x_n +expression.get +_T06SQLite5rowidAA10ExpressionVys5Int64VGfau +globalinit_33_55DAAD62B9B6B0C7112F93C647075291_func3 +null.get +asc.get +asSQL +bindings.materialize +bindings.set +template.materialize +template.set +__T0SS6SQLiteE5infixAA10ExpressionVyxGAA11Expressible_p_AaF_pSb4wraptlFyt_Tg5 +__T0SS6SQLiteE5infixAA10ExpressionVyxGAA11Expressible_p_AaF_pSb4wraptlFSbSg_Tg5Tm +__T0SS6SQLiteE5infixAA10ExpressionVyxGAA11Expressible_p_AaF_pSb4wraptlFSi_Tg5 +__T0SS6SQLiteE5infixAA10ExpressionVyxGAA11Expressible_p_AaF_pSb4wraptlFSb_Tg5Tm +__T0SS6SQLiteE5infixAA10ExpressionVyxGAA11Expressible_p_AaF_pSb4wraptlF +__T0xSg6SQLite13_OptionalTypeABl07WrappedC0Wt +__T0SS6SQLiteE6prefixAA11Expressible_pAaC_pF +__T0SS6SQLiteE6prefixAA11Expressible_pSayAaC_pGF +__T06SQLite5valuexAA7Binding_pAA5ValueRzlF +__T06SQLite5valuexAA7Binding_pSgAA5ValueRzlF +__T0s27_toStringReadOnlyStreamableSSxs010TextOutputE0RzlFTfq4g_ns9CharacterV_Tg5 +__T0Sa16_copyToNewBufferySi8oldCount_tFSS_Tg5 +__T06SQLite4wrapAA10ExpressionVyxGAA11Expressible_p_SS8functiontlFTf4ngX_n +__T0SS6SQLiteE5quoteSSs9CharacterVFS2S_ADtcfU_Tf4gXgg_n +__T06SQLite5infixAA10ExpressionVyxGAA11Expressible_p_AaF_pSb4wrapSS8functiontlFTf4nnngX_n +__T0SS6SQLiteE5quoteSSs9CharacterVFS2S_ADtcfU_TA +__T0SS6SQLiteE4wrapAA10ExpressionVyxGAA11Expressible_plFyt_Tg5 +__T0SS6SQLiteE4wrapAA10ExpressionVyxGAA11Expressible_plFSb_Tg5 +__T0SS6SQLiteE4wrapAA10ExpressionVyxGAA11Expressible_plFSbSg_Tg5 +__T06SQLite13_OptionalType_pMF +__T06SQLite10ExpressionVyytGACyxGAA0B4TypeAAlWL +__T06SQLite10ExpressionVySbSgGML +__T0SbSgML +__T0xSg6SQLite13_OptionalTypeABlMA +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Helpers.swift +_T0SS6SQLiteE5quoteSSs9CharacterVFS2S_ADtcfU_TA +Helpers.swift +_T0SS6SQLiteE5quoteSSs9CharacterVFS2S_ADtcfU_ +infix +_T0SS6SQLiteE5quoteSSs9CharacterVFS2S_ADtcfU_Tf4gXgg_n +_T0s27_toStringReadOnlyStreamableSSxs010TextOutputE0RzlFTfq4g_ns9CharacterV_Tg5 +_T0s9CharacterVs20TextOutputStreamablessACP5writeyqd__z2to_ts0bC6StreamRd__lFTWSS_Tg5 +_T0s9CharacterV5writeyxz2to_ts16TextOutputStreamRzlFSS_Tg5 +value +prefix +globalinit_33_6574432B243886442F79BBD7FC6A56C2_func4 +_T0xSg6SQLite13_OptionalTypeABlWa +_T0xSg6SQLite13_OptionalTypeABl07WrappedC0Wt +* +join +_T0Sa36_reserveCapacityAssumingUniqueBufferySi8oldCount_tFSS_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFSS_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFTfq4ngn_nSS_Tg5 +_T0s12_ArrayBufferV5countSifsSS_Tg5 +_T0Sa034_makeUniqueAndReserveCapacityIfNotB0yyFSS_Tg5 +transcode +_T0S2Sx26stringInterpolationSegment_tclufCTfq4gn_n6SQLite7Binding_p_Tg5 +_T06SQLite10ExpressionVyytGACyxGAA0B4TypeAAlWl +_T06SQLite10ExpressionVySbSgGMa +_T0SbSgMa +__T06SQLite9CollationOAA11ExpressibleA2aDP10expressionAA10ExpressionVyytGfgTW +__T06SQLite9CollationOs23CustomStringConvertibleAAsADP11descriptionSSfgTW +__T06SQLite9CollationOwXX +__T06SQLite9CollationOwCP +__T06SQLite9CollationOwpr +__T06SQLite9CollationOwde +__T06SQLite9CollationOwxx +__T06SQLite9CollationOwCp +__T06SQLite9CollationOwcp +__T06SQLite9CollationOwca +__T06SQLite9CollationOwTk +__T06SQLite9CollationOwta +__T06SQLite9CollationOwal +__T06SQLite9CollationOwXx +__T06SQLite9CollationOwCc +__T06SQLite9CollationOwug +__T06SQLite9CollationOwup +__T06SQLite9CollationOwui +__T06SQLite9CollationOWV +__T06SQLite9CollationOMf +__T06SQLite9CollationOMF +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Collation.swift +_T06SQLite9CollationOMa +Collation.swift +get_field_types_Collation +_T06SQLite9CollationOwui +_T06SQLite9CollationOwup +_T06SQLite9CollationOwug +_T06SQLite9CollationOwCc +_T06SQLite9CollationOwXx +_T06SQLite9CollationOwal +_T06SQLite9CollationOwta +_T06SQLite9CollationOwTk +_T06SQLite9CollationOwca +_T06SQLite9CollationOwcp +_T06SQLite9CollationOwCp +_T06SQLite9CollationOwxx +_T06SQLite9CollationOwde +_T06SQLite9CollationOwpr +_T06SQLite9CollationOwCP +_T06SQLite9CollationOwXX +_T06SQLite9CollationOs23CustomStringConvertibleAAWa +_T06SQLite9CollationOAA11ExpressibleAAWa +__T06SQLite6SetterVAcA10ExpressionVyxG6column_AF5valuetcAA5ValueRzlu33_6CFD51AA217206E3BDBDDEEA75706437LlfC +__T06SQLite6SetterVAcA10ExpressionVyxG6column_x5valuetcAA5ValueRzlu33_6CFD51AA217206E3BDBDDEEA75706437LlfC +__T06SQLite6SetterVAcA10ExpressionVyxSgG6column_AEyxG5valuetcAA5ValueRzlu33_6CFD51AA217206E3BDBDDEEA75706437LlfC +__T06SQLite6SetterVAcA10ExpressionVyxSgG6column_AG5valuetcAA5ValueRzlu33_6CFD51AA217206E3BDBDDEEA75706437LlfC +__T06SQLite6SetterVAcA10ExpressionVyxSgG6column_AF5valuetcAA5ValueRzlu33_6CFD51AA217206E3BDBDDEEA75706437LlfC +__T06SQLite6SetterVAA11ExpressibleA2aDP10expressionAA10ExpressionVyytGfgTW +__T06SQLite2peoiAA6SetterVAA10ExpressionVyxG_xtAA5ValueRzAA6Number8DatatypeRpzlFSi_Tg5 +__T06SQLite2seoiAA6SetterVAA10ExpressionVyxG_xtAA5ValueRzAA6Number8DatatypeRpzlFSi_Tg5 +__T06SQLite2peoiAA6SetterVAA10ExpressionVyxG_xtAA5ValueRzAA6Number8DatatypeRpzlFSi_Tg5Tm +__T06SQLite2peoiAA6SetterVAA10ExpressionVyxG_AGtAA5ValueRzAA6Number8DatatypeRpzlFTm +__T06SQLite2peoiAA6SetterVAA10ExpressionVyxG_xtAA5ValueRzAA6Number8DatatypeRpzlFTm +__T06SQLite2reoiAA6SetterVAA10ExpressionVyxG_AGtAA5ValueRzs5Int64V8DatatypeRtzlFTm +__T06SQLite2reoiAA6SetterVAA10ExpressionVyxG_xtAA5ValueRzs5Int64V8DatatypeRtzlFTm +__T06SQLite2ppoPAA6SetterVAA10ExpressionVyxGAA5ValueRzs5Int64V8DatatypeRtzlFTm +__T06SQLite2ppoPAA6SetterVAA10ExpressionVyxSgGAA5ValueRzs5Int64V8DatatypeRtzlFTm +__T06SQLite1poiAA10ExpressionVyxGAE_AEtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1poiAA10ExpressionVyxGAE_xtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1poiAA10ExpressionVyxSgGAF_ADyxGtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1poiAA10ExpressionVyxSgGAF_AFtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1poiAA10ExpressionVyxSgGAF_xtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1soiAA10ExpressionVyxGAE_AEtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1soiAA10ExpressionVyxGAE_xtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1soiAA10ExpressionVyxSgGAF_ADyxGtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1soiAA10ExpressionVyxSgGAF_AFtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1soiAA10ExpressionVyxSgGAF_xtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1moiAA10ExpressionVyxGAE_AEtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1moiAA10ExpressionVyxGAE_xtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1moiAA10ExpressionVyxSgGAF_ADyxGtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1moiAA10ExpressionVyxSgGAF_AFtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1moiAA10ExpressionVyxSgGAF_xtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1doiAA10ExpressionVyxGAE_AEtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1doiAA10ExpressionVyxGAE_xtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1doiAA10ExpressionVyxSgGAF_ADyxGtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1doiAA10ExpressionVyxSgGAF_AFtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1doiAA10ExpressionVyxSgGAF_xtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1roiAA10ExpressionVyxGAE_AEtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1roiAA10ExpressionVyxGAE_xtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1roiAA10ExpressionVyxSgGAF_ADyxGtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1roiAA10ExpressionVyxSgGAF_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1roiAA10ExpressionVyxSgGAF_xtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2lloiAA10ExpressionVyxGAE_AEtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2lloiAA10ExpressionVyxGAE_xtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2lloiAA10ExpressionVyxSgGAF_ADyxGtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2lloiAA10ExpressionVyxSgGAF_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2lloiAA10ExpressionVyxSgGAF_xtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2ggoiAA10ExpressionVyxGAE_AEtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2ggoiAA10ExpressionVyxGAE_xtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2ggoiAA10ExpressionVyxSgGAF_ADyxGtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2ggoiAA10ExpressionVyxSgGAF_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2ggoiAA10ExpressionVyxSgGAF_xtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1aoiAA10ExpressionVyxGAE_AEtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1aoiAA10ExpressionVyxGAE_xtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1aoiAA10ExpressionVyxSgGAF_ADyxGtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1aoiAA10ExpressionVyxSgGAF_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1aoiAA10ExpressionVyxSgGAF_xtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1ooiAA10ExpressionVyxGAE_AEtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1ooiAA10ExpressionVyxGAE_xtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1ooiAA10ExpressionVyxSgGAF_ADyxGtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1ooiAA10ExpressionVyxSgGAF_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1ooiAA10ExpressionVyxSgGAF_xtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1xoiAA10ExpressionVyxGAE_AEtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1xoiAA10ExpressionVyxGAE_xtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1xoiAA10ExpressionVyxSgGAF_ADyxGtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1xoiAA10ExpressionVyxSgGAF_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1xoiAA10ExpressionVyxSgGAF_xtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite6SetterVwXX +__T06SQLite6SetterVwCP +__T06SQLite6SetterVwpr +__T06SQLite6SetterVwde +__T06SQLite6SetterVwxx +__T06SQLite6SetterVwCp +__T06SQLite6SetterVwcp +__T06SQLite6SetterVwca +___swift_assign_boxed_opaque_existential_1 +__T06SQLite6SetterVwTk +__T06SQLite6SetterVwtk +__T06SQLite6SetterVwta +__T06SQLite6SetterVwal +__T06SQLite6SetterVwXx +__T06SQLite6SetterVwCc +__T06SQLite6SetterVwTt +__T06SQLite6SetterVwtT +__T06SQLite10ExpressionVySiGACyxGAA0B4TypeAAlWL +__T06SQLite6SetterVWV +__T06SQLite6SetterVMf +__T06SQLite6SetterVMF +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Setter.swift +Setter.swift +_T06SQLite6SetterVMa +get_field_types_Setter +_T06SQLite6SetterVwtT +_T06SQLite6SetterVwTt +_T06SQLite6SetterVwCc +_T06SQLite6SetterVwXx +_T06SQLite6SetterVwal +_T06SQLite6SetterVwta +_T06SQLite6SetterVwtk +_T06SQLite6SetterVwTk +__swift_assign_boxed_opaque_existential_1 +_T06SQLite6SetterVwca +_T06SQLite6SetterVwcp +_T06SQLite6SetterVwCp +_T06SQLite6SetterVwxx +_T06SQLite6SetterVwde +_T06SQLite6SetterVwpr +_T06SQLite6SetterVwCP +_T06SQLite6SetterVwXX +_T06SQLite6SetterVAA11ExpressibleAAWa +++ +_T06SQLite10ExpressionVySiGACyxGAA0B4TypeAAlWl +%= +% ++= +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGycSS_Sb13deterministicxyctKAA5ValueRzlFxSayAA7Binding_pSgGcfU_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_GcSS_Sb13deterministicxq_ctKAA5ValueRzAaJR_r0_lFxSayAA7Binding_pSgGcfU_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_GcSS_Sb13deterministicxq_ctKAA5ValueRzAaJR_r0_lFAgHcfU0_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgGcSS_Sb13deterministicxAHctKAA5ValueRzAaKR_r0_lFxSayAA7Binding_pSgGcfU_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgGcSS_Sb13deterministicxAHctKAA5ValueRzAaKR_r0_lFAgIcfU0_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_GcSS_Sb13deterministicAGq_ctKAA5ValueRzAaKR_r0_lFAGSayAA7Binding_pSgGcfU_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_GcSS_Sb13deterministicxq_ctKAA5ValueRzAaJR_r0_lFxSayAA7Binding_pSgGcfU_Tm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_GcSS_Sb13deterministicAGq_ctKAA5ValueRzAaKR_r0_lFAhIcfU0_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_GcSS_Sb13deterministicxq_ctKAA5ValueRzAaJR_r0_lFAgHcfU0_Tm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgGcSS_Sb13deterministicAgIctKAA5ValueRzAaLR_r0_lFAGSayAA7Binding_pSgGcfU_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgGcSS_Sb13deterministicxAHctKAA5ValueRzAaKR_r0_lFxSayAA7Binding_pSgGcfU_Tm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgGcSS_Sb13deterministicAgIctKAA5ValueRzAaLR_r0_lFAhJcfU0_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgGcSS_Sb13deterministicxAHctKAA5ValueRzAaKR_r0_lFAgIcfU0_Tm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_GtcSS_Sb13deterministicxq__q0_tctKAA5ValueRzAaKR_AaKR0_r1_lFxSayAA7Binding_pSgGcfU_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_GtcSS_Sb13deterministicxq__q0_tctKAA5ValueRzAaKR_AaKR0_r1_lFAgH_AItcfU0_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgG_AFyq0_GtcSS_Sb13deterministicxAH_q0_tctKAA5ValueRzAaLR_AaLR0_r1_lFxSayAA7Binding_pSgGcfU_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgG_AFyq0_GtcSS_Sb13deterministicxAH_q0_tctKAA5ValueRzAaLR_AaLR0_r1_lFAgI_AJtcfU0_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_SgGtcSS_Sb13deterministicxq__AItctKAA5ValueRzAaLR_AaLR0_r1_lFxSayAA7Binding_pSgGcfU_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_SgGtcSS_Sb13deterministicxq__AItctKAA5ValueRzAaLR_AaLR0_r1_lFAgH_AJtcfU0_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_G_AFyq0_GtcSS_Sb13deterministicAGq__q0_tctKAA5ValueRzAaLR_AaLR0_r1_lFAGSayAA7Binding_pSgGcfU_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_GtcSS_Sb13deterministicxq__q0_tctKAA5ValueRzAaKR_AaKR0_r1_lFxSayAA7Binding_pSgGcfU_Tm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_G_AFyq0_GtcSS_Sb13deterministicAGq__q0_tctKAA5ValueRzAaLR_AaLR0_r1_lFAhI_AJtcfU0_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_GtcSS_Sb13deterministicxq__q0_tctKAA5ValueRzAaKR_AaKR0_r1_lFAgH_AItcfU0_Tm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgG_AFyq0_SgGtcSS_Sb13deterministicxAH_AJtctKAA5ValueRzAaMR_AaMR0_r1_lFxSayAA7Binding_pSgGcfU_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgG_AFyq0_SgGtcSS_Sb13deterministicxAH_AJtctKAA5ValueRzAaMR_AaMR0_r1_lFAgI_AKtcfU0_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgG_AFyq0_GtcSS_Sb13deterministicAgI_q0_tctKAA5ValueRzAaMR_AaMR0_r1_lFAGSayAA7Binding_pSgGcfU_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgG_AFyq0_GtcSS_Sb13deterministicxAH_q0_tctKAA5ValueRzAaLR_AaLR0_r1_lFxSayAA7Binding_pSgGcfU_Tm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgG_AFyq0_GtcSS_Sb13deterministicAgI_q0_tctKAA5ValueRzAaMR_AaMR0_r1_lFAhJ_AKtcfU0_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgG_AFyq0_GtcSS_Sb13deterministicxAH_q0_tctKAA5ValueRzAaLR_AaLR0_r1_lFAgI_AJtcfU0_Tm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_G_AFyq0_SgGtcSS_Sb13deterministicAGq__AJtctKAA5ValueRzAaMR_AaMR0_r1_lFAGSayAA7Binding_pSgGcfU_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_SgGtcSS_Sb13deterministicxq__AItctKAA5ValueRzAaLR_AaLR0_r1_lFxSayAA7Binding_pSgGcfU_Tm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_G_AFyq0_SgGtcSS_Sb13deterministicAGq__AJtctKAA5ValueRzAaMR_AaMR0_r1_lFAhI_AKtcfU0_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_SgGtcSS_Sb13deterministicxq__AItctKAA5ValueRzAaLR_AaLR0_r1_lFAgH_AJtcfU0_Tm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgG_AFyq0_SgGtcSS_Sb13deterministicAgI_AKtctKAA5ValueRzAaNR_AaNR0_r1_lFAGSayAA7Binding_pSgGcfU_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgG_AFyq0_SgGtcSS_Sb13deterministicAgI_AKtctKAA5ValueRzAaNR_AaNR0_r1_lFAhJ_ALtcfU0_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgG_AFyq0_SgGtcSS_Sb13deterministicxAH_AJtctKAA5ValueRzAaMR_AaMR0_r1_lFAgI_AKtcfU0_Tm +__T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxGSayAA11Expressible_pGcSS_SuSbxSayAA7Binding_pSgGctKAA5ValueRzlFAlMcfU_ +__T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxSgGSayAA11Expressible_pGcSS_SuSbAHSayAA7Binding_pSgGctKAA5ValueRzlFAmNcfU_ +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGycSS_Sb13deterministicxyctKAA5ValueRzlFAGycfU0_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGycSS_Sb13deterministicAGyctKAA5ValueRzlFAGSayAA7Binding_pSgGcfU_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGycSS_Sb13deterministicxyctKAA5ValueRzlFxSayAA7Binding_pSgGcfU_TATm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGycSS_Sb13deterministicAGyctKAA5ValueRzlFAHycfU0_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGycSS_Sb13deterministicxyctKAA5ValueRzlFAGycfU0_TATm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_GcSS_Sb13deterministicxq_ctKAA5ValueRzAaJR_r0_lFxSayAA7Binding_pSgGcfU_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_GcSS_Sb13deterministicxq_ctKAA5ValueRzAaJR_r0_lFAgHcfU0_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgGcSS_Sb13deterministicxAHctKAA5ValueRzAaKR_r0_lFxSayAA7Binding_pSgGcfU_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgGcSS_Sb13deterministicAgIctKAA5ValueRzAaLR_r0_lFAGSayAA7Binding_pSgGcfU_TATm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgGcSS_Sb13deterministicxAHctKAA5ValueRzAaKR_r0_lFAgIcfU0_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_GcSS_Sb13deterministicxq_ctKAA5ValueRzAaJR_r0_lFAgHcfU0_TATm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_GcSS_Sb13deterministicAGq_ctKAA5ValueRzAaKR_r0_lFAGSayAA7Binding_pSgGcfU_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_GcSS_Sb13deterministicxq_ctKAA5ValueRzAaJR_r0_lFxSayAA7Binding_pSgGcfU_TATm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_GcSS_Sb13deterministicAGq_ctKAA5ValueRzAaKR_r0_lFAhIcfU0_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgGcSS_Sb13deterministicAgIctKAA5ValueRzAaLR_r0_lFAGSayAA7Binding_pSgGcfU_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgGcSS_Sb13deterministicAgIctKAA5ValueRzAaLR_r0_lFAhJcfU0_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_GtcSS_Sb13deterministicxq__q0_tctKAA5ValueRzAaKR_AaKR0_r1_lFxSayAA7Binding_pSgGcfU_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_GtcSS_Sb13deterministicxq__q0_tctKAA5ValueRzAaKR_AaKR0_r1_lFAgH_AItcfU0_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgG_AFyq0_GtcSS_Sb13deterministicxAH_q0_tctKAA5ValueRzAaLR_AaLR0_r1_lFxSayAA7Binding_pSgGcfU_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_G_AFyq0_SgGtcSS_Sb13deterministicAGq__AJtctKAA5ValueRzAaMR_AaMR0_r1_lFAGSayAA7Binding_pSgGcfU_TATm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgG_AFyq0_GtcSS_Sb13deterministicxAH_q0_tctKAA5ValueRzAaLR_AaLR0_r1_lFAgI_AJtcfU0_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_GtcSS_Sb13deterministicxq__q0_tctKAA5ValueRzAaKR_AaKR0_r1_lFAgH_AItcfU0_TATm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_SgGtcSS_Sb13deterministicxq__AItctKAA5ValueRzAaLR_AaLR0_r1_lFxSayAA7Binding_pSgGcfU_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_SgGtcSS_Sb13deterministicxq__AItctKAA5ValueRzAaLR_AaLR0_r1_lFAgH_AJtcfU0_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_G_AFyq0_GtcSS_Sb13deterministicAGq__q0_tctKAA5ValueRzAaLR_AaLR0_r1_lFAGSayAA7Binding_pSgGcfU_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_GtcSS_Sb13deterministicxq__q0_tctKAA5ValueRzAaKR_AaKR0_r1_lFxSayAA7Binding_pSgGcfU_TATm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_G_AFyq0_GtcSS_Sb13deterministicAGq__q0_tctKAA5ValueRzAaLR_AaLR0_r1_lFAhI_AJtcfU0_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgG_AFyq0_SgGtcSS_Sb13deterministicxAH_AJtctKAA5ValueRzAaMR_AaMR0_r1_lFxSayAA7Binding_pSgGcfU_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgG_AFyq0_SgGtcSS_Sb13deterministicAgI_AKtctKAA5ValueRzAaNR_AaNR0_r1_lFAGSayAA7Binding_pSgGcfU_TATm +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgG_AFyq0_SgGtcSS_Sb13deterministicxAH_AJtctKAA5ValueRzAaMR_AaMR0_r1_lFAgI_AKtcfU0_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgG_AFyq0_GtcSS_Sb13deterministicAgI_q0_tctKAA5ValueRzAaMR_AaMR0_r1_lFAGSayAA7Binding_pSgGcfU_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgG_AFyq0_GtcSS_Sb13deterministicAgI_q0_tctKAA5ValueRzAaMR_AaMR0_r1_lFAhJ_AKtcfU0_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_G_AFyq0_SgGtcSS_Sb13deterministicAGq__AJtctKAA5ValueRzAaMR_AaMR0_r1_lFAGSayAA7Binding_pSgGcfU_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_G_AFyq0_SgGtcSS_Sb13deterministicAGq__AJtctKAA5ValueRzAaMR_AaMR0_r1_lFAhI_AKtcfU0_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgG_AFyq0_SgGtcSS_Sb13deterministicAgI_AKtctKAA5ValueRzAaNR_AaNR0_r1_lFAGSayAA7Binding_pSgGcfU_TA +__T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgG_AFyq0_SgGtcSS_Sb13deterministicAgI_AKtctKAA5ValueRzAaNR_AaNR0_r1_lFAhJ_ALtcfU0_TA +__T06SQLite5valuexAA7Binding_pAA5ValueRzlFTA +__T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxSgGSayAA11Expressible_pGcSS_SuSbAHSayAA7Binding_pSgGctKAA5ValueRzlFAmNcfU_TA +__T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxSgGSayAA11Expressible_pGcSS_SuSbAHSayAA7Binding_pSgGctKAA5ValueRzlFAiKcfU0_TA +__T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxGSayAA11Expressible_pGcSS_SuSbxSayAA7Binding_pSgGctKAA5ValueRzlFAhJcfU0_Tf4ggX_n +__T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxSgGSayAA11Expressible_pGcSS_SuSbAHSayAA7Binding_pSgGctKAA5ValueRzlFAiKcfU0_Tf4ggX_n +__T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxGSayAA11Expressible_pGcSS_SuSbxSayAA7Binding_pSgGctKAA5ValueRzlFAlMcfU_TA +__T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxGSayAA11Expressible_pGcSS_SuSbxSayAA7Binding_pSgGctKAA5ValueRzlFAhJcfU0_TA +__T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxSgGSayAA11Expressible_pGcSS_SuSbAHSayAA7Binding_pSgGctKAA5ValueRzlFAiKcfU0_TATm +__T06SQLite5valuexAA7Binding_pAA5ValueRzlFTA.94 +__T06SQLite5valuexAA7Binding_pAA5ValueRzlFTA.102 +__T06SQLite5valuexAA7Binding_pAA5ValueRzlFTA.110 +__T06SQLite5valuexAA7Binding_pAA5ValueRzlFTA.116 +__T06SQLite5valuexAA7Binding_pAA5ValueRzlFTA.120 +__T06SQLite5valuexAA7Binding_pAA5ValueRzlFTA.128 +__T06SQLite5valuexAA7Binding_pAA5ValueRzlFTA.134 +__T06SQLite5valuexAA7Binding_pAA5ValueRzlFTA.143 +__T06SQLite5valuexAA7Binding_pAA5ValueRzlFTA.151 +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/CustomFunctions.swift +_T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxSgGSayAA11Expressible_pGcSS_SuSbAHSayAA7Binding_pSgGctKAA5ValueRzlFAiKcfU0_TA +CustomFunctions.swift +_T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxSgGSayAA11Expressible_pGcSS_SuSbAHSayAA7Binding_pSgGctKAA5ValueRzlFAiKcfU0_ +_T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxGSayAA11Expressible_pGcSS_SuSbxSayAA7Binding_pSgGctKAA5ValueRzlFAlMcfU_TA +_T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxSgGSayAA11Expressible_pGcSS_SuSbAHSayAA7Binding_pSgGctKAA5ValueRzlFAiKcfU0_Tf4ggX_n +_T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxGSayAA11Expressible_pGcSS_SuSbxSayAA7Binding_pSgGctKAA5ValueRzlFAhJcfU0_Tf4ggX_n +objectdestroy.157 +_T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxSgGSayAA11Expressible_pGcSS_SuSbAHSayAA7Binding_pSgGctKAA5ValueRzlFAmNcfU_TA +objectdestroy.149 +objectdestroy.141 +objectdestroy.132 +objectdestroy.126 +objectdestroy.118 +objectdestroy.114 +objectdestroy.108 +objectdestroy.105 +objectdestroy.100 +objectdestroy.92 +_T06SQLite5valuexAA7Binding_pAA5ValueRzlFTA +objectdestroy.89 +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgG_AFyq0_SgGtcSS_Sb13deterministicAgI_AKtctKAA5ValueRzAaNR_AaNR0_r1_lFAGSayAA7Binding_pSgGcfU_TA +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_GtcSS_Sb13deterministicxq__q0_tctKAA5ValueRzAaKR_AaKR0_r1_lFxSayAA7Binding_pSgGcfU_TA +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_GtcSS_Sb13deterministicxq__q0_tctKAA5ValueRzAaKR_AaKR0_r1_lFAgH_AItcfU0_TA +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_G_AFyq0_SgGtcSS_Sb13deterministicAGq__AJtctKAA5ValueRzAaMR_AaMR0_r1_lFAGSayAA7Binding_pSgGcfU_TA +objectdestroy.35 +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_GcSS_Sb13deterministicxq_ctKAA5ValueRzAaJR_r0_lFxSayAA7Binding_pSgGcfU_TA +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_GcSS_Sb13deterministicxq_ctKAA5ValueRzAaJR_r0_lFAgHcfU0_TA +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgGcSS_Sb13deterministicAgIctKAA5ValueRzAaLR_r0_lFAGSayAA7Binding_pSgGcfU_TA +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGycSS_Sb13deterministicxyctKAA5ValueRzlFAGycfU0_TA +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGycSS_Sb13deterministicxyctKAA5ValueRzlFAGycfU0_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGycSS_Sb13deterministicxyctKAA5ValueRzlFxSayAA7Binding_pSgGcfU_TA +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGycSS_Sb13deterministicxyctKAA5ValueRzlFxSayAA7Binding_pSgGcfU_ +_T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxSgGSayAA11Expressible_pGcSS_SuSbAHSayAA7Binding_pSgGctKAA5ValueRzlFAmNcfU_ +_T06SQLite10ConnectionC14createFunction33_433425404227C17301BB9D218C6E4340LLAA10ExpressionVyxGSayAA11Expressible_pGcSS_SuSbxSayAA7Binding_pSgGctKAA5ValueRzlFAlMcfU_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgG_AFyq0_SgGtcSS_Sb13deterministicxAH_AJtctKAA5ValueRzAaMR_AaMR0_r1_lFAgI_AKtcfU0_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxSgGAFyq_SgG_AFyq0_SgGtcSS_Sb13deterministicAgI_AKtctKAA5ValueRzAaNR_AaNR0_r1_lFAGSayAA7Binding_pSgGcfU_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_SgGtcSS_Sb13deterministicxq__AItctKAA5ValueRzAaLR_AaLR0_r1_lFAgH_AJtcfU0_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_SgGtcSS_Sb13deterministicxq__AItctKAA5ValueRzAaLR_AaLR0_r1_lFxSayAA7Binding_pSgGcfU_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgG_AFyq0_GtcSS_Sb13deterministicxAH_q0_tctKAA5ValueRzAaLR_AaLR0_r1_lFAgI_AJtcfU0_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgG_AFyq0_GtcSS_Sb13deterministicxAH_q0_tctKAA5ValueRzAaLR_AaLR0_r1_lFxSayAA7Binding_pSgGcfU_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgG_AFyq0_SgGtcSS_Sb13deterministicxAH_AJtctKAA5ValueRzAaMR_AaMR0_r1_lFxSayAA7Binding_pSgGcfU_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_GtcSS_Sb13deterministicxq__q0_tctKAA5ValueRzAaKR_AaKR0_r1_lFAgH_AItcfU0_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_G_AFyq0_GtcSS_Sb13deterministicxq__q0_tctKAA5ValueRzAaKR_AaKR0_r1_lFxSayAA7Binding_pSgGcfU_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgGcSS_Sb13deterministicxAHctKAA5ValueRzAaKR_r0_lFAgIcfU0_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_SgGcSS_Sb13deterministicxAHctKAA5ValueRzAaKR_r0_lFxSayAA7Binding_pSgGcfU_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_GcSS_Sb13deterministicxq_ctKAA5ValueRzAaJR_r0_lFAgHcfU0_ +_T06SQLite10ConnectionC14createFunctionAA10ExpressionVyxGAFyq_GcSS_Sb13deterministicxq_ctKAA5ValueRzAaJR_r0_lFxSayAA7Binding_pSgGcfU_ +__T0Sa6appendyqd__10contentsOf_t7ElementQyd__Rszs8SequenceRd__lFSS_SaySSGTg5 +__T0Sa6appendyqd__10contentsOf_t7ElementQyd__Rszs8SequenceRd__lFSi_SaySiGTg5 +__T0s10CollectionPsE5count13IndexDistanceQzfgs9SubstringV8UTF8ViewV_Tg5 +__T06SQLite9QueryTypePAAE9tableNameAA11Expressible_pSb5alias_tFAA12VirtualTableV_Tg5 +__T06SQLite9QueryTypePAAE9tableNameAA11Expressible_pSb5alias_tF +_globalinit_33_5F0FD0443FF5032238ECC00E64F41F5E_func5 +_globalinit_33_5F0FD0443FF5032238ECC00E64F41F5E_func6 +_globalinit_33_5F0FD0443FF5032238ECC00E64F41F5E_func7 +__T06SQLite9TokenizerVs23CustomStringConvertibleAAsADP11descriptionSSfgTW +__T0SPys4Int8VGSpys5Int32VGAFSSSgIxyyyo_Ac2FSo8NSStringCSgIyByyya_TR +__T06SQLite9FTSConfigC12ColumnOptionOs9EquatableAAsAFP2eeoiSbx_xtFZTW +__T06SQLite9FTSConfigC12ColumnOptionOs8HashableAAsAFP9hashValueSifgTW +__T06SQLite10FTS4ConfigC9MatchInfoOs9EquatableAAsAFP2eeoiSbx_xtFZTW +__T06SQLite10FTS4ConfigC9MatchInfoOs8HashableAAsAFP9hashValueSifgTW +__T06SQLite10FTS4ConfigC9MatchInfoOs23CustomStringConvertibleAAsAFP11descriptionSSfgTW +__T06SQLite10FTS4ConfigC5OrderOs9EquatableAAsAFP2eeoiSbx_xtFZTW +__T06SQLite10FTS4ConfigC5OrderOs8HashableAAsAFP9hashValueSifgTW +__T06SQLite10FTS4ConfigC5OrderOs23CustomStringConvertibleAAsAFP11descriptionSSfgTW +__T06SQLite10FTS4ConfigCfE +__T0s7UnicodeO5UTF16O16transcodedLengthSi5count_Sb7isASCIItSgx2of_q_m9decodedAsSb27repairingIllFormedSequencests16IteratorProtocolRzs01_A8EncodingR_8CodeUnitQy_7ElementRtzr0_lFZs019UnsafeBufferPointerO0Vys5UInt8VG_AB4UTF8OTgq5Tfq4xnnd_n +__T0s13_StringBufferVABSi8capacity_Si11initialSizeSi12elementWidthtcfCTfq4nnnd_n +__T0s26RangeReplaceableCollectionPsE6remove7ElementQz5IndexQz2at_tFs11_UIntBufferVys6UInt32Vs5UInt8VG_Tgq5 +__T0s7UnicodeO4UTF8O13ForwardParserV14_invalidLengths5UInt8VyFTfq4x_n +__T0s7UnicodeO5UTF16O6encodes11_UIntBufferVys6UInt32Vs6UInt16VGSgAB6ScalarVFZTfq4nd_n +__T0s26RangeReplaceableCollectionPsE6remove7ElementQz5IndexQz2at_tFs11_UIntBufferVys6UInt32Vs6UInt16VG_Tgq5 +__T0s15ContiguousArrayV15reserveCapacityySiF6SQLite11Expressible_p_Tg5 +__T0Sa16_copyToNewBufferySi8oldCount_tF6SQLite11Expressible_p_Tg5 +__T0Sa16_copyToNewBufferySi8oldCount_tF6SQLite11Expressible_p_SayAC9FTSConfigC12ColumnOptionOG7optionst_Tg5 +__T0Sa16_copyToNewBufferySi8oldCount_tFSS_Tg5Tm +__T0s17MutableCollectionPssAARzs012RandomAccessB0Rzs10Comparable7Elements8SequencePRpzlE4sortyyFs15ContiguousArrayVySiG_Tg5 +__T0s20_ArrayBufferProtocolPsE20_arrayAppendSequenceyqd__s0F0Rd__7ElementQyd__AERtzlFTfq4gn_ns01_aB0VySSG_s08IteratorF0Vys08IndexingH0VySaySSGGGTg5 +__T0s20_ArrayBufferProtocolPsE20_arrayAppendSequenceyqd__s0F0Rd__7ElementQyd__AERtzlFTfq4gn_ns01_aB0VySiG_s08IteratorF0Vys08IndexingH0VySaySiGGGTg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0VySSG_Tg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vy6SQLite11Expressible_p_SayAM9FTSConfigC12ColumnOptionOG7optionstG_Tg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFAEy6SQLite11Expressible_p_SayAK9FTSConfigC12ColumnOptionOG7optionstG_Tg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0VySiG_Tg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0VySSG_s07_IgnoreK0VySSGTg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0Vy6SQLite11Expressible_p_SayAM9FTSConfigC12ColumnOptionOG7optionstG_s07_IgnoreK0VyAmN_p_AsTtGTg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_nAEySiG_s07_IgnoreK0VySiGTg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_nAEy6SQLite11Expressible_p_SayAK9FTSConfigC12ColumnOptionOG7optionstG_s07_IgnoreK0VyAkL_p_AqRtGTg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0VySiG_s07_IgnoreK0VySiGTg5 +__T0Sa15reserveCapacityySiFSS_Tg5 +__T0Sa15reserveCapacityySiFSi_Tg5 +__T0s26_toStringReadOnlyPrintableSSxs06CustomB11ConvertibleRzlFTfq4g_nSi_Tg5 +__T0Sis10ComparablessAAP2leoiSbx_xtFZTW +__T0Sis10ComparablessAAP2geoiSbx_xtFZTW +__T0Sis13BinaryIntegerssAAP1doixx_xtFZTW +__T0Sis35_ExpressibleByBuiltinIntegerLiteralssAAPxBi2048_08_builtindE0_tcfCTW +__T0SS17UnicodeScalarViewV05_isOnaB8BoundarySbSS5IndexVFTfq4xn_n +__T0SS5IndexV13encodedOffsetSifgTfq4x_n +__T0SS8UTF8ViewV8distanceSiSS5IndexV4from_AE2totFTfq4xxn_n +__T0s17_UnicodeEncoding_PsE10_transcodeyqd___qd_0_m4fromy13EncodedScalarQzc4intots8SequenceRd__s01_aB0Rd_0_8CodeUnitQyd_0_7ElementRtd__r0_lFZs0A0O4UTF8O_s11_StringCoreVAO5UTF16OTgq5012_T0s16_ValidL30BufferVys6UInt32VGIxy_AEIxi_TRs01_qlR0Vys0T0VGIxy_Tfq1nncn_nTfq4gXddg_n06_T0SS8l52ViewV16_forwardDistanceSiSS5IndexV4from_AE2totFys06_q2A6rsT6VGcfU_SiTfq1nnnc_n +__T0s14_introSortImplyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subD0Si10depthLimitts17MutableCollectionRzs012RandomAccessL0Rzs10Comparable7Elements8SequencePRpzlFTfq4ngn_nSrySiG_Tg5 +__T0s9_heapSortyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subC0ts17MutableCollectionRzs012RandomAccessI0Rzs10Comparable7Elements8SequencePRpzlFTfq4ng_nSrySiG_Tg5 +__T0s14_insertionSortyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subC0ts23BidirectionalCollectionRzs07MutableI0Rzs10Comparable7Elements8SequencePRpzlFTfq4ng_nSrySiG_Tg5 +__T0s9_siftDownyxz_5Indexs14_IndexableBasePQz5indexs5RangeVyAEG03subG0ts17MutableCollectionRzs012RandomAccessJ0Rzs10Comparable7Elements8SequencePRpzlFTfq4nng_nSrySiG_Tg5 +__T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tF6SQLite11Expressible_p_Tg5 +__T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tF6SQLite11Expressible_p_SayAE9FTSConfigC12ColumnOptionOG7optionst_Tg5 +__T0s6_sort3yxz_5Indexs14_IndexableBasePQzA2Ets17MutableCollectionRzs012RandomAccessF0Rzs10Comparable7Elements8SequencePRpzlFSrySiG_Tg5 +__T0Sis17FixedWidthIntegerssAAP3maxxfgZTW +__T0Si5WordsVs14_IndexableBasessACP8endIndex0E0QzfgTW +__T0s20_ArrayBufferProtocolPsE019_outlinedMakeUniqueB0ySi11bufferCount_tFs011_ContiguousaB0VySiG_Tg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi8newCount_Si16requiredCapacitytFAEySiG_Tg5 +__T0Sus10ComparablessAAP1loiSbx_xtFZTW +__T0s18BidirectionalSliceV5index5IndexQzAE6before_tFSS8UTF8ViewV_Tgq5Tfq4xn_n +__T0s18BidirectionalSliceV5index5IndexQzAE5after_tFSS8UTF8ViewV_Tgq5Tfq4xn_n +__T0s10_IndexablePsE9subscript11SubSequenceQzqd__cs15RangeExpressionRd__5BoundQyd__5IndexRtzlufgs11_StringCoreV_s07PartialE4UpToVySiGTgq5 +__T0s30ReversedRandomAccessCollectionV9subscript7ElementQzs0abC5IndexVyxGcfgs11_StringCoreV_Tgq5 +__T0s26RangeReplaceableCollectionPsE14removeSubrangeys0A0Vy5IndexQzGFs16_ValidUTF8BufferVys6UInt64VG_Tgq5Tfq4xn_n +__T06SQLite9FTSConfigC7OptionsV6appendAESS_AA11Expressible_pSg5valuetFTf4gXnn_nTf4nnnnn_g +__T0s10_partition5Indexs14_IndexableBasePQzxz_s5RangeVyAEG03subE0ts17MutableCollectionRzs012RandomAccessH0Rzs10Comparable7Elements8SequencePRpzlFSrySiG_Tg5Tf4nx_n +__T06SQLite9FTSConfigC7OptionsV6appendAESS_SSSg5valuetFTf4gXgn_n +__T06SQLite9FTSConfigC6columnACXDAA11Expressible_p_SayAC12ColumnOptionOGtFTf4ngn_n +__T06SQLite9FTSConfigC7columnsACXDSayAA11Expressible_pGFTf4gn_n +__T06SQLite6ModuleV4FTS4ACSayAA11Expressible_pG_AA9TokenizerVSg8tokenizetFZTf4ggd_n +__T06SQLite9QueryTypePAAE6filterxAA10ExpressionVySbSgGFAA12VirtualTableV_Tg5Tf4gn_n +__T06SQLite10ConnectionC17registerTokenizerySS_SS_s5RangeVySS5IndexVGtSgSSc4nexttKFSSSgSPys4Int8VG_Spys5Int32VGARtcfU_TA +__T06SQLite9TokenizerVwXX +__T06SQLite9TokenizerVwCP +__T06SQLite9TokenizerVwpr +__T06SQLite9TokenizerVwde +__T06SQLite9TokenizerVwxx +__T06SQLite9TokenizerVwCp +__T06SQLite9TokenizerVwcp +__T06SQLite9TokenizerVwca +__T06SQLite9TokenizerVwTk +__T06SQLite9TokenizerVwta +__T06SQLite9TokenizerVwal +__T06SQLite9TokenizerVwXx +__T06SQLite9TokenizerVwCc +___swift_memcpy0_1 +__T06SQLite9FTSConfigC12ColumnOptionOwug +__T06SQLite9FTSConfigC12ColumnOptionOwup +__T06SQLite9FTSConfigC12ColumnOptionOwui +__T06SQLite10FTS4ConfigC9MatchInfoOwug +__T06SQLite10FTS4ConfigC9MatchInfoOwup +__T06SQLite10FTS4ConfigC9MatchInfoOwui +__T06SQLite10FTS4ConfigC5OrderOwxs +__T06SQLite10FTS4ConfigC5OrderOwxg +__T06SQLite10FTS4ConfigC5OrderOwug +__T06SQLite10FTS4ConfigC5OrderOwup +__T06SQLite10FTS4ConfigC5OrderOwui +__T06SQLite11Expressible_p_SayAA9FTSConfigC12ColumnOptionOG7optionstMa +__T0SS5IndexV12samePositionABSgSS8UTF8ViewV2in_tFTfq4xx_nTfq4ndn_n +__T06SQLite10ConnectionC17registerTokenizerySS_SS_s5RangeVySS5IndexVGtSgSSc4nexttKFSSSgSPys4Int8VG_Spys5Int32VGARtcfU_Tf4nnng_n +__T06SQLite9TokenizerV10moduleName33_5F0FD0443FF5032238ECC00E64F41F5ELLSSvZ +__T06SQLite9TokenizerVWV +__T06SQLite9TokenizerVMf +__T06SQLite9TokenizerVMF +__T06SQLite9FTSConfigC17columnDefinitionsSayAA11Expressible_p_SayAC12ColumnOptionOG7optionstGvWvd +__T06SQLite9FTSConfigC9tokenizerAA9TokenizerVSgvWvd +__T06SQLite9FTSConfigC8prefixesSaySiGvWvd +__T06SQLite9FTSConfigC21externalContentSchemaAA0E4Type_pSgvWvd +__T06SQLite9FTSConfigC13isContentlessSbvWvd +__T06SQLite9FTSConfigCML +__T06SQLite9FTSConfigCMf +__T06SQLite9FTSConfigC12ColumnOptionOWV +__T06SQLite9FTSConfigC12ColumnOptionOML +__T06SQLite9FTSConfigC12ColumnOptionOMf +__T06SQLite9FTSConfigC12ColumnOptionOMF +__T06SQLite9FTSConfigC7OptionsVMF +__T06SQLite9FTSConfigCMF +__T06SQLite10FTS4ConfigC16compressFunctionSSSgvWvd +__T06SQLite10FTS4ConfigC18uncompressFunctionSSSgvWvd +__T06SQLite10FTS4ConfigC10languageIdSSSgvWvd +__T06SQLite10FTS4ConfigC9matchInfoAC05MatchE0OSgvWvd +__T06SQLite10FTS4ConfigC5orderAC5OrderOSgvWvd +__T06SQLite10FTS4ConfigCML +__T06SQLite10FTS4ConfigCMf +__T06SQLite10FTS4ConfigC9MatchInfoOWV +__T06SQLite10FTS4ConfigC9MatchInfoOML +__T06SQLite10FTS4ConfigC9MatchInfoOMf +__T06SQLite10FTS4ConfigC9MatchInfoOMF +__T06SQLite10FTS4ConfigC5OrderOWV +__T06SQLite10FTS4ConfigC5OrderOML +__T06SQLite10FTS4ConfigC5OrderOMf +__T06SQLite10FTS4ConfigC5OrderOMF +__T06SQLite10FTS4ConfigCMF +__T06SQLite10FTS4ConfigC9MatchInfoOSgML +__T06SQLite10FTS4ConfigC5OrderOSgML +__T0Say6SQLite11Expressible_p_SayAA9FTSConfigC12ColumnOptionOG7optionstGML +__T06SQLite11Expressible_p_SayAA9FTSConfigC12ColumnOptionOG7optionstML +__T0Say6SQLite9FTSConfigC12ColumnOptionOGML +__T06SQLite9TokenizerVSgML +__T0SaySiGML +__T06SQLite10SchemaType_pSgML +__T06SQLite10SchemaType_pML +__T0SaySSGML +__T0s23_ContiguousArrayStorageCySiGML +__T0s23_ContiguousArrayStorageCy6SQLite11Expressible_p_SayAC9FTSConfigC12ColumnOptionOG7optionstGML +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Extensions/FTS4.swift +_T06SQLite10ConnectionC17registerTokenizerySS_SS_s5RangeVySS5IndexVGtSgSSc4nexttKFSSSgSPys4Int8VG_Spys5Int32VGARtcfU_Tf4nnng_n +distance +samePosition +utf8.get +_T0SS5IndexV13encodedOffsetSifgTfq4x_n +_T06SQLite11Expressible_p_SayAA9FTSConfigC12ColumnOptionOG7optionstMa +_T0Say6SQLite9FTSConfigC12ColumnOptionOGMa +_T06SQLite9FTSConfigC12ColumnOptionOMa +initialize_metadata_Order +_T06SQLite10FTS4ConfigCMa +_T06SQLite10FTS4ConfigC5OrderOMa +get_field_types_Order +_T06SQLite10FTS4ConfigC5OrderOwui +_T06SQLite10FTS4ConfigC5OrderOwup +_T06SQLite10FTS4ConfigC5OrderOwug +_T06SQLite10FTS4ConfigC5OrderOwxg +_T06SQLite10FTS4ConfigC5OrderOwxs +initialize_metadata_MatchInfo +_T06SQLite10FTS4ConfigC9MatchInfoOMa +get_field_types_MatchInfo +_T06SQLite10FTS4ConfigC9MatchInfoOwui +_T06SQLite10FTS4ConfigC9MatchInfoOwup +_T06SQLite10FTS4ConfigC9MatchInfoOwug +get_field_types_FTS4Config +_T06SQLite10FTS4ConfigC5OrderOSgMa +_T06SQLite10FTS4ConfigC9MatchInfoOSgMa +initialize_metadata_ColumnOption +_T06SQLite9FTSConfigCMa +get_field_types_ColumnOption +_T06SQLite9FTSConfigC12ColumnOptionOwui +_T06SQLite9FTSConfigC12ColumnOptionOwup +_T06SQLite9FTSConfigC12ColumnOptionOwug +__swift_memcpy0_1 +get_field_types_FTSConfig +_T06SQLite10SchemaType_pSgMa +_T06SQLite10SchemaType_pMa +_T0SaySiGMa +_T06SQLite9TokenizerVSgMa +_T0Say6SQLite11Expressible_p_SayAA9FTSConfigC12ColumnOptionOG7optionstGMa +_T06SQLite9TokenizerVMa +get_field_types_Tokenizer +_T0SaySSGMa +_T06SQLite9TokenizerVwCc +_T06SQLite9TokenizerVwXx +_T06SQLite9TokenizerVwal +_T06SQLite9TokenizerVwta +_T06SQLite9TokenizerVwTk +_T06SQLite9TokenizerVwca +_T06SQLite9TokenizerVwcp +_T06SQLite9TokenizerVwCp +_T06SQLite9TokenizerVwxx +_T06SQLite9TokenizerVwde +_T06SQLite9TokenizerVwpr +_T06SQLite9TokenizerVwCP +_T06SQLite9TokenizerVwXX +_T06SQLite10FTS4ConfigC5OrderOs23CustomStringConvertibleAAWa +_T06SQLite10FTS4ConfigC5OrderOs8HashableAAWa +_T06SQLite10FTS4ConfigC5OrderOs9EquatableAAWa +_T06SQLite10FTS4ConfigC9MatchInfoOs23CustomStringConvertibleAAWa +_T06SQLite10FTS4ConfigC9MatchInfoOs8HashableAAWa +_T06SQLite10FTS4ConfigC9MatchInfoOs9EquatableAAWa +_T06SQLite9FTSConfigC12ColumnOptionOs8HashableAAWa +_T06SQLite9FTSConfigC12ColumnOptionOs9EquatableAAWa +_T06SQLite9TokenizerVs23CustomStringConvertibleAAWa +_T06SQLite10ConnectionC17registerTokenizerySS_SS_s5RangeVySS5IndexVGtSgSSc4nexttKFSSSgSPys4Int8VG_Spys5Int32VGARtcfU_TA +_T06SQLite10ConnectionC17registerTokenizerySS_SS_s5RangeVySS5IndexVGtSgSSc4nexttKFSSSgSPys4Int8VG_Spys5Int32VGARtcfU_ +objectdestroy.22 +FTS4 +columns +column +_T0Sa36_reserveCapacityAssumingUniqueBufferySi8oldCount_tF6SQLite11Expressible_p_SayAC9FTSConfigC12ColumnOptionOG7optionst_Tg5 +tokenizer +_T0Sa034_makeUniqueAndReserveCapacityIfNotB0yyF6SQLite11Expressible_p_SayAB9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tF6SQLite11Expressible_p_SayAC9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFTfq4ngn_n6SQLite11Expressible_p_SayAC9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s12_ArrayBufferV5countSifs6SQLite11Expressible_p_SayAD9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0Sa9_getCountSiyF6SQLite11Expressible_p_SayAB9FTSConfigC12ColumnOptionOG7optionst_Tg5 +arguments +_T0Sa36_reserveCapacityAssumingUniqueBufferySi8oldCount_tF6SQLite11Expressible_p_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tF6SQLite11Expressible_p_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFTfq4ngn_n6SQLite11Expressible_p_Tg5 +_T0Sa034_makeUniqueAndReserveCapacityIfNotB0yyF6SQLite11Expressible_p_Tg5 +_T0SS6SQLite11Expressible_ps5Error_pIxxrzo_SSAaB_psAC_pIxirzo_TR +_T06SQLite9FTSConfigC7OptionsV6appendAESS_SSSg5valuetFAA11Expressible_pSScfU_ +_T0s10_partition5Indexs14_IndexableBasePQzxz_s5RangeVyAEG03subE0ts17MutableCollectionRzs012RandomAccessH0Rzs10Comparable7Elements8SequencePRpzlFSrySiG_Tg5Tf4nx_n +_T0SryxGs17_MutableIndexableslsABP9formIndexy0D0Qzz5after_tFTWSi_Tg5 +_T0Sr9formIndexySiz5after_tFSi_Tg5 +_T0SryxGs23BidirectionalCollectionslsABP9formIndexy0D0Qzz6before_tFTWSi_Tg5 +_T0Sr9formIndexySiz6before_tFSi_Tg5 +_T0SryxGs17MutableCollectionslsABP9subscript7ElementQz5IndexQzcfgTWSi_Tg5 +_T0Sr9subscriptxSicfgSi_Tg5 +_T0SryxGs10CollectionslsABP5index5IndexQzAF_0C8DistanceQz8offsetBytFTWSi_Tg5 +_T0Sr5indexS2i_Si8offsetBytFSi_Tg5 +_T0SryxGs10CollectionslsABP8distance13IndexDistanceQz0C0Qz4from_AH2totFTWSi_Tg5 +_T0Sr8distanceS2i4from_Si2totFSi_Tg5 +_T0SryxGs23BidirectionalCollectionslsABP5index5IndexQzAF6before_tFTWSi_Tg5 +_T0Sr5indexS2i6before_tFSi_Tg5 +_T0SryxGs17MutableCollectionslsABP6swapAty5IndexQz_AFtFTWSi_Tg5 +_T0s17MutableCollectionPsE6swapAty5IndexQz_AEtFSrySiG_Tg5 +_T0SryxGs17MutableCollectionslsABP9subscript7ElementQz5IndexQzcfsTWSi_Tg5 +_T0Sr9subscriptxSicfsSi_Tg5 +_T0Sis10ComparablessAAP2geoiSbx_xtFZTW +_T0s26RangeReplaceableCollectionPsE14removeSubrangeys0A0Vy5IndexQzGFs16_ValidUTF8BufferVys6UInt64VG_Tgq5Tfq4xn_n +_T0s30ReversedRandomAccessCollectionV9subscript7ElementQzs0abC5IndexVyxGcfgs11_StringCoreV_Tgq5 +_T0s22RandomAccessCollectionPssAARzs10Strideable5IndexRpzAD_6StrideQZ0E8DistanceRtzs14CountableRangeVyAEG7IndicesRtzlE5indexA2E6before_tFs11_StringCoreV_Tgq5 +_T0s10_IndexablePsE20_failEarlyRangeChecky5IndexQz_s0D0VyAEG6boundstFs11_StringCoreV_Tgq5Tfq4nxn_n +_T0s10_IndexablePsE9subscript11SubSequenceQzqd__cs15RangeExpressionRd__5BoundQyd__5IndexRtzlufgs11_StringCoreV_s07PartialE4UpToVySiGTgq5 +_T0s18BidirectionalSliceV5index5IndexQzAE5after_tFSS8UTF8ViewV_Tgq5Tfq4xn_n +_T0SS5IndexVABSi13encodedOffset_Si010transcodedC0AB6_CacheOtcfCTfq4nnnd_n +_T0s26RangeReplaceableCollectionPsE11removeFirstySiFs16_ValidUTF8BufferVys6UInt64VG_Tgq5 +_T0s18BidirectionalSliceV5index5IndexQzAE6before_tFSS8UTF8ViewV_Tgq5Tfq4xn_n +_T0s26RangeReplaceableCollectionPsExqd__cs8SequenceRd__7ElementQyd__ADRtzlufCs16_ValidUTF8BufferVys6UInt64VG_AHys6UInt32VGTgq5Tfq4nd_n +_T0Sus10ComparablessAAP1loiSbx_xtFZTW +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi8newCount_Si16requiredCapacitytFAEySiG_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB4Impls011_ContiguousaB0Vy7ElementQzGSi08countForB0_Si14minNewCapacitySi08requiredO0tFAEySiG_Tg5 +_T0s22_ContiguousArrayBufferVAByxGSi19_uninitializedCount_Si15minimumCapacitytcfCSi_Tg5 +_T0s23_ContiguousArrayStorageCySiGMa +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP8capacitySifgTWSi_Tg5 +_T0s22_ContiguousArrayBufferV8capacitySifgSi_Tg5 +_T0s20_ArrayBufferProtocolPsE019_outlinedMakeUniqueB0ySi11bufferCount_tFs011_ContiguousaB0VySiG_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP027requestUniqueMutableBackingC0ABy7ElementQzGSgSi15minimumCapacity_tFTWSi_Tg5 +_T0s22_ContiguousArrayBufferV027requestUniqueMutableBackingC0AByxGSgSi15minimumCapacity_tFSi_Tg5 +_T0Si5WordsVs14_IndexableBasessACP8endIndex0E0QzfgTW +_T0Sis17FixedWidthIntegerssAAP3maxxfgZTW +_T0s6_sort3yxz_5Indexs14_IndexableBasePQzA2Ets17MutableCollectionRzs012RandomAccessF0Rzs10Comparable7Elements8SequencePRpzlFSrySiG_Tg5 +_T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tF6SQLite11Expressible_p_SayAE9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s9_siftDownyxz_5Indexs14_IndexableBasePQz5indexs5RangeVyAEG03subG0ts17MutableCollectionRzs012RandomAccessJ0Rzs10Comparable7Elements8SequencePRpzlFTfq4nng_nSrySiG_Tg5 +_T0SryxGs17_MutableIndexableslsABP5index5IndexQzAF5after_tFTWSi_Tg5 +_T0Sr5indexS2i5after_tFSi_Tg5 +_T0Sis13BinaryIntegerssAAP1poixx_xtFZTW +_T0s14_insertionSortyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subC0ts23BidirectionalCollectionRzs07MutableI0Rzs10Comparable7Elements8SequencePRpzlFTfq4ng_nSrySiG_Tg5 +_T0s9_heapSortyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subC0ts17MutableCollectionRzs012RandomAccessI0Rzs10Comparable7Elements8SequencePRpzlFTfq4ng_nSrySiG_Tg5 +_T0s8_heapifyyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subB0ts17MutableCollectionRzs012RandomAccessH0Rzs10Comparable7Elements8SequencePRpzlFTfq4ng_nSrySiG_Tg5 +_T0Sis10ComparablessAAP2leoiSbx_xtFZTW +_T0Sis13BinaryIntegerssAAP1doixx_xtFZTW +_T0s14_introSortImplyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subD0Si10depthLimitts17MutableCollectionRzs012RandomAccessL0Rzs10Comparable7Elements8SequencePRpzlFTfq4ngn_nSrySiG_Tg5 +_T0s10_partition5Indexs14_IndexableBasePQzxz_s5RangeVyAEG03subE0ts17MutableCollectionRzs012RandomAccessH0Rzs10Comparable7Elements8SequencePRpzlFSrySiG_Tg5 +_T0s17_UnicodeEncoding_PsE10_transcodeyqd___qd_0_m4fromy13EncodedScalarQzc4intots8SequenceRd__s01_aB0Rd_0_8CodeUnitQyd_0_7ElementRtd__r0_lFZs0A0O4UTF8O_s11_StringCoreVAO5UTF16OTgq5012_T0s16_ValidL30BufferVys6UInt32VGIxy_AEIxi_TRs01_qlR0Vys0T0VGIxy_Tfq1nncn_nTfq4gXddg_n06_T0SS8l52ViewV16_forwardDistanceSiSS5IndexV4from_AE2totFys06_q2A6rsT6VGcfU_SiTfq1nnnc_n +_T0SS8UTF8ViewV16_forwardDistanceSiSS5IndexV4from_AE2totFys06_ValidA6BufferVys6UInt32VGcfU_ +_T0SS8UTF8ViewV8distanceSiSS5IndexV4from_AE2totFTfq4xxn_n +_T0SS17UnicodeScalarViewV05_isOnaB8BoundarySbSS5IndexVFTfq4xn_n +_T0SS17UnicodeScalarViewV12_toCoreIndexSiSS0F0VFTfq4xx_n +_T0SS17UnicodeScalarViewV10startIndexSS0E0VfgTfq4x_n +_T0SS5IndexV17_transcodedOffsetSifgTfq4x_n +_T0SS17UnicodeScalarViewV8endIndexSS0E0VfgTfq4x_n +_T0Sis35_ExpressibleByBuiltinIntegerLiteralssAAPxBi2048_08_builtindE0_tcfCTW +_T0s26_toStringReadOnlyPrintableSSxs06CustomB11ConvertibleRzlFTfq4g_nSi_Tg5 +_T0Sis23CustomStringConvertiblessAAP11descriptionSSfgTW +_T0s14_int64ToStringSSs5Int64V_AC5radixSb9uppercasetF +_T0Sa15reserveCapacityySiFSi_Tg5 +_T0s22_ContiguousArrayBufferV18_initStorageHeaderySi5count_Si8capacitytFSi_Tg5 +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtFTfq4xnn_nSi_Tg5 +_T0s12_ArrayBufferV8endIndexSifgSi_Tg5 +_T0Sa9_getCountSiyFSi_Tg5 +_T0s12_ArrayBufferV20isUniquelyReferencedSbyFSi_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0VySiG_s07_IgnoreK0VySiGTg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subG0_AI12initializingtFTWSi_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFSi_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFTfq4xnn_nSi_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP19firstElementAddressSpy0E0QzGfgTWSi_Tg5 +_T0s12_ArrayBufferV19firstElementAddressSpyxGfgSi_Tg5 +_T0Sp10initializeySPyxG4from_Si5counttFSi_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8endIndexSifgTWSi_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP027requestUniqueMutableBackingB0s011_ContiguousaB0Vy7ElementQzGSgSi15minimumCapacity_tFTWSi_Tg5 +_T0s12_ArrayBufferV027requestUniqueMutableBackingB0s011_ContiguousaB0VyxGSgSi15minimumCapacity_tFSi_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifgTWSi_Tg5 +_T0s12_ArrayBufferV5countSifgSi_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_nAEy6SQLite11Expressible_p_SayAK9FTSConfigC12ColumnOptionOG7optionstG_s07_IgnoreK0VyAkL_p_AqRtGTg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subH0_AI12initializingtFTW6SQLite11Expressible_p_SayAO9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtF6SQLite11Expressible_p_SayAJ9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtFTfq4xnn_n6SQLite11Expressible_p_SayAJ9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP19firstElementAddressSpy0F0QzGfgTW6SQLite11Expressible_p_SayAJ9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s22_ContiguousArrayBufferV19firstElementAddressSpyxGfg6SQLite11Expressible_p_SayAE9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP8endIndexSifgTW6SQLite11Expressible_p_SayAG9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s22_ContiguousArrayBufferV8endIndexSifg6SQLite11Expressible_p_SayAD9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP027requestUniqueMutableBackingC0ABy7ElementQzGSgSi15minimumCapacity_tFTW6SQLite11Expressible_p_SayAL9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s22_ContiguousArrayBufferV027requestUniqueMutableBackingC0AByxGSgSi15minimumCapacity_tF6SQLite11Expressible_p_SayAG9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP5countSifgTW6SQLite11Expressible_p_SayAG9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s22_ContiguousArrayBufferV5countSifg6SQLite11Expressible_p_SayAD9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_nAEySiG_s07_IgnoreK0VySiGTg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subH0_AI12initializingtFTWSi_Tg5 +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtFSi_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP19firstElementAddressSpy0F0QzGfgTWSi_Tg5 +_T0s22_ContiguousArrayBufferV19firstElementAddressSpyxGfgSi_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP8endIndexSifgTWSi_Tg5 +_T0s22_ContiguousArrayBufferV8endIndexSifgSi_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP5countSifgTWSi_Tg5 +_T0s22_ContiguousArrayBufferV5countSifgSi_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0Vy6SQLite11Expressible_p_SayAM9FTSConfigC12ColumnOptionOG7optionstG_s07_IgnoreK0VyAmN_p_AsTtGTg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subG0_AI12initializingtFTW6SQLite11Expressible_p_SayAO9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtF6SQLite11Expressible_p_SayAJ9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFTfq4xnn_n6SQLite11Expressible_p_SayAJ9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP19firstElementAddressSpy0E0QzGfgTW6SQLite11Expressible_p_SayAJ9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s12_ArrayBufferV19firstElementAddressSpyxGfg6SQLite11Expressible_p_SayAE9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0Sp10initializeySPyxG4from_Si5counttF6SQLite11Expressible_p_SayAE9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8endIndexSifgTW6SQLite11Expressible_p_SayAG9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s12_ArrayBufferV8endIndexSifg6SQLite11Expressible_p_SayAD9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP027requestUniqueMutableBackingB0s011_ContiguousaB0Vy7ElementQzGSgSi15minimumCapacity_tFTW6SQLite11Expressible_p_SayAN9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s12_ArrayBufferV027requestUniqueMutableBackingB0s011_ContiguousaB0VyxGSgSi15minimumCapacity_tF6SQLite11Expressible_p_SayAI9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s12_ArrayBufferV20isUniquelyReferencedSbyF6SQLite11Expressible_p_SayAD9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifgTW6SQLite11Expressible_p_SayAG9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s12_ArrayBufferV5countSifg6SQLite11Expressible_p_SayAD9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0VySSG_s07_IgnoreK0VySSGTg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subG0_AI12initializingtFTWSS_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFSS_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFTfq4xnn_nSS_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP19firstElementAddressSpy0E0QzGfgTWSS_Tg5 +_T0s12_ArrayBufferV19firstElementAddressSpyxGfgSS_Tg5 +_T0Sp10initializeySPyxG4from_Si5counttFSS_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8endIndexSifgTWSS_Tg5 +_T0s12_ArrayBufferV8endIndexSifgSS_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP027requestUniqueMutableBackingB0s011_ContiguousaB0Vy7ElementQzGSgSi15minimumCapacity_tFTWSS_Tg5 +_T0s12_ArrayBufferV027requestUniqueMutableBackingB0s011_ContiguousaB0VyxGSgSi15minimumCapacity_tFSS_Tg5 +_T0s12_ArrayBufferV20isUniquelyReferencedSbyFSS_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifgTWSS_Tg5 +_T0s12_ArrayBufferV5countSifgSS_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0VySiG_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8capacitySifgTWSi_Tg5 +_T0s12_ArrayBufferV8capacitySifgSi_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFAEy6SQLite11Expressible_p_SayAK9FTSConfigC12ColumnOptionOG7optionstG_Tg5 +_T0s23_ContiguousArrayStorageCy6SQLite11Expressible_p_SayAC9FTSConfigC12ColumnOptionOG7optionstGMa +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP8capacitySifgTW6SQLite11Expressible_p_SayAG9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s22_ContiguousArrayBufferV8capacitySifg6SQLite11Expressible_p_SayAD9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vy6SQLite11Expressible_p_SayAM9FTSConfigC12ColumnOptionOG7optionstG_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8capacitySifgTW6SQLite11Expressible_p_SayAG9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s12_ArrayBufferV8capacitySifg6SQLite11Expressible_p_SayAD9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0VySSG_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8capacitySifgTWSS_Tg5 +_T0s12_ArrayBufferV8capacitySifgSS_Tg5 +_T0s20_ArrayBufferProtocolPsE20_arrayAppendSequenceyqd__s0F0Rd__7ElementQyd__AERtzlFTfq4gn_ns01_aB0VySiG_s08IteratorF0Vys08IndexingH0VySaySiGGGTg5 +_T0s16IteratorSequenceVyxGs0A8ProtocolssADRzlsADP4next7ElementQzSgyFTWs08IndexingA0VySaySiGG_Tg5 +_T0s16IteratorSequenceV4next7ElementQzSgyFs08IndexingA0VySaySiGG_Tg5 +_T0s16IndexingIteratorVyxGs0B8Protocolss14_IndexableBaseRzlsADP4next7ElementQzSgyFTWSaySiG_Tg5 +_T0SayxGs14_IndexableBaseslsABP9formIndexy0D0Qzz5after_tFTWSi_Tg5 +_T0Sa9formIndexySiz5after_tFSi_Tg5 +_T0SayxGs14_IndexableBaseslsABP9subscript7ElementQz5IndexQzcfgTWSi_Tg5 +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtFSi_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tFSi_Tg5 +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktFSi_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifsTWSi_Tg5 +_T0s12_ArrayBufferV5countSifsSi_Tg5 +_T0SayxGs14_IndexableBaseslsABP8endIndex0D0QzfgTWSi_Tg5 +_T0Sa8endIndexSifgSi_Tg5 +_T0s16IteratorSequenceVyxGs0B0ss0A8ProtocolRzlsADP04makeA00A0QzyFTWs08IndexingA0VySaySiGG_Tg5 +_T0s20_ArrayBufferProtocolPsE20_arrayAppendSequenceyqd__s0F0Rd__7ElementQyd__AERtzlFTfq4gn_ns01_aB0VySSG_s08IteratorF0Vys08IndexingH0VySaySSGGGTg5 +_T0s16IteratorSequenceVyxGs0A8ProtocolssADRzlsADP4next7ElementQzSgyFTWs08IndexingA0VySaySSGG_Tg5 +_T0s16IteratorSequenceV4next7ElementQzSgyFs08IndexingA0VySaySSGG_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifsTWSS_Tg5 +_T0s16IteratorSequenceVyxGs0B0ss0A8ProtocolRzlsADP04makeA00A0QzyFTWs08IndexingA0VySaySSGG_Tg5 +_T0s17MutableCollectionPssAARzs012RandomAccessB0Rzs10Comparable7Elements8SequencePRpzlE4sortyyFs15ContiguousArrayVySiG_Tg5 +_T0s15ContiguousArrayVyxGs17MutableCollectionslsADP011_withUnsafeC24BufferPointerIfSupportedqd__Sgqd__Spy7ElementQzG_SitKcKlFTWSi_ytTg5 +_T0s15ContiguousArrayV42_withUnsafeMutableBufferPointerIfSupportedqd__Sgqd__SpyxG_SitKcKlFSi_ytTg5 +_T0s15ContiguousArrayV30withUnsafeMutableBufferPointerqd__qd__SryxGzKcKlFSi_ytTg5 +_T0s15ContiguousArrayV30withUnsafeMutableBufferPointerqd__qd__SryxGzKcKlF6$deferL_yyr__lFSi_ytTg5 +_T0Sr5countSifgSi_Tg5 +_T0s15ContiguousArrayV42_withUnsafeMutableBufferPointerIfSupportedqd__Sgqd__SpyxG_SitKcKlFqd__SryxGzKcfU_Si_ytTg5 +_T0Spy7Elements8SequencePQzGSis5Error_pIxyyzo_AESiytsAF_pIxyyrzo_s17MutableCollectionRzs012RandomAccessE0Rzs10ComparableADRQlTRs15ContiguousArrayVySiG_Tg5 +_T0s17MutableCollectionPssAARzs012RandomAccessB0Rzs10Comparable7Elements8SequencePRpzlE4sortyyFySpyAHG_SitcfU_s15ContiguousArrayVySiG_Tg5 +_T0s17MutableCollectionPssAARzs012RandomAccessB0Rzs10Comparable7Elements8SequencePRpzlE4sortyyFSrySiG_Tg5 +_T0SryxGs17_MutableIndexableslsABP8endIndex0D0QzfgTWSi_Tg5 +_T0Sr8endIndexSifgSi_Tg5 +_T0s10_introSortyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subC0ts17MutableCollectionRzs012RandomAccessI0Rzs10Comparable7Elements8SequencePRpzlFTfq4ng_nSrySiG_Tg5 +_T0S2ryxGSpyxGSg5start_Si5counttcfCSi_Tg5 +_T0s15ContiguousArrayV9_getCountSiyFSi_Tg5 +_T0Sa16_copyToNewBufferySi8oldCount_tFSS_Tg5 +_T0s7UnicodeO5UTF16O6encodes11_UIntBufferVys6UInt32Vs6UInt16VGSgAB6ScalarVFZTfq4nd_n +_T0s7UnicodeO4UTF8O13ForwardParserV14_invalidLengths5UInt8VyFTfq4x_n +_T0s26RangeReplaceableCollectionPsE6remove7ElementQz5IndexQz2at_tFs11_UIntBufferVys6UInt32Vs5UInt8VG_Tgq5 +_T0s13_StringBufferVABSi8capacity_Si11initialSizeSi12elementWidthtcfCTfq4nnnd_n +_T0s7UnicodeO5UTF16O16transcodedLengthSi5count_Sb7isASCIItSgx2of_q_m9decodedAsSb27repairingIllFormedSequencests16IteratorProtocolRzs01_A8EncodingR_8CodeUnitQy_7ElementRtzr0_lFZs019UnsafeBufferPointerO0Vys5UInt8VG_AB4UTF8OTgq5Tfq4xnnd_n +_T0SS21_fromCodeUnitSequenceSSSgxm_q_5inputts16_UnicodeEncodingRzs10CollectionR_7ElementQy_0bC0Rtzr0_lFZs0F0O4UTF8O_SRys5UInt8VGTgq5Tfq4nxd_n +options +filter +_T0s14_ArrayProtocolPsE6filterSay7ElementQzGSbAEKcKFTfq4gn_nSay6SQLite11Expressible_p_SayAG9FTSConfigC12ColumnOptionOG7optionstG_Tg5 +_T0s15ContiguousArrayV6appendyxF6SQLite11Expressible_p_SayAD9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s15ContiguousArrayV36_reserveCapacityAssumingUniqueBufferySi8oldCount_tF6SQLite11Expressible_p_SayAE9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0SayxGs14_IndexableBaseslsABP9formIndexy0D0Qzz5after_tFTW6SQLite11Expressible_p_SayAH9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0Sa9formIndexySiz5after_tF6SQLite11Expressible_p_SayAC9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0SayxGs14_IndexableBaseslsABP9subscript7ElementQz5IndexQzcfgTW6SQLite11Expressible_p_SayAI9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtF6SQLite11Expressible_p_SayAE9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tF6SQLite11Expressible_p_SayAE9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s16IndexingIteratorVyxGs0B8Protocolss14_IndexableBaseRzlsADP4next7ElementQzSgyFTWSay6SQLite11Expressible_p_SayAK9FTSConfigC12ColumnOptionOG7optionstG_Tg5 +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktF6SQLite11Expressible_p_SayAF9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0SayxGs14_IndexableBaseslsABP8endIndex0D0QzfgTW6SQLite11Expressible_p_SayAG9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0Sa8endIndexSifg6SQLite11Expressible_p_SayAB9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s15ContiguousArrayV37_appendElementAssumeUniqueAndCapacityySi_x03newD0tF6SQLite11Expressible_p_SayAE9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s15ContiguousArrayV37_appendElementAssumeUniqueAndCapacityySi_x03newD0tFTfq4ngn_n6SQLite11Expressible_p_SayAE9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s15ContiguousArrayV9_getCountSiyF6SQLite11Expressible_p_SayAD9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s15ContiguousArrayV034_makeUniqueAndReserveCapacityIfNotD0yyF6SQLite11Expressible_p_SayAD9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T06SQLite11Expressible_pSayAA9FTSConfigC12ColumnOptionOGSbs5Error_pIxixdzo_AaB_p_AG7optionstSbsAH_pIxidzo_TR +_T06SQLite10FTS4ConfigC7optionsAA9FTSConfigC7OptionsVyFSbAA11Expressible_p_SayAF12ColumnOptionOGADtcfU_ +_T0s16IndexingIteratorVyxGs0B8Protocolss14_IndexableBaseRzlsADP4next7ElementQzSgyFTWSay6SQLite9FTSConfigC12ColumnOptionOG_Tg5 +_T0SayxGs14_IndexableBaseslsABP8endIndex0D0QzfgTW6SQLite9FTSConfigC12ColumnOptionO_Tg5 +_T0Sa8endIndexSifg6SQLite9FTSConfigC12ColumnOptionO_Tg5 +_T0Sa9_getCountSiyF6SQLite9FTSConfigC12ColumnOptionO_Tg5 +order +matchInfo +languageId +uncompress +compress +_T0s10CollectionPsE3mapSayqd__Gqd__7ElementQzKcKlFTfq4gn_nSaySiG_SSTg5 +_T0SiSSs5Error_pIxyozo_SiSSsAA_pIxirzo_TR +_T06SQLite9FTSConfigC7optionsAC7OptionsVyFSSSicfU_ +_T0SayxGs10CollectionslsABP9subscript7ElementQz5IndexQzcfgTWSi_Tg5 +appendCommaSeparated +_T0S2SBp21_builtinStringLiteral_Bw17utf8CodeUnitCountBi1_7isASCIItcfCTfq4nnnd_n +_T0SayxGs10CollectionslsABP5count13IndexDistanceQzfgTWSi_Tg5 +sorted +_T0SayxGs26RangeReplaceableCollectionslsABP6appendyqd__10contentsOf_ts8SequenceRd__7ElementQyd__AGRtzlFTWSS_SaySSGTg5 +formatColumnDefinitions +_T0s10CollectionPsE3mapSayqd__Gqd__7ElementQzKcKlFTfq4gn_nSay6SQLite11Expressible_p_SayAG9FTSConfigC12ColumnOptionOG7optionstG_AgH_pTg5 +_T0s15ContiguousArrayV6appendyxF6SQLite11Expressible_p_Tg5 +_T0s15ContiguousArrayV36_reserveCapacityAssumingUniqueBufferySi8oldCount_tF6SQLite11Expressible_p_Tg5 +_T0SayxGs10CollectionslsABP9subscript7ElementQz5IndexQzcfgTW6SQLite11Expressible_p_SayAI9FTSConfigC12ColumnOptionOG7optionst_Tg5 +_T0s15ContiguousArrayV37_appendElementAssumeUniqueAndCapacityySi_x03newD0tF6SQLite11Expressible_p_Tg5 +_T0s15ContiguousArrayV37_appendElementAssumeUniqueAndCapacityySi_x03newD0tFTfq4ngn_n6SQLite11Expressible_p_Tg5 +_T0s15ContiguousArrayV9_getCountSiyF6SQLite11Expressible_p_Tg5 +_T0s15ContiguousArrayV034_makeUniqueAndReserveCapacityIfNotD0yyF6SQLite11Expressible_p_Tg5 +_T0s22_ContiguousArrayBufferV5countSifg6SQLite11Expressible_p_Tg5 +_T06SQLite11Expressible_pSayAA9FTSConfigC12ColumnOptionOGAaB_ps5Error_pIxixrzo_AaB_p_AG7optionstAaB_psAH_pIxirzo_TR +_T06SQLite9FTSConfigC23formatColumnDefinitionsSayAA11Expressible_pGyFAaE_pAaE_p_SayAC0D6OptionOG7optionstcfU_ +_T0SayxGs10CollectionslsABP5count13IndexDistanceQzfgTW6SQLite11Expressible_p_SayAG9FTSConfigC12ColumnOptionOG7optionst_Tg5 +contentless +externalContent +_T0SayxGs26RangeReplaceableCollectionslsABP6appendyqd__10contentsOf_ts8SequenceRd__7ElementQyd__AGRtzlFTWSi_SaySiGTg5 +_T0SPys4Int8VGSpys5Int32VGAFSSSgIxyyyo_Ac2FSo8NSStringCSgIyByyya_TR +registerTokenizer +_T06SQLite9TokenizerV10moduleName33_5F0FD0443FF5032238ECC00E64F41F5ELLSSfau +globalinit_33_5F0FD0443FF5032238ECC00E64F41F5E_func7 +arguments.get +name.get +Custom +Unicode61 +_T0s10CollectionPsE3mapSayqd__Gqd__7ElementQzKcKlFTfq4gn_ns3SetVys9CharacterVG_SSTg5 +_T0s3SetVyxGs14_IndexableBasess8HashableRzlsADP9formIndexy0F0Qzz5after_tFTWs9CharacterV_Tg5 +_T0s10_IndexablePsE9formIndexy0C0Qzz5after_tFs3SetVys9CharacterVG_Tg5 +_T0s3SetVyxGs14_IndexableBasess8HashableRzlsADP5index5IndexQzAI5after_tFTWs9CharacterV_Tg5 +_T0s3SetV5indexAB5IndexVyx_GAF5after_tFs9CharacterV_Tg5 +_T0s3SetV5indexAB5IndexVyx_GAF5after_tFTfq4gn_ns9CharacterV_Tg5 +_T0s17_VariantSetBufferO5indexs0B0V5IndexVyx_GAH5after_tFTfq4gn_ns9CharacterV_Tg5 +_T0s3SetVyxGs10Collectionss8HashableRzlsADP9subscript7ElementQz5IndexQzcfgTWs9CharacterV_Tg5 +_T0s3SetV9subscriptxAB5IndexVyx_Gcfgs9CharacterV_Tg5 +_T0s17_VariantSetBufferO12assertingGetxs0B0V5IndexVyx_GFs9CharacterV_Tg5 +_T0s9CharacterVSSs5Error_pIxxozo_ABSSsAC_pIxirzo_TR +_T06SQLite9TokenizerV9Unicode61ACSbSg16removeDiacritics_s3SetVys9CharacterVG10tokencharsAK10separatorstFZSSAJcfU0_ +_T0s3SetVyxGs14_IndexableBasess8HashableRzlsADP10startIndex0F0QzfgTWs9CharacterV_Tg5 +_T0s3SetV10startIndexAB0C0Vyx_Gfgs9CharacterV_Tg5 +_T0s17_VariantSetBufferO10startIndexs0B0V0E0Vyx_Gfgs9CharacterV_Tg5 +_T06SQLite9TokenizerV9Unicode61ACSbSg16removeDiacritics_s3SetVys9CharacterVG10tokencharsAK10separatorstFZSSAJcfU_ +Porter.get +_T06SQLite9TokenizerV6PorterACfau +globalinit_33_5F0FD0443FF5032238ECC00E64F41F5E_func6 +Simple.get +_T06SQLite9TokenizerV6SimpleACfau +globalinit_33_5F0FD0443FF5032238ECC00E64F41F5E_func5 +match +_T0SayxGs26RangeReplaceableCollectionslsABP6appendyqd__10contentsOf_ts8SequenceRd__7ElementQyd__AGRtzlFTW6SQLite11Expressible_p_SayAjK_pGTg5 +_T0s9SubstringV8UTF8ViewVs10CollectionssAEP8distance13IndexDistanceQz0F0Qz4from_AK2totFTW +_T0s23_BidirectionalIndexablePsE8distance13IndexDistanceQz0D0Qz4from_AG2totFs9SubstringV8UTF8ViewV_Tgq5Tfq4xxn_n +_T0Sa24reserveCapacityForAppendySi16newElementsCount_tFSi_Tg5 +_T0SayxGs8SequenceslsABP13_copyContents8IteratorQz_SitSry7ElementQzG12initializing_tFTWSi_Tg5 +_T0Sa13_copyContentss16IndexingIteratorVySayxGG_SitSryxG12initializing_tFSi_Tg5 +_T0Sa12_getCapacitySiyFSi_Tg5 +_T0SayxGs8SequenceslsABP19underestimatedCountSifgTWSi_Tg5 +_T0s10CollectionPsE19underestimatedCountSifgSaySiG_Tg5 +_T0Sa24reserveCapacityForAppendySi16newElementsCount_tFSS_Tg5 +_T0Sr5countSifgSS_Tg5 +_T0SayxGs8SequenceslsABP13_copyContents8IteratorQz_SitSry7ElementQzG12initializing_tFTWSS_Tg5 +_T0Sa13_copyContentss16IndexingIteratorVySayxGG_SitSryxG12initializing_tFSS_Tg5 +_T0Sa12_getCapacitySiyFSS_Tg5 +_T0SayxGs8SequenceslsABP19underestimatedCountSifgTWSS_Tg5 +_T0s10CollectionPsE19underestimatedCountSifgSaySSG_Tg5 +_T0SayxGs10CollectionslsABP5count13IndexDistanceQzfgTWSS_Tg5 +_globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_func8 +__T0Sd6SQLite5ValueA2aBP16declaredDatatypeSSfgZTW +__T0Sd6SQLite5ValueA2aBP012fromDatatypeB00B4TypeQz0D0QzFZTW +__T0Sd6SQLite5ValueA2aBP08datatypeB08DatatypeQzfgTW +_globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_func9 +__T0s5Int64V6SQLite5ValueA2cDP16declaredDatatypeSSfgZTW +__T0s5Int64V6SQLite5ValueA2cDP012fromDatatypeC00C4TypeQz0E0QzFZTW +__T0s5Int64V6SQLite5ValueA2cDP08datatypeC08DatatypeQzfgTW +__T0SS6SQLite5ValueA2aBP16declaredDatatypeSSfgZTW +__T0SS6SQLite5ValueA2aBP012fromDatatypeB00B4TypeQz0D0QzFZTW +__T0SS6SQLite5ValueA2aBP08datatypeB08DatatypeQzfgTW +__T06SQLite4BlobVAA5ValueA2aDP16declaredDatatypeSSfgZTW +__T06SQLite4BlobVAA5ValueA2aDP012fromDatatypeC00C4TypeQz0E0QzFZTW +__T06SQLite4BlobVAA5ValueA2aDP08datatypeC08DatatypeQzfgTW +_globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_func12 +__T0Sb6SQLite5ValueA2aBP16declaredDatatypeSSfgZTW +__T0Sb6SQLite5ValueA2aBP012fromDatatypeB00B4TypeQz0D0QzFZTW +__T0Sb6SQLite5ValueA2aBP08datatypeB08DatatypeQzfgTW +_globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_func13 +__T0Si6SQLite5ValueA2aBP16declaredDatatypeSSfgZTW +__T0Si6SQLite5ValueA2aBP012fromDatatypeB00B4TypeQz0D0QzFZTW +__T0Si6SQLite5ValueA2aBP08datatypeB08DatatypeQzfgTW +__T0Sis10ComparablessAAP1loiSbx_xtFZTW +__T0Si5WordsVs14_IndexableBasessACP9subscript7ElementQz5IndexQzcfgTW +__T0Si5WordsVs14_IndexableBasessACP9formIndexy0E0Qzz5after_tFTW +__T0Si6SQLiteE17fromDatatypeValueSis5Int64VFZTf4nd_n +__T06SQLite7Binding_pMF +__T06SQLite6Number_pMF +__T06SQLite5Value_pMF +__T0Sd6SQLite5ValueAAMA +__T0s5Int64V6SQLite5ValueACMA +__T0SS6SQLite5ValueAAMA +__T06SQLite4BlobVAA5ValueAAMA +__T0Sb6SQLite5ValueAAMA +__T0Si6SQLite5ValueAAMA +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Value.swift +_T0Si6SQLite7BindingAAWa +Value.swift +_T0Si6SQLite5ValueAAWa +_T0Si6SQLite6NumberAAWa +_T0Sb6SQLite11ExpressibleAAWa +_T0Sb6SQLite5ValueAAWa +_T0Sb6SQLite7BindingAAWa +_T06SQLite4BlobVAA11ExpressibleAAWa +_T06SQLite4BlobVAA5ValueAAWa +_T0SS6SQLite5ValueAAWa +_T0s5Int64V6SQLite11ExpressibleACWa +_T0s5Int64V6SQLite5ValueACWa +_T0s5Int64V6SQLite6NumberACWa +_T0Sd6SQLite11ExpressibleAAWa +_T0Sd6SQLite5ValueAAWa +_T0Sd6SQLite6NumberAAWa +_T0s5Int64V6SQLite7BindingACWa +_T0Sd6SQLite7BindingAAWa +_T06SQLite4BlobVAA7BindingAAWa +_T0SS6SQLite7BindingAAWa +_T0SS6SQLite11ExpressibleAAWa +_T0Si6SQLite11ExpressibleAAWa +_T0s5Int64Vs10ComparablessACP1loiSbx_xtFZTW +_T0s5Int64Vs13BinaryIntegerssACPxqd__18truncatingIfNeeded_tcsACRd__lufCTWSi_Tg5 +_T0s17FixedWidthIntegerPsExqd__18truncatingIfNeeded_tcs06BinaryC0Rd__lufCqd__s5Int64VXMTA2FRszsADRd__r__lItMiyd_Tpq5Si_Tg5 +_T0Sis13BinaryIntegerssAAPxqd__18truncatingIfNeeded_tcsAARd__lufCTWs5Int64V_Tg5 +_T0s17FixedWidthIntegerPsExqd__18truncatingIfNeeded_tcs06BinaryC0Rd__lufCqd__SiXMTS2iRszsADRd__r__lItMiyd_Tpq5s5Int64V_Tg5 +_T0s5Int64Vs13BinaryIntegerssACP8_lowWordSufgTW +_T0Si5WordsVs14_IndexableBasessACP9formIndexy0E0Qzz5after_tFTW +_T0Si5WordsVs14_IndexableBasessACP9subscript7ElementQz5IndexQzcfgTW +_T0Si5WordsV9subscriptSuSicfg +_T0Si6SQLiteE16declaredDatatypeSSfau +declaredDatatype.materialize +declaredDatatype.set +globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_func13 +_T0s5Int64V6SQLiteE16declaredDatatypeSSfau +_T0Sb6SQLiteE16declaredDatatypeSSfau +globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_func12 +globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_func11 +globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_func10 +globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_func9 +_T0Sd6SQLiteE16declaredDatatypeSSfau +globalinit_33_BC7F6C73B2FFA52DBE5E7D03605D9730_func8 +__T06SQLite2teoiAA10ExpressionVySbGs11ClosedRangeVyxG_ADyxGtAA5ValueRzs10ComparableRzAaJ8DatatypeAaJPRpzsAkNRQlFTm +__T06SQLite2teoiAA10ExpressionVySbGs19PartialRangeThroughVyxG_ADyxGtAA5ValueRzs10ComparableRzAaJ8DatatypeAaJPRpzsAkNRQlFTm +__T06SQLite2oooiAA10ExpressionVySbGAE_AEtFTm +__T06SQLite2oooiAA10ExpressionVySbSgGADySbG_AFtFTm +__T06SQLite2oooiAA10ExpressionVySbSgGAF_ADySbGtFTm +__T06SQLite2oooiAA10ExpressionVySbSgGAF_AFtFTm +__T06SQLite2aaoiAA10ExpressionVySbGAE_SbtFTm +__T06SQLite2aaoiAA10ExpressionVySbSgGAF_SbtFTm +__T06SQLite2aaoiAA10ExpressionVySbGSb_AEtFTm +__T06SQLite2aaoiAA10ExpressionVySbSgGSb_AFtFTm +__T06SQLite1poiAA10ExpressionVyxGAE_AEtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_nTm +__T06SQLite1poiAA10ExpressionVyxGAE_xtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_nTm +__T06SQLite1poiAA10ExpressionVyxSgGAF_ADyxGtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_nTm +__T06SQLite1poiAA10ExpressionVyxSgGAF_AFtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_nTm +__T06SQLite1poiAA10ExpressionVyxSgGAF_xtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_nTm +__T06SQLite1roiAA10ExpressionVyxGAE_AEtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_nTm +__T06SQLite1roiAA10ExpressionVyxGAE_xtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_nTm +__T06SQLite1roiAA10ExpressionVyxSgGAF_ADyxGtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_nTm +__T06SQLite1roiAA10ExpressionVyxSgGAF_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_nTm +__T06SQLite1roiAA10ExpressionVyxSgGAF_xtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_nTm +__T06SQLite1topAA10ExpressionVyxGAeA5ValueRzs5Int64V8DatatypeRtzlFTf4g_n +__T06SQLite1topAA10ExpressionVyxSgGAfA5ValueRzs5Int64V8DatatypeRtzlFTf4g_n +__T06SQLite1xoiAA10ExpressionVyxSgGAF_ADyxGtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_nTm +__T06SQLite1poiAA10ExpressionVyxSgGADyxG_AFtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1poiAA10ExpressionVyxGx_AEtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1poiAA10ExpressionVyxSgGx_AFtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1soiAA10ExpressionVyxSgGADyxG_AFtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1soiAA10ExpressionVyxGx_AEtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1soiAA10ExpressionVyxSgGx_AFtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1moiAA10ExpressionVyxSgGADyxG_AFtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1moiAA10ExpressionVyxGx_AEtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1moiAA10ExpressionVyxSgGx_AFtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1doiAA10ExpressionVyxSgGADyxG_AFtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1poiAA10ExpressionVyxSgGADyxG_AFtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_nTm +__T06SQLite1doiAA10ExpressionVyxGx_AEtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1poiAA10ExpressionVyxGx_AEtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_nTm +__T06SQLite1doiAA10ExpressionVyxSgGx_AFtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_n +__T06SQLite1poiAA10ExpressionVyxSgGx_AFtAA5ValueRzAA6Number8DatatypeRpzlFTf4gg_nTm +__T06SQLite1sopAA10ExpressionVyxGAeA5ValueRzAA6Number8DatatypeRpzlFTf4g_n +__T06SQLite1sopAA10ExpressionVyxSgGAfA5ValueRzAA6Number8DatatypeRpzlFTf4g_n +__T06SQLite1roiAA10ExpressionVyxSgGADyxG_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1roiAA10ExpressionVyxGx_AEtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1roiAA10ExpressionVyxSgGx_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2lloiAA10ExpressionVyxSgGADyxG_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2lloiAA10ExpressionVyxGx_AEtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2lloiAA10ExpressionVyxSgGx_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2ggoiAA10ExpressionVyxSgGADyxG_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2ggoiAA10ExpressionVyxGx_AEtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2ggoiAA10ExpressionVyxSgGx_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1aoiAA10ExpressionVyxSgGADyxG_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1aoiAA10ExpressionVyxGx_AEtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1aoiAA10ExpressionVyxSgGx_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1ooiAA10ExpressionVyxSgGADyxG_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1roiAA10ExpressionVyxSgGADyxG_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_nTm +__T06SQLite1ooiAA10ExpressionVyxGx_AEtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1roiAA10ExpressionVyxGx_AEtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_nTm +__T06SQLite1ooiAA10ExpressionVyxSgGx_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1roiAA10ExpressionVyxSgGx_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_nTm +__T06SQLite1xoiAA10ExpressionVyxSgGADyxG_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1xoiAA10ExpressionVyxGx_AEtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite1xoiAA10ExpressionVyxSgGx_AFtAA5ValueRzs5Int64V8DatatypeRtzlFTf4gg_n +__T06SQLite2eeoiAA10ExpressionVySbGADyxG_AFtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_n +__T06SQLite2eeoiAA10ExpressionVySbSgGADyxG_ADyxSgGtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_n +__T06SQLite2eeoiAA10ExpressionVySbSgGADyxSgG_ADyxGtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_n +__T06SQLite2eeoiAA10ExpressionVySbSgGADyxSgG_AHtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_n +__T06SQLite2eeoiAA10ExpressionVySbGADyxG_xtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_n +__T06SQLite2eeoiAA10ExpressionVySbSgGADyxSgG_AGtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gn_n +__T06SQLite2eeoiAA10ExpressionVySbGx_ADyxGtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_n +__T06SQLite2eeoiAA10ExpressionVySbSgGxSg_ADyAGGtAA5ValueRzs9Equatable8DatatypeRpzlFTf4ng_n +__T06SQLite2neoiAA10ExpressionVySbGADyxG_AFtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_n +__T06SQLite2neoiAA10ExpressionVySbSgGADyxG_ADyxSgGtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_n +__T06SQLite2neoiAA10ExpressionVySbSgGADyxSgG_ADyxGtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_n +__T06SQLite2neoiAA10ExpressionVySbSgGADyxSgG_AHtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_n +__T06SQLite2neoiAA10ExpressionVySbGADyxG_xtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_n +__T06SQLite2neoiAA10ExpressionVySbSgGADyxSgG_AGtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gn_n +__T06SQLite2neoiAA10ExpressionVySbGx_ADyxGtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_n +__T06SQLite2neoiAA10ExpressionVySbSgGxSg_ADyAGGtAA5ValueRzs9Equatable8DatatypeRpzlFTf4ng_n +__T06SQLite1goiAA10ExpressionVySbGADyxG_AFtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1goiAA10ExpressionVySbSgGADyxG_ADyxSgGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1goiAA10ExpressionVySbSgGADyxSgG_ADyxGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1goiAA10ExpressionVySbSgGADyxSgG_AHtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1goiAA10ExpressionVySbGADyxG_xtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1goiAA10ExpressionVySbSgGADyxSgG_xtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1goiAA10ExpressionVySbGx_ADyxGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1goiAA10ExpressionVySbSgGx_ADyxSgGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite2geoiAA10ExpressionVySbGADyxG_AFtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite2geoiAA10ExpressionVySbSgGADyxG_ADyxSgGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite2geoiAA10ExpressionVySbSgGADyxSgG_ADyxGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite2geoiAA10ExpressionVySbSgGADyxSgG_AHtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite2geoiAA10ExpressionVySbGADyxG_xtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite2geoiAA10ExpressionVySbSgGADyxSgG_xtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite2geoiAA10ExpressionVySbGx_ADyxGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite2geoiAA10ExpressionVySbSgGx_ADyxSgGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1loiAA10ExpressionVySbGADyxG_AFtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1loiAA10ExpressionVySbSgGADyxG_ADyxSgGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1loiAA10ExpressionVySbSgGADyxSgG_ADyxGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1loiAA10ExpressionVySbSgGADyxSgG_AHtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1loiAA10ExpressionVySbGADyxG_xtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1loiAA10ExpressionVySbSgGADyxSgG_xtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1loiAA10ExpressionVySbGx_ADyxGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1loiAA10ExpressionVySbSgGx_ADyxSgGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite2leoiAA10ExpressionVySbGADyxG_AFtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite2neoiAA10ExpressionVySbGADyxG_AFtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_nTm +__T06SQLite2leoiAA10ExpressionVySbSgGADyxG_ADyxSgGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite2leoiAA10ExpressionVySbSgGADyxSgG_ADyxGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite2leoiAA10ExpressionVySbSgGADyxSgG_AHtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite2neoiAA10ExpressionVySbSgGADyxSgG_AHtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_nTm +__T06SQLite2leoiAA10ExpressionVySbGADyxG_xtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite2neoiAA10ExpressionVySbGADyxG_xtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_nTm +__T06SQLite2leoiAA10ExpressionVySbSgGADyxSgG_xtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1goiAA10ExpressionVySbSgGADyxSgG_xtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_nTm +__T06SQLite2leoiAA10ExpressionVySbGx_ADyxGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite2neoiAA10ExpressionVySbGx_ADyxGtAA5ValueRzs9Equatable8DatatypeRpzlFTf4gg_nTm +__T06SQLite2leoiAA10ExpressionVySbSgGx_ADyxSgGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_n +__T06SQLite1goiAA10ExpressionVySbSgGx_ADyxSgGtAA5ValueRzs10Comparable8DatatypeRpzlFTf4gg_nTm +__T06SQLite2teoiAA10ExpressionVySbGs11ClosedRangeVyxG_ADyxGtAA5ValueRzs10ComparableRzAaJ8DatatypeAaJPRpzsAkNRQlFTf4gg_n +__T06SQLite2teoiAA10ExpressionVySbSgGs11ClosedRangeVyxG_ADyxSgGtAA5ValueRzs10ComparableRzAaL8DatatypeAaLPRpzsAmPRQlFTf4gg_n +__T06SQLite2teoiAA10ExpressionVySbGs11ClosedRangeVyxG_ADyxGtAA5ValueRzs10ComparableRzAaJ8DatatypeAaJPRpzsAkNRQlFTf4gg_nTm +__T06SQLite2teoiAA10ExpressionVySbGs5RangeVyxG_ADyxGtAA5ValueRzs10ComparableRzAaJ8DatatypeAaJPRpzsAkNRQlFTf4gg_n +__T06SQLite2teoiAA10ExpressionVySbSgGs5RangeVyxG_ADyxSgGtAA5ValueRzs10ComparableRzAaL8DatatypeAaLPRpzsAmPRQlFTf4gg_n +__T06SQLite2teoiAA10ExpressionVySbGs5RangeVyxG_ADyxGtAA5ValueRzs10ComparableRzAaJ8DatatypeAaJPRpzsAkNRQlFTf4gg_nTm +__T06SQLite2teoiAA10ExpressionVySbGs19PartialRangeThroughVyxG_ADyxGtAA5ValueRzs10ComparableRzAaJ8DatatypeAaJPRpzsAkNRQlFTf4gg_n +__T06SQLite2teoiAA10ExpressionVySbSgGs19PartialRangeThroughVyxG_ADyxSgGtAA5ValueRzs10ComparableRzAaL8DatatypeAaLPRpzsAmPRQlFTf4gg_n +__T06SQLite2teoiAA10ExpressionVySbGs16PartialRangeUpToVyxG_ADyxGtAA5ValueRzs10ComparableRzAaJ8DatatypeAaJPRpzsAkNRQlFTf4gg_n +__T06SQLite2teoiAA10ExpressionVySbSgGs16PartialRangeUpToVyxG_ADyxSgGtAA5ValueRzs10ComparableRzAaL8DatatypeAaLPRpzsAmPRQlFTf4gg_n +__T06SQLite2teoiAA10ExpressionVySbGs16PartialRangeFromVyxG_ADyxGtAA5ValueRzs10ComparableRzAaJ8DatatypeAaJPRpzsAkNRQlFTf4gg_n +__T06SQLite2teoiAA10ExpressionVySbSgGs16PartialRangeFromVyxG_ADyxSgGtAA5ValueRzs10ComparableRzAaL8DatatypeAaLPRpzsAmPRQlFTf4gg_n +__T06SQLite2teoiAA10ExpressionVySbGs19PartialRangeThroughVyxG_ADyxGtAA5ValueRzs10ComparableRzAaJ8DatatypeAaJPRpzsAkNRQlFTf4gg_nTm +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Operators.swift +Operators.swift +~= +> +!= +<= +< +>= +^ +& +| +~ +- +! +&& +|| +>> +<< +/ +__T06SQLite9QueryTypePAAE9tableNameAA11Expressible_pSb5alias_tFAA5TableV_Tg5 +__T06SQLite9QueryTypePAAE9tableNameAA11Expressible_pSb5alias_tFAA4ViewV_Tg5 +__T06SQLite9QueryTypePAAE6create33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pSS_AaF_pAA8ModifierAELLOSgSbtFAA12VirtualTableV_Tg5 +__T06SQLite5TableV6createSSSb9temporary_Sb11ifNotExistsSb12withoutRowidyAA0B7BuilderCc5blocktFAA11Expressible_pSgALcfU_ +__T06SQLite5TableV6createSSAA9QueryType_p_Sb9temporarySb11ifNotExiststFAA11Expressible_pSgAIcfU_ +__T06SQLite5TableV9addColumn33_74E609AEF79A03B17828018C605761B0LLSSAA11Expressible_pF +__T06SQLite10definition33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pAaD_p_SSAA10PrimaryKeyOSgS2bAaD_pSgAhA9QueryType_p_AaD_ptSgAA9CollationOSgtF +__T06SQLite9QueryTypePAAE6rename33_74E609AEF79A03B17828018C605761B0LLSSx2to_tFAA5TableV_Tg5 +__T06SQLite9QueryTypePAAE6rename33_74E609AEF79A03B17828018C605761B0LLSSx2to_tFAA12VirtualTableV_Tg5 +__T06SQLite9QueryTypePAAE6rename33_74E609AEF79A03B17828018C605761B0LLSSx2to_tFAA5TableV_Tg5Tm +__T06SQLite5TableV9indexName33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pSayAaF_pGF +__T06SQLite9QueryTypePAAE9tableNameAA11Expressible_pSb9qualified_tFAA5TableV_Tg5 +__T06SQLite9QueryTypePAAE9tableNameAA11Expressible_pSb9qualified_tF +__T06SQLite5TableV11createIndexSSSayAA11Expressible_pGd_Sb6uniqueSb11ifNotExiststFAaE_pSgAIcfU_ +__T06SQLite9QueryTypePAAE8databaseAA11Expressible_pSS9namespace_tFAA5TableV_Tg5 +__T06SQLite4ViewV6createSSAA9QueryType_p_Sb9temporarySb11ifNotExiststFAA11Expressible_pSgAIcfU_ +__T06SQLite12VirtualTableV6createSSAA6ModuleV_Sb11ifNotExiststFAA11Expressible_pSgAIcfU_ +__T06SQLite12TableBuilderC10DependencyOs9EquatableAAsAFP2eeoiSbx_xtFZTW +__T06SQLite12TableBuilderC10DependencyOs8HashableAAsAFP9hashValueSifgTW +__T06SQLite12TableBuilderC10DependencyOs16RawRepresentableAAsAFPxSg0E5ValueQz03rawG0_tcfCTW +__T06SQLite12TableBuilderC10DependencyOs16RawRepresentableAAsAFP8rawValue0eH0QzfgTW +__T06SQLite12TableBuilderC10foreignKey33_74E609AEF79A03B17828018C605761B0LLyAA11Expressible_p_AA9QueryType_p_AaF_ptAC10DependencyOSgAJtF +__T06SQLite9reference33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pAA9QueryType_p_AaD_pt_tF +__T06SQLite12TableBuilderC10foreignKey33_74E609AEF79A03B17828018C605761B0LLyAA11Expressible_p_AA9QueryType_p_AaF_ptAC10DependencyOSgAJtFAaF_pAIcfU_ +__T06SQLite12TableBuilderC10foreignKey33_74E609AEF79A03B17828018C605761B0LLyAA11Expressible_p_AA9QueryType_p_AaF_ptAC10DependencyOSgAJtFAaF_pAIcfU0_ +__T06SQLite12TableBuilderC10foreignKey33_74E609AEF79A03B17828018C605761B0LLyAA11Expressible_p_AA9QueryType_p_AaF_ptAC10DependencyOSgAJtFAaF_pAIcfU_Tm +__T06SQLite12TableBuilderC10foreignKey33_74E609AEF79A03B17828018C605761B0LLyAA11Expressible_p_AA9QueryType_p_AaF_ptAC10DependencyOSgAJtFAaF_pSgAKcfU1_ +__T06SQLite10PrimaryKeyOs9EquatableAAsADP2eeoiSbx_xtFZTW +__T06SQLite10PrimaryKeyOs8HashableAAsADP9hashValueSifgTW +__T06SQLite6ModuleVAA11ExpressibleA2aDP10expressionAA10ExpressionVyytGfgTW +__T06SQLite9QueryTypePAAE6create33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pSS_AaF_pAA8ModifierAELLOSgSbtFAaF_pSgAJcfU0_ +__T06SQLite9QueryTypePAAE4drop33_74E609AEF79A03B17828018C605761B0LLS2S_AA11Expressible_pSbtFAaF_pSgAGcfU_ +__T06SQLite10definition33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pAaD_p_SSAA10PrimaryKeyOSgS2bAaD_pSgAhA9QueryType_p_AaD_ptSgAA9CollationOSgtFA2HcfU3_ +__T06SQLite5TableV6createSSSb9temporary_Sb11ifNotExistsSb12withoutRowidyAA0B7BuilderCc5blocktFAA11Expressible_pSgALcfU_Tm +_globalinit_33_14CB4A30965D85E6DF5BEBC63D2EB0EA_func14 +_globalinit_33_14CB4A30965D85E6DF5BEBC63D2EB0EA_func15 +_globalinit_33_14CB4A30965D85E6DF5BEBC63D2EB0EA_func16 +__T0SS10lowercasedSSyFTfq4x_n +__T0s11_StringCoreV11asciiBufferSrys5UInt8VGSgfgTfq4x_n +__T0Sr5countSifgs5UInt8V_Tgq5Tfq4x_n +__T0s10ComparablePsE2leoiSbx_xtFZs9CharacterV_Tgq5Tfq4ngd_n +__T0s10ComparablePsE2geoiSbx_xtFZs9CharacterV_Tgq5Tfq4gnd_n +__T0s2eeoiSbx_xts16RawRepresentableRzs9Equatable0B5ValueRpzlFTfq4gg_n6SQLite12TableBuilderC10DependencyO_Tg5 +__T0SS13CharacterViewVs8SequencessACP12makeIterator0E0QzyFTW +__T0SS13CharacterViewVs14_IndexableBasessACP9subscript7ElementQz5IndexQzcfgTW +__T0s8SequencePsE7flatMapSayqd__Gqd__Sg7ElementQzKcKlFSay6SQLite11Expressible_pSgG_AhI_pTg5Tf4gn_n +__T0SS13_compareASCIISiSSFTfq4gXx_nTfq4nndnnd_n +__T06SQLite5TableV9indexName33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pSayAaF_pGFS2S_s9CharacterVtcfU0_Tf4gXg_n +__T0s8SequencePsE6reduceqd__qd___qd__qd___7ElementQztKctKlFSS13CharacterViewV_SSTg507_T0SSs9D160VSSs5Error_pIxxxozo_SSABSSsAC_pIxiirzo_TR097_T06SQLite5TableV9indexName33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pSayAaF_pGFS2S_s9A7VtcfU0_Tf3nnnpf_nTf1ncn_nTf4xn_n +__T06SQLite9QueryTypePAAE4drop33_74E609AEF79A03B17828018C605761B0LLS2S_AA11Expressible_pSbtFTf4gXnnd_n +__T06SQLite9QueryTypePAAE4drop33_74E609AEF79A03B17828018C605761B0LLS2S_AA11Expressible_pSbtFAA4ViewV_Tg5Tf4gXnnn_n +__T06SQLite12TableBuilderC10DependencyOAESgSS8rawValue_tcfCTf4gXd_n +__T06SQLite12TableBuilderC10DependencyOwxs +__T06SQLite12TableBuilderC10DependencyOwxg +__T06SQLite12TableBuilderC10DependencyOwug +__T06SQLite12TableBuilderC10DependencyOwup +__T06SQLite12TableBuilderC10DependencyOwui +__T06SQLite10PrimaryKeyOwxs +__T06SQLite10PrimaryKeyOwxg +__T06SQLite10PrimaryKeyOwug +__T06SQLite10PrimaryKeyOwup +__T06SQLite10PrimaryKeyOwui +__T06SQLite6ModuleVwXX +__T06SQLite6ModuleVwCP +__T06SQLite6ModuleVwpr +__T06SQLite6ModuleVwde +__T06SQLite6ModuleVwxx +__T06SQLite6ModuleVwCp +__T06SQLite6ModuleVwcp +__T06SQLite6ModuleVwca +__T06SQLite6ModuleVwTk +__T06SQLite6ModuleVwta +__T06SQLite6ModuleVwal +__T06SQLite6ModuleVwXx +__T06SQLite6ModuleVwCc +__T06SQLite9QueryTypePAAE6create33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pSS_AaF_pAA8ModifierAELLOSgSbtFAA5TableV_Tg5 +__T06SQLite9QueryTypePAAE6create33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pSS_AaF_pAA8ModifierAELLOSgSbtFAA4ViewV_Tg5 +__T06SQLite9QueryTypePAAE4drop33_74E609AEF79A03B17828018C605761B0LLS2S_AA11Expressible_pSbtFAA5TableV_Tg5Tf4gXnnn_n +__T0s23_ContiguousArrayStorageCy6SQLite11Expressible_pSgGML +__T06SQLite11Expressible_pSgML +__T06SQLite12TableBuilderC11definitions33_74E609AEF79A03B17828018C605761B0LLSayAA11Expressible_pGvWvd +__T06SQLite12TableBuilderCML +__T06SQLite12TableBuilderCMf +__T06SQLite12TableBuilderC10DependencyOWV +__T06SQLite12TableBuilderC10DependencyOML +__T06SQLite12TableBuilderC10DependencyOMf +__T06SQLite12TableBuilderC10DependencyOMF +__T06SQLite12TableBuilderCMF +__T06SQLite10PrimaryKeyOWV +__T06SQLite10PrimaryKeyOMf +__T06SQLite10PrimaryKeyOMF +__T06SQLite6ModuleVWV +__T06SQLite6ModuleVMf +__T06SQLite6ModuleVMF +__T06SQLite8Modifier33_74E609AEF79A03B17828018C605761B0LLOMF +__T0Say6SQLite11Expressible_pGML +__T06SQLite12TableBuilderC10DependencyOs16RawRepresentableAAMA +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Schema.swift +objectdestroy.208 +_T06SQLite6ModuleVMa +get_field_types_Module +_T0Say6SQLite11Expressible_pGMa +_T06SQLite6ModuleVwCc +_T06SQLite6ModuleVwXx +_T06SQLite6ModuleVwal +_T06SQLite6ModuleVwta +_T06SQLite6ModuleVwTk +_T06SQLite6ModuleVwca +_T06SQLite6ModuleVwcp +_T06SQLite6ModuleVwCp +_T06SQLite6ModuleVwxx +_T06SQLite6ModuleVwde +_T06SQLite6ModuleVwpr +_T06SQLite6ModuleVwCP +_T06SQLite6ModuleVwXX +_T06SQLite10PrimaryKeyOMa +get_field_types_PrimaryKey +_T06SQLite10PrimaryKeyOwui +_T06SQLite10PrimaryKeyOwup +_T06SQLite10PrimaryKeyOwug +_T06SQLite10PrimaryKeyOwxg +_T06SQLite10PrimaryKeyOwxs +initialize_metadata_Dependency +_T06SQLite12TableBuilderCMa +_T06SQLite12TableBuilderC10DependencyOMa +get_field_types_Dependency +_T06SQLite12TableBuilderC10DependencyOwui +_T06SQLite12TableBuilderC10DependencyOwup +_T06SQLite12TableBuilderC10DependencyOwug +_T06SQLite12TableBuilderC10DependencyOwxg +_T06SQLite12TableBuilderC10DependencyOwxs +get_field_types_TableBuilder +_T06SQLite10PrimaryKeyOs8HashableAAWa +_T06SQLite10PrimaryKeyOs9EquatableAAWa +_T06SQLite12TableBuilderC10DependencyOs16RawRepresentableAAWa +_T06SQLite12TableBuilderC10DependencyOs8HashableAAWa +_T06SQLite12TableBuilderC10DependencyOs9EquatableAAWa +_T06SQLite6ModuleVAA11ExpressibleAAWa +drop +_T0s23_ContiguousArrayStorageCfD6SQLite11Expressible_pSg_Tg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZ6SQLite11Expressible_pSg_Tg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZTfq4gnn_n6SQLite11Expressible_pSg_Tg5 +_T0s23_ContiguousArrayStorageCy6SQLite11Expressible_pSgGMa +_T06SQLite11Expressible_pSgMa +_T0SSs9CharacterVSSs5Error_pIxxxozo_SSABSSsAC_pIxiirzo_TR097_T06SQLite5TableV9indexName33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pSayAaF_pGFS2S_s9A7VtcfU0_Tf3nnnpf_n +_T06SQLite5TableV9indexName33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pSayAaF_pGFS2S_s9CharacterVtcfU0_ +_T06SQLite5TableV9indexName33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pSayAaF_pGFS2S_s9CharacterVtcfU0_Tf4gXg_n +_T0s9CharacterVs10ComparablessACP2leoiSbx_xtFZTW +_T0s9CharacterVs10ComparablessACP2geoiSbx_xtFZTW +_T0SS13_compareASCIISiSSFTfq4gXx_nTfq4nndnnd_n +_T0s16IndexingIteratorVyxGs0B8Protocolss14_IndexableBaseRzlsADP4next7ElementQzSgyFTWSay6SQLite11Expressible_pSgG_Tg5 +_T0SayxGs14_IndexableBaseslsABP9formIndexy0D0Qzz5after_tFTW6SQLite11Expressible_pSg_Tg5 +_T0Sa9formIndexySiz5after_tF6SQLite11Expressible_pSg_Tg5 +_T0SayxGs14_IndexableBaseslsABP9subscript7ElementQz5IndexQzcfgTW6SQLite11Expressible_pSg_Tg5 +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtF6SQLite11Expressible_pSg_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tF6SQLite11Expressible_pSg_Tg5 +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktF6SQLite11Expressible_pSg_Tg5 +_T0SayxGs14_IndexableBaseslsABP8endIndex0D0QzfgTW6SQLite11Expressible_pSg_Tg5 +_T0Sa8endIndexSifg6SQLite11Expressible_pSg_Tg5 +_T0Sa9_getCountSiyF6SQLite11Expressible_pSg_Tg5 +_T0SayxGs8SequenceslsABP12makeIterator0C0QzyFTW6SQLite11Expressible_pSg_Tg5 +_T0s2eeoiSbx_xts16RawRepresentableRzs9Equatable0B5ValueRpzlFTfq4gg_n6SQLite12TableBuilderC10DependencyO_Tg5 +_T0s10ComparablePsE2geoiSbx_xtFZs9CharacterV_Tgq5Tfq4gnd_n +_T0SS13_compareASCIISiSSFTfq4gXx_n +_T0s9CharacterV11_largeUTF16s11_StringCoreVSgfg +_T0s10ComparablePsE2leoiSbx_xtFZs9CharacterV_Tgq5Tfq4ngd_n +_T0SS10lowercasedSSyFTfq4x_n +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0Vy6SQLite11Expressible_pG_s07_IgnoreK0VyAmN_pGTg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subG0_AI12initializingtFTW6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtF6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFTfq4xnn_n6SQLite11Expressible_p_Tg5 +_T0Sp10initializeySPyxG4from_Si5counttF6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8endIndexSifgTW6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP027requestUniqueMutableBackingB0s011_ContiguousaB0Vy7ElementQzGSgSi15minimumCapacity_tFTW6SQLite11Expressible_p_Tg5 +_T0s12_ArrayBufferV027requestUniqueMutableBackingB0s011_ContiguousaB0VyxGSgSi15minimumCapacity_tF6SQLite11Expressible_p_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vy6SQLite11Expressible_pG_Tg5 +_T0Sa16_copyToNewBufferySi8oldCount_tF6SQLite11Expressible_p_Tg5 +_T06SQLite5TableV6createSSSb9temporary_Sb11ifNotExistsSb12withoutRowidyAA0B7BuilderCc5blocktFAA11Expressible_pSgALcfU_ +_T06SQLite12TableBuilderC10foreignKey33_74E609AEF79A03B17828018C605761B0LLyAA11Expressible_p_AA9QueryType_p_AaF_ptAC10DependencyOSgAJtFAaF_pAIcfU_ +reference +foreignKey +_T06SQLite12TableBuilderC10DependencyOAA11Expressible_ps5Error_pIxyrzo_AeaF_psAG_pIxirzo_TR +unique +primaryKey +rename +create +_T06SQLite12VirtualTableV10identifierSSfau +_T06SQLite4ViewV10identifierSSfau +dropIndex +indexName +_T0s10CollectionPsE3mapSayqd__Gqd__7ElementQzKcKlFTfq4gn_nSay6SQLite11Expressible_pG_SSTg5 +_T0SayxGs10CollectionslsABP9subscript7ElementQz5IndexQzcfgTW6SQLite11Expressible_p_Tg5 +lowercased +_T06SQLite11Expressible_pSSs5Error_pIxiozo_AaB_pSSsAC_pIxirzo_TR +_T06SQLite5TableV9indexName33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pSayAaF_pGFSSAaF_pcfU_ +createIndex +addColumn +definition +_T06SQLite9CollationOAA11Expressible_ps5Error_pIxxrzo_AcaD_psAE_pIxirzo_TR +_T06SQLite10definition33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pAaD_p_SSAA10PrimaryKeyOSgS2bAaD_pSgAhA9QueryType_p_AaD_ptSgAA9CollationOSgtFAaD_pALcfU2_ +_T06SQLite9QueryType_pAA11Expressible_pAaC_ps5Error_pIxiirzo_AaB_p_AaC_ptAaC_psAD_pIxirzo_TR +_T06SQLite10definition33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pAaD_p_SSAA10PrimaryKeyOSgS2bAaD_pSgAhA9QueryType_p_AaD_ptSgAA9CollationOSgtFAaD_pAaD_pcfU1_ +_T06SQLite10definition33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pAaD_p_SSAA10PrimaryKeyOSgS2bAaD_pSgAhA9QueryType_p_AaD_ptSgAA9CollationOSgtFAaD_pAaD_pcfU0_ +_T06SQLite10PrimaryKeyOAA11Expressible_ps5Error_pIxyrzo_AcaD_psAE_pIxirzo_TR +_T06SQLite10definition33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pAaD_p_SSAA10PrimaryKeyOSgS2bAaD_pSgAhA9QueryType_p_AaD_ptSgAA9CollationOSgtFAaD_pAFcfU_ +_T06SQLite5TableV10identifierSSfau +_T06SQLite8Modifier33_74E609AEF79A03B17828018C605761B0LLOAA11Expressible_ps5Error_pIxyrzo_AdaE_psAF_pIxirzo_TR +_T06SQLite9QueryTypePAAE6create33_74E609AEF79A03B17828018C605761B0LLAA11Expressible_pSS_AaF_pAA8ModifierAELLOSgSbtFAaF_pAHcfU_ +__T0Sa6appendyqd__10contentsOf_t7ElementQyd__Rszs8SequenceRd__lF6SQLite9QueryType_p_SayAfG_pGTg5 +__T0Sis5Error_pIxdzo_SisAA_pIxrzo_TR +__T06SQLite9QueryTypePAAE9tableNameAA11Expressible_pSb5alias_tFAA5TableV_Tg5Tm +__T06SQLite9QueryTypePAAE8databaseAA11Expressible_pSS9namespace_tFAA12VirtualTableV_Tg5 +__T06SQLite9QueryTypePAAE8databaseAA11Expressible_pSS9namespace_tF +__T06SQLite9QueryTypePAAE6select33_14CB4A30965D85E6DF5BEBC63D2EB0EALLqd__Sb_SayAA11Expressible_pGtAaBRd__lF +__T06SQLite10SchemaTypePAAE6selectxAA11Expressible_p_SayAaE_pGdtFTm +__T06SQLite10SchemaTypePAAE6selectxAA10ExpressionVyytGAFyAA7Binding_pGSg_AJtcFTm +__T06SQLite10SchemaTypePAAE6selectAA11ScalarQueryVyqd__SgGAA10ExpressionVyAGGAA5ValueRd__lFTm +__T06SQLite9QueryTypePAAE5group33_14CB4A30965D85E6DF5BEBC63D2EB0EALLxSayAA11Expressible_pG_AA10ExpressionVySbSgGSgtF +__T06SQLite9QueryTypePAAE5limit33_14CB4A30965D85E6DF5BEBC63D2EB0EALLxSiSg_AFtF +__T06SQLite9QueryTypePAAE12selectClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pfgAA5TableV_Tg5 +__T06SQLite9QueryTypePAAE12selectClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pfgAA4ViewV_Tg5 +__T06SQLite9QueryTypePAAE12selectClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pfgAA12VirtualTableV_Tg5Tm +__T06SQLite9QueryTypePAAE12selectClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pfgAA12VirtualTableV_Tg5 +__T06SQLite9QueryTypePAAE12selectClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pfg +__T06SQLite9QueryTypePAAE10joinClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA12VirtualTableV_Tg5 +__T06SQLite9QueryTypePAAE10joinClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfg +__T06SQLite9QueryTypePAAE10joinClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAaF_pAA04JoinC0O4type_AaB_p5queryAaF_p9conditiontcfU_ +__T06SQLite9QueryTypePAAE11whereClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA12VirtualTableV_Tg5 +__T06SQLite9QueryTypePAAE11whereClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfg +__T06SQLite9QueryTypePAAE13groupByClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA12VirtualTableV_Tg5 +__T06SQLite9QueryTypePAAE13groupByClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfg +__T06SQLite9QueryTypePAAE11orderClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA12VirtualTableV_Tg5 +__T06SQLite9QueryTypePAAE11orderClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfg +__T06SQLite9QueryTypePAAE17limitOffsetClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA12VirtualTableV_Tg5 +__T06SQLite9QueryTypePAAE17limitOffsetClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfg +__T06SQLite9QueryTypePAAE11unionClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA12VirtualTableV_Tg5 +__T06SQLite9QueryTypePAAE11unionClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfg +__T06SQLite9QueryTypePAAE6insert33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA6InsertVAA10OnConflictOSg_SayAA6SetterVGtFAA11Expressible_pAIcfU0_ +__T06SQLite9QueryTypePAAE6insert33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA6InsertVAA10OnConflictOSg_SayAA6SetterVGtFAA11Expressible_pSgAOcfU1_ +__T06SQLite9QueryTypePAAE6updateAA6UpdateVSayAA6SetterVGFAA11Expressible_pSgAKcfU0_ +__T06SQLite9QueryTypePAAE6deleteAA6DeleteVyFAA11Expressible_pSgAHcfU_ +__T06SQLite9QueryTypePAAE10expressionAA10ExpressionVyytGfgAA5TableV_Tg5 +__T06SQLite9QueryTypePAAE10expressionAA10ExpressionVyytGfgAA4ViewV_Tg5 +__T06SQLite9QueryTypePAAE10expressionAA10ExpressionVyytGfgAA12VirtualTableV_Tg5 +__T06SQLite9QueryTypePAAE10expressionAA10ExpressionVyytGfgAA11Expressible_pSgAIcfU_ +__T06SQLite9QueryTypePAAE6insert33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA6InsertVAA10OnConflictOSg_SayAA6SetterVGtFAA11Expressible_pSgAOcfU1_Tm +__T06SQLite5TableVAA10SchemaTypeA2aDP10identifierSSfgZTW +__T06SQLite5TableVAA9QueryTypeA2aDPxSS_SSSg8databasetcfCTW +__T06SQLite5TableVAA11ExpressibleA2aDP10expressionAA10ExpressionVyytGfgTW +__T06SQLite5TableVACSS_SSSg8databasetcfCTm +__T06SQLite4ViewVAA10SchemaTypeA2aDP10identifierSSfgZTW +__T06SQLite4ViewVAA9QueryTypeA2aDPxSS_SSSg8databasetcfCTW +__T06SQLite5TableVAA9QueryTypeA2aDPxSS_SSSg8databasetcfCTWTm +__T06SQLite4ViewVAA11ExpressibleA2aDP10expressionAA10ExpressionVyytGfgTW +__T06SQLite5TableVAA11ExpressibleA2aDP10expressionAA10ExpressionVyytGfgTWTm +__T06SQLite12VirtualTableVAA10SchemaTypeA2aDP10identifierSSfgZTW +__T06SQLite12VirtualTableVAA9QueryTypeA2aDP7clausesAA0D7ClausesVfgTW +__T06SQLite12VirtualTableVAA9QueryTypeA2aDP7clausesAA0D7ClausesVfsTW +__T06SQLite12VirtualTableVAA9QueryTypeA2aDP7clausesAA0D7ClausesVfmTW +__T06SQLite12VirtualTableVAA9QueryTypeA2aDPxSS_SSSg8databasetcfCTW +__T06SQLite12VirtualTableVAA11ExpressibleA2aDP10expressionAA10ExpressionVyytGfgTW +__T06SQLite11ScalarQueryVyxGAA0C4TypeAAlAaEP7clausesAA0C7ClausesVfgTW +__T06SQLite11ScalarQueryVyxGAA0C4TypeAAlAaEP7clausesAA0C7ClausesVfsTW +__T06SQLite11ScalarQueryVyxGAA0C4TypeAAlAaEP7clausesAA0C7ClausesVfmTW +__T06SQLite11ScalarQueryVyxGAA0C4TypeAAlAaEPxSS_SSSg8databasetcfCTW +__T06SQLite11ScalarQueryVyxGAA11ExpressibleAAlAaEP10expressionAA10ExpressionVyytGfgTW +__T06SQLite6SelectVyxGAA14ExpressionTypeAAlAaEP8templateSSfgTW +__T06SQLite6SelectVyxGAA14ExpressionTypeAAlAaEP8bindingsSayAA7Binding_pSgGfgTW +__T06SQLite6SelectVyxGAA14ExpressionTypeAAlAaEPxSS_SayAA7Binding_pSgGtcfCTW +__T06SQLite6InsertVAA14ExpressionTypeA2aDPxSS_SayAA7Binding_pSgGtcfCTW +__T06SQLite6UpdateVAA14ExpressionTypeA2aDPxSS_SayAA7Binding_pSgGtcfCTW +__T06SQLite6DeleteVAA14ExpressionTypeA2aDP8templateSSfgTW +__T06SQLite6DeleteVAA14ExpressionTypeA2aDP8bindingsSayAA7Binding_pSgGfgTW +__T06SQLite6DeleteVAA14ExpressionTypeA2aDPxSS_SayAA7Binding_pSgGtcfCTW +__T06SQLite11RowIteratorVAA08FailableC0A2aDP12failableNext7ElementQzSgyKFTW +__T06SQLite11RowIteratorVs0C8ProtocolAAsADP4next7ElementQzSgyFTW +__T06SQLite16FailableIteratorPAAE4next7ElementQzSgyFAA9StatementC_Tg5 +__T06SQLite10ConnectionC19columnNamesForQuery33_14CB4A30965D85E6DF5BEBC63D2EB0EALLs10DictionaryVySSSiGAA0F4Type_pKF +__T06SQLite10ConnectionC7prepares11AnySequenceVyAA3RowVGAA9QueryType_pKFs0D8IteratorVyAHGycfU_AHSgycfU_ +__T06SQLite10ConnectionC3runs5Int64VAA6InsertVKFAFyKcfU_ +__T06SQLite10ConnectionC3runSiAA6UpdateVKFSiyKcfU_ +__T06SQLite10ConnectionC3runSiAA6DeleteVKFSiyKcfU_ +__T06SQLite10ConnectionC3runSiAA6UpdateVKFSiyKcfU_Tm +__T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlF12valueAtIndexL_AESiAaIRzlF +__T06SQLite3RowV9subscriptxAA10ExpressionVyxGcAA5ValueRzlufgTm +__T06SQLite8JoinTypeOs9EquatableAAsADP2eeoiSbx_xtFZTW +__T06SQLite8JoinTypeOs16RawRepresentableAAsADPxSg0D5ValueQz03rawF0_tcfCTW +__T06SQLite8JoinTypeOs16RawRepresentableAAsADP8rawValue0dG0QzfgTW +__T06SQLite10OnConflictOs9EquatableAAsADP2eeoiSbx_xtFZTW +__T06SQLite10OnConflictOs8HashableAAsADP9hashValueSifgTW +__T06SQLite10OnConflictOs16RawRepresentableAAsADPxSg0D5ValueQz03rawF0_tcfCTW +__T06SQLite10OnConflictOs16RawRepresentableAAsADP8rawValue0dG0QzfgTW +__T0s7UnicodeO5UTF16O16transcodedLengthSi5count_Sb7isASCIItSgx2of_q_m9decodedAsSb27repairingIllFormedSequencests16IteratorProtocolRzs01_A8EncodingR_8CodeUnitQy_7ElementRtzr0_lFZs11_UIntBufferV0O0Vys6UInt64Vs6UInt16V_G_ADTgq5Tfq4xnnd_n +__T0s11_StringCoreVABs01_A6BufferVcfCTfq4nd_n +__T0s15ContiguousArrayV15reserveCapacityySiF6SQLite9QueryType_p_Tg5 +__T0Sa16_copyToNewBufferySi8oldCount_tF6SQLite9QueryType_p_Tg5 +__T0Sa16_copyToNewBufferySi8oldCount_tF6SQLite8JoinTypeO4type_AC05QueryI0_p5queryAC11Expressible_p9conditiont_Tg5 +__T0Sa16_copyToNewBufferySi8oldCount_tFSS13CharacterViewV_Tg5 +__T0Sa16_copyToNewBufferySi8oldCount_tF6SQLite9QueryType_p_Tg5Tm +__T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFTfq4ngn_n +__T0Sis9EquatablessAAP2eeoiSbx_xtFZTW +__T0s17MutableCollectionPssAARzs012RandomAccessB0Rzs10Comparable7Elements8SequencePRpzlE4sortyyFs15ContiguousArrayVySSG_Tg5 +__T0s20_ArrayBufferProtocolPsE20_arrayAppendSequenceyqd__s0F0Rd__7ElementQyd__AERtzlFTfq4gn_ns01_aB0Vy6SQLite9QueryType_pG_s08IteratorF0Vys08IndexingK0VySayAjK_pGGGTg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFAEySSG_Tg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vy6SQLite9QueryType_pG_Tg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vy6SQLite8JoinTypeO4type_AM05QueryQ0_p5queryAM11Expressible_p9conditiontG_Tg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFAEy6SQLite9QueryType_pG_Tg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0VySS13CharacterViewVG_Tg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_nAEySSG_s07_IgnoreK0VySSGTg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0Vy6SQLite9QueryType_pG_s07_IgnoreK0VyAmN_pGTg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0Vy6SQLite8JoinTypeO4type_AM05QueryO0_p5queryAM11Expressible_p9conditiontG_s07_IgnoreK0VyAoP_AmQ_pArmS_pATtGTg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_nAEy6SQLite9QueryType_pG_s07_IgnoreK0VyAkL_pGTg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0VySSG_s31_InitializeMemoryFromCollectionVys05EmptyP0VySSGGTg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0VySS13CharacterViewVG_s07_IgnoreK0VyANGTg5 +__T0Sa15reserveCapacityySiF6SQLite9QueryType_p_Tg5 +__T0SSs9EquatablessAAP2eeoiSbx_xtFZTW +__T0s24_VariantDictionaryBufferO018ensureUniqueNativeC0Sb11reallocated_Sb15capacityChangedtSiFSS_SiTg5 +__T0s14_introSortImplyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subD0Si10depthLimitts17MutableCollectionRzs012RandomAccessL0Rzs10Comparable7Elements8SequencePRpzlFTfq4ngn_nSrySSG_Tg5 +__T0s9_heapSortyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subC0ts17MutableCollectionRzs012RandomAccessI0Rzs10Comparable7Elements8SequencePRpzlFTfq4ng_nSrySSG_Tg5 +__T0s14_insertionSortyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subC0ts23BidirectionalCollectionRzs07MutableI0Rzs10Comparable7Elements8SequencePRpzlFTfq4ng_nSrySSG_Tg5 +__T0s9_siftDownyxz_5Indexs14_IndexableBasePQz5indexs5RangeVyAEG03subG0ts17MutableCollectionRzs012RandomAccessJ0Rzs10Comparable7Elements8SequencePRpzlFTfq4nng_nSrySSG_Tg5 +__T0s10CollectionPsE5splitSay11SubSequenceQzGSi9maxSplits_Sb25omittingEmptySubsequencesSb7ElementQzKc14whereSeparatortKFTfq4nngn_nSS13CharacterViewV_Tg505_T0s9M174VSbs5Error_pIxxdzo_ABSbsAC_pIxidzo_TR0118_T06SQLite10ConnectionC19columnNamesForQuery33_14CB4A30965D85E6DF5BEBC63D2EB0EALLs10DictionaryVySSSiGAA0F4Type_pKFSbs9A5VcfU_Tf3npf_nTf1nncn_n +__T0SS9hasSuffixSbSSFTfq4gXx_n +__T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tF6SQLite9QueryType_p_Tg5 +__T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tFSS_Tg5Tm +__T0s23_NativeDictionaryBufferVss8HashableRzr0_lE12unsafeAddNewyx3key_q_5valuetFTfq4ggn_nSS_SiTg5 +__T0s6_sort3yxz_5Indexs14_IndexableBasePQzA2Ets17MutableCollectionRzs012RandomAccessF0Rzs10Comparable7Elements8SequencePRpzlFSrySSG_Tg5 +__T0s2eeoiSbx_xts16RawRepresentableRzs9Equatable0B5ValueRpzlFTfq4gg_n6SQLite8JoinTypeO_Tg5 +__T0s2eeoiSbx_xts16RawRepresentableRzs9Equatable0B5ValueRpzlFTfq4gg_n6SQLite10OnConflictO_Tg5 +__T0SS17UnicodeScalarViewV9subscriptABs5RangeVySS5IndexVGcfgTfq4xn_n +__T0s9CharacterVABSScfCTfq4gXd_n +__T0SS13CharacterViewV21legacyGraphemeForwardSiSS5IndexV5start_AE3endSi0gF5UTF16tFTfq4xxnn_n +__T0s9CharacterVABSS26_largeRepresentationString_tcfCTfq4gXd_n +__T0s30_copySequenceToContiguousArrays0dE0Vy7ElementQzGxs0B0RzlFTfq4g_n6SQLite6CursorV_Tg5 +__T0SS13CharacterViewVs14_IndexableBasessACP10startIndex0F0QzfgTW +__T0SS13CharacterViewVs14_IndexableBasessACP8endIndex0F0QzfgTW +__T0SS13CharacterViewVs14_IndexableBasessACP9formIndexy0F0Qzz5after_tFTW +__T0SS5IndexVs9EquatablessACP2eeoiSbx_xtFZTW +__T0SSs8HashablessAAP9hashValueSifgTW +__T0s32_copyCollectionToContiguousArrays0dE0Vy7ElementQzGxs0B0RzlFs10DictionaryV4KeysVySSSi_G_Tg5 +__T0s20_ArrayBufferProtocolPsE019_outlinedMakeUniqueB0ySi11bufferCount_tFs011_ContiguousaB0VySSG_Tg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi8newCount_Si16requiredCapacitytFAEySSG_Tg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi8newCount_Si16requiredCapacitytFs01_aB0VySSG_Tg5 +__T0s17MutableCollectionPsE6swapAty5IndexQz_AEtFSrySSG_Tg5 +__T06SQLite6SelectV8templateSSfgTfq4n_g +__T06SQLite6SelectV8bindingsSayAA7Binding_pSgGfgTfq4n_g +__T06SQLite11RowIteratorV12failableNextAA0B0VSgyKFTf4x_n +__T06SQLite9QueryTypePAAE6insert33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA6InsertVAA10OnConflictOSg_SayAA6SetterVGtFTf4ngn_n +__T0s22_ContiguousArrayBufferVAByxGSi19_uninitializedCount_Si15minimumCapacitytcfCSS_Tg5Tf4nnd_n +__T0S2ayxGqd__c7ElementQyd__Rszs8SequenceRd__lufCTfq4gn_nSS_s10DictionaryV4KeysVySSSi_GTg5Tf4nd_n +__T0s10_partition5Indexs14_IndexableBasePQzxz_s5RangeVyAEG03subE0ts17MutableCollectionRzs012RandomAccessH0Rzs10Comparable7Elements8SequencePRpzlFSrySSG_Tg5Tf4nx_n +__T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlF12valueAtIndexL_AESiAaIRzlFSb_Tg5Tf4ngX_n +__T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlFSbSScfU_Tf4gXg_n +__T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlF12valueAtIndexL_AESiAaIRzlFSi_Tg5Tf4ngX_n +__T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlF12valueAtIndexL_AESiAaIRzlFSd_Tg5Tf4ngX_n +__T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlF12valueAtIndexL_AESiAaIRzlFSS_Tg5Tf4ngX_n +__T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlF12valueAtIndexL_AESiAaIRzlF10Foundation4DataV_Tg5Tf4ngX_n +__T0S2ayxGycfCTfq42n_g +__T06SQLite11ScalarQueryV7clausesAA0C7ClausesVfmTfq4dnn_n +__T06SQLite12VirtualTableVACSS_SSSg8databasetcfCTf4nnd_n +__T06SQLite4ViewVACSS_SSSg8databasetcfCTf4nnd_n +__T06SQLite5TableVACSS_SSSg8databasetcfCTf4nnd_n +__T06SQLite12VirtualTableVACSS_SSSg8databasetcfCTf4nnd_nTm +__T06SQLite11ScalarQueryV7clausesAA0C7ClausesVfsTfq4gn_n +__T06SQLite10SchemaTypePAAE6selectAA11ScalarQueryVyqd__GAA10ExpressionVyqd__GAA5ValueRd__lFTf4gn_n +__T06SQLite9QueryTypePAAE6insertAA6InsertVAA10OnConflictO2or_SayAA6SetterVGtFTf4ngn_n +__T06SQLite9QueryTypePAAE9namespaceAA10ExpressionVyqd__GAGlFTf4gn_n +__T06SQLite10ConnectionC7prepares11AnySequenceVyAA3RowVGAA9QueryType_pKFs0D8IteratorVyAHGycfU_TA +__T0s11AnyIteratorVy6SQLite3RowVGIxo_AFIxr_TRTA +__T0s12_SequenceBoxCys013_ClosureBasedA0Vys11AnyIteratorVy6SQLite3RowVGGGMa +__T0s21_ClosureBasedSequenceVys11AnyIteratorVy6SQLite3RowVGGMa +__T06SQLite10ConnectionC3runs5Int64VAA6InsertVKFAFyKcfU_TA +__T0s5Int64Vs5Error_pIxdzo_ABsAC_pIxrzo_TRTA +__T06SQLite10ConnectionC3runSiAA6UpdateVKFSiyKcfU_TA +__T0Sis5Error_pIxdzo_SisAA_pIxrzo_TRTA +__T06SQLite10ConnectionC3runSiAA6DeleteVKFSiyKcfU_TA +__T06SQLite10ConnectionC3runSiAA6UpdateVKFSiyKcfU_TATm +__T0s10CollectionPsE5splitSay11SubSequenceQzGSi9maxSplits_Sb25omittingEmptySubsequencesSb7ElementQzKc14whereSeparatortKF17appendSubsequenceL_Sb5IndexQz3end_tsAARzlFTfq4ngngg_nSS13CharacterViewV_Tg5Tf4xnnnn_n +__T06SQLite10ConnectionC19columnNamesForQuery33_14CB4A30965D85E6DF5BEBC63D2EB0EALLs10DictionaryVySSSiGAA0F4Type_pKFSbs9CharacterVcfU_Tf4g_n +__T0s20_ArrayBufferProtocolPsE23_arrayOutOfPlaceReplaceys5RangeVySiG_qd__4withSi5countts10CollectionRd__7ElementQyd__AJRtzlFTfq4xnnn_ns01_aB0VySSG_s05EmptyL0VySSGTg5Tf4nndnn_n +__T0s20_ArrayBufferProtocolPsE15replaceSubrangeys5RangeVySiG_Si4withqd__10elementsOfts10CollectionRd__7ElementQyd__AJRtzlFTfq4xnnn_ns01_aB0VySSG_s05EmptyJ0VySSGTg5Tf4nnndn_n +__T0Sa15replaceSubrangeys5RangeVySiG_qd__4witht7ElementQyd__Rszs10CollectionRd__lFTfq4xnn_nSS_s05EmptyF0VySSGTg5Tf4nndn_n +__T06SQLite10ConnectionC19columnNamesForQuery33_14CB4A30965D85E6DF5BEBC63D2EB0EALLs10DictionaryVySSSiGAA0F4Type_pKF10expandGlobL_yAaI_pKcSbFyAaI_pKcfU_S2ScfU0_Tf4gXn_n +__T0s24_VariantDictionaryBufferO17nativeUpdateValueq_Sgq__x6forKeytFSS_SiTg5Tf4nxn_n +__T06SQLite10ConnectionC19columnNamesForQuery33_14CB4A30965D85E6DF5BEBC63D2EB0EALLs10DictionaryVySSSiGAA0F4Type_pKF10expandGlobL_yAaI_pKcSbFyAaI_pKcfU_Tf4ngngg_n +__T06SQLite10ConnectionC3runs5Int64VAA6InsertVKFAFyKcfU_Tf4gg_n +__T06SQLite10ConnectionC3runSiAA6UpdateVKFSiyKcfU_Tf4gg_n +__T06SQLite10ConnectionC3runSiAA6DeleteVKFSiyKcfU_Tf4gg_n +__T06SQLite10ConnectionC3runSiAA6UpdateVKFSiyKcfU_Tf4gg_nTm +__T06SQLite8JoinTypeOACSgSS8rawValue_tcfCTf4gXd_n +__T06SQLite10OnConflictOACSgSS8rawValue_tcfCTf4gXd_n +__T0ytMa +__T06SQLite5TableVwCp +__T06SQLite5TableVwTk +___swift_memcpy120_4 +__T06SQLite5TableVwal +___swift_memmove_array120_4 +__T06SQLite4ViewVwCp +__T06SQLite4ViewVwTk +__T06SQLite4ViewVwal +__T06SQLite12VirtualTableVwCp +__T06SQLite5TableVwCpTm +__T06SQLite12VirtualTableVwTk +__T06SQLite12VirtualTableVwal +__T06SQLite11ScalarQueryVwXX +__T06SQLite11ScalarQueryVwCP +__T06SQLite11ScalarQueryVwpr +__T06SQLite11ScalarQueryVwde +__T06SQLite11ScalarQueryVwxx +__T06SQLite11ScalarQueryVwCp +__T06SQLite11ScalarQueryVwcp +__T06SQLite11ScalarQueryVwca +__T06SQLite11ScalarQueryVwTk +__T06SQLite11ScalarQueryVwta +__T06SQLite11ScalarQueryVwal +__T06SQLite11ScalarQueryVwXx +__T06SQLite11ScalarQueryVwCc +__T06SQLite11ScalarQueryVwxs +__T06SQLite11ScalarQueryVwxg +__T06SQLite6SelectVwCp +__T06SQLite6SelectVwTk +__T06SQLite6InsertVwCp +__T06SQLite6InsertVwTk +__T06SQLite6InsertVwal +__T06SQLite6UpdateVwCp +__T06SQLite6UpdateVwTk +__T06SQLite6UpdateVwal +__T06SQLite6DeleteVwXX +__T06SQLite6DeleteVwde +__T06SQLite6DeleteVwxx +__T06SQLite6DeleteVwCp +__T06SQLite6InsertVwCpTm +__T06SQLite6DeleteVwcp +__T06SQLite6DeleteVwca +__T06SQLite6DeleteVwTk +__T06SQLite6DeleteVwta +__T06SQLite6DeleteVwal +__T06SQLite6DeleteVwXx +__T06SQLite6DeleteVwCc +__T06SQLite11RowIteratorVwXX +__T06SQLite11RowIteratorVwCP +__T06SQLite11RowIteratorVwxx +__T06SQLite11RowIteratorVwCp +__T06SQLite11RowIteratorVwcp +__T06SQLite11RowIteratorVwca +___swift_memcpy8_4 +__T06SQLite11RowIteratorVwta +__T06SQLite11RowIteratorVwXx +__T06SQLite11RowIteratorVwCc +___swift_memmove_array8_4 +__T06SQLite11RowIteratorVwxs +__T06SQLite11RowIteratorVwxg +__T06SQLite3RowVwXX +__T06SQLite3RowVwCP +__T06SQLite3RowVwxx +__T06SQLite3RowVwCp +__T06SQLite3RowVwcp +__T06SQLite3RowVwca +__T06SQLite3RowVwta +__T06SQLite3RowVwXx +__T06SQLite3RowVwCc +__T06SQLite8JoinTypeOwxs +__T06SQLite8JoinTypeOwxg +__T06SQLite8JoinTypeOwup +__T06SQLite10OnConflictOwxs +__T06SQLite10OnConflictOwxg +__T06SQLite10OnConflictOwug +__T06SQLite10OnConflictOwup +__T06SQLite10OnConflictOwui +__T06SQLite12QueryClausesVwCp +__T06SQLite12QueryClausesVwTk +__T06SQLite12QueryClausesVwal +__T06SQLite8JoinTypeO4type_AA05QueryC0_p5queryAA11Expressible_p9conditiontMa +__T0Say6SQLite11Expressible_pG2by_AA10ExpressionVySbSgGSg6havingtSgMa +__T06SQLite10ConnectionC7prepares11AnySequenceVyAA3RowVGAA9QueryType_pKFs0D8IteratorVyAHGycfU_AHSgycfU_TA +__T06SQLite3RowVSgIxo_ADIxr_TRTA +__T0s12_IteratorBoxCys013_ClosureBasedA0Vy6SQLite3RowVGGMa +___swift_mutable_project_boxed_opaque_existential_1 +__T06SQLite9QueryTypePAAE8databaseAA11Expressible_pSS9namespace_tFAA4ViewV_Tg5 +__T06SQLite9QueryTypePAAE11orderClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA5TableV_Tg5 +__T06SQLite9QueryTypePAAE11orderClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA4ViewV_Tg5 +__T06SQLite8JoinTypeOwug +__T06SQLite5TableVwxs +__T06SQLite4ViewVwxs +__T06SQLite12VirtualTableVwxs +__T06SQLite12QueryClausesVwxs +__T06SQLite6SelectVwxx +__T06SQLite6UpdateVwxx +__T06SQLite6InsertVwxx +__T0Sis5Error_pIxdzo_SisAA_pIxrzo_TRTA.65 +__T06SQLite5TableVwCc +__T06SQLite4ViewVwCc +__T06SQLite12VirtualTableVwCc +__T06SQLite12QueryClausesVwCc +__T06SQLite5TableVAA9QueryTypeA2aDP7clausesAA0C7ClausesVfsTW +__T06SQLite4ViewVAA9QueryTypeA2aDP7clausesAA0C7ClausesVfsTW +__T06SQLite6SelectVwta +__T06SQLite6UpdateVwta +__T06SQLite6InsertVwta +__T06SQLite5TableVAA9QueryTypeA2aDP7clausesAA0C7ClausesVfgTW +__T06SQLite4ViewVAA9QueryTypeA2aDP7clausesAA0C7ClausesVfgTW +__T06SQLite9QueryTypePAAE11unionClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA5TableV_Tg5 +__T06SQLite9QueryTypePAAE11unionClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA4ViewV_Tg5 +__T0Sr8endIndexSifgs5UInt8V_Tgq5Tfq4x_n +__T06SQLite5TableVwxx +__T06SQLite4ViewVwxx +__T06SQLite12VirtualTableVwxx +__T06SQLite12QueryClausesVwxx +__T06SQLite5TableVwXX +__T06SQLite4ViewVwXX +__T06SQLite12VirtualTableVwXX +__T06SQLite12QueryClausesVwXX +__T06SQLite6UpdateVAA14ExpressionTypeA2aDP8templateSSfgTW +__T06SQLite6InsertVAA14ExpressionTypeA2aDP8templateSSfgTW +__T06SQLite5TableVwXx +__T06SQLite4ViewVwXx +__T06SQLite12VirtualTableVwXx +__T06SQLite12QueryClausesVwXx +__T06SQLite9QueryTypePAAE13groupByClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA5TableV_Tg5 +__T06SQLite9QueryTypePAAE13groupByClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA4ViewV_Tg5 +__T06SQLite5TableVwca +__T06SQLite4ViewVwca +__T06SQLite12VirtualTableVwca +__T06SQLite12QueryClausesVwca +__T06SQLite6SelectVwXx +__T06SQLite6UpdateVwXx +__T06SQLite6InsertVwXx +__T06SQLite8JoinTypeOs8HashableAAsADP9hashValueSifgTW +__T06SQLite6SelectVwca +__T06SQLite6UpdateVwca +__T06SQLite6InsertVwca +__T06SQLite6UpdateVAA14ExpressionTypeA2aDP8bindingsSayAA7Binding_pSgGfgTW +__T06SQLite6InsertVAA14ExpressionTypeA2aDP8bindingsSayAA7Binding_pSgGfgTW +__T06SQLite5TableVwcp +__T06SQLite4ViewVwcp +__T06SQLite12VirtualTableVwcp +__T06SQLite12QueryClausesVwcp +__T06SQLite9QueryTypePAAE11whereClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA5TableV_Tg5 +__T06SQLite9QueryTypePAAE11whereClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA4ViewV_Tg5 +__T06SQLite5TableVAA9QueryTypeA2aDP7clausesAA0C7ClausesVfmTW +__T06SQLite4ViewVAA9QueryTypeA2aDP7clausesAA0C7ClausesVfmTW +__T06SQLite5TableVwta +__T06SQLite4ViewVwta +__T06SQLite12VirtualTableVwta +__T06SQLite12QueryClausesVwta +__T06SQLite6SelectVwCc +__T06SQLite6UpdateVwCc +__T06SQLite6InsertVwCc +__T06SQLite9QueryTypePAAE10joinClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA5TableV_Tg5 +__T06SQLite9QueryTypePAAE10joinClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA4ViewV_Tg5 +__T06SQLite6SelectVwXX +__T06SQLite6UpdateVwXX +__T06SQLite6InsertVwXX +__T06SQLite5TableVwxg +__T06SQLite4ViewVwxg +__T06SQLite12VirtualTableVwxg +__T06SQLite12QueryClausesVwxg +__T06SQLite6SelectVwal +__T06SQLite5TableVwCP +__T06SQLite4ViewVwCP +__T06SQLite12VirtualTableVwCP +__T06SQLite6SelectVwCP +__T06SQLite6InsertVwCP +__T06SQLite6UpdateVwCP +__T06SQLite6DeleteVwCP +__T06SQLite12QueryClausesVwCP +__T06SQLite9QueryTypePAAE17limitOffsetClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA5TableV_Tg5 +__T06SQLite9QueryTypePAAE17limitOffsetClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAA4ViewV_Tg5 +__T06SQLite5TableVwpr +__T06SQLite4ViewVwpr +__T06SQLite12VirtualTableVwpr +__T06SQLite6SelectVwpr +__T06SQLite6InsertVwpr +__T06SQLite6UpdateVwpr +__T06SQLite6DeleteVwpr +__T06SQLite12QueryClausesVwpr +__T06SQLite5TableVwde +__T06SQLite4ViewVwde +__T06SQLite12VirtualTableVwde +__T06SQLite6SelectVwde +__T06SQLite6UpdateVwde +__T06SQLite6InsertVwde +__T06SQLite12QueryClausesVwde +__T06SQLite6SelectVwcp +__T06SQLite6UpdateVwcp +__T06SQLite6InsertVwcp +__T06SQLite8JoinTypeOwui +__T0s12_SequenceBoxCys013_ClosureBasedA0Vys11AnyIteratorVy6SQLite3RowVGGGML +__T0s21_ClosureBasedSequenceVys11AnyIteratorVy6SQLite3RowVGGML +__T0s11AnyIteratorVy6SQLite3RowVGML +__T0s11AnyIteratorVy6SQLite3RowVGAByxGs0B8ProtocolslWL +__T0s21_ClosureBasedSequenceVys11AnyIteratorVy6SQLite3RowVGGAByxGs0C0ss0E8ProtocolRzlWL +__T0s11AnySequenceVy6SQLite3RowVGAByxGs0B0slWL +__T0s11AnySequenceVy6SQLite3RowVGML +__T06SQLite9QueryType_pMF +__T06SQLite10SchemaType_pMF +__T06SQLite5TableVWV +__T06SQLite5TableVMf +__T06SQLite5TableVMF +__T06SQLite4ViewVWV +__T06SQLite4ViewVMf +__T06SQLite4ViewVMF +__T06SQLite12VirtualTableVWV +__T06SQLite12VirtualTableVMf +__T06SQLite12VirtualTableVMF +__T06SQLite11ScalarQueryVWV +__T06SQLite11ScalarQueryVMP +__T06SQLite11ScalarQueryVMF +__T06SQLite6SelectVWV +__T06SQLite6SelectVMP +__T06SQLite6SelectVMF +__T06SQLite6InsertVWV +__T06SQLite6InsertVMf +__T06SQLite6InsertVMF +__T06SQLite6UpdateVWV +__T06SQLite6UpdateVMf +__T06SQLite6UpdateVMF +__T06SQLite6DeleteVWV +__T06SQLite6DeleteVMf +__T06SQLite6DeleteVMF +__T06SQLite11RowIteratorVWV +__T06SQLite11RowIteratorVMf +__T06SQLite11RowIteratorVMF +__T06SQLite3RowVWV +__T06SQLite3RowVMf +__T06SQLite3RowVMF +__T06SQLite8JoinTypeOWV +__T06SQLite8JoinTypeOMf +__T06SQLite8JoinTypeOMF +__T06SQLite10OnConflictOWV +__T06SQLite10OnConflictOMf +__T06SQLite10OnConflictOMF +__T06SQLite12QueryClausesVWV +__T06SQLite12QueryClausesVMf +__T06SQLite12QueryClausesVMF +__T0Sb8distinct_Say6SQLite11Expressible_pG7columnstML +__T0SS4name_SSSg5aliasAB8databasetML +__T0Say6SQLite8JoinTypeO4type_AA05QueryC0_p5queryAA11Expressible_p9conditiontGML +__T06SQLite8JoinTypeO4type_AA05QueryC0_p5queryAA11Expressible_p9conditiontML +__T06SQLite9QueryType_pML +__T06SQLite10ExpressionVySbSgGSgML +__T0Say6SQLite11Expressible_pG2by_AA10ExpressionVySbSgGSg6havingtSgML +__T0Say6SQLite11Expressible_pG2by_AA10ExpressionVySbSgGSg6havingtML +__T0Si6length_SiSg6offsettSgML +__T0Si6length_SiSg6offsettML +__T0Say6SQLite9QueryType_pGML +__T0s12_IteratorBoxCys013_ClosureBasedA0Vy6SQLite3RowVGGML +__T0s21_ClosureBasedIteratorVy6SQLite3RowVGML +__T0s21_ClosureBasedIteratorVy6SQLite3RowVGAByxGs0C8ProtocolslWL +__T0s23_ContiguousArrayStorageCy6SQLite9QueryType_pGML +__T0s37_HashableTypedNativeDictionaryStorageCySSSiGML +__T0s23_ContiguousArrayStorageCySS13CharacterViewVGML +__T0s23_ContiguousArrayStorageCy6SQLite8JoinTypeO4type_AC05QueryF0_p5queryAC11Expressible_p9conditiontGML +__T06SQLite6SelectVyxGAA14ExpressionTypeAAlMA +__T06SQLite6InsertVAA14ExpressionTypeAAMA +__T06SQLite6UpdateVAA14ExpressionTypeAAMA +__T06SQLite6DeleteVAA14ExpressionTypeAAMA +__T06SQLite11RowIteratorVs0C8ProtocolAAMA +__T06SQLite8JoinTypeOs16RawRepresentableAAMA +__T06SQLite10OnConflictOs16RawRepresentableAAMA +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Query.swift +objectdestroy.135 +objectdestroy.129 +__swift_mutable_project_boxed_opaque_existential_1 +objectdestroy.119 +objectdestroy.116 +_T0s12_IteratorBoxCys013_ClosureBasedA0Vy6SQLite3RowVGGMa +_T0s21_ClosureBasedIteratorVy6SQLite3RowVGAByxGs0C8ProtocolslWl +_T0s21_ClosureBasedIteratorVy6SQLite3RowVGMa +_T06SQLite3RowVSgIxo_ADIxr_TRTA +_T06SQLite3RowVSgIxo_ADIxr_TR +objectdestroy.113 +_T06SQLite10ConnectionC7prepares11AnySequenceVyAA3RowVGAA9QueryType_pKFs0D8IteratorVyAHGycfU_AHSgycfU_TA +objectdestroy.110 +_T0Say6SQLite11Expressible_pG2by_AA10ExpressionVySbSgGSg6havingtSgMa +_T0Say6SQLite11Expressible_pG2by_AA10ExpressionVySbSgGSg6havingtMa +_T06SQLite10ExpressionVySbSgGSgMa +_T06SQLite8JoinTypeO4type_AA05QueryC0_p5queryAA11Expressible_p9conditiontMa +_T06SQLite9QueryType_pMa +_T06SQLite12QueryClausesVMa +get_field_types_QueryClauses +_T0Say6SQLite9QueryType_pGMa +_T0Si6length_SiSg6offsettSgMa +_T0Si6length_SiSg6offsettMa +_T0Say6SQLite8JoinTypeO4type_AA05QueryC0_p5queryAA11Expressible_p9conditiontGMa +_T0SS4name_SSSg5aliasAB8databasetMa +_T0Sb8distinct_Say6SQLite11Expressible_pG7columnstMa +_T06SQLite12QueryClausesVwal +_T06SQLite12QueryClausesVwTk +_T06SQLite12QueryClausesVwCp +_T06SQLite10OnConflictOMa +get_field_types_OnConflict +_T06SQLite10OnConflictOwui +_T06SQLite10OnConflictOwup +_T06SQLite10OnConflictOwug +_T06SQLite10OnConflictOwxg +_T06SQLite10OnConflictOwxs +_T06SQLite8JoinTypeOMa +get_field_types_JoinType +_T06SQLite8JoinTypeOwup +_T06SQLite8JoinTypeOwxg +_T06SQLite8JoinTypeOwxs +get_field_types_Row +_T06SQLite3RowVwCc +_T06SQLite3RowVwXx +_T06SQLite3RowVwta +_T06SQLite3RowVwca +_T06SQLite3RowVwcp +_T06SQLite3RowVwCp +_T06SQLite3RowVwxx +_T06SQLite3RowVwCP +_T06SQLite3RowVwXX +_T06SQLite11RowIteratorVMa +get_field_types_RowIterator +_T06SQLite11RowIteratorVwxg +_T06SQLite11RowIteratorVwxs +__swift_memmove_array8_4 +_T06SQLite11RowIteratorVwCc +_T06SQLite11RowIteratorVwXx +_T06SQLite11RowIteratorVwta +__swift_memcpy8_4 +_T06SQLite11RowIteratorVwca +_T06SQLite11RowIteratorVwcp +_T06SQLite11RowIteratorVwCp +_T06SQLite11RowIteratorVwxx +_T06SQLite11RowIteratorVwCP +_T06SQLite11RowIteratorVwXX +_T06SQLite6DeleteVMa +get_field_types_Delete +_T06SQLite6DeleteVwCc +_T06SQLite6DeleteVwXx +_T06SQLite6DeleteVwal +_T06SQLite6DeleteVwta +_T06SQLite6DeleteVwTk +_T06SQLite6DeleteVwca +_T06SQLite6DeleteVwcp +_T06SQLite6InsertVwCp +_T06SQLite6DeleteVwxx +_T06SQLite6DeleteVwde +_T06SQLite6DeleteVwXX +_T06SQLite6UpdateVMa +get_field_types_Update +_T06SQLite6UpdateVwal +_T06SQLite6UpdateVwTk +_T06SQLite6InsertVMa +get_field_types_Insert +_T06SQLite6InsertVwal +_T06SQLite6InsertVwTk +create_generic_metadata_Select +get_field_types_Select +_T06SQLite6SelectVwTk +_T06SQLite6SelectVwCp +create_generic_metadata_ScalarQuery +get_field_types_ScalarQuery +_T06SQLite11ScalarQueryVwxg +_T06SQLite11ScalarQueryVwxs +_T06SQLite11ScalarQueryVwCc +_T06SQLite11ScalarQueryVwXx +_T06SQLite11ScalarQueryVwal +_T06SQLite11ScalarQueryVwta +_T06SQLite11ScalarQueryVwTk +_T06SQLite11ScalarQueryVwca +_T06SQLite11ScalarQueryVwcp +_T06SQLite11ScalarQueryVwCp +_T06SQLite11ScalarQueryVwxx +_T06SQLite11ScalarQueryVwde +_T06SQLite11ScalarQueryVwpr +_T06SQLite11ScalarQueryVwCP +_T06SQLite11ScalarQueryVwXX +_T06SQLite12VirtualTableVMa +get_field_types_VirtualTable +_T06SQLite12VirtualTableVwal +_T06SQLite12VirtualTableVwTk +_T06SQLite5TableVwCp +_T06SQLite4ViewVMa +get_field_types_View +_T06SQLite4ViewVwal +_T06SQLite4ViewVwTk +_T06SQLite5TableVMa +get_field_types_Table +__swift_memmove_array120_4 +_T06SQLite5TableVwal +__swift_memcpy120_4 +_T06SQLite5TableVwTk +_T06SQLite10OnConflictOs16RawRepresentableAAWa +_T06SQLite10OnConflictOs8HashableAAWa +_T06SQLite10OnConflictOs9EquatableAAWa +_T06SQLite8JoinTypeOs16RawRepresentableAAWa +_T06SQLite8JoinTypeOs8HashableAAWa +_T06SQLite8JoinTypeOs9EquatableAAWa +_T06SQLite11RowIteratorVs0C8ProtocolAAWa +_T06SQLite3RowVMa +_T06SQLite11RowIteratorVAA08FailableC0AAWa +_T06SQLite6DeleteVAA11ExpressibleAAWa +_T06SQLite6DeleteVAA14ExpressionTypeAAWa +_T06SQLite6UpdateVAA11ExpressibleAAWa +_T06SQLite6UpdateVAA14ExpressionTypeAAWa +_T06SQLite6InsertVAA11ExpressibleAAWa +_T06SQLite6InsertVAA14ExpressionTypeAAWa +_T06SQLite6SelectVyxGAA11ExpressibleAAlWa +_T06SQLite6SelectVyxGAA14ExpressionTypeAAlWa +_T0ytMa +_T06SQLite11ScalarQueryVyxGAA11ExpressibleAAlWa +_T06SQLite11ScalarQueryVyxGAA0C4TypeAAlWa +_T06SQLite12VirtualTableVAA11ExpressibleAAWa +_T06SQLite12VirtualTableVAA10SchemaTypeAAWa +_T06SQLite4ViewVAA11ExpressibleAAWa +_T06SQLite4ViewVAA9QueryTypeAAWa +_T06SQLite4ViewVAA10SchemaTypeAAWa +_T06SQLite5TableVAA11ExpressibleAAWa +_T06SQLite5TableVAA9QueryTypeAAWa +_T06SQLite5TableVAA10SchemaTypeAAWa +_T06SQLite12VirtualTableVAA9QueryTypeAAWa +_T06SQLite10ConnectionC3runSiAA6UpdateVKFSiyKcfU_Tf4gg_n +_T06SQLite10ConnectionC3runs5Int64VAA6InsertVKFAFyKcfU_Tf4gg_n +_T06SQLite10ConnectionC19columnNamesForQuery33_14CB4A30965D85E6DF5BEBC63D2EB0EALLs10DictionaryVySSSiGAA0F4Type_pKF10expandGlobL_yAaI_pKcSbFyAaI_pKcfU_Tf4ngngg_n +_T0s10CollectionPsE3mapSayqd__Gqd__7ElementQzKcKlFTfq4gn_nSaySSG_SSTg5 +_T0SayxGs10CollectionslsABP9subscript7ElementQz5IndexQzcfgTWSS_Tg5 +_T0s24_VariantDictionaryBufferO17nativeUpdateValueq_Sgq__x6forKeytFSS_SiTg5 +_T0S2Ss5Error_pIxxozo_S2SsAA_pIxirzo_TR +_T06SQLite10ConnectionC19columnNamesForQuery33_14CB4A30965D85E6DF5BEBC63D2EB0EALLs10DictionaryVySSSiGAA0F4Type_pKF10expandGlobL_yAaI_pKcSbFyAaI_pKcfU_S2ScfU0_ +_T06SQLite10ConnectionC19columnNamesForQuery33_14CB4A30965D85E6DF5BEBC63D2EB0EALLs10DictionaryVySSSiGAA0F4Type_pKF10expandGlobL_yAaI_pKcSbFyAaI_pKcfU_S2ScfU_ +_T0SS6SQLiteE5quoteSSs9CharacterVFfA_ +_T0SR5countSifgs6UInt16V_Tgq5Tfq4x_n +_T0s24_VariantDictionaryBufferO17nativeUpdateValueq_Sgq__x6forKeytFSS_SiTg5Tf4nxn_n +_T0s17_squeezeHashValueS2i_SitF +_T06SQLite10ConnectionC19columnNamesForQuery33_14CB4A30965D85E6DF5BEBC63D2EB0EALLs10DictionaryVySSSiGAA0F4Type_pKF10expandGlobL_yAaI_pKcSbFyAaI_pKcfU_S2ScfU0_Tf4gXn_n +_T0Sa15replaceSubrangeys5RangeVySiG_qd__4witht7ElementQyd__Rszs10CollectionRd__lFTfq4xnn_nSS_s05EmptyF0VySSGTg5Tf4nndn_n +_T0s20_ArrayBufferProtocolPsE15replaceSubrangeys5RangeVySiG_Si4withqd__10elementsOfts10CollectionRd__7ElementQyd__AJRtzlFTfq4xnnn_ns01_aB0VySSG_s05EmptyJ0VySSGTg5 +_T0s20_ArrayBufferProtocolPsE23_arrayOutOfPlaceReplaceys5RangeVySiG_qd__4withSi5countts10CollectionRd__7ElementQyd__AJRtzlFTfq4xnnn_ns01_aB0VySSG_s05EmptyL0VySSGTg5 +_T0s20_ArrayBufferProtocolPsE15replaceSubrangeys5RangeVySiG_Si4withqd__10elementsOfts10CollectionRd__7ElementQyd__AJRtzlFTfq4xnnn_ns01_aB0VySSG_s05EmptyJ0VySSGTg5Tf4nnndn_n +_T0s15EmptyCollectionVyxGs0B0slsADP9subscript7ElementQz5IndexQzcfgTWSS_Tg5 +_T0s15EmptyCollectionV9subscriptxSicfgSS_Tg5 +_T0Sp10moveAssignySpyxG4from_Si5counttFSS_Tg5 +_T0Sp14moveInitializeySpyxG4from_Si5counttFSS_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP20subscriptBaseAddressSpy7ElementQzGfgTWSS_Tg5 +_T0s20_ArrayBufferProtocolPsE20subscriptBaseAddressSpy7ElementQzGfgs01_aB0VySSG_Tg5 +_T0s20_ArrayBufferProtocolPsE23_arrayOutOfPlaceReplaceys5RangeVySiG_qd__4withSi5countts10CollectionRd__7ElementQyd__AJRtzlFTfq4xnnn_ns01_aB0VySSG_s05EmptyL0VySSGTg5Tf4nndnn_n +_T06SQLite10ConnectionC19columnNamesForQuery33_14CB4A30965D85E6DF5BEBC63D2EB0EALLs10DictionaryVySSSiGAA0F4Type_pKFSbs9CharacterVcfU_Tf4g_n +_T0s10CollectionPsE5splitSay11SubSequenceQzGSi9maxSplits_Sb25omittingEmptySubsequencesSb7ElementQzKc14whereSeparatortKF17appendSubsequenceL_Sb5IndexQz3end_tsAARzlFTfq4ngngg_nSS13CharacterViewV_Tg5Tf4xnnnn_n +_T0Sa36_reserveCapacityAssumingUniqueBufferySi8oldCount_tFSS13CharacterViewV_Tg5 +_T0SS13CharacterViewVs10CollectionssACP9subscript11SubSequenceQzs5RangeVy5IndexQzGcfgTW +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFSS13CharacterViewV_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFTfq4ngn_nSS13CharacterViewV_Tg5 +_T0s12_ArrayBufferV5countSifsSS13CharacterViewV_Tg5 +_T0Sa9_getCountSiyFSS13CharacterViewV_Tg5 +_T0Sa034_makeUniqueAndReserveCapacityIfNotB0yyFSS13CharacterViewV_Tg5 +_T0SS5IndexVs10ComparablessACP2leoiSbx_xtFZTW +_T06SQLite10ConnectionC3runSiAA6UpdateVKFSiyKcfU_TA +_T0Sis5Error_pIxdzo_SisAA_pIxrzo_TRTA +_T0s5Int64Vs5Error_pIxdzo_ABsAC_pIxrzo_TRTA +_T0s5Int64Vs5Error_pIxdzo_ABsAC_pIxrzo_TR +_T06SQLite10ConnectionC3runs5Int64VAA6InsertVKFAFyKcfU_TA +objectdestroy.48 +_T06SQLite6SelectVMa +_T0s21_ClosureBasedSequenceVys11AnyIteratorVy6SQLite3RowVGGMa +_T0s11AnyIteratorVy6SQLite3RowVGAByxGs0B8ProtocolslWl +_T0s11AnyIteratorVy6SQLite3RowVGMa +_T0s12_SequenceBoxCys013_ClosureBasedA0Vys11AnyIteratorVy6SQLite3RowVGGGMa +_T0s11AnySequenceVy6SQLite3RowVGAByxGs0B0slWl +_T0s11AnySequenceVy6SQLite3RowVGMa +_T0s21_ClosureBasedSequenceVys11AnyIteratorVy6SQLite3RowVGGAByxGs0C0ss0E8ProtocolRzlWl +_T0s11AnyIteratorVy6SQLite3RowVGIxo_AFIxr_TRTA +_T0s11AnyIteratorVy6SQLite3RowVGIxo_AFIxr_TR +_T06SQLite10ConnectionC7prepares11AnySequenceVyAA3RowVGAA9QueryType_pKFs0D8IteratorVyAHGycfU_TA +_T06SQLite10ConnectionC7prepares11AnySequenceVyAA3RowVGAA9QueryType_pKFs0D8IteratorVyAHGycfU_ +namespace +_T06SQLite11ScalarQueryVMa +select +clauses.set +clauses.materialize +_T06SQLite9QueryTypePAAE6filterxAA10ExpressionVySbSgGFAHyKXKfu_ +_T06SQLite10ExpressionVySbSgGAEs5Error_pIxxozo_A2EsAF_pIxirzo_TR +_T06SQLite9QueryTypePAAE6filterxAA10ExpressionVySbSgGFA2HcfU_ +_T0s14_ArrayProtocolPsE6filterSay7ElementQzGSbAEKcKFTfq4gn_nSaySSG_Tg5 +_T0SSSbs5Error_pIxxdzo_SSSbsAA_pIxidzo_TR +_T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlFSbSScfU_10Foundation4DataV_Tg5 +hasSuffix +valueAtIndex +_T0s10DictionaryV4KeysVyxq__Gs8Sequencess8HashableRzr0_lsAFP22_copyToContiguousArrays0gH0Vy7ElementQzGyFTWSS_SiTg5 +_T0s10CollectionPsE22_copyToContiguousArrays0dE0Vy7ElementQzGyFs10DictionaryV4KeysVySSSi_G_Tg5 +_T0S2ayxGqd__c7ElementQyd__Rszs8SequenceRd__lufCTfq4gn_nSS_s10DictionaryV4KeysVySSSi_GTg5 +_T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlFSbSScfU_SS_Tg5 +_T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlFSbSScfU_Sd_Tg5 +_T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlFSbSScfU_Si_Tg5 +_T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlFSbSScfU_Tf4gXg_n +_T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlFSbSScfU_Sb_Tg5 +_T0s10_partition5Indexs14_IndexableBasePQzxz_s5RangeVyAEG03subE0ts17MutableCollectionRzs012RandomAccessH0Rzs10Comparable7Elements8SequencePRpzlFSrySSG_Tg5Tf4nx_n +_T0SSs10ComparablessAAP1loiSbx_xtFZTW +_T0SryxGs17_MutableIndexableslsABP9formIndexy0D0Qzz5after_tFTWSS_Tg5 +_T0Sr9formIndexySiz5after_tFSS_Tg5 +_T0SryxGs23BidirectionalCollectionslsABP9formIndexy0D0Qzz6before_tFTWSS_Tg5 +_T0Sr9formIndexySiz6before_tFSS_Tg5 +_T0SryxGs17MutableCollectionslsABP9subscript7ElementQz5IndexQzcfgTWSS_Tg5 +_T0Sr9subscriptxSicfgSS_Tg5 +_T0SryxGs10CollectionslsABP5index5IndexQzAF_0C8DistanceQz8offsetBytFTWSS_Tg5 +_T0Sr5indexS2i_Si8offsetBytFSS_Tg5 +_T0SryxGs10CollectionslsABP8distance13IndexDistanceQz0C0Qz4from_AH2totFTWSS_Tg5 +_T0Sr8distanceS2i4from_Si2totFSS_Tg5 +_T0SryxGs23BidirectionalCollectionslsABP5index5IndexQzAF6before_tFTWSS_Tg5 +_T0Sr5indexS2i6before_tFSS_Tg5 +_T0SryxGs17MutableCollectionslsABP6swapAty5IndexQz_AFtFTWSS_Tg5 +_T0S2ayxGqd__c7ElementQyd__Rszs8SequenceRd__lufCTfq4gn_nSS_s10DictionaryV4KeysVySSSi_GTg5Tf4nd_n +_T0s32_copyCollectionToContiguousArrays0dE0Vy7ElementQzGxs0B0RzlFs10DictionaryV4KeysVySSSi_G_Tg5 +_T0s10DictionaryV4KeysVyxq__Gs14_IndexableBasess8HashableRzr0_lsAFP9formIndexy0G0Qzz5after_tFTWSS_SiTg5 +_T0s10_IndexablePsE9formIndexy0C0Qzz5after_tFs10DictionaryV4KeysVySSSi_G_Tg5 +_T0s10DictionaryV4KeysVyxq__Gs14_IndexableBasess8HashableRzr0_lsAFP5index5IndexQzAK5after_tFTWSS_SiTg5 +_T0s10DictionaryV4KeysV5indexAB5IndexVyxq__GAH5after_tFSS_SiTg5 +_T0s10DictionaryV4KeysV5indexAB5IndexVyxq__GAH5after_tFTfq4gn_nSS_SiTg5 +_T0s24_VariantDictionaryBufferO5indexs0B0V5IndexVyxq__GAH5after_tFTfq4gn_nSS_SiTg5 +_T0s10DictionaryV4KeysVyxq__Gs10Collectionss8HashableRzr0_lsAFP9subscript7ElementQz5IndexQzcfgTWSS_SiTg5 +_T0s10DictionaryV4KeysV9subscriptxAB5IndexVyxq__GcfgSS_SiTg5 +_T0s23_NativeDictionaryBufferV12assertingGetx3key_q_5valuets01_aB5IndexVyxq_GFSS_SiTg5 +_T0s10DictionaryV4KeysVyxq__Gs14_IndexableBasess8HashableRzr0_lsAFP10startIndex0G0QzfgTWSS_SiTg5 +_T0s10DictionaryV4KeysV10startIndexAB0D0Vyxq__GfgSS_SiTg5 +_T0s24_VariantDictionaryBufferO10startIndexs0B0V0E0Vyxq__GfgSS_SiTg5 +_T0s15ContiguousArrayVAByxGycfCSS_Tg5 +_T0s10DictionaryV4KeysVyxq__Gs10Collectionss8HashableRzr0_lsAFP5count13IndexDistanceQzfgTWSS_SiTg5 +_T0s10DictionaryV4KeysV5countSifgSS_SiTg5 +_T0s22_ContiguousArrayBufferVAByxGSi19_uninitializedCount_Si15minimumCapacitytcfCSS_Tg5Tf4nnd_n +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tF +update +_T0s10CollectionPsE3mapSayqd__Gqd__7ElementQzKcKlFTfq4gn_nSay6SQLite6SetterVG_AG11Expressible_pTg5 +_T0SayxGs10CollectionslsABP9subscript7ElementQz5IndexQzcfgTW6SQLite6SetterV_Tg5 +_T06SQLite9QueryTypePAAE6updateAA6UpdateVSayAA6SetterVGFAA11Expressible_pAHcfU_ +_T06SQLite10OnConflictOAA11Expressible_ps5Error_pIxyrzo_AcaD_psAE_pIxirzo_TR +_T0Say6SQLite11Expressible_pGAcA6SetterVA2Cs5Error_pIxxxioozo_AC7columns_AC6valuestAecG_AcHtsAF_pIxiirzo_TR +_T06SQLite9QueryTypePAAE6insert33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA6InsertVAA10OnConflictOSg_SayAA6SetterVGtFSayAA11Expressible_pG_AOtAO7columns_AO6valuest_ALtcfU_ +failableNext +row.get +columnCount.get +_T0Say6SQLite7Binding_pSgGAA3RowVSgs5Error_pIxxozo_AdGsAH_pIxirzo_TR +_T06SQLite11RowIteratorV12failableNextAA0B0VSgyKFAGSayAA7Binding_pSgGcfU_ +_T0S2ayxGqd__c7ElementQyd__Rszs8SequenceRd__lufCTfq4gn_n6SQLite7Binding_pSg_AE6CursorVTg5 +_copyToContiguousArray +_T0s17MutableCollectionPsE6swapAty5IndexQz_AEtFSrySSG_Tg5 +_T0SryxGs17MutableCollectionslsABP9subscript7ElementQz5IndexQzcfsTWSS_Tg5 +_T0Sr9subscriptxSicfsSS_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi8newCount_Si16requiredCapacitytFs01_aB0VySSG_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB4Impls011_ContiguousaB0Vy7ElementQzGSi08countForB0_Si14minNewCapacitySi08requiredO0tFs01_aB0VySSG_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi8newCount_Si16requiredCapacitytFAEySSG_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB4Impls011_ContiguousaB0Vy7ElementQzGSi08countForB0_Si14minNewCapacitySi08requiredO0tFAEySSG_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP8capacitySifgTWSS_Tg5 +_T0s22_ContiguousArrayBufferV8capacitySifgSS_Tg5 +_T0s20_ArrayBufferProtocolPsE019_outlinedMakeUniqueB0ySi11bufferCount_tFs011_ContiguousaB0VySSG_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP027requestUniqueMutableBackingC0ABy7ElementQzGSgSi15minimumCapacity_tFTWSS_Tg5 +_T0s22_ContiguousArrayBufferV027requestUniqueMutableBackingC0AByxGSgSi15minimumCapacity_tFSS_Tg5 +_T0SS13CharacterViewV9subscripts0A0VSS5IndexVcfgTfq4xn_n +_T0SS13CharacterViewV9subscriptABs5RangeVySS5IndexVGcfgTfq4xx_nTfq4nnxn_n +_T0s7UnicodeO6ScalarVADSgs6UInt16VcfCTfq4nd_n +_T0s7UnicodeO5UTF16O6decodes0A14DecodingResultOxzs16IteratorProtocolRzs6UInt16V7ElementRtzlFSS0A10ScalarViewV08_ScratchF0V_Tgq5 +_T0s26RangeReplaceableCollectionPsE6remove7ElementQz5IndexQz2at_tFs11_UIntBufferVys6UInt32Vs6UInt16VG_Tgq5 +_T0s9CharacterVABSS26_largeRepresentationString_tcfCTfq4gXd_n +_T0s11_StringCoreV12nativeBuffers01_aD0VSgfgAEyXlcfU_Tfq4g_nTfq4n_g +_T0SS13CharacterViewV21legacyGraphemeForwardSiSS5IndexV5start_AE3endSi0gF5UTF16tFTfq4xxnn_n +_T0s40_UnicodeGraphemeClusterBreakPropertyTrieV03getE8RawValues01_bcdehI0Vs6UInt32VF +_T0s9CharacterVABSScfCTfq4gXd_n +_T0s26RangeReplaceableCollectionPsE6appendyqd__10contentsOf_ts8SequenceRd__7ElementQyd__AFRtzlFs11_UIntBufferVys6UInt64Vs6UInt16VG_s11_StringCoreVTgq5Tfq4gXn_n +_T0SS17UnicodeScalarViewV9subscriptABs5RangeVySS5IndexVGcfgTfq4xn_n +_T0s11_StringCoreV9subscriptABs5RangeVySiGcfgTfq4xx_n +_T0SS13CharacterViewV42_measureExtendedGraphemeClusterForwardSlowS2i14relativeOffset_SS5IndexV5startAF3endSi0lK5UTF16tFTfq4nxxnn_n +_T0SS13CharacterViewV39_internalExtraCheckGraphemeBreakBetweenSbs6UInt16V_AEtFZTfq4nnd_n +_T0s2eeoiSbx_xts16RawRepresentableRzs9Equatable0B5ValueRpzlFTfq4gg_n6SQLite10OnConflictO_Tg5 +_T0s2eeoiSbx_xts16RawRepresentableRzs9Equatable0B5ValueRpzlFTfq4gg_n6SQLite8JoinTypeO_Tg5 +_T0s6_sort3yxz_5Indexs14_IndexableBasePQzA2Ets17MutableCollectionRzs012RandomAccessF0Rzs10Comparable7Elements8SequencePRpzlFSrySSG_Tg5 +_T0s23_NativeDictionaryBufferVss8HashableRzr0_lE12unsafeAddNewyx3key_q_5valuetFTfq4ggn_nSS_SiTg5 +_T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tFSS_Tg5 +_T0SS9hasSuffixSbSSFTfq4gXx_n +_T0Sr5countSifgs5UInt8V_Tgq5Tfq4x_n +_T0s11_StringCoreV11asciiBufferSrys5UInt8VGSgfgTfq4x_n +_T0s10CollectionPsE5splitSay11SubSequenceQzGSi9maxSplits_Sb25omittingEmptySubsequencesSb7ElementQzKc14whereSeparatortKFTfq4nngn_nSS13CharacterViewV_Tg505_T0s9M174VSbs5Error_pIxxdzo_ABSbsAC_pIxidzo_TR0118_T06SQLite10ConnectionC19columnNamesForQuery33_14CB4A30965D85E6DF5BEBC63D2EB0EALLs10DictionaryVySSSiGAA0F4Type_pKFSbs9A5VcfU_Tf3npf_nTf1nncn_n +_T0s10CollectionPsE5splitSay11SubSequenceQzGSi9maxSplits_Sb25omittingEmptySubsequencesSb7ElementQzKc14whereSeparatortKF17appendSubsequenceL_Sb5IndexQz3end_tsAARzlFTfq4ngngg_nSS13CharacterViewV_Tg5 +_T0SS13CharacterViewVs10CollectionssACP7isEmptySbfgTW +_T0s10CollectionPsE7isEmptySbfgSS13CharacterViewV_Tgq5 +_T0SS13CharacterViewVs10CollectionssACP9subscript7ElementQz5IndexQzcfgTW +_T0s9CharacterVSbs5Error_pIxxdzo_ABSbsAC_pIxidzo_TR0118_T06SQLite10ConnectionC19columnNamesForQuery33_14CB4A30965D85E6DF5BEBC63D2EB0EALLs10DictionaryVySSSiGAA0F4Type_pKFSbs9A5VcfU_Tf3npf_n +_T06SQLite10ConnectionC19columnNamesForQuery33_14CB4A30965D85E6DF5BEBC63D2EB0EALLs10DictionaryVySSSiGAA0F4Type_pKFSbs9CharacterVcfU_ +_T0s9_siftDownyxz_5Indexs14_IndexableBasePQz5indexs5RangeVyAEG03subG0ts17MutableCollectionRzs012RandomAccessJ0Rzs10Comparable7Elements8SequencePRpzlFTfq4nng_nSrySSG_Tg5 +_T0SryxGs17_MutableIndexableslsABP5index5IndexQzAF5after_tFTWSS_Tg5 +_T0Sr5indexS2i5after_tFSS_Tg5 +_T0s14_insertionSortyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subC0ts23BidirectionalCollectionRzs07MutableI0Rzs10Comparable7Elements8SequencePRpzlFTfq4ng_nSrySSG_Tg5 +_T0s9_heapSortyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subC0ts17MutableCollectionRzs012RandomAccessI0Rzs10Comparable7Elements8SequencePRpzlFTfq4ng_nSrySSG_Tg5 +_T0s8_heapifyyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subB0ts17MutableCollectionRzs012RandomAccessH0Rzs10Comparable7Elements8SequencePRpzlFTfq4ng_nSrySSG_Tg5 +_T0s14_introSortImplyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subD0Si10depthLimitts17MutableCollectionRzs012RandomAccessL0Rzs10Comparable7Elements8SequencePRpzlFTfq4ngn_nSrySSG_Tg5 +_T0s10_partition5Indexs14_IndexableBasePQzxz_s5RangeVyAEG03subE0ts17MutableCollectionRzs012RandomAccessH0Rzs10Comparable7Elements8SequencePRpzlFSrySSG_Tg5 +_T0s24_VariantDictionaryBufferO018ensureUniqueNativeC0Sb11reallocated_Sb15capacityChangedtSiFSS_SiTg5 +_T0s23_NativeDictionaryBufferVAByxq_GSi8capacity_s04_RawaB7StorageC7storagetcfCSS_SiTg5 +_T0s23_NativeDictionaryBufferVAByxq_GSi8capacity_s04_RawaB7StorageC7storagetcfCSS_SiTg5Tf4nnd_n +_T0s37_HashableTypedNativeDictionaryStorageCySSSiGMa +_T0Sa15reserveCapacityySiF6SQLite9QueryType_p_Tg5 +_T0s22_ContiguousArrayBufferV18_initStorageHeaderySi5count_Si8capacitytF6SQLite9QueryType_p_Tg5 +_T0s23_ContiguousArrayStorageCy6SQLite9QueryType_pGMa +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtFTfq4xnn_n6SQLite9QueryType_p_Tg5 +_T0s12_ArrayBufferV8endIndexSifg6SQLite9QueryType_p_Tg5 +_T0Sa9_getCountSiyF6SQLite9QueryType_p_Tg5 +_T0s12_ArrayBufferV20isUniquelyReferencedSbyF6SQLite9QueryType_p_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0VySS13CharacterViewVG_s07_IgnoreK0VyANGTg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subG0_AI12initializingtFTWSS13CharacterViewV_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFSS13CharacterViewV_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFTfq4xnn_nSS13CharacterViewV_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP19firstElementAddressSpy0E0QzGfgTWSS13CharacterViewV_Tg5 +_T0s12_ArrayBufferV19firstElementAddressSpyxGfgSS13CharacterViewV_Tg5 +_T0Sp10initializeySPyxG4from_Si5counttFSS13CharacterViewV_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8endIndexSifgTWSS13CharacterViewV_Tg5 +_T0s12_ArrayBufferV8endIndexSifgSS13CharacterViewV_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP027requestUniqueMutableBackingB0s011_ContiguousaB0Vy7ElementQzGSgSi15minimumCapacity_tFTWSS13CharacterViewV_Tg5 +_T0s12_ArrayBufferV027requestUniqueMutableBackingB0s011_ContiguousaB0VyxGSgSi15minimumCapacity_tFSS13CharacterViewV_Tg5 +_T0s12_ArrayBufferV20isUniquelyReferencedSbyFSS13CharacterViewV_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifgTWSS13CharacterViewV_Tg5 +_T0s12_ArrayBufferV5countSifgSS13CharacterViewV_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0VySSG_s31_InitializeMemoryFromCollectionVys05EmptyP0VySSGGTg5 +_T0s31_InitializeMemoryFromCollectionVyxGs16_PointerFunctionss0D0RzlsADP4callySpy7ElementQzG_Si5counttFTWs05EmptyD0VySSG_Tg5 +_T0s31_InitializeMemoryFromCollectionV4callySpy7ElementQzG_Si5counttFs05EmptyD0VySSG_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_nAEy6SQLite9QueryType_pG_s07_IgnoreK0VyAkL_pGTg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subH0_AI12initializingtFTW6SQLite9QueryType_p_Tg5 +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtF6SQLite9QueryType_p_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP19firstElementAddressSpy0F0QzGfgTW6SQLite9QueryType_p_Tg5 +_T0s22_ContiguousArrayBufferV19firstElementAddressSpyxGfg6SQLite9QueryType_p_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP8endIndexSifgTW6SQLite9QueryType_p_Tg5 +_T0s22_ContiguousArrayBufferV8endIndexSifg6SQLite9QueryType_p_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP027requestUniqueMutableBackingC0ABy7ElementQzGSgSi15minimumCapacity_tFTW6SQLite9QueryType_p_Tg5 +_T0s22_ContiguousArrayBufferV027requestUniqueMutableBackingC0AByxGSgSi15minimumCapacity_tF6SQLite9QueryType_p_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP5countSifgTW6SQLite9QueryType_p_Tg5 +_T0s22_ContiguousArrayBufferV5countSifg6SQLite9QueryType_p_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0Vy6SQLite8JoinTypeO4type_AM05QueryO0_p5queryAM11Expressible_p9conditiontG_s07_IgnoreK0VyAoP_AmQ_pArmS_pATtGTg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subG0_AI12initializingtFTW6SQLite8JoinTypeO4type_AO05QueryL0_p5queryAO11Expressible_p9conditiont_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtF6SQLite8JoinTypeO4type_AJ05QueryJ0_p5queryAJ11Expressible_p9conditiont_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFTfq4xnn_n6SQLite8JoinTypeO4type_AJ05QueryJ0_p5queryAJ11Expressible_p9conditiont_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP19firstElementAddressSpy0E0QzGfgTW6SQLite8JoinTypeO4type_AJ05QueryI0_p5queryAJ11Expressible_p9conditiont_Tg5 +_T0s12_ArrayBufferV19firstElementAddressSpyxGfg6SQLite8JoinTypeO4type_AE05QueryH0_p5queryAE11Expressible_p9conditiont_Tg5 +_T0Sp10initializeySPyxG4from_Si5counttF6SQLite8JoinTypeO4type_AE05QueryF0_p5queryAE11Expressible_p9conditiont_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8endIndexSifgTW6SQLite8JoinTypeO4type_AG05QueryH0_p5queryAG11Expressible_p9conditiont_Tg5 +_T0s12_ArrayBufferV8endIndexSifg6SQLite8JoinTypeO4type_AD05QueryG0_p5queryAD11Expressible_p9conditiont_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP027requestUniqueMutableBackingB0s011_ContiguousaB0Vy7ElementQzGSgSi15minimumCapacity_tFTW6SQLite8JoinTypeO4type_AN05QueryN0_p5queryAN11Expressible_p9conditiont_Tg5 +_T0s12_ArrayBufferV027requestUniqueMutableBackingB0s011_ContiguousaB0VyxGSgSi15minimumCapacity_tF6SQLite8JoinTypeO4type_AI05QueryL0_p5queryAI11Expressible_p9conditiont_Tg5 +_T0s12_ArrayBufferV20isUniquelyReferencedSbyF6SQLite8JoinTypeO4type_AD05QueryH0_p5queryAD11Expressible_p9conditiont_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifgTW6SQLite8JoinTypeO4type_AG05QueryG0_p5queryAG11Expressible_p9conditiont_Tg5 +_T0s12_ArrayBufferV5countSifg6SQLite8JoinTypeO4type_AD05QueryF0_p5queryAD11Expressible_p9conditiont_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0Vy6SQLite9QueryType_pG_s07_IgnoreK0VyAmN_pGTg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subG0_AI12initializingtFTW6SQLite9QueryType_p_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtF6SQLite9QueryType_p_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFTfq4xnn_n6SQLite9QueryType_p_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP19firstElementAddressSpy0E0QzGfgTW6SQLite9QueryType_p_Tg5 +_T0s12_ArrayBufferV19firstElementAddressSpyxGfg6SQLite9QueryType_p_Tg5 +_T0Sp10initializeySPyxG4from_Si5counttF6SQLite9QueryType_p_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8endIndexSifgTW6SQLite9QueryType_p_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP027requestUniqueMutableBackingB0s011_ContiguousaB0Vy7ElementQzGSgSi15minimumCapacity_tFTW6SQLite9QueryType_p_Tg5 +_T0s12_ArrayBufferV027requestUniqueMutableBackingB0s011_ContiguousaB0VyxGSgSi15minimumCapacity_tF6SQLite9QueryType_p_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifgTW6SQLite9QueryType_p_Tg5 +_T0s12_ArrayBufferV5countSifg6SQLite9QueryType_p_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_nAEySSG_s07_IgnoreK0VySSGTg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subH0_AI12initializingtFTWSS_Tg5 +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtFSS_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP19firstElementAddressSpy0F0QzGfgTWSS_Tg5 +_T0s22_ContiguousArrayBufferV19firstElementAddressSpyxGfgSS_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP8endIndexSifgTWSS_Tg5 +_T0s22_ContiguousArrayBufferV8endIndexSifgSS_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP5countSifgTWSS_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0VySS13CharacterViewVG_Tg5 +_T0s23_ContiguousArrayStorageCySS13CharacterViewVGMa +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8capacitySifgTWSS13CharacterViewV_Tg5 +_T0s12_ArrayBufferV8capacitySifgSS13CharacterViewV_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFAEy6SQLite9QueryType_pG_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP8capacitySifgTW6SQLite9QueryType_p_Tg5 +_T0s22_ContiguousArrayBufferV8capacitySifg6SQLite9QueryType_p_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vy6SQLite8JoinTypeO4type_AM05QueryQ0_p5queryAM11Expressible_p9conditiontG_Tg5 +_T0s23_ContiguousArrayStorageCy6SQLite8JoinTypeO4type_AC05QueryF0_p5queryAC11Expressible_p9conditiontGMa +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8capacitySifgTW6SQLite8JoinTypeO4type_AG05QueryG0_p5queryAG11Expressible_p9conditiont_Tg5 +_T0s12_ArrayBufferV8capacitySifg6SQLite8JoinTypeO4type_AD05QueryF0_p5queryAD11Expressible_p9conditiont_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vy6SQLite9QueryType_pG_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8capacitySifgTW6SQLite9QueryType_p_Tg5 +_T0s12_ArrayBufferV8capacitySifg6SQLite9QueryType_p_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFAEySSG_Tg5 +_T0s20_ArrayBufferProtocolPsE20_arrayAppendSequenceyqd__s0F0Rd__7ElementQyd__AERtzlFTfq4gn_ns01_aB0Vy6SQLite9QueryType_pG_s08IteratorF0Vys08IndexingK0VySayAjK_pGGGTg5 +_T0s16IteratorSequenceVyxGs0A8ProtocolssADRzlsADP4next7ElementQzSgyFTWs08IndexingA0VySay6SQLite9QueryType_pGG_Tg5 +_T0s16IteratorSequenceV4next7ElementQzSgyFs08IndexingA0VySay6SQLite9QueryType_pGG_Tg5 +_T0s16IndexingIteratorVyxGs0B8Protocolss14_IndexableBaseRzlsADP4next7ElementQzSgyFTWSay6SQLite9QueryType_pG_Tg5 +_T0SayxGs14_IndexableBaseslsABP9formIndexy0D0Qzz5after_tFTW6SQLite9QueryType_p_Tg5 +_T0Sa9formIndexySiz5after_tF6SQLite9QueryType_p_Tg5 +_T0SayxGs14_IndexableBaseslsABP9subscript7ElementQz5IndexQzcfgTW6SQLite9QueryType_p_Tg5 +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtF6SQLite05QueryG0_p_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tF6SQLite05QueryG0_p_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifsTW6SQLite9QueryType_p_Tg5 +_T0s12_ArrayBufferV5countSifs6SQLite9QueryType_p_Tg5 +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktF6SQLite05QueryE0_p_Tg5 +_T0SayxGs14_IndexableBaseslsABP8endIndex0D0QzfgTW6SQLite9QueryType_p_Tg5 +_T0Sa8endIndexSifg6SQLite9QueryType_p_Tg5 +_T0s16IteratorSequenceVyxGs0B0ss0A8ProtocolRzlsADP04makeA00A0QzyFTWs08IndexingA0VySay6SQLite9QueryType_pGG_Tg5 +_T0s17MutableCollectionPssAARzs012RandomAccessB0Rzs10Comparable7Elements8SequencePRpzlE4sortyyFs15ContiguousArrayVySSG_Tg5 +_T0s15ContiguousArrayVyxGs17MutableCollectionslsADP011_withUnsafeC24BufferPointerIfSupportedqd__Sgqd__Spy7ElementQzG_SitKcKlFTWSS_ytTg5 +_T0s15ContiguousArrayV42_withUnsafeMutableBufferPointerIfSupportedqd__Sgqd__SpyxG_SitKcKlFSS_ytTg5 +_T0s15ContiguousArrayV30withUnsafeMutableBufferPointerqd__qd__SryxGzKcKlFSS_ytTg5 +_T0s15ContiguousArrayV30withUnsafeMutableBufferPointerqd__qd__SryxGzKcKlF6$deferL_yyr__lFSS_ytTg5 +_T0s15ContiguousArrayV42_withUnsafeMutableBufferPointerIfSupportedqd__Sgqd__SpyxG_SitKcKlFqd__SryxGzKcfU_SS_ytTg5 +_T0Spy7Elements8SequencePQzGSis5Error_pIxyyzo_AESiytsAF_pIxyyrzo_s17MutableCollectionRzs012RandomAccessE0Rzs10ComparableADRQlTRs15ContiguousArrayVySSG_Tg5 +_T0s17MutableCollectionPssAARzs012RandomAccessB0Rzs10Comparable7Elements8SequencePRpzlE4sortyyFySpyAHG_SitcfU_s15ContiguousArrayVySSG_Tg5 +_T0s17MutableCollectionPssAARzs012RandomAccessB0Rzs10Comparable7Elements8SequencePRpzlE4sortyyFSrySSG_Tg5 +_T0SryxGs17_MutableIndexableslsABP8endIndex0D0QzfgTWSS_Tg5 +_T0Sr8endIndexSifgSS_Tg5 +_T0s10_introSortyxz_s5RangeVy5Indexs14_IndexableBasePQzG03subC0ts17MutableCollectionRzs012RandomAccessI0Rzs10Comparable7Elements8SequencePRpzlFTfq4ng_nSrySSG_Tg5 +_T0S2ryxGSpyxGSg5start_Si5counttcfCSS_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFTfq4ngn_n +_T0s12_ArrayBufferV5countSifs +_T0Sa16_copyToNewBufferySi8oldCount_tF6SQLite9QueryType_p_Tg5 +_T0s15ContiguousArrayV15reserveCapacityySiF6SQLite9QueryType_p_Tg5 +_T0s15ContiguousArrayV9_getCountSiyF6SQLite9QueryType_p_Tg5 +_T0s8SequencePssAARzs14StringProtocol7ElementRpzlE7_joinedS2S9separator_tFSiycfU_SaySSG_Tg5 +_T0s10CollectionPsE5count13IndexDistanceQzfgSS9UTF16ViewV_Tgq5 +_T0s7UnicodeO5UTF16O16transcodedLengthSi5count_Sb7isASCIItSgx2of_q_m9decodedAsSb27repairingIllFormedSequencests16IteratorProtocolRzs01_A8EncodingR_8CodeUnitQy_7ElementRtzr0_lFZs11_UIntBufferV0O0Vys6UInt64Vs6UInt16V_G_ADTgq5Tfq4xnnd_n +_T0s13_StringBufferV13fromCodeUnitsABSg_Sb8hadErrortx_q_m8encodingSb24repairIllFormedSequencesSi15minimumCapacityts8SequenceRzs16_UnicodeEncodingR_0D4UnitQy_7ElementRtzr0_lFZs05_UIntB0Vys6UInt64Vs6UInt16VG_s0P0O5UTF16OTgq5Tfq4xnnnd_n +_T0s8SequencePsE8containsS2b7ElementQzKc5where_tKFSRys6UInt16VG_Tgq505_T0s6E37VSbs5Error_pIxydzo_ABSbsAC_pIxidzo_TRAHSbs0H0_pIxydzo_Tfq1cn_nTfq4ng_n +_T0s11_StringCoreV13_copyElementsySv_Si15srcElementWidthSv8dstStartSi0hfG0Si5counttFZTfq4nnnnnd_n +_T06SQLite10ConnectionC3runSiAA6UpdateVKFSiyKcfU_ +_T06SQLite10ConnectionC3runSiAA6DeleteVKFSiyKcfU_ +_T06SQLite10ConnectionC3runs5Int64VAA6InsertVKFAFyKcfU_ +pluck +limit +_T0S3iSgs5Error_pIxyddzo_S2i6length_AA6offsettsAB_pIxirzo_TR +_T06SQLite9QueryTypePAAE5limit33_14CB4A30965D85E6DF5BEBC63D2EB0EALLxSiSg_AFtFSi_AFtSicfU_ +prepareRowIterator +_T06SQLite10ConnectionC7prepares11AnySequenceVyAA3RowVGAA9QueryType_pKFs0D8IteratorVyAHGycfU_AHSgycfU_ +_T06SQLite10ConnectionC7prepares11AnySequenceVyAA3RowVGAA9QueryType_pKFs0D8IteratorVyAHGycfU_AHSgycfU_Tf4gg_n +_T0Say6SQLite7Binding_pSgGAA3RowVs5Error_pIxxozo_AdFsAG_pIxirzo_TR +_T06SQLite10ConnectionC7prepares11AnySequenceVyAA3RowVGAA9QueryType_pKFs0D8IteratorVyAHGycfU_AHSgycfU_AHSayAA7Binding_pSgGcfU_ +columnNamesForQuery +_T0s10CollectionPsE3mapSayqd__Gqd__7ElementQzKcKlFTfq4gn_nSay6SQLite8JoinTypeO4type_AG05QueryF0_p5queryAG11Expressible_p9conditiontG_AgK_pTg5 +_T0s15ContiguousArrayV6appendyxF6SQLite9QueryType_p_Tg5 +_T0s15ContiguousArrayV36_reserveCapacityAssumingUniqueBufferySi8oldCount_tF6SQLite9QueryType_p_Tg5 +_T0SayxGs10CollectionslsABP9subscript7ElementQz5IndexQzcfgTW6SQLite8JoinTypeO4type_AI05QueryG0_p5queryAI11Expressible_p9conditiont_Tg5 +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtF6SQLite04JoinG0O4type_AE05QueryG0_p5queryAE11Expressible_p9conditiont_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tF6SQLite04JoinG0O4type_AE05QueryG0_p5queryAE11Expressible_p9conditiont_Tg5 +removeLast +_T0SayxGs26RangeReplaceableCollectionslsABP6remove7ElementQz5IndexQz2at_tFTWSS_Tg5 +_T0Sa6removexSi2at_tFSS_Tg5 +_T0s10CollectionPsE3mapSayqd__Gqd__7ElementQzKcKlFTfq4gn_nSaySS13CharacterViewVG_SSTg5 +_T0SayxGs10CollectionslsABP9subscript7ElementQz5IndexQzcfgTWSS13CharacterViewV_Tg5 +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtFSS13CharacterViewV_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tFSS13CharacterViewV_Tg5 +_T06SQLite10ConnectionC19columnNamesForQuery33_14CB4A30965D85E6DF5BEBC63D2EB0EALLs10DictionaryVySSSiGAA0F4Type_pKF10expandGlobL_yAaI_pKcSbFyAaI_pKcfU_ +expandGlob +_T0Sa9_getCountSiyF6SQLite8JoinTypeO4type_AB05QueryE0_p5queryAB11Expressible_p9conditiont_Tg5 +_T0SS7isEmptySbfgTfq4x_n +_T0SayxGs26RangeReplaceableCollectionslsABP6appendyqd__10contentsOf_ts8SequenceRd__7ElementQyd__AGRtzlFTW6SQLite9QueryType_p_SayAjK_pGTg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZ6SQLite9QueryType_p_Tg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZTfq4gnn_n6SQLite9QueryType_p_Tg5 +_T0s15ContiguousArrayV37_appendElementAssumeUniqueAndCapacityySi_x03newD0tF6SQLite9QueryType_p_Tg5 +_T0s15ContiguousArrayV37_appendElementAssumeUniqueAndCapacityySi_x03newD0tFTfq4ngn_n6SQLite9QueryType_p_Tg5 +_T0s15ContiguousArrayV034_makeUniqueAndReserveCapacityIfNotD0yyF6SQLite9QueryType_p_Tg5 +_T06SQLite8JoinTypeOAA05QueryC0_pAA11Expressible_pAaD_ps5Error_pIxyiirzo_AC4type_AaD_p5queryAaE_p9conditiontAaD_psAF_pIxirzo_TR +_T06SQLite10ConnectionC19columnNamesForQuery33_14CB4A30965D85E6DF5BEBC63D2EB0EALLs10DictionaryVySSSiGAA0F4Type_pKFAaI_pAA04JoinQ0O4type_AaI_p5queryAA11Expressible_p9conditiontcfU0_ +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktF6SQLite04JoinE0O4type_AF05QueryE0_p5queryAF11Expressible_p9conditiont_Tg5 +_T0SayxGs10CollectionslsABP5count13IndexDistanceQzfgTW6SQLite8JoinTypeO4type_AG05QueryG0_p5queryAG11Expressible_p9conditiont_Tg5 +_T0Sa15replaceSubrangeys5RangeVySiG_qd__4witht7ElementQyd__Rszs10CollectionRd__lFSS_s05EmptyF0VySSGTg5 +_T0Sa15replaceSubrangeys5RangeVySiG_qd__4witht7ElementQyd__Rszs10CollectionRd__lFTfq4xnn_nSS_s05EmptyF0VySSGTg5 +_T0SayxGs23BidirectionalCollectionslsABP5index5IndexQzAF6before_tFTWSS_Tg5 +_T0Sa5indexS2i6before_tFSS_Tg5 +_T0SayxGs10CollectionslsABP7isEmptySbfgTWSS_Tg5 +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktFSS13CharacterViewV_Tg5 +_T0SayxGs10CollectionslsABP5count13IndexDistanceQzfgTWSS13CharacterViewV_Tg5 +clauses.get +identifier.get +globalinit_33_14CB4A30965D85E6DF5BEBC63D2EB0EA_func16 +globalinit_33_14CB4A30965D85E6DF5BEBC63D2EB0EA_func15 +globalinit_33_14CB4A30965D85E6DF5BEBC63D2EB0EA_func14 +_T06SQLite9QueryTypePAAE6insert33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA6InsertVAA10OnConflictOSg_SayAA6SetterVGtFAA11Expressible_pSgAOcfU1_ +exists.get +delete +_T06SQLite9QueryTypePAAE6insert33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA6InsertVAA10OnConflictOSg_SayAA6SetterVGtFAA11Expressible_pAIcfU0_ +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZ6SQLite6SetterV_Tg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZTfq4gnn_n6SQLite6SetterV_Tg5 +alias +unionClause.get +_T0s10CollectionPsE3mapSayqd__Gqd__7ElementQzKcKlFTfq4gn_nSay6SQLite9QueryType_pG_AG11Expressible_pTg5 +_T0SayxGs10CollectionslsABP9subscript7ElementQz5IndexQzcfgTW6SQLite9QueryType_p_Tg5 +_T06SQLite9QueryTypePAAE11unionClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAaF_pAaB_pcfU_ +_T0SayxGs10CollectionslsABP5count13IndexDistanceQzfgTW6SQLite9QueryType_p_Tg5 +limitOffsetClause.get +orderClause.get +groupByClause.get +whereClause.get +_T06SQLite9QueryTypePAAE10joinClause33_14CB4A30965D85E6DF5BEBC63D2EB0EALLAA11Expressible_pSgfgAaF_pAA04JoinC0O4type_AaB_p5queryAaF_p9conditiontcfU_ +joinClause.get +_T0s10CollectionPsE3mapSayqd__Gqd__7ElementQzKcKlFTfq4gn_nSay6SQLite8JoinTypeO4type_AG05QueryF0_p5queryAG11Expressible_p9conditiontG_AgM_pTg5 +_T06SQLite8JoinTypeOAA05QueryC0_pAA11Expressible_pAaE_ps5Error_pIxyiirzo_AC4type_AaD_p5queryAaE_p9conditiontAaE_psAF_pIxirzo_TR +_T0SayxGs14_IndexableBaseslsABP8endIndex0D0QzfgTW6SQLite8JoinTypeO4type_AG05QueryG0_p5queryAG11Expressible_p9conditiont_Tg5 +_T0Sa8endIndexSifg6SQLite8JoinTypeO4type_AB05QueryE0_p5queryAB11Expressible_p9conditiont_Tg5 +_T0SayxGs14_IndexableBaseslsABP9formIndexy0D0Qzz5after_tFTW6SQLite8JoinTypeO4type_AH05QueryH0_p5queryAH11Expressible_p9conditiont_Tg5 +_T0Sa9formIndexySiz5after_tF6SQLite8JoinTypeO4type_AC05QueryF0_p5queryAC11Expressible_p9conditiont_Tg5 +selectClause.get +group +where +_T0Sa36_reserveCapacityAssumingUniqueBufferySi8oldCount_tF6SQLite8JoinTypeO4type_AC05QueryJ0_p5queryAC11Expressible_p9conditiont_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tF6SQLite8JoinTypeO4type_AC05QueryJ0_p5queryAC11Expressible_p9conditiont_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFTfq4ngn_n6SQLite8JoinTypeO4type_AC05QueryJ0_p5queryAC11Expressible_p9conditiont_Tg5 +_T0s12_ArrayBufferV5countSifs6SQLite8JoinTypeO4type_AD05QueryF0_p5queryAD11Expressible_p9conditiont_Tg5 +_T0Sa034_makeUniqueAndReserveCapacityIfNotB0yyF6SQLite8JoinTypeO4type_AB05QueryJ0_p5queryAB11Expressible_p9conditiont_Tg5 +_T06SQLite10ExpressionVySbSgGAA11Expressible_ps5Error_pIxxrzo_AeaF_psAG_pIxirzo_TR +_T06SQLite10ExpressionVySbSgGAEIxxo_AeA11Expressible_ps5Error_pIxxrzo_TR +_T06SQLite9QueryTypePAAE4joinxAA04JoinC0O_AaB_pAA10ExpressionVySbSgG2ontFA2JcfU_ +union +_T0Sa36_reserveCapacityAssumingUniqueBufferySi8oldCount_tF6SQLite9QueryType_p_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tF6SQLite9QueryType_p_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFTfq4ngn_n6SQLite9QueryType_p_Tg5 +_T0Sa034_makeUniqueAndReserveCapacityIfNotB0yyF6SQLite9QueryType_p_Tg5 +count +database +tableName +_T06SQLite9QueryTypePAAE9tableNameAA11Expressible_pSb9qualified_tFSSyKXKfu_ +_T06SQLite9QueryTypePAAE9tableNameAA11Expressible_pSb5alias_tFSSyKXKfu_ +_T0Sa24reserveCapacityForAppendySi16newElementsCount_tF6SQLite9QueryType_p_Tg5 +_T0Sr5countSifg6SQLite9QueryType_p_Tg5 +_T0SayxGs8SequenceslsABP13_copyContents8IteratorQz_SitSry7ElementQzG12initializing_tFTW6SQLite9QueryType_p_Tg5 +_T0Sa13_copyContentss16IndexingIteratorVySayxGG_SitSryxG12initializing_tF6SQLite9QueryType_p_Tg5 +_T0Sa12_getCapacitySiyF6SQLite9QueryType_p_Tg5 +_T0SayxGs8SequenceslsABP19underestimatedCountSifgTW6SQLite9QueryType_p_Tg5 +_T0s10CollectionPsE19underestimatedCountSifgSay6SQLite9QueryType_pG_Tg5 +_T06SQLite3RowV3getxSgAA10ExpressionVyAEGKAA5ValueRzlFSbSScfU_ +__T06SQLite9StatementC11columnCountSifmytfU_ +__T06SQLite9StatementC11columnNamesSaySSGfmytfU_ +__T06SQLite9StatementC3rowAA6CursorVfmytfU_ +__T06SQLite9StatementC4bind33_BBABA35034D0672F50B2547BC77385B8LLyAA7Binding_pSg_Si7atIndextF +__T06SQLite9StatementC4stepSbyKFSbyKcfU_ +__T06SQLite9StatementCs8SequenceAAsADP12makeIterator0E0QzyFTW +__T06SQLite9StatementCs8SequenceAAsADP19underestimatedCountSifgTW +__T06SQLite9StatementCs8SequenceAAsADP3mapSayqd__Gqd__7ElementQzKcKlFTW +__T06SQLite9StatementCs8SequenceAAsADP6filterSay7ElementQzGSbAHKcKFTW +__T06SQLite9StatementCs8SequenceAAsADP7forEachyy7ElementQzKcKFTW +__T06SQLite9StatementCs8SequenceAAsADP9dropFirst03SubC0QzSiFTW +__T0s8SequencePssAARz03SubA0_7ElementQZADRtzsAaCRpzAC_ACQZAGRSlE9dropFirsts03AnyA0VyAFGSiF6SQLite9StatementC_Tg5 +__T0s8SequencePssAARz03SubA0_7ElementQZADRtzsAaCRpzAC_ACQZAGRSlE9dropFirsts03AnyA0VyAFGSiF6SQLite6CursorV_Tg5 +__T06SQLite9StatementCs8SequenceAAsADP8dropLast03SubC0QzSiFTW +__T0s8SequencePssAARz03SubA0_7ElementQZADRtzsAaCRpzAC_ACQZAGRSlE8dropLasts03AnyA0VyAFGSiF6SQLite9StatementC_Tg5 +__T0s8SequencePssAARz03SubA0_7ElementQZADRtzsAaCRpzAC_ACQZAGRSlE8dropLasts03AnyA0VyAFGSiF6SQLite6CursorV_Tg5 +__T06SQLite9StatementCs8SequenceAAsADP4drop03SubC0QzSb7ElementQzKc5while_tKFTW +__T06SQLite9StatementCs8SequenceAAsADP6prefix03SubC0QzSiFTW +__T0s8SequencePssAARz03SubA0_7ElementQZADRtzsAaCRpzAC_ACQZAGRSlE6prefixs03AnyA0VyAFGSiF6SQLite9StatementC_Tg5 +__T0s8SequencePssAARz03SubA0_7ElementQZADRtzsAaCRpzAC_ACQZAGRSlE6prefixs03AnyA0VyAFGSiF6SQLite6CursorV_Tg5 +__T06SQLite9StatementCs8SequenceAAsADP6prefix03SubC0QzSb7ElementQzKc5while_tKFTW +__T06SQLite9StatementCs8SequenceAAsADP6suffix03SubC0QzSiFTW +__T0s8SequencePsE6suffixs03AnyA0Vy7ElementQzGSiF6SQLite9StatementC_Tg5 +__T0s8SequencePsE6suffixs03AnyA0Vy7ElementQzGSiF6SQLite6CursorV_Tg5 +__T06SQLite9StatementCs8SequenceAAsADP5splitSay03SubC0QzGSi9maxSplits_Sb25omittingEmptySubsequencesSb7ElementQzKc14whereSeparatortKFTW +__T06SQLite9StatementCs8SequenceAAsADP31_customContainsEquatableElementSbSg0G0QzFTW +__T06SQLite9StatementCs8SequenceAAsADP18_preprocessingPassqd__Sgqd__yKcKlFTW +__T06SQLite9StatementCs8SequenceAAsADP22_copyToContiguousArrays0fG0Vy7ElementQzGyFTW +__T06SQLite9StatementCs8SequenceAAsADP13_copyContents8IteratorQz_SitSry7ElementQzG12initializing_tFTW +__T0s8SequencePsE13_copyContents8IteratorQz_SitSry7ElementQzG12initializing_tF6SQLite6CursorV_Tg5 +__T0s8SequencePsE13_copyContents8IteratorQz_SitSry7ElementQzG12initializing_tF6SQLite9StatementC_Tg5 +__T06SQLite9StatementCAA16FailableIteratorA2aDP12failableNext7ElementQzSgyKFTW +__T06SQLite9StatementCs16IteratorProtocolAAsADP4next7ElementQzSgyFTW +__T06SQLite9StatementCs23CustomStringConvertibleAAsADP11descriptionSSfgTW +__T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_ +__T06SQLite6CursorVs8SequenceAAsADP12makeIterator0E0QzyFTW +__T06SQLite6CursorVs8SequenceAAsADP19underestimatedCountSifgTW +__T06SQLite6CursorVs8SequenceAAsADP3mapSayqd__Gqd__7ElementQzKcKlFTW +__T06SQLite6CursorVs8SequenceAAsADP6filterSay7ElementQzGSbAHKcKFTW +__T06SQLite6CursorVs8SequenceAAsADP7forEachyy7ElementQzKcKFTW +__T06SQLite6CursorVs8SequenceAAsADP9dropFirst03SubC0QzSiFTW +__T06SQLite6CursorVs8SequenceAAsADP8dropLast03SubC0QzSiFTW +__T06SQLite6CursorVs8SequenceAAsADP4drop03SubC0QzSb7ElementQzKc5while_tKFTW +__T06SQLite6CursorVs8SequenceAAsADP6prefix03SubC0QzSiFTW +__T06SQLite6CursorVs8SequenceAAsADP6prefix03SubC0QzSb7ElementQzKc5while_tKFTW +__T06SQLite6CursorVs8SequenceAAsADP4drop03SubC0QzSb7ElementQzKc5while_tKFTWTm +__T06SQLite6CursorVs8SequenceAAsADP6suffix03SubC0QzSiFTW +__T06SQLite6CursorVs8SequenceAAsADP5splitSay03SubC0QzGSi9maxSplits_Sb25omittingEmptySubsequencesSb7ElementQzKc14whereSeparatortKFTW +__T06SQLite6CursorVs8SequenceAAsADP31_customContainsEquatableElementSbSg0G0QzFTW +__T06SQLite6CursorVs8SequenceAAsADP18_preprocessingPassqd__Sgqd__yKcKlFTW +__T06SQLite6CursorVs8SequenceAAsADP22_copyToContiguousArrays0fG0Vy7ElementQzGyFTW +__T06SQLite6CursorVs8SequenceAAsADP13_copyContents8IteratorQz_SitSry7ElementQzG12initializing_tFTW +__T0s18DictionaryIteratorV11_nativeNextx3key_q_5valuetSgyFSS_6SQLite7Binding_pSgTg5 +__T0Sa16_copyToNewBufferySi8oldCount_tFSay6SQLite7Binding_pSgG_Tg5 +__T0Sa16_copyToNewBufferySi8oldCount_tFs11AnySequenceVySay6SQLite7Binding_pSgGG_Tg5 +__T0Sa16_copyToNewBufferySi8oldCount_tF6SQLite7Binding_pSg_Tg5 +__T0Sa16_copyToNewBufferySi8oldCount_tFs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +__T0Sa16_copyToNewBufferySi8oldCount_tFSay6SQLite7Binding_pSgG_Tg5Tm +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFAEy6SQLite7Binding_pSgG_Tg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFAEySay6SQLite7Binding_pSgGG_Tg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0VySay6SQLite7Binding_pSgGG_Tg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vys11AnySequenceVySay6SQLite7Binding_pSgGGG_Tg5 +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vys11AnySequenceVy6SQLite7Binding_pSgGG_Tg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_nAEy6SQLite7Binding_pSgG_s07_IgnoreK0VyAMGTg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_nAEySay6SQLite7Binding_pSgGG_s07_IgnoreK0VyANGTg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0VySay6SQLite7Binding_pSgGG_s07_IgnoreK0VyAPGTg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0Vys11AnySequenceVy6SQLite7Binding_pSgGG_s07_IgnoreK0VyARGTg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_n +__T0Sa15reserveCapacityySiFSay6SQLite7Binding_pSgG_Tg5 +__T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tFSay6SQLite7Binding_pSgG_Tg5 +__T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tF6SQLite7Binding_pSg_Tg5Tm +__T0s8SequencePsE6filterSay7ElementQzGSbAEKcKFTfq4gn_n6SQLite9StatementC_Tg5 +__T0s8SequencePsE6filterSay7ElementQzGSbAEKcKFTfq4gn_n6SQLite6CursorV_Tg5 +__T0s8SequencePsE7forEachyy7ElementQzKcKFTfq4gn_n6SQLite9StatementC_Tg5 +__T0s8SequencePsE7forEachyy7ElementQzKcKFTfq4gn_n6SQLite6CursorV_Tg5 +__T0s8SequencePssAARz03SubA0_7ElementQZADRtzsAaCRpzAC_ACQZAGRSlE4drops03AnyA0VyAFGSbAFKc5while_tKFTfq4gn_n6SQLite6CursorV_Tg5 +__T0s18_DropWhileSequenceVAByxGx8iterator_7ElementQzSg04nextE0SbAFKc9predicatetKcfCs11AnyIteratorVy6SQLite7Binding_pSgG_Tg5 +__T0s8SequencePssAARz03SubA0_7ElementQZADRtzsAaCRpzAC_ACQZAGRSlE6prefixs03AnyA0VyAFGSbAFKc5while_tKFTfq4gn_n6SQLite9StatementC_Tg5 +__T0s8SequencePssAARz03SubA0_7ElementQZADRtzsAaCRpzAC_ACQZAGRSlE6prefixs03AnyA0VyAFGSbAFKc5while_tKFTfq4gn_n6SQLite6CursorV_Tg5 +__T0s8SequencePsE5splitSays03AnyA0Vy7ElementQzGGSi9maxSplits_Sb25omittingEmptySubsequencesSbAGKc14whereSeparatortKFTfq4nngn_n6SQLite9StatementC_Tg5 +__T0s8SequencePsE5splitSays03AnyA0Vy7ElementQzGGSi9maxSplits_Sb25omittingEmptySubsequencesSbAGKc14whereSeparatortKFTfq4nngn_n6SQLite6CursorV_Tg5 +__T0s8SequencePsE5splitSays03AnyA0Vy7ElementQzGGSi9maxSplits_Sb25omittingEmptySubsequencesSbAGKc14whereSeparatortKF17appendSubsequenceL_SbysAARzlFTfq4gng_n6SQLite9StatementC_Tg5 +__T0s8SequencePsE5splitSays03AnyA0Vy7ElementQzGGSi9maxSplits_Sb25omittingEmptySubsequencesSbAGKc14whereSeparatortKF17appendSubsequenceL_SbysAARzlFTfq4gng_n6SQLite6CursorV_Tg5 +__T0s8SequencePsE5splitSays03AnyA0Vy7ElementQzGGSi9maxSplits_Sb25omittingEmptySubsequencesSbAGKc14whereSeparatortKF17appendSubsequenceL_SbysAARzlFTfq4gng_n6SQLite9StatementC_Tg5Tm +__T0s30_copySequenceToContiguousArrays0dE0Vy7ElementQzGxs0B0RzlFTfq4g_n6SQLite9StatementC_Tg5 +__T06SQLite9StatementC4stepSbyKFSbyKcfU_TA +__T0Sbs5Error_pIxdzo_SbsAA_pIxrzo_TRTA +__T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA +__T0s12_IteratorBoxCys013_ClosureBasedA0Vy6SQLite7Binding_pSgGGMa +__T06SQLite7Binding_pSgMa +__T06SQLite7Binding_pMa +__T0Say6SQLite7Binding_pSgGMa +__T0s11AnySequenceVySay6SQLite7Binding_pSgGGMa +__T0s11AnyIteratorVy6SQLite7Binding_pSgGMa +__T0s11AnySequenceVy6SQLite7Binding_pSgGMa +__T0Say6SQLite7Binding_pSgGMaTm +__T0s11AnyIteratorVy6SQLite7Binding_pSgGAByxGs0B8ProtocolslWl +___swift_memcpy_array8_4 +__T06SQLite6CursorVwxs +__T06SQLite6CursorVwxg +__T0s12_SequenceBoxCySay6SQLite7Binding_pSgGGMa +__T0s12_SequenceBoxCys30FlattenBidirectionalCollectionVySays10ArraySliceVy6SQLite7Binding_pSgGGGGMa +__T0s30FlattenBidirectionalCollectionVySays10ArraySliceVy6SQLite7Binding_pSgGGGMa +_swift_rt_swift_isUniquelyReferencedOrPinned_nonNull_native +__T0Sa11_copyBufferys06_ArrayB0VyxGzFZSay6SQLite7Binding_pSgG_Tg5Tf4nd_n +__T0s22_ContiguousArrayBufferVAByxGSi19_uninitializedCount_Si15minimumCapacitytcfC6SQLite7Binding_pSg_Tg5Tf4nnd_n +__T0Sa11_copyBufferys06_ArrayB0VyxGzFZ6SQLite7Binding_pSg_Tg5Tf4nd_n +_swift_rt_swift_tryPin +_swift_rt_swift_unpin +__T0s15_PrefixSequenceVys11AnyIteratorVy6SQLite7Binding_pSgGGMa +__T0s11AnySequenceVy6SQLite7Binding_pSgGAByxGs0B0slWl +__T0s18_DropWhileSequenceVys11AnyIteratorVy6SQLite7Binding_pSgGGMa +__T0s15_PrefixSequenceVys11AnyIteratorVy6SQLite7Binding_pSgGGMaTm +__T0s18_DropFirstSequenceVys11AnyIteratorVy6SQLite7Binding_pSgGGMa +__T0s23_ContiguousArrayStorageCySay6SQLite7Binding_pSgGGMa +__T0s12_SequenceBoxCySaySay6SQLite7Binding_pSgGGGMa +__T0s10ArraySliceVySay6SQLite7Binding_pSgGGMa +__T0s11AnyIteratorVy6SQLite7Binding_pSgGAByxGs0B8ProtocolslWlTm +__T0s12_SequenceBoxCys30FlattenBidirectionalCollectionVySays10ArraySliceVySay6SQLite7Binding_pSgGGGGGMa +__T0s30FlattenBidirectionalCollectionVySays10ArraySliceVySay6SQLite7Binding_pSgGGGGMa +__T0s12_SequenceBoxCys07_PrefixA0Vy6SQLite9StatementCGGMa +__T0s11AnySequenceVySay6SQLite7Binding_pSgGGAByxGs0B0slWl +__T0s12_SequenceBoxCys15EmptyCollectionVySay6SQLite7Binding_pSgGGGMa +__T0s18_DropWhileSequenceVAByxGx8iterator_7ElementQzSg04nextE0SbAFKc9predicatetKcfC6SQLite9StatementC_Tg5Tf4nnnd_n +__T0s12_SequenceBoxCys010_DropWhileA0Vy6SQLite9StatementCGGMa +__T0s12_SequenceBoxCys010_DropFirstA0Vy6SQLite9StatementCGGMa +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0Vys11AnySequenceVySay6SQLite7Binding_pSgGGG_s07_IgnoreK0VyASGTg5 +__T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA.24 +__T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA.35 +__T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA.44 +__T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA.49 +__T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA.54 +__T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA.59 +__T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA.64 +__T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA.69 +__T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA.74 +__T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA.79 +__T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA.88 +__T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA.105 +__T0s12_IteratorBoxCys013_ClosureBasedA0Vy6SQLite7Binding_pSgGGML +__T0s21_ClosureBasedIteratorVy6SQLite7Binding_pSgGML +__T0s21_ClosureBasedIteratorVy6SQLite7Binding_pSgGAByxGs0C8ProtocolslWL +__T0s11AnySequenceVySay6SQLite7Binding_pSgGGML +__T0s11AnyIteratorVy6SQLite7Binding_pSgGML +__T0s11AnySequenceVy6SQLite7Binding_pSgGML +__T0s11AnyIteratorVy6SQLite7Binding_pSgGAByxGs0B8ProtocolslWL +__T06SQLite9StatementC6handle33_BBABA35034D0672F50B2547BC77385B8LLs13OpaquePointerVSgvWvd +__T06SQLite9StatementC10connection33_BBABA35034D0672F50B2547BC77385B8LLAA10ConnectionCvWvd +__T06SQLite9StatementC0024columnCountstorage_wnAHf33_BBABA35034D0672F50B2547BC77385B8LLSiSgvWvd +__T06SQLite9StatementC0024columnNamesstorage_wnAHf33_BBABA35034D0672F50B2547BC77385B8LLSaySSGSgvWvd +__T06SQLite9StatementC0016rowstorage_cCJAc33_BBABA35034D0672F50B2547BC77385B8LLAA6CursorVSgvWvd +__T06SQLite9StatementCML +__T06SQLite9StatementCMf +__T06SQLite9StatementCMF +__T06SQLite16FailableIterator_pMF +__T06SQLite6CursorVWV +__T06SQLite6CursorVMf +__T06SQLite6CursorVMF +__T0SaySSGSgML +__T06SQLite6CursorVSgML +__T0s12_SequenceBoxCySay6SQLite7Binding_pSgGGML +__T0Say6SQLite7Binding_pSgGSayxGs8SequenceslWL +__T0s10ArraySliceVy6SQLite7Binding_pSgGAByxGs8SequenceslWL +__T0s10ArraySliceVy6SQLite7Binding_pSgGML +__T0s23_ContiguousArrayStorageCys11AnySequenceVy6SQLite7Binding_pSgGGML +__T0s23_ContiguousArrayStorageCys0B5SliceVy6SQLite7Binding_pSgGGML +__T0s12_SequenceBoxCys30FlattenBidirectionalCollectionVySays10ArraySliceVy6SQLite7Binding_pSgGGGGML +__T0s30FlattenBidirectionalCollectionVySays10ArraySliceVy6SQLite7Binding_pSgGGGML +__T0Says10ArraySliceVy6SQLite7Binding_pSgGGML +__T0Says10ArraySliceVy6SQLite7Binding_pSgGGSayxGs23BidirectionalCollectionslWL +__T0s10ArraySliceVy6SQLite7Binding_pSgGAByxGs23BidirectionalCollectionslWL +__T0s30FlattenBidirectionalCollectionVySays10ArraySliceVy6SQLite7Binding_pSgGGGAByxGs8Sequencess0bC0RzsAM7ElementRpzlWL +__T0s18BidirectionalSliceVys07FlattenA10CollectionVySays05ArrayB0Vy6SQLite7Binding_pSgGGGGAByxGs8Sequencess01_A9IndexableRzlWL +__T0s18BidirectionalSliceVys07FlattenA10CollectionVySays05ArrayB0Vy6SQLite7Binding_pSgGGGGML +__T0s30FlattenBidirectionalCollectionVySays10ArraySliceVy6SQLite7Binding_pSgGGGAByxGs01_B9Indexabless0bC0RzsAM7ElementRpzlWL +__T0s12_SequenceBoxCys07_PrefixA0Vys11AnyIteratorVy6SQLite7Binding_pSgGGGML +__T0s15_PrefixSequenceVys11AnyIteratorVy6SQLite7Binding_pSgGGML +__T0s15_PrefixSequenceVys11AnyIteratorVy6SQLite7Binding_pSgGGAByxGs0B0ss0D8ProtocolRzlWL +__T0s11AnySequenceVy6SQLite7Binding_pSgGAByxGs0B0slWL +__T0s12_SequenceBoxCys15EmptyCollectionVy6SQLite7Binding_pSgGGML +__T0s15EmptyCollectionVy6SQLite7Binding_pSgGML +__T0s15EmptyCollectionVy6SQLite7Binding_pSgGAByxGs8SequenceslWL +__T0s12_SequenceBoxCys010_DropWhileA0Vys11AnyIteratorVy6SQLite7Binding_pSgGGGML +__T0s18_DropWhileSequenceVys11AnyIteratorVy6SQLite7Binding_pSgGGML +__T0s18_DropWhileSequenceVys11AnyIteratorVy6SQLite7Binding_pSgGGAByxGs0C0ss0E8ProtocolRzlWL +__T0s19_AnyIteratorBoxBaseCy6SQLite7Binding_pSgGML +__T0s12_SequenceBoxCy6SQLite6CursorVGML +__T0s12_SequenceBoxCys010_DropFirstA0Vys11AnyIteratorVy6SQLite7Binding_pSgGGGML +__T0s18_DropFirstSequenceVys11AnyIteratorVy6SQLite7Binding_pSgGGML +__T0s18_DropFirstSequenceVys11AnyIteratorVy6SQLite7Binding_pSgGGAByxGs0C0ss0E8ProtocolRzlWL +__T0s23_ContiguousArrayStorageCySay6SQLite7Binding_pSgGGML +__T0s12_SequenceBoxCySaySay6SQLite7Binding_pSgGGGML +__T0SaySay6SQLite7Binding_pSgGGML +__T0SaySay6SQLite7Binding_pSgGGSayxGs8SequenceslWL +__T0s10ArraySliceVySay6SQLite7Binding_pSgGGAByxGs8SequenceslWL +__T0s10ArraySliceVySay6SQLite7Binding_pSgGGML +__T0s23_ContiguousArrayStorageCys11AnySequenceVySay6SQLite7Binding_pSgGGGML +__T0s23_ContiguousArrayStorageCys0B5SliceVySay6SQLite7Binding_pSgGGGML +__T0s12_SequenceBoxCys30FlattenBidirectionalCollectionVySays10ArraySliceVySay6SQLite7Binding_pSgGGGGGML +__T0s30FlattenBidirectionalCollectionVySays10ArraySliceVySay6SQLite7Binding_pSgGGGGML +__T0Says10ArraySliceVySay6SQLite7Binding_pSgGGGML +__T0Says10ArraySliceVySay6SQLite7Binding_pSgGGGSayxGs23BidirectionalCollectionslWL +__T0s10ArraySliceVySay6SQLite7Binding_pSgGGAByxGs23BidirectionalCollectionslWL +__T0s30FlattenBidirectionalCollectionVySays10ArraySliceVySay6SQLite7Binding_pSgGGGGAByxGs8Sequencess0bC0RzsAN7ElementRpzlWL +__T0s18BidirectionalSliceVys07FlattenA10CollectionVySays05ArrayB0VySay6SQLite7Binding_pSgGGGGGAByxGs8Sequencess01_A9IndexableRzlWL +__T0s18BidirectionalSliceVys07FlattenA10CollectionVySays05ArrayB0VySay6SQLite7Binding_pSgGGGGGML +__T0s30FlattenBidirectionalCollectionVySays10ArraySliceVySay6SQLite7Binding_pSgGGGGAByxGs01_B9Indexabless0bC0RzsAN7ElementRpzlWL +__T0s12_SequenceBoxCys07_PrefixA0Vy6SQLite9StatementCGGML +__T0s15_PrefixSequenceVy6SQLite9StatementCGML +__T0s15_PrefixSequenceVy6SQLite9StatementCGAByxGs0B0ss16IteratorProtocolRzlWL +__T0s11AnySequenceVySay6SQLite7Binding_pSgGGAByxGs0B0slWL +__T0s12_SequenceBoxCys15EmptyCollectionVySay6SQLite7Binding_pSgGGGML +__T0s15EmptyCollectionVySay6SQLite7Binding_pSgGGML +__T0s15EmptyCollectionVySay6SQLite7Binding_pSgGGAByxGs8SequenceslWL +__T0s12_SequenceBoxCys010_DropWhileA0Vy6SQLite9StatementCGGML +__T0s18_DropWhileSequenceVy6SQLite9StatementCGML +__T0s18_DropWhileSequenceVy6SQLite9StatementCGAByxGs0C0ss16IteratorProtocolRzlWL +__T0s12_SequenceBoxCy6SQLite9StatementCGML +__T0s12_SequenceBoxCys010_DropFirstA0Vy6SQLite9StatementCGGML +__T0s18_DropFirstSequenceVy6SQLite9StatementCGML +__T0s18_DropFirstSequenceVy6SQLite9StatementCGAByxGs0C0ss16IteratorProtocolRzlWL +__T06SQLite9StatementCs8SequenceAAMA +__T06SQLite9StatementCs16IteratorProtocolAAMA +__T06SQLite6CursorVs8SequenceAAMA +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Statement.swift +objectdestroy.103 +Statement.swift +_T0s12_SequenceBoxCys010_DropFirstA0Vy6SQLite9StatementCGGMa +_T0s18_DropFirstSequenceVy6SQLite9StatementCGAByxGs0C0ss16IteratorProtocolRzlWl +_T0s18_DropFirstSequenceVy6SQLite9StatementCGMa +_T06SQLite9StatementCMa +_T0s12_SequenceBoxCys010_DropWhileA0Vy6SQLite9StatementCGGMa +_T0s18_DropWhileSequenceVy6SQLite9StatementCGAByxGs0C0ss16IteratorProtocolRzlWl +_T0s18_DropWhileSequenceVy6SQLite9StatementCGMa +_T0s18_DropWhileSequenceVAByxGx8iterator_7ElementQzSg04nextE0SbAFKc9predicatetKcfC6SQLite9StatementC_Tg5Tf4nnnd_n +_T0s12_SequenceBoxCys15EmptyCollectionVySay6SQLite7Binding_pSgGGGMa +_T0s15EmptyCollectionVySay6SQLite7Binding_pSgGGAByxGs8SequenceslWl +_T0s15EmptyCollectionVySay6SQLite7Binding_pSgGGMa +_T0s11AnySequenceVySay6SQLite7Binding_pSgGGAByxGs0B0slWl +_T0s11AnySequenceVySay6SQLite7Binding_pSgGGMa +_T0s12_SequenceBoxCys07_PrefixA0Vy6SQLite9StatementCGGMa +_T0s15_PrefixSequenceVy6SQLite9StatementCGAByxGs0B0ss16IteratorProtocolRzlWl +_T0s15_PrefixSequenceVy6SQLite9StatementCGMa +_T0s30FlattenBidirectionalCollectionVySays10ArraySliceVySay6SQLite7Binding_pSgGGGGMa +_T0s10ArraySliceVySay6SQLite7Binding_pSgGGAByxGs23BidirectionalCollectionslWl +_T0Says10ArraySliceVySay6SQLite7Binding_pSgGGGSayxGs23BidirectionalCollectionslWl +_T0Says10ArraySliceVySay6SQLite7Binding_pSgGGGMa +_T0s12_SequenceBoxCys30FlattenBidirectionalCollectionVySays10ArraySliceVySay6SQLite7Binding_pSgGGGGGMa +_T0s18BidirectionalSliceVys07FlattenA10CollectionVySays05ArrayB0VySay6SQLite7Binding_pSgGGGGGAByxGs8Sequencess01_A9IndexableRzlWl +_T0s18BidirectionalSliceVys07FlattenA10CollectionVySays05ArrayB0VySay6SQLite7Binding_pSgGGGGGMa +_T0s30FlattenBidirectionalCollectionVySays10ArraySliceVySay6SQLite7Binding_pSgGGGGAByxGs01_B9Indexabless0bC0RzsAN7ElementRpzlWl +_T0s30FlattenBidirectionalCollectionVySays10ArraySliceVySay6SQLite7Binding_pSgGGGGAByxGs8Sequencess0bC0RzsAN7ElementRpzlWl +_T0s11AnyIteratorVy6SQLite7Binding_pSgGAByxGs0B8ProtocolslWl +_T0s11AnyIteratorVy6SQLite7Binding_pSgGMa +_T0s12_SequenceBoxCySaySay6SQLite7Binding_pSgGGGMa +_T0s10ArraySliceVySay6SQLite7Binding_pSgGGAByxGs8SequenceslWl +_T0SaySay6SQLite7Binding_pSgGGSayxGs8SequenceslWl +_T0SaySay6SQLite7Binding_pSgGGMa +_T0s15_PrefixSequenceVys11AnyIteratorVy6SQLite7Binding_pSgGGMa +_T0Sa11_copyBufferys06_ArrayB0VyxGzFZ6SQLite7Binding_pSg_Tg5Tf4nd_n +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFTfq4xnn_n6SQLite7Binding_pSg_Tg5 +_T0Sp10initializeySPyxG4from_Si5counttF6SQLite7Binding_pSg_Tg5 +_T0s22RandomAccessCollectionPssAARzs10Strideable5IndexRpzAD_6StrideQZ0E8DistanceRtzs14CountableRangeVyAEG7IndicesRtzlE7indicesALfgs12_ArrayBufferVy6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferVyxGs14_IndexableBaseslsADP8endIndex0F0QzfgTW6SQLite7Binding_pSg_Tg5 +_T0s12_ArrayBufferV8endIndexSifg6SQLite7Binding_pSg_Tg5 +_T0s22_ContiguousArrayBufferVAByxGSi19_uninitializedCount_Si15minimumCapacitytcfC6SQLite7Binding_pSg_Tg5 +_T0s22_ContiguousArrayBufferVAByxGSi19_uninitializedCount_Si15minimumCapacitytcfC6SQLite7Binding_pSg_Tg5Tf4nnd_n +_T0Sa11_copyBufferys06_ArrayB0VyxGzFZSay6SQLite7Binding_pSgG_Tg5Tf4nd_n +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFTfq4xnn_nSay6SQLite7Binding_pSgG_Tg5 +_T0Sp10initializeySPyxG4from_Si5counttFSay6SQLite7Binding_pSgG_Tg5 +_T0s22_ContiguousArrayBufferVAByxGSi19_uninitializedCount_Si15minimumCapacitytcfCSay6SQLite7Binding_pSgG_Tg5 +_T0s22_ContiguousArrayBufferVAByxGSi19_uninitializedCount_Si15minimumCapacitytcfCSay6SQLite7Binding_pSgG_Tg5Tf4nnd_n +_T0s30FlattenBidirectionalCollectionVySays10ArraySliceVy6SQLite7Binding_pSgGGGMa +_T0s10ArraySliceVy6SQLite7Binding_pSgGAByxGs23BidirectionalCollectionslWl +_T0s10ArraySliceVy6SQLite7Binding_pSgGMa +_T0Says10ArraySliceVy6SQLite7Binding_pSgGGSayxGs23BidirectionalCollectionslWl +_T0Says10ArraySliceVy6SQLite7Binding_pSgGGMa +_T0s12_SequenceBoxCys30FlattenBidirectionalCollectionVySays10ArraySliceVy6SQLite7Binding_pSgGGGGMa +_T0s18BidirectionalSliceVys07FlattenA10CollectionVySays05ArrayB0Vy6SQLite7Binding_pSgGGGGAByxGs8Sequencess01_A9IndexableRzlWl +_T0s18BidirectionalSliceVys07FlattenA10CollectionVySays05ArrayB0Vy6SQLite7Binding_pSgGGGGMa +_T0s30FlattenBidirectionalCollectionVySays10ArraySliceVy6SQLite7Binding_pSgGGGAByxGs01_B9Indexabless0bC0RzsAM7ElementRpzlWl +_T0s30FlattenBidirectionalCollectionVySays10ArraySliceVy6SQLite7Binding_pSgGGGAByxGs8Sequencess0bC0RzsAM7ElementRpzlWl +_T0s12_SequenceBoxCySay6SQLite7Binding_pSgGGMa +_T0s10ArraySliceVy6SQLite7Binding_pSgGAByxGs8SequenceslWl +_T0Say6SQLite7Binding_pSgGSayxGs8SequenceslWl +_T06SQLite6CursorVMa +get_field_types_Cursor +_T06SQLite6CursorVwxg +_T06SQLite6CursorVwxs +__swift_memcpy_array8_4 +get_field_types_Statement +_T06SQLite6CursorVSgMa +_T0SaySSGSgMa +_T06SQLite6CursorVs8SequenceAAWa +_T06SQLite9StatementCs23CustomStringConvertibleAAWa +_T06SQLite9StatementCAA16FailableIteratorAAWa +_T06SQLite9StatementCs8SequenceAAWa +_T06SQLite9StatementCs16IteratorProtocolAAWa +_T0s12_IteratorBoxCys013_ClosureBasedA0Vy6SQLite7Binding_pSgGGMa +_T0s21_ClosureBasedIteratorVy6SQLite7Binding_pSgGAByxGs0C8ProtocolslWl +_T0s21_ClosureBasedIteratorVy6SQLite7Binding_pSgGMa +_T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA +_T0s32_copyCollectionToContiguousArrays0dE0Vy7ElementQzGxs0B0RzlFSRys5UInt8VG_Tg5Tf4x_n +_T0Sbs5Error_pIxdzo_SbsAA_pIxrzo_TRTA +_T0Sbs5Error_pIxdzo_SbsAA_pIxrzo_TR +_T06SQLite9StatementC4stepSbyKFSbyKcfU_TA +makeIterator +_T0s23_NativeDictionaryBufferV5indexs01_aB5IndexVyxq_GAF5after_tFSS_6SQLite7Binding_pSgTg5 +reset +_T0s30_copySequenceToContiguousArrays0dE0Vy7ElementQzGxs0B0RzlFTfq4g_n6SQLite9StatementC_Tg5 +_T0s30_copySequenceToContiguousArrays0dE0Vy7ElementQzGxs0B0RzlFTfq4g_n6SQLite6CursorV_Tg5 +_T0s12_IteratorBoxCfDs013_ClosureBasedA0Vy6SQLite7Binding_pSgG_Tg5 +_T0s11AnyIteratorVyxGs0B8ProtocolslsADP4next7ElementQzSgyFTW6SQLite7Binding_pSg_Tg5 +_T0s11AnyIteratorV4nextxSgyF6SQLite7Binding_pSg_Tg5 +_T0s12_IteratorBoxC4next7ElementQzSgyFs013_ClosureBasedA0Vy6SQLite7Binding_pSgG_Tg5 +_T0s21_ClosureBasedIteratorVyxGs0C8ProtocolslsADP4next7ElementQzSgyFTW6SQLite7Binding_pSg_Tg5 +_T0s21_ClosureBasedIteratorV4nextxSgyF6SQLite7Binding_pSg_Tg5 +_T0s8SequencePsE5splitSays03AnyA0Vy7ElementQzGGSi9maxSplits_Sb25omittingEmptySubsequencesSbAGKc14whereSeparatortKF17appendSubsequenceL_SbysAARzlFTfq4gng_n6SQLite9StatementC_Tg5 +_T0Sa36_reserveCapacityAssumingUniqueBufferySi8oldCount_tFs11AnySequenceVySay6SQLite7Binding_pSgGG_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFs11AnySequenceVySay6SQLite7Binding_pSgGG_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFTfq4ngn_ns11AnySequenceVySay6SQLite7Binding_pSgGG_Tg5 +_T0s12_ArrayBufferV5countSifss11AnySequenceVySay6SQLite7Binding_pSgGG_Tg5 +_T0Sa9_getCountSiyFs11AnySequenceVySay6SQLite7Binding_pSgGG_Tg5 +_T0Sa034_makeUniqueAndReserveCapacityIfNotB0yyFs11AnySequenceVySay6SQLite7Binding_pSgGG_Tg5 +_T0Sa9_getCountSiyFSay6SQLite7Binding_pSgG_Tg5 +_T0s8SequencePsE5splitSays03AnyA0Vy7ElementQzGGSi9maxSplits_Sb25omittingEmptySubsequencesSbAGKc14whereSeparatortKFTfq4nngn_n6SQLite6CursorV_Tg5 +_T0Sa36_reserveCapacityAssumingUniqueBufferySi8oldCount_tFs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0Sa36_reserveCapacityAssumingUniqueBufferySi8oldCount_tF6SQLite7Binding_pSg_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tF6SQLite7Binding_pSg_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFTfq4ngn_n6SQLite7Binding_pSg_Tg5 +_T0Sa034_makeUniqueAndReserveCapacityIfNotB0yyF6SQLite7Binding_pSg_Tg5 +_T0Sa9_getCountSiyFs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFTfq4ngn_ns11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV5countSifss11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0Sa034_makeUniqueAndReserveCapacityIfNotB0yyFs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s8SequencePsE5splitSays03AnyA0Vy7ElementQzGGSi9maxSplits_Sb25omittingEmptySubsequencesSbAGKc14whereSeparatortKFTfq4nngn_n6SQLite9StatementC_Tg5 +_T0Sa36_reserveCapacityAssumingUniqueBufferySi8oldCount_tFSay6SQLite7Binding_pSgG_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFSay6SQLite7Binding_pSgG_Tg5 +_T0Sa37_appendElementAssumeUniqueAndCapacityySi_x03newB0tFTfq4ngn_nSay6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV5countSifsSay6SQLite7Binding_pSgG_Tg5 +_T0Sa034_makeUniqueAndReserveCapacityIfNotB0yyFSay6SQLite7Binding_pSgG_Tg5 +_T0s8SequencePssAARz03SubA0_7ElementQZADRtzsAaCRpzAC_ACQZAGRSlE6prefixs03AnyA0VyAFGSbAFKc5while_tKFTfq4gn_n6SQLite6CursorV_Tg5 +_T0s8SequencePssAARz03SubA0_7ElementQZADRtzsAaCRpzAC_ACQZAGRSlE6prefixs03AnyA0VyAFGSbAFKc5while_tKFTfq4gn_n6SQLite9StatementC_Tg5 +_T0s18_DropWhileSequenceVAByxGx8iterator_7ElementQzSg04nextE0SbAFKc9predicatetKcfCs11AnyIteratorVy6SQLite7Binding_pSgG_Tg5 +_T0s19_AnyIteratorBoxBaseC4nextxSgyF6SQLite7Binding_pSg_Tg5 +_T0s19_AnyIteratorBoxBaseCy6SQLite7Binding_pSgGMa +_T0s8SequencePssAARz03SubA0_7ElementQZADRtzsAaCRpzAC_ACQZAGRSlE4drops03AnyA0VyAFGSbAFKc5while_tKFTfq4gn_n6SQLite6CursorV_Tg5 +_T0s12_SequenceBoxCys010_DropWhileA0Vys11AnyIteratorVy6SQLite7Binding_pSgGGGMa +_T0s18_DropWhileSequenceVys11AnyIteratorVy6SQLite7Binding_pSgGGAByxGs0C0ss0E8ProtocolRzlWl +_T0s8SequencePsE7forEachyy7ElementQzKcKFTfq4gn_n6SQLite6CursorV_Tg5 +_T0s8SequencePsE7forEachyy7ElementQzKcKFTfq4gn_n6SQLite9StatementC_Tg5 +_T0s8SequencePsE6filterSay7ElementQzGSbAEKcKFTfq4gn_n6SQLite6CursorV_Tg5 +_T0s8SequencePsE6filterSay7ElementQzGSbAEKcKFTfq4gn_n6SQLite9StatementC_Tg5 +_T0s15ContiguousArrayV6appendyxFSay6SQLite7Binding_pSgG_Tg5 +_T0s15ContiguousArrayV36_reserveCapacityAssumingUniqueBufferySi8oldCount_tFSay6SQLite7Binding_pSgG_Tg5 +_T0s15ContiguousArrayV37_appendElementAssumeUniqueAndCapacityySi_x03newD0tFSay6SQLite7Binding_pSgG_Tg5 +_T0s15ContiguousArrayV37_appendElementAssumeUniqueAndCapacityySi_x03newD0tFTfq4ngn_nSay6SQLite7Binding_pSgG_Tg5 +_T0s15ContiguousArrayV9_getCountSiyFSay6SQLite7Binding_pSgG_Tg5 +_T0s15ContiguousArrayV034_makeUniqueAndReserveCapacityIfNotD0yyFSay6SQLite7Binding_pSgG_Tg5 +_T0s22_ContiguousArrayBufferV5countSifgSay6SQLite7Binding_pSgG_Tg5 +_T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tF6SQLite7Binding_pSg_Tg5 +_T0s13_StringBufferV13fromCodeUnitsABSg_Sb8hadErrortx_q_m8encodingSb24repairIllFormedSequencesSi15minimumCapacityts8SequenceRzs16_UnicodeEncodingR_0D4UnitQy_7ElementRtzr0_lFZSRys5UInt8VG_s0P0O4UTF8OTgq5Tfq4xnnnd_n +_T0Sa15reserveCapacityySiFSay6SQLite7Binding_pSgG_Tg5 +_T0s22_ContiguousArrayBufferV18_initStorageHeaderySi5count_Si8capacitytFSay6SQLite7Binding_pSgG_Tg5 +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtFTfq4xnn_nSay6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV8endIndexSifgSay6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV20isUniquelyReferencedSbyFSay6SQLite7Binding_pSgG_Tg5 +_T0Sa15reserveCapacityySiF6SQLite7Binding_pSg_Tg5 +_T0s22_ContiguousArrayBufferV18_initStorageHeaderySi5count_Si8capacitytF6SQLite7Binding_pSg_Tg5 +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtFTfq4xnn_n6SQLite7Binding_pSg_Tg5 +_T0s12_ArrayBufferV20isUniquelyReferencedSbyF6SQLite7Binding_pSg_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_n +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0Vys11AnySequenceVy6SQLite7Binding_pSgGG_s07_IgnoreK0VyARGTg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subG0_AI12initializingtFTWs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFTfq4xnn_ns11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP19firstElementAddressSpy0E0QzGfgTWs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV19firstElementAddressSpyxGfgs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0Sp10initializeySPyxG4from_Si5counttFs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8endIndexSifgTWs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV8endIndexSifgs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP027requestUniqueMutableBackingB0s011_ContiguousaB0Vy7ElementQzGSgSi15minimumCapacity_tFTWs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV027requestUniqueMutableBackingB0s011_ContiguousaB0VyxGSgSi15minimumCapacity_tFs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV20isUniquelyReferencedSbyFs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifgTWs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV5countSifgs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0VySay6SQLite7Binding_pSgGG_s07_IgnoreK0VyAPGTg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subG0_AI12initializingtFTWSay6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtFSay6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP19firstElementAddressSpy0E0QzGfgTWSay6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV19firstElementAddressSpyxGfgSay6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8endIndexSifgTWSay6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP027requestUniqueMutableBackingB0s011_ContiguousaB0Vy7ElementQzGSgSi15minimumCapacity_tFTWSay6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV027requestUniqueMutableBackingB0s011_ContiguousaB0VyxGSgSi15minimumCapacity_tFSay6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP5countSifgTWSay6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV5countSifgSay6SQLite7Binding_pSgG_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_nAEySay6SQLite7Binding_pSgGG_s07_IgnoreK0VyANGTg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subH0_AI12initializingtFTWSay6SQLite7Binding_pSgG_Tg5 +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtFSay6SQLite7Binding_pSgG_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP19firstElementAddressSpy0F0QzGfgTWSay6SQLite7Binding_pSgG_Tg5 +_T0s22_ContiguousArrayBufferV19firstElementAddressSpyxGfgSay6SQLite7Binding_pSgG_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP8endIndexSifgTWSay6SQLite7Binding_pSgG_Tg5 +_T0s22_ContiguousArrayBufferV8endIndexSifgSay6SQLite7Binding_pSgG_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP027requestUniqueMutableBackingC0ABy7ElementQzGSgSi15minimumCapacity_tFTWSay6SQLite7Binding_pSgG_Tg5 +_T0s22_ContiguousArrayBufferV027requestUniqueMutableBackingC0AByxGSgSi15minimumCapacity_tFSay6SQLite7Binding_pSgG_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP5countSifgTWSay6SQLite7Binding_pSgG_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_nAEy6SQLite7Binding_pSgG_s07_IgnoreK0VyAMGTg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subH0_AI12initializingtFTW6SQLite7Binding_pSg_Tg5 +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtF6SQLite7Binding_pSg_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP19firstElementAddressSpy0F0QzGfgTW6SQLite7Binding_pSg_Tg5 +_T0s22_ContiguousArrayBufferV19firstElementAddressSpyxGfg6SQLite7Binding_pSg_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP8endIndexSifgTW6SQLite7Binding_pSg_Tg5 +_T0s22_ContiguousArrayBufferV8endIndexSifg6SQLite7Binding_pSg_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP027requestUniqueMutableBackingC0ABy7ElementQzGSgSi15minimumCapacity_tFTW6SQLite7Binding_pSg_Tg5 +_T0s22_ContiguousArrayBufferV027requestUniqueMutableBackingC0AByxGSgSi15minimumCapacity_tF6SQLite7Binding_pSg_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP5countSifgTW6SQLite7Binding_pSg_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_ns01_aB0Vy6SQLite7Binding_pSgG_s07_IgnoreK0VyAOGTg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subG0_AI12initializingtFTW6SQLite7Binding_pSg_Tg5 +_T0s12_ArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subE0_AD12initializingtF6SQLite7Binding_pSg_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8endIndexSifgTW6SQLite7Binding_pSg_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP027requestUniqueMutableBackingB0s011_ContiguousaB0Vy7ElementQzGSgSi15minimumCapacity_tFTW6SQLite7Binding_pSg_Tg5 +_T0s12_ArrayBufferV027requestUniqueMutableBackingB0s011_ContiguousaB0VyxGSgSi15minimumCapacity_tF6SQLite7Binding_pSg_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vys11AnySequenceVy6SQLite7Binding_pSgGG_Tg5 +_T0s23_ContiguousArrayStorageCys11AnySequenceVy6SQLite7Binding_pSgGGMa +_T0s11AnySequenceVy6SQLite7Binding_pSgGMa +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8capacitySifgTWs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV8capacitySifgs11AnySequenceVy6SQLite7Binding_pSgG_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vys11AnySequenceVySay6SQLite7Binding_pSgGGG_Tg5 +_T0s23_ContiguousArrayStorageCys11AnySequenceVySay6SQLite7Binding_pSgGGGMa +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8capacitySifgTWs11AnySequenceVySay6SQLite7Binding_pSgGG_Tg5 +_T0s12_ArrayBufferV8capacitySifgs11AnySequenceVySay6SQLite7Binding_pSgGG_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0VySay6SQLite7Binding_pSgGG_Tg5 +_T0s12_ArrayBufferVyxGs01_aB8ProtocolslsADP8capacitySifgTWSay6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV8capacitySifgSay6SQLite7Binding_pSgG_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFAEySay6SQLite7Binding_pSgGG_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP8capacitySifgTWSay6SQLite7Binding_pSgG_Tg5 +_T0s22_ContiguousArrayBufferV8capacitySifgSay6SQLite7Binding_pSgG_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFAEy6SQLite7Binding_pSgG_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP8capacitySifgTW6SQLite7Binding_pSg_Tg5 +_T0s22_ContiguousArrayBufferV8capacitySifg6SQLite7Binding_pSg_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFs01_aB0Vy6SQLite7Binding_pSgG_Tg5 +_T0Sa16_copyToNewBufferySi8oldCount_tFSay6SQLite7Binding_pSgG_Tg5 +_T0s18DictionaryIteratorV11_nativeNextx3key_q_5valuetSgyFSS_6SQLite7Binding_pSgTg5 +_copyContents +_preprocessingPass +_customContainsEquatableElement +split +suffix +dropLast +dropFirst +forEach +underestimatedCount.get +_T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_ +_T0Sr5countSifgSay6SQLite7Binding_pSgG_Tg5 +_T0Sr5countSifgSay6SQLite7Binding_pSgG_Tg5Tf4x_n +_T0Sr5countSifg6SQLite7Binding_pSg_Tg5Tf4x_n +_T0s12_ArrayBufferV9subscripts06_SliceB0VyxGs5RangeVySiGcfgTfq4xn_n6SQLite7Binding_pSg_Tg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZs0D5SliceVy6SQLite7Binding_pSgG_Tg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZTfq4gnn_ns0D5SliceVy6SQLite7Binding_pSgG_Tg5 +_T0s23_ContiguousArrayStorageCys0B5SliceVy6SQLite7Binding_pSgGGMa +_T0Sa11_checkIndexySiF6SQLite7Binding_pSg_Tg5 +_T0Sa18_getElementAddressSpyxGSiF6SQLite7Binding_pSg_Tg5 +_T0Sa29_makeMutableAndUniqueOrPinnedyyF6SQLite7Binding_pSg_Tg5 +_T0Sa11_copyBufferys06_ArrayB0VyxGzFZ6SQLite7Binding_pSg_Tg5 +_T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA.44 +_T0Sa15_checkSubscripts16_DependenceTokenVSi_Sb20wasNativeTypeCheckedtFSay6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV37_checkInoutAndNativeTypeCheckedBoundsySi_Sb03wasfgH0tFSay6SQLite7Binding_pSgG_Tg5 +_T0s12_ArrayBufferV9subscripts06_SliceB0VyxGs5RangeVySiGcfgTfq4xn_nSay6SQLite7Binding_pSgG_Tg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZs0D5SliceVySay6SQLite7Binding_pSgGG_Tg5 +_T0Sa13_adoptStorageSayxG_SpyxGts016_ContiguousArrayB0CyxG_Si5counttFZTfq4gnn_ns0D5SliceVySay6SQLite7Binding_pSgGG_Tg5 +_T0s23_ContiguousArrayStorageCys0B5SliceVySay6SQLite7Binding_pSgGGGMa +_T0Sa11_checkIndexySiFSay6SQLite7Binding_pSgG_Tg5 +_T0Sa18_getElementAddressSpyxGSiFSay6SQLite7Binding_pSgG_Tg5 +_T0Sa29_makeMutableAndUniqueOrPinnedyyFSay6SQLite7Binding_pSgG_Tg5 +_T0Sa11_copyBufferys06_ArrayB0VyxGzFZSay6SQLite7Binding_pSgG_Tg5 +_T0s12_SequenceBoxCys07_PrefixA0Vys11AnyIteratorVy6SQLite7Binding_pSgGGGMa +_T0s15_PrefixSequenceVys11AnyIteratorVy6SQLite7Binding_pSgGGAByxGs0B0ss0D8ProtocolRzlWl +_T0s12_SequenceBoxCys15EmptyCollectionVy6SQLite7Binding_pSgGGMa +_T0s15EmptyCollectionVy6SQLite7Binding_pSgGAByxGs8SequenceslWl +_T0s15EmptyCollectionVy6SQLite7Binding_pSgGMa +_T0s8SequencePssAARz03SubA0_7ElementQZADRtzsAaCRpzAC_ACQZAGRSlE4drops03AnyA0VyAFGSbAFKc5while_tKFTfq4gn_n6SQLite9StatementC_Tg5 +_T0s18_DropWhileSequenceVAByxGx8iterator_7ElementQzSg04nextE0SbAFKc9predicatetKcfC6SQLite9StatementC_Tg5 +_T06SQLite6CursorV12makeIterators03AnyD0VyAA7Binding_pSgGyFAHSgycfU_TA.64 +_T0s12_SequenceBoxCy6SQLite6CursorVGMa +_T0Sa11_getElementxSi_Sb20wasNativeTypeCheckeds16_DependenceTokenV22matchingSubscriptChecktFSay6SQLite7Binding_pSgG_Tg5 +_T0s12_SequenceBoxCy6SQLite9StatementCGMa +_T0s12_SequenceBoxCys010_DropFirstA0Vys11AnyIteratorVy6SQLite7Binding_pSgGGGMa +_T0s18_DropFirstSequenceVys11AnyIteratorVy6SQLite7Binding_pSgGGAByxGs0C0ss0E8ProtocolRzlWl +_T06SQLite9StatementC4stepSbyKFSbyKcfU_ +_T06SQLite9StatementC4stepSbyKFSbyKcfU_Tf4g_n +step +row.materialize +row.set +columnNames.materialize +columnNames.set +columnCount.materialize +columnCount.set +columnNames.get +_T0s10CollectionPsE3mapSayqd__Gqd__7ElementQzKcKlFTfq4gn_ns14CountableRangeVys5Int32VG_SSTg5 +_T0s5Int32VSSs5Error_pIxyozo_ABSSsAC_pIxirzo_TR +_T06SQLite9StatementC11columnNamesSaySSGfgSSs5Int32VcfU_ +__T06SQLite14ExpressionTypePA2aBRzAA5Value010UnderlyingC0Rpzs10ComparableAE_8DatatypeRPzlE3maxAA0B0VyAFSgGfgTm +__T06SQLite14ExpressionTypePA2aBRzAA09_OptionalC0010UnderlyingC0RpzAA5ValueAE_07WrappedC0RPzlE5countAA0B0VySiGfgTm +__T06SQLite14ExpressionTypePA2aBRzAA09_OptionalC0010UnderlyingC0RpzAA5ValueAE_07WrappedC0RPzs10ComparableAE_AH8DatatypeRPzlE3maxAA0B0VyAFGfgTm +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/AggregateFunctions.swift +AggregateFunctions.swift +total.get +max.get +average.get +distinct.get +__T06SQLite10FTS5ConfigC6DetailOs9EquatableAAsAFP2eeoiSbx_xtFZTW +__T06SQLite10FTS5ConfigC6DetailOs8HashableAAsAFP9hashValueSifgTW +__T06SQLite10FTS5ConfigC6DetailOs23CustomStringConvertibleAAsAFP11descriptionSSfgTW +__T06SQLite10FTS5ConfigCfE +__T06SQLite10FTS5ConfigC6DetailOwxs +__T06SQLite10FTS5ConfigC6DetailOwxg +__T06SQLite10FTS5ConfigC6DetailOwug +__T06SQLite10FTS5ConfigC6DetailOwup +__T06SQLite10FTS5ConfigC6DetailOwui +__T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFAEy6SQLite11Expressible_pG_Tg5 +__T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_nAEy6SQLite11Expressible_pG_s07_IgnoreK0VyAkL_pGTg5 +__T06SQLite10FTS5ConfigC6detailAC6DetailOSgvWvd +__T06SQLite10FTS5ConfigC12contentRowIdAA11Expressible_pSgvWvd +__T06SQLite10FTS5ConfigC10columnSizeSiSgvWvd +__T06SQLite10FTS5ConfigCML +__T06SQLite10FTS5ConfigCMf +__T06SQLite10FTS5ConfigC6DetailOWV +__T06SQLite10FTS5ConfigC6DetailOML +__T06SQLite10FTS5ConfigC6DetailOMf +__T06SQLite10FTS5ConfigC6DetailOMF +__T06SQLite10FTS5ConfigCMF +__T06SQLite10FTS5ConfigC6DetailOSgML +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Extensions/FTS5.swift +objectdestroy.9 +FTS5.swift +_T0s15ContiguousArrayV16_copyToNewBufferySi8oldCount_tF6SQLite11Expressible_p_Tg5 +_T0s20_ArrayBufferProtocolPsE22_arrayOutOfPlaceUpdateys011_ContiguousaB0Vy7ElementQzGz_S2iqd__ts16_PointerFunctionRd__AFQyd__AGRSlFTfq4nnngn_nAEy6SQLite11Expressible_pG_s07_IgnoreK0VyAkL_pGTg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP13_copyContentsSpy7ElementQzGs5RangeVySiG03subH0_AI12initializingtFTW6SQLite11Expressible_p_Tg5 +_T0s22_ContiguousArrayBufferV13_copyContentsSpyxGs5RangeVySiG03subF0_AD12initializingtF6SQLite11Expressible_p_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP19firstElementAddressSpy0F0QzGfgTW6SQLite11Expressible_p_Tg5 +_T0s22_ContiguousArrayBufferV19firstElementAddressSpyxGfg6SQLite11Expressible_p_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP8endIndexSifgTW6SQLite11Expressible_p_Tg5 +_T0s22_ContiguousArrayBufferV8endIndexSifg6SQLite11Expressible_p_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP027requestUniqueMutableBackingC0ABy7ElementQzGSgSi15minimumCapacity_tFTW6SQLite11Expressible_p_Tg5 +_T0s22_ContiguousArrayBufferV027requestUniqueMutableBackingC0AByxGSgSi15minimumCapacity_tF6SQLite11Expressible_p_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP5countSifgTW6SQLite11Expressible_p_Tg5 +_T0s20_ArrayBufferProtocolPsE025_forceCreateUniqueMutableB0s011_ContiguousaB0Vy7ElementQzGSi011countForNewB0_Si03minL8CapacitytFAEy6SQLite11Expressible_pG_Tg5 +_T0s22_ContiguousArrayBufferVyxGs01_bC8ProtocolslsADP8capacitySifgTW6SQLite11Expressible_p_Tg5 +_T0s22_ContiguousArrayBufferV8capacitySifg6SQLite11Expressible_p_Tg5 +_T0s15ContiguousArrayV15reserveCapacityySiF6SQLite11Expressible_p_Tg5 +initialize_metadata_Detail +_T06SQLite10FTS5ConfigCMa +_T06SQLite10FTS5ConfigC6DetailOMa +get_field_types_Detail +_T06SQLite10FTS5ConfigC6DetailOwui +_T06SQLite10FTS5ConfigC6DetailOwup +_T06SQLite10FTS5ConfigC6DetailOwug +_T06SQLite10FTS5ConfigC6DetailOwxg +_T06SQLite10FTS5ConfigC6DetailOwxs +get_field_types_FTS5Config +_T06SQLite10FTS5ConfigC6DetailOSgMa +_T06SQLite10FTS5ConfigC6DetailOs23CustomStringConvertibleAAWa +_T06SQLite10FTS5ConfigC6DetailOs8HashableAAWa +_T06SQLite10FTS5ConfigC6DetailOs9EquatableAAWa +_T06SQLite10FTS5ConfigC23formatColumnDefinitionsSayAA11Expressible_pGyFAaE_pAaE_p_SayAA9FTSConfigC0E6OptionOG7optionstcfU_ +detail +columnSize +contentRowId +FTS5 +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Extensions/Cipher.swift +__T06SQLite10QueryErrorOWy +__T06SQLite10QueryErrorOWy.1 +__T06SQLite10QueryErrorOs0C0AAsADP7_domainSSfgTW +__T06SQLite10QueryErrorOs0C0AAsADP5_codeSifgTW +__T06SQLite10QueryErrorOs0C0AAsADP9_userInfoyXlSgfgTW +__T06SQLite10QueryErrorOs0C0AAsADP5_codeSifgTWTm +__T06SQLite10QueryErrorOs0C0AAsADP19_getEmbeddedNSErroryXlSgyFTW +__T06SQLite10QueryErrorOs23CustomStringConvertibleAAsADP11descriptionSSfgTW +__T0s26_toStringReadOnlyPrintableSSxs06CustomB11ConvertibleRzlFTfq4g_nSaySSG_Tg5 +__T0Sa16_makeDescriptionSSSb7isDebug_tFTfq4dn_nSS_Tg5 +__T06SQLite10QueryErrorOwXX +__T06SQLite10QueryErrorOwCP +__T06SQLite10QueryErrorOwpr +__T06SQLite10QueryErrorOwde +__T06SQLite10QueryErrorOwxx +__T06SQLite10QueryErrorOwCp +__T06SQLite10QueryErrorOwcp +__T06SQLite10QueryErrorOwca +__T06SQLite10QueryErrorOwTk +___swift_memcpy17_4 +__T06SQLite10QueryErrorOwta +__T06SQLite10QueryErrorOwal +__T06SQLite10QueryErrorOwXx +__T06SQLite10QueryErrorOwCc +__T06SQLite10QueryErrorOwug +__T06SQLite10QueryErrorOwup +__T06SQLite10QueryErrorOwui +__T06SQLite10QueryErrorOWV +__T06SQLite10QueryErrorOMf +__T06SQLite10QueryErrorOMF +__T0SS4name_tML +__T0SS4name_SaySSG7columnstML +__T0SS4name_SaySSG7similartML +__T06SQLite10QueryErrorOmML +__T0s23_ContiguousArrayStorageCyypGML +__T06SQLite10QueryErrorOMB +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Errors.swift +_T06SQLite10QueryErrorOMa +Errors.swift +get_field_types_QueryError +_T0SS4name_SaySSG7similartMa +_T0SS4name_SaySSG7columnstMa +_T0SS4name_tMa +_T06SQLite10QueryErrorOwui +_T06SQLite10QueryErrorOwup +_T06SQLite10QueryErrorOwug +_T06SQLite10QueryErrorOwCc +_T06SQLite10QueryErrorOwXx +_T06SQLite10QueryErrorOwal +_T06SQLite10QueryErrorOwta +__swift_memcpy17_4 +_T06SQLite10QueryErrorOwTk +_T06SQLite10QueryErrorOwca +_T06SQLite10QueryErrorOwcp +_T06SQLite10QueryErrorOwCp +_T06SQLite10QueryErrorOwxx +_T06SQLite10QueryErrorOwde +_T06SQLite10QueryErrorOwpr +_T06SQLite10QueryErrorOwCP +_T06SQLite10QueryErrorOwXX +_T06SQLite10QueryErrorOs23CustomStringConvertibleAAWa +_T06SQLite10QueryErrorOs0C0AAWa +_T0Sa16_makeDescriptionSSSb7isDebug_tFTfq4dn_nSS_Tg5 +_T0s23_ContiguousArrayStorageCyypGMa +_T0s26_toStringReadOnlyPrintableSSxs06CustomB11ConvertibleRzlFTfq4g_nSaySSG_Tg5 +_T0SayxGs23CustomStringConvertibleslsABP11descriptionSSfgTWSS_Tg5 +_T0Sa11descriptionSSfgSS_Tg5 +_T06SQLite10QueryErrorOmMa +__T010Foundation4DateV6SQLiteE4dateAD10ExpressionVyACSgGfgTm +__T06SQLite10ExpressionVAA10Foundation4DateVRszlE4dateACyAFGfgTm +__T0Sis13BinaryIntegerssAAP1poixx_xtFZTW +__T0s15_arrayForceCastSayq_GSayxGr0_lFTfq4g_nSS_6SQLite7Binding_pSgTg5 +__T0s15_arrayForceCastSayq_GSayxGr0_lFq_xcfU_SS_6SQLite7Binding_pSgTG5 +__T06SQLite13DateFunctionsC12timefunction33_3D9A7DDFD1DBFF80DDF2749686001716LLAA10ExpressionVy10Foundation0B0VSgGSS_SS10timestringSaySSG9modifierstFZTf4gXgXgd_n +__T06SQLite13DateFunctionsCML +__T06SQLite13DateFunctionsCMf +__T06SQLite13DateFunctionsCMF +/Users/mongolsuragch/Documents/Xcode projects/aePronunciation/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/DateAndTimeFunctions.swift +DateAndTimeFunctions.swift +_T06SQLite13DateFunctionsCMa +get_field_types_DateFunctions +timefunction +_arrayForceCast +_T0SayxGs26RangeReplaceableCollectionslsABP15reserveCapacityy13IndexDistanceQzFTWSS_Tg5 +_T0s15_arrayForceCastSayq_GSayxGr0_lFq_xcfU_SS_6SQLite7Binding_pSgTG5 +_T0s15_arrayForceCastSayq_GSayxGr0_lFq_xcfU_SS_6SQLite7Binding_pSgTg5 +_T0s15_arrayForceCastSayq_GSayxGr0_lFTfq4g_nSS_6SQLite7Binding_pSgTg5 +_T0s10CollectionPsE3mapSayqd__Gqd__7ElementQzKcKlFTfq4gn_nSaySSG_6SQLite7Binding_pSgTg5 +_T0Sa15reserveCapacityySiFSS_Tg5 +_T0s22_ContiguousArrayBufferV18_initStorageHeaderySi5count_Si8capacitytFSS_Tg5 +_T0s15ContiguousArrayV15reserveCapacityySiF6SQLite7Binding_pSg_Tg5 +date.get +date +strftime +julianday +datetime +time +/Users/mongolsuragch/Library/Developer/Xcode/DerivedData/SQLite-gqjfpbtiwjvvmnbhhamqkwpyiheu/Build/Intermediates.noindex/SQLite.build/Release-iphoneos/SQLite iOS.build/DerivedSources/SQLite_vers.c +__ZL15__ARCLite__loadv +__ZL30add_image_hook_autoreleasepoolPK11mach_headerl +__ZL34__arclite_objc_autoreleasePoolPushv +__ZL33__arclite_objc_autoreleasePoolPopPv +__ZL19patch_lazy_pointersPK11mach_headerP7patch_tm +__ZL42__arclite_NSArray_objectAtIndexedSubscriptP7NSArrayP13objc_selectorj +__ZL53__arclite_NSMutableArray_setObject_atIndexedSubscriptP14NSMutableArrayP13objc_selectorP11objc_objectj +__ZL46__arclite_NSDictionary_objectForKeyedSubscriptP12NSDictionaryP13objc_selectorP11objc_object +__ZL47__arclite_NSOrderedSet_objectAtIndexedSubscriptP12NSOrderedSetP13objc_selectorj +__ZL58__arclite_NSMutableOrderedSet_setObject_atIndexedSubscriptP19NSMutableOrderedSetP13objc_selectorP11objc_objectj +__ZL58__arclite_NSMutableDictionary__setObject_forKeyedSubscriptP19NSMutableDictionaryP13objc_selectorP11objc_objectS4_ +__ZL18add_image_hook_ARCPK11mach_headerl +__ZL36__arclite_object_setInstanceVariableP11objc_objectPKcPv +__ZL24__arclite_object_setIvarP11objc_objectP9objc_ivarS0_ +__ZL21__arclite_object_copyP11objc_objectm +__ZL21__arclite_objc_retainP11objc_object +__ZL26__arclite_objc_retainBlockP11objc_object +__ZL22__arclite_objc_releaseP11objc_object +__ZL26__arclite_objc_autoreleaseP11objc_object +__ZL32__arclite_objc_retainAutoreleaseP11objc_object +__ZL37__arclite_objc_autoreleaseReturnValueP11objc_object +__ZL43__arclite_objc_retainAutoreleaseReturnValueP11objc_object +__ZL44__arclite_objc_retainAutoreleasedReturnValueP11objc_object +__ZL26__arclite_objc_storeStrongPP11objc_objectS0_ +__ZL22add_image_hook_swiftV1PK11mach_headerl +__ZL42__arclite_NSUndoManagerProxy_isKindOfClassP11objc_objectP13objc_selectorP10objc_class +__ZL13replaceMethodP10objc_classP13objc_selectorPFP11objc_objectS4_S2_zEPS6_ +__ZL30__arclite_NSManagedObject_initP11objc_objectP13objc_selector +__ZL41__arclite_NSManagedObject_allocWithEntityP11objc_objectP13objc_selectorS0_ +__ZL36__arclite_NSManagedObject_allocBatchP11objc_objectP13objc_selectorPS0_S0_j +__ZL37__arclite_NSKKMS_fastIndexForKnownKeyP11objc_objectP13objc_selectorS0_ +__ZL28__arclite_NSKKMS_indexForKeyP11objc_objectP13objc_selectorS0_ +__ZL29__arclite_NSKKsD_objectForKeyP11objc_objectP13objc_selectorS0_ +__ZL35__arclite_NSKKsD_removeObjectForKeyP11objc_objectP13objc_selectorS0_ +__ZL33__arclite_NSKKsD_setObject_forKeyP11objc_objectP13objc_selectorS0_S0_ +__ZL41__arclite_NSKKsD_addEntriesFromDictionaryP11objc_objectP13objc_selectorP12NSDictionary +__ZL28__arclite_objc_readClassPairP10objc_classPK15objc_image_info +__ZL32__arclite_objc_allocateClassPairP10objc_classPKcm +__ZL32__arclite_object_getIndexedIvarsP11objc_object +__ZL23__arclite_objc_getClassPKc +__ZL27__arclite_objc_getMetaClassPKc +__ZL31__arclite_objc_getRequiredClassPKc +__ZL26__arclite_objc_lookUpClassPKc +__ZL26__arclite_objc_getProtocolPKc +__ZL23__arclite_class_getNameP10objc_class +__ZL26__arclite_protocol_getNameP8Protocol +__ZL37__arclite_objc_copyClassNamesForImagePKcPj +__ZL17transcribeMethodsP10objc_classP15glue_class_ro_t +__ZL19transcribeProtocolsP10objc_classP15glue_class_ro_t +__ZL20transcribePropertiesP10objc_classP15glue_class_ro_t +__ZL14initialize_impP11objc_objectP13objc_selector +__ZL18allocateMaybeSwiftP18glue_swift_class_tm +__ZL22copySwiftV1MangledNamePKcb +__ZL13demangledNamePKcb +__ZL16scanMangledFieldRPKcS0_S1_Ri +__ZL30arclite_uninitialized_functionv +__ZL12cxxConstructP11objc_object +__ZL20fixStringForCoreDataP11objc_object +_OBJC_METACLASS_$___ARCLite__ +__ZL24OBJC_CLASS_$___ARCLite__ +__ZL31OBJC_METACLASS_RO_$___ARCLite__ +__non_lazy_classes +__ZL27OBJC_CLASS_RO_$___ARCLite__ +__ZL11_class_name +__ZL32OBJC_$_CLASS_METHODS___ARCLite__ +__ZL17_load_method_name +__ZL17_load_method_type +__ZL23NSAutoreleasePool_class +__ZZL30add_image_hook_autoreleasepoolPK11mach_headerlE7patches +__ZGVZL30add_image_hook_autoreleasepoolPK11mach_headerlE7patches +l_OBJC_PROTOCOL_$___ARCLiteIndexedSubscripting__ +l_OBJC_LABEL_PROTOCOL_$___ARCLiteIndexedSubscripting__ +l_OBJC_PROTOCOL_REFERENCE_$___ARCLiteIndexedSubscripting__ +l_OBJC_PROTOCOL_$___ARCLiteKeyedSubscripting__ +l_OBJC_LABEL_PROTOCOL_$___ARCLiteKeyedSubscripting__ +l_OBJC_PROTOCOL_REFERENCE_$___ARCLiteKeyedSubscripting__ +__ZZL18add_image_hook_ARCPK11mach_headerlE7patches +__ZGVZL18add_image_hook_ARCPK11mach_headerlE7patches +__ZL30NSUndoManagerProxy_targetClass +__ZL29original_NSManagedObject_init +__ZL40original_NSManagedObject_allocWithEntity +__ZL35original_NSManagedObject_allocBatch +__ZL25NSMutableDictionary_class +__ZL22NSConstantString_class +__ZL14NSString_class +__ZL36original_NSKKMS_fastIndexForKnownKey +__ZL27original_NSKKMS_indexForKey +__ZL28original_NSKKsD_objectForKey +__ZL34original_NSKKsD_removeObjectForKey +__ZL32original_NSKKsD_setObject_forKey +__ZL40original_NSKKsD_addEntriesFromDictionary +__ZZL22add_image_hook_swiftV1PK11mach_headerlE7patches +__ZGVZL22add_image_hook_swiftV1PK11mach_headerlE7patches +__ZL31original_objc_allocateClassPair +__ZL31original_object_getIndexedIvars +__ZL22original_objc_getClass +__ZL26original_objc_getMetaClass +__ZL30original_objc_getRequiredClass +__ZL25original_objc_lookUpClass +__ZL25original_objc_getProtocol +__ZL22original_class_getName +__ZL25original_protocol_getName +__ZL36original_objc_copyClassNamesForImage +__ZL12demangleLock +__ZL9Demangled +/Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x objective-c++ -arch armv7 -fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -std=c++11 -Wno-trigraphs -fno-exceptions -fno-rtti -fno-sanitize=vptr -mpascal-strings -Os -Wno-missing-field-initializers -Wmissing-prototypes -Wno-implicit-atomic-properties -Wno-arc-repeated-use-of-weak -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wno-missing-braces -Wparentheses -Wswitch -Wno-unused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wno-empty-body -Wno-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wno-constant-conversion -Wno-int-conversion -Wno-bool-conversion -Wno-enum-conversion -Wno-float-conversion -Wno-non-literal-null-conversion -Wno-objc-literal-conversion -Wshorten-64-to-32 -Wno-newline-eof -Wno-selector -Wno-strict-selector-match -Wno-undeclared-selector -Wno-deprecated-implementations -Wno-c++11-extensions -D NDEBUG=1 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.Internal.sdk -fstrict-aliasing -Wprotocol -Wdeprecated-declarations -Winvalid-offsetof -miphoneos-version-min=4.3 -g -fno-threadsafe-statics -Wno-sign-conversion -Wno-infinite-recursion -Wno-move -Wno-comma -Wno-block-capture-autoreleasing -Wno-strict-prototypes -Wno-range-loop-analysis -fembed-bitcode=all -iquote /Library/Caches/com.apple.xbs/Binaries/arclite_iOS/install/TempContent/Objects/arclite.build/arclite_iOS.build/arclite_iphoneos-generated-files.hmap -I /Library/Caches/com.apple.xbs/Binaries/arclite_iOS/install/TempContent/Objects/arclite.build/arclite_iOS.build/arclite_iphoneos-own-target-headers.hmap -I /Library/Caches/com.apple.xbs/Binaries/arclite_iOS/install/TempContent/Objects/arclite.build/arclite_iOS.build/arclite_iphoneos-all-target-headers.hmap -iquote /Library/Caches/com.apple.xbs/Binaries/arclite_iOS/install/TempContent/Objects/arclite.build/arclite_iOS.build/arclite_iphoneos-project-headers.hmap -I /Library/Caches/com.apple.xbs/Binaries/arclite_iOS/install/Symbols/BuiltProducts/include -I /Library/Caches/com.apple.xbs/Binaries/arclite_iOS/install/TempContent/Objects/arclite.build/arclite_iOS.build/DerivedSources/armv7 -I /Library/Caches/com.apple.xbs/Binaries/arclite_iOS/install/TempContent/Objects/arclite.build/arclite_iOS.build/DerivedSources -F/Library/Caches/com.apple.xbs/Binaries/arclite_iOS/install/Symbols/BuiltProducts -iframework /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.Internal.sdk/System/Library/PrivateFrameworks -Wall -Wextra -Wno-gcc-compat -Wno-error=incomplete-umbrella -Wno-error=invalid-ios-deployment-target -Wno-error=incomplete-umbrella -Wno-error=invalid-ios-deployment-target -MMD -MT dependencies -MF /Library/Caches/com.apple.xbs/Binaries/arclite_iOS/install/TempContent/Objects/arclite.build/arclite_iOS.build/Objects-normal/armv7/arclite.d --serialize-diagnostics /Library/Caches/com.apple.xbs/Binaries/arclite_iOS/install/TempContent/Objects/arclite.build/arclite_iOS.build/Objects-normal/armv7/arclite.dia -c /Library/Caches/com.apple.xbs/Sources/arclite_iOS/arclite-67/source/arclite.mm -o /Library/Caches/com.apple.xbs/Binaries/arclite_iOS/install/TempContent/Objects/arclite.build/arclite_iOS.build/Objects-normal/armv7/arclite.o -mlinker-version=302.3.1 -march=armv7a +/Library/Caches/com.apple.xbs/Sources/arclite_iOS/arclite-67/source/arclite.mm +/Library/Caches/com.apple.xbs/Sources/arclite_iOS/arclite-67 +fixStringForCoreData +cxxConstruct +arclite_uninitialized_function +scanMangledField +isdigit +/Applications/Xcode.app/Contents/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS11.1.Internal.sdk/usr/include/ctype.h +__isctype +demangledName +copySwiftV1DemangledName +copySwiftV1MangledName +allocateMaybeSwift +word_align +isSwift +initialize_imp +transcribeProperties +property_list_nth +transcribeProtocols +transcribeMethods +data +method_list_nth +__arclite_objc_copyClassNamesForImage +__arclite_protocol_getName +__arclite_class_getName +__arclite_objc_getProtocol +__arclite_objc_lookUpClass +__arclite_objc_getRequiredClass +__arclite_objc_getMetaClass +__arclite_objc_getClass +__arclite_object_getIndexedIvars +__arclite_objc_allocateClassPair +metaclass +__arclite_objc_readClassPair +transcribeIvars +ivar_list_nth +max +alignment +ro +fastFlags +__arclite_NSKKsD_addEntriesFromDictionary +__arclite_NSKKsD_setObject_forKey +__arclite_NSKKsD_removeObjectForKey +__arclite_NSKKsD_objectForKey +__arclite_NSKKMS_indexForKey +__arclite_NSKKMS_fastIndexForKnownKey +__arclite_NSManagedObject_allocBatch +__arclite_NSManagedObject_allocWithEntity +__arclite_NSManagedObject_init +replaceMethod +__arclite_NSUndoManagerProxy_isKindOfClass +add_image_hook_swiftV1 +patch_t +patch_t +patch_t +patch_t +patch_t +patch_t +patch_t +patch_t +__arclite_objc_storeStrong +__arclite_objc_release +__arclite_objc_retain +__arclite_objc_retainAutoreleasedReturnValue +__arclite_objc_retainAutoreleaseReturnValue +__arclite_objc_autoreleaseReturnValue +__arclite_objc_retainAutorelease +__arclite_objc_autorelease +__arclite_objc_retainBlock +__arclite_object_copy +fixupCopiedReferences +_class_getInstanceStart +alignedInstanceStart +__arclite_class_usesAutomaticRetainRelease +classOrSuperClassesUseARR +__arclite_object_setIvar +isScannedOffset +_ivar_getClass +__arclite_object_setInstanceVariable +add_image_hook_ARC +patch_t +patch_t +patch_t +patch_t +patch_t +patch_t +__arclite_NSMutableDictionary__setObject_forKeyedSubscript +__arclite_NSMutableOrderedSet_setObject_atIndexedSubscript +__arclite_NSOrderedSet_objectAtIndexedSubscript +__arclite_NSDictionary_objectForKeyedSubscript +__arclite_NSMutableArray_setObject_atIndexedSubscript +__arclite_NSArray_objectAtIndexedSubscript +patch_lazy_pointers +__arclite_objc_autoreleasePoolPop +__arclite_objc_autoreleasePoolPush +add_image_hook_autoreleasepool +patch_t +patch_t +__ARCLite__load +install_swiftV1 +install_ARC +install_dict_nil_value +addOrReplaceMethod +keyedGetter +install_subscripting +addMethod +indexedGetter +install_autoreleasepool diff --git a/Carthage/Build/iOS/SQLite.framework.dSYM/Contents/Info.plist b/Carthage/Build/iOS/SQLite.framework.dSYM/Contents/Info.plist new file mode 100644 index 0000000..aa396cf --- /dev/null +++ b/Carthage/Build/iOS/SQLite.framework.dSYM/Contents/Info.plist @@ -0,0 +1,20 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleIdentifier + com.apple.xcode.dsym.com.stephencelis.SQLite + CFBundleInfoDictionaryVersion + 6.0 + CFBundlePackageType + dSYM + CFBundleSignature + ???? + CFBundleShortVersionString + 0.11.4 + CFBundleVersion + 1 + + diff --git a/Carthage/Build/iOS/SQLite.framework.dSYM/Contents/Resources/DWARF/SQLite b/Carthage/Build/iOS/SQLite.framework.dSYM/Contents/Resources/DWARF/SQLite new file mode 100644 index 0000000..0af6ce7 Binary files /dev/null and b/Carthage/Build/iOS/SQLite.framework.dSYM/Contents/Resources/DWARF/SQLite differ diff --git a/Carthage/Build/iOS/SQLite.framework/Headers/SQLite-Bridging.h b/Carthage/Build/iOS/SQLite.framework/Headers/SQLite-Bridging.h new file mode 100644 index 0000000..5b35659 --- /dev/null +++ b/Carthage/Build/iOS/SQLite.framework/Headers/SQLite-Bridging.h @@ -0,0 +1,33 @@ +// +// SQLite.swift +// https://github.com/stephencelis/SQLite.swift +// Copyright © 2014-2015 Stephen Celis. +// +// 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. +// + +@import Foundation; + +#import "sqlite3.h" + +NS_ASSUME_NONNULL_BEGIN +typedef NSString * _Nullable (^_SQLiteTokenizerNextCallback)(const char *input, int *inputOffset, int *inputLength); +int _SQLiteRegisterTokenizer(sqlite3 *db, const char *module, const char *tokenizer, _Nullable _SQLiteTokenizerNextCallback callback); +NS_ASSUME_NONNULL_END + diff --git a/Carthage/Build/iOS/SQLite.framework/Headers/SQLite-Swift.h b/Carthage/Build/iOS/SQLite.framework/Headers/SQLite-Swift.h new file mode 100644 index 0000000..f7ca960 --- /dev/null +++ b/Carthage/Build/iOS/SQLite.framework/Headers/SQLite-Swift.h @@ -0,0 +1,187 @@ +// Generated by Apple Swift version 4.0.2 (swiftlang-900.0.69.2 clang-900.0.38) +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wgcc-compat" + +#if !defined(__has_include) +# define __has_include(x) 0 +#endif +#if !defined(__has_attribute) +# define __has_attribute(x) 0 +#endif +#if !defined(__has_feature) +# define __has_feature(x) 0 +#endif +#if !defined(__has_warning) +# define __has_warning(x) 0 +#endif + +#if __has_attribute(external_source_symbol) +# define SWIFT_STRINGIFY(str) #str +# define SWIFT_MODULE_NAMESPACE_PUSH(module_name) _Pragma(SWIFT_STRINGIFY(clang attribute push(__attribute__((external_source_symbol(language="Swift", defined_in=module_name, generated_declaration))), apply_to=any(function, enum, objc_interface, objc_category, objc_protocol)))) +# define SWIFT_MODULE_NAMESPACE_POP _Pragma("clang attribute pop") +#else +# define SWIFT_MODULE_NAMESPACE_PUSH(module_name) +# define SWIFT_MODULE_NAMESPACE_POP +#endif + +#if __has_include() +# include +#endif + +#pragma clang diagnostic ignored "-Wauto-import" +#include +#include +#include +#include + +#if !defined(SWIFT_TYPEDEFS) +# define SWIFT_TYPEDEFS 1 +# if __has_include() +# include +# elif !defined(__cplusplus) || __cplusplus < 201103L +typedef uint_least16_t char16_t; +typedef uint_least32_t char32_t; +# endif +typedef float swift_float2 __attribute__((__ext_vector_type__(2))); +typedef float swift_float3 __attribute__((__ext_vector_type__(3))); +typedef float swift_float4 __attribute__((__ext_vector_type__(4))); +typedef double swift_double2 __attribute__((__ext_vector_type__(2))); +typedef double swift_double3 __attribute__((__ext_vector_type__(3))); +typedef double swift_double4 __attribute__((__ext_vector_type__(4))); +typedef int swift_int2 __attribute__((__ext_vector_type__(2))); +typedef int swift_int3 __attribute__((__ext_vector_type__(3))); +typedef int swift_int4 __attribute__((__ext_vector_type__(4))); +typedef unsigned int swift_uint2 __attribute__((__ext_vector_type__(2))); +typedef unsigned int swift_uint3 __attribute__((__ext_vector_type__(3))); +typedef unsigned int swift_uint4 __attribute__((__ext_vector_type__(4))); +#endif + +#if !defined(SWIFT_PASTE) +# define SWIFT_PASTE_HELPER(x, y) x##y +# define SWIFT_PASTE(x, y) SWIFT_PASTE_HELPER(x, y) +#endif +#if !defined(SWIFT_METATYPE) +# define SWIFT_METATYPE(X) Class +#endif +#if !defined(SWIFT_CLASS_PROPERTY) +# if __has_feature(objc_class_property) +# define SWIFT_CLASS_PROPERTY(...) __VA_ARGS__ +# else +# define SWIFT_CLASS_PROPERTY(...) +# endif +#endif + +#if __has_attribute(objc_runtime_name) +# define SWIFT_RUNTIME_NAME(X) __attribute__((objc_runtime_name(X))) +#else +# define SWIFT_RUNTIME_NAME(X) +#endif +#if __has_attribute(swift_name) +# define SWIFT_COMPILE_NAME(X) __attribute__((swift_name(X))) +#else +# define SWIFT_COMPILE_NAME(X) +#endif +#if __has_attribute(objc_method_family) +# define SWIFT_METHOD_FAMILY(X) __attribute__((objc_method_family(X))) +#else +# define SWIFT_METHOD_FAMILY(X) +#endif +#if __has_attribute(noescape) +# define SWIFT_NOESCAPE __attribute__((noescape)) +#else +# define SWIFT_NOESCAPE +#endif +#if __has_attribute(warn_unused_result) +# define SWIFT_WARN_UNUSED_RESULT __attribute__((warn_unused_result)) +#else +# define SWIFT_WARN_UNUSED_RESULT +#endif +#if __has_attribute(noreturn) +# define SWIFT_NORETURN __attribute__((noreturn)) +#else +# define SWIFT_NORETURN +#endif +#if !defined(SWIFT_CLASS_EXTRA) +# define SWIFT_CLASS_EXTRA +#endif +#if !defined(SWIFT_PROTOCOL_EXTRA) +# define SWIFT_PROTOCOL_EXTRA +#endif +#if !defined(SWIFT_ENUM_EXTRA) +# define SWIFT_ENUM_EXTRA +#endif +#if !defined(SWIFT_CLASS) +# if __has_attribute(objc_subclassing_restricted) +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) __attribute__((objc_subclassing_restricted)) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# else +# define SWIFT_CLASS(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# define SWIFT_CLASS_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_CLASS_EXTRA +# endif +#endif + +#if !defined(SWIFT_PROTOCOL) +# define SWIFT_PROTOCOL(SWIFT_NAME) SWIFT_RUNTIME_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +# define SWIFT_PROTOCOL_NAMED(SWIFT_NAME) SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_PROTOCOL_EXTRA +#endif + +#if !defined(SWIFT_EXTENSION) +# define SWIFT_EXTENSION(M) SWIFT_PASTE(M##_Swift_, __LINE__) +#endif + +#if !defined(OBJC_DESIGNATED_INITIALIZER) +# if __has_attribute(objc_designated_initializer) +# define OBJC_DESIGNATED_INITIALIZER __attribute__((objc_designated_initializer)) +# else +# define OBJC_DESIGNATED_INITIALIZER +# endif +#endif +#if !defined(SWIFT_ENUM_ATTR) +# if defined(__has_attribute) && __has_attribute(enum_extensibility) +# define SWIFT_ENUM_ATTR __attribute__((enum_extensibility(open))) +# else +# define SWIFT_ENUM_ATTR +# endif +#endif +#if !defined(SWIFT_ENUM) +# define SWIFT_ENUM(_type, _name) enum _name : _type _name; enum SWIFT_ENUM_ATTR SWIFT_ENUM_EXTRA _name : _type +# if __has_feature(generalized_swift_name) +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) enum _name : _type _name SWIFT_COMPILE_NAME(SWIFT_NAME); enum SWIFT_COMPILE_NAME(SWIFT_NAME) SWIFT_ENUM_ATTR SWIFT_ENUM_EXTRA _name : _type +# else +# define SWIFT_ENUM_NAMED(_type, _name, SWIFT_NAME) SWIFT_ENUM(_type, _name) +# endif +#endif +#if !defined(SWIFT_UNAVAILABLE) +# define SWIFT_UNAVAILABLE __attribute__((unavailable)) +#endif +#if !defined(SWIFT_UNAVAILABLE_MSG) +# define SWIFT_UNAVAILABLE_MSG(msg) __attribute__((unavailable(msg))) +#endif +#if !defined(SWIFT_AVAILABILITY) +# define SWIFT_AVAILABILITY(plat, ...) __attribute__((availability(plat, __VA_ARGS__))) +#endif +#if !defined(SWIFT_DEPRECATED) +# define SWIFT_DEPRECATED __attribute__((deprecated)) +#endif +#if !defined(SWIFT_DEPRECATED_MSG) +# define SWIFT_DEPRECATED_MSG(...) __attribute__((deprecated(__VA_ARGS__))) +#endif +#if __has_feature(attribute_diagnose_if_objc) +# define SWIFT_DEPRECATED_OBJC(Msg) __attribute__((diagnose_if(1, Msg, "warning"))) +#else +# define SWIFT_DEPRECATED_OBJC(Msg) SWIFT_DEPRECATED_MSG(Msg) +#endif +#if __has_feature(modules) +#endif + +#pragma clang diagnostic ignored "-Wproperty-attribute-mismatch" +#pragma clang diagnostic ignored "-Wduplicate-method-arg" +#if __has_warning("-Wpragma-clang-attribute") +# pragma clang diagnostic ignored "-Wpragma-clang-attribute" +#endif +#pragma clang diagnostic ignored "-Wunknown-pragmas" +#pragma clang diagnostic ignored "-Wnullability" + +SWIFT_MODULE_NAMESPACE_PUSH("SQLite") +SWIFT_MODULE_NAMESPACE_POP +#pragma clang diagnostic pop diff --git a/Carthage/Build/iOS/SQLite.framework/Headers/SQLite.h b/Carthage/Build/iOS/SQLite.framework/Headers/SQLite.h new file mode 100644 index 0000000..693ce32 --- /dev/null +++ b/Carthage/Build/iOS/SQLite.framework/Headers/SQLite.h @@ -0,0 +1,6 @@ +@import Foundation; + +FOUNDATION_EXPORT double SQLiteVersionNumber; +FOUNDATION_EXPORT const unsigned char SQLiteVersionString[]; + +#import diff --git a/Carthage/Build/iOS/SQLite.framework/Info.plist b/Carthage/Build/iOS/SQLite.framework/Info.plist new file mode 100644 index 0000000..df5de0e Binary files /dev/null and b/Carthage/Build/iOS/SQLite.framework/Info.plist differ diff --git a/Carthage/Build/iOS/SQLite.framework/Modules/SQLite.swiftmodule/arm.swiftdoc b/Carthage/Build/iOS/SQLite.framework/Modules/SQLite.swiftmodule/arm.swiftdoc new file mode 100644 index 0000000..8134926 Binary files /dev/null and b/Carthage/Build/iOS/SQLite.framework/Modules/SQLite.swiftmodule/arm.swiftdoc differ diff --git a/Carthage/Build/iOS/SQLite.framework/Modules/SQLite.swiftmodule/arm.swiftmodule b/Carthage/Build/iOS/SQLite.framework/Modules/SQLite.swiftmodule/arm.swiftmodule new file mode 100644 index 0000000..e555225 Binary files /dev/null and b/Carthage/Build/iOS/SQLite.framework/Modules/SQLite.swiftmodule/arm.swiftmodule differ diff --git a/Carthage/Build/iOS/SQLite.framework/Modules/SQLite.swiftmodule/arm64.swiftdoc b/Carthage/Build/iOS/SQLite.framework/Modules/SQLite.swiftmodule/arm64.swiftdoc new file mode 100644 index 0000000..28922fe Binary files /dev/null and b/Carthage/Build/iOS/SQLite.framework/Modules/SQLite.swiftmodule/arm64.swiftdoc differ diff --git a/Carthage/Build/iOS/SQLite.framework/Modules/SQLite.swiftmodule/arm64.swiftmodule b/Carthage/Build/iOS/SQLite.framework/Modules/SQLite.swiftmodule/arm64.swiftmodule new file mode 100644 index 0000000..93b3e21 Binary files /dev/null and b/Carthage/Build/iOS/SQLite.framework/Modules/SQLite.swiftmodule/arm64.swiftmodule differ diff --git a/Carthage/Build/iOS/SQLite.framework/Modules/SQLite.swiftmodule/i386.swiftdoc b/Carthage/Build/iOS/SQLite.framework/Modules/SQLite.swiftmodule/i386.swiftdoc new file mode 100644 index 0000000..e2761ed Binary files /dev/null and b/Carthage/Build/iOS/SQLite.framework/Modules/SQLite.swiftmodule/i386.swiftdoc differ diff --git a/Carthage/Build/iOS/SQLite.framework/Modules/SQLite.swiftmodule/i386.swiftmodule b/Carthage/Build/iOS/SQLite.framework/Modules/SQLite.swiftmodule/i386.swiftmodule new file mode 100644 index 0000000..61df0e5 Binary files /dev/null and b/Carthage/Build/iOS/SQLite.framework/Modules/SQLite.swiftmodule/i386.swiftmodule differ diff --git a/Carthage/Build/iOS/SQLite.framework/Modules/SQLite.swiftmodule/x86_64.swiftdoc b/Carthage/Build/iOS/SQLite.framework/Modules/SQLite.swiftmodule/x86_64.swiftdoc new file mode 100644 index 0000000..7f1b4c5 Binary files /dev/null and b/Carthage/Build/iOS/SQLite.framework/Modules/SQLite.swiftmodule/x86_64.swiftdoc differ diff --git a/Carthage/Build/iOS/SQLite.framework/Modules/SQLite.swiftmodule/x86_64.swiftmodule b/Carthage/Build/iOS/SQLite.framework/Modules/SQLite.swiftmodule/x86_64.swiftmodule new file mode 100644 index 0000000..cef69c3 Binary files /dev/null and b/Carthage/Build/iOS/SQLite.framework/Modules/SQLite.swiftmodule/x86_64.swiftmodule differ diff --git a/Carthage/Build/iOS/SQLite.framework/Modules/module.modulemap b/Carthage/Build/iOS/SQLite.framework/Modules/module.modulemap new file mode 100644 index 0000000..e06e6fc --- /dev/null +++ b/Carthage/Build/iOS/SQLite.framework/Modules/module.modulemap @@ -0,0 +1,11 @@ +framework module SQLite { + umbrella header "SQLite.h" + + export * + module * { export * } +} + +module SQLite.Swift { + header "SQLite-Swift.h" + requires objc +} diff --git a/Carthage/Build/iOS/SQLite.framework/SQLite b/Carthage/Build/iOS/SQLite.framework/SQLite new file mode 100755 index 0000000..cb49b8b Binary files /dev/null and b/Carthage/Build/iOS/SQLite.framework/SQLite differ diff --git a/Carthage/Checkouts/SQLite.swift/.cocoadocs.yml b/Carthage/Checkouts/SQLite.swift/.cocoadocs.yml new file mode 100644 index 0000000..2784003 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/.cocoadocs.yml @@ -0,0 +1,2 @@ +additional_guides: + - Documentation/Index.md diff --git a/Carthage/Checkouts/SQLite.swift/.github/ISSUE_TEMPLATE.md b/Carthage/Checkouts/SQLite.swift/.github/ISSUE_TEMPLATE.md new file mode 100644 index 0000000..9304a67 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/.github/ISSUE_TEMPLATE.md @@ -0,0 +1,20 @@ +> Issues are used to track bugs and feature requests. +> Need help or have a general question? Ask on Stack Overflow (tag sqlite.swift). + +## Build Information + +- Include the SQLite.swift version, commit or branch experiencing the issue. +- Mention Xcode and OS X versions affected. +- How do do you integrate SQLite.swift in your project? + - manual + - CocoaPods + - Carthage + - Swift Package manager + +## General guidelines + +- Be as descriptive as possible. +- Provide as much information needed to _reliably reproduce_ the issue. +- Attach screenshots if possible. +- Better yet: attach GIFs or link to video. +- Even better: link to a sample project exhibiting the issue. diff --git a/Carthage/Checkouts/SQLite.swift/.gitignore b/Carthage/Checkouts/SQLite.swift/.gitignore new file mode 100644 index 0000000..5882e0c --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/.gitignore @@ -0,0 +1,27 @@ +# OS X +.DS_Store + +# Xcode +build/ +*.pbxuser +!default.pbxuser +*.mode1v3 +!default.mode1v3 +*.mode2v3 +!default.mode2v3 +*.perspectivev3 +!default.perspectivev3 +xcuserdata +*.xccheckout +*.moved-aside +DerivedData +*.hmap +*.ipa +*.xcuserstate + +# Carthage +/Carthage/ + +# Swift Package Manager +.build +Packages/ diff --git a/Carthage/Checkouts/SQLite.swift/.gitmodules b/Carthage/Checkouts/SQLite.swift/.gitmodules new file mode 100644 index 0000000..e69de29 diff --git a/Carthage/Checkouts/SQLite.swift/.swift-version b/Carthage/Checkouts/SQLite.swift/.swift-version new file mode 100644 index 0000000..5186d07 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/.swift-version @@ -0,0 +1 @@ +4.0 diff --git a/Carthage/Checkouts/SQLite.swift/.travis.yml b/Carthage/Checkouts/SQLite.swift/.travis.yml new file mode 100644 index 0000000..4f17b26 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/.travis.yml @@ -0,0 +1,27 @@ +language: objective-c +rvm: 2.3 +osx_image: xcode9 +env: + global: + - IOS_SIMULATOR="iPhone 6s" + - IOS_VERSION="11.0" +matrix: + include: + - env: BUILD_SCHEME="SQLite iOS" + - env: BUILD_SCHEME="SQLite Mac" + - env: VALIDATOR_SUBSPEC="none" + - env: VALIDATOR_SUBSPEC="standard" + - env: VALIDATOR_SUBSPEC="standalone" + - env: VALIDATOR_SUBSPEC="SQLCipher" + - env: CARTHAGE_PLATFORM="iOS" + - env: CARTHAGE_PLATFORM="Mac" + - env: CARTHAGE_PLATFORM="watchOS" + - env: CARTHAGE_PLATFORM="tvOS" + - env: PACKAGE_MANAGER_COMMAND="test" +before_install: + - gem update bundler + - gem install xcpretty --no-document + - brew update + - brew outdated carthage || brew upgrade carthage +script: + - ./run-tests.sh diff --git a/Carthage/Checkouts/SQLite.swift/CHANGELOG.md b/Carthage/Checkouts/SQLite.swift/CHANGELOG.md new file mode 100644 index 0000000..578b59c --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/CHANGELOG.md @@ -0,0 +1,83 @@ +0.11.4 (30-09-2017), [diff][diff-0.11.4] +======================================== + +* Collate `.nocase` strictly enforces `NOT NULL` even when using Optional ([#697][]) +* Fix transactions not being rolled back when committing fails ([#426][]) +* Add possibility to have expression on right hand side of like ([#591][]) +* Added Date and Time functions ([#142][]) +* Add Swift4 Coding support ([#733][]) +* Preliminary Linux support ([#315][], [#681][]) +* Add `RowIterator` for more safety ([#647][], [#726][]) +* Make `Row.get` throw instead of crash ([#649][]) +* Fix create/drop index functions ([#666][]) +* Revert deployment target to 8.0 ([#625][], [#671][], [#717][]) +* Added support for the union query clause ([#723][]) +* Add support for `ORDER` and `LIMIT` on `UPDATE` and `DELETE` ([#657][], [#722][]) +* Swift 4 support ([#668][]) + +0.11.3 (30-03-2017), [diff][diff-0.11.3] +======================================== + +* Fix compilation problems when using Carthage ([#615][]) +* Add `WITHOUT ROWID` table option ([#541][]) +* Argument count fixed for binary custom functions ([#481][]) +* Documentation updates +* Tested with Xcode 8.3 / iOS 10.3 + +0.11.2 (25-12-2016), [diff][diff-0.11.2] +======================================== + +* Fixed SQLCipher integration with read-only databases ([#559][]) +* Preliminary Swift Package Manager support ([#548][], [#560][]) +* Fixed null pointer when fetching an empty BLOB ([#561][]) +* Allow `where` as alias for `filter` ([#571][]) + +0.11.1 (06-12-2016), [diff][diff-0.11.1] +======================================== + +* Integrate SQLCipher via CocoaPods ([#546][], [#553][]) +* Made lastInsertRowid consistent with other SQLite wrappers ([#532][]) +* Fix for `~=` operator used with Double ranges +* Various documentation updates + +0.11.0 (19-10-2016) +=================== + +* Swift3 migration ([diff][diff-0.11.0]) + + +[diff-0.11.0]: https://github.com/stephencelis/SQLite.swift/compare/0.10.1...0.11.0 +[diff-0.11.1]: https://github.com/stephencelis/SQLite.swift/compare/0.11.0...0.11.1 +[diff-0.11.2]: https://github.com/stephencelis/SQLite.swift/compare/0.11.1...0.11.2 +[diff-0.11.3]: https://github.com/stephencelis/SQLite.swift/compare/0.11.2...0.11.3 +[diff-0.11.4]: https://github.com/stephencelis/SQLite.swift/compare/0.11.3...0.11.4 + +[#142]: https://github.com/stephencelis/SQLite.swift/issues/142 +[#315]: https://github.com/stephencelis/SQLite.swift/issues/315 +[#426]: https://github.com/stephencelis/SQLite.swift/pull/426 +[#481]: https://github.com/stephencelis/SQLite.swift/pull/481 +[#532]: https://github.com/stephencelis/SQLite.swift/issues/532 +[#541]: https://github.com/stephencelis/SQLite.swift/issues/541 +[#546]: https://github.com/stephencelis/SQLite.swift/issues/546 +[#548]: https://github.com/stephencelis/SQLite.swift/pull/548 +[#553]: https://github.com/stephencelis/SQLite.swift/pull/553 +[#559]: https://github.com/stephencelis/SQLite.swift/pull/559 +[#560]: https://github.com/stephencelis/SQLite.swift/pull/560 +[#561]: https://github.com/stephencelis/SQLite.swift/issues/561 +[#571]: https://github.com/stephencelis/SQLite.swift/issues/571 +[#591]: https://github.com/stephencelis/SQLite.swift/pull/591 +[#615]: https://github.com/stephencelis/SQLite.swift/pull/615 +[#625]: https://github.com/stephencelis/SQLite.swift/issues/625 +[#647]: https://github.com/stephencelis/SQLite.swift/pull/647 +[#649]: https://github.com/stephencelis/SQLite.swift/pull/649 +[#657]: https://github.com/stephencelis/SQLite.swift/issues/657 +[#666]: https://github.com/stephencelis/SQLite.swift/pull/666 +[#668]: https://github.com/stephencelis/SQLite.swift/pull/668 +[#671]: https://github.com/stephencelis/SQLite.swift/issues/671 +[#681]: https://github.com/stephencelis/SQLite.swift/issues/681 +[#697]: https://github.com/stephencelis/SQLite.swift/issues/697 +[#717]: https://github.com/stephencelis/SQLite.swift/issues/717 +[#722]: https://github.com/stephencelis/SQLite.swift/pull/722 +[#723]: https://github.com/stephencelis/SQLite.swift/pull/723 +[#733]: https://github.com/stephencelis/SQLite.swift/pull/733 +[#726]: https://github.com/stephencelis/SQLite.swift/pull/726 diff --git a/Carthage/Checkouts/SQLite.swift/CONTRIBUTING.md b/Carthage/Checkouts/SQLite.swift/CONTRIBUTING.md new file mode 100644 index 0000000..60c1837 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/CONTRIBUTING.md @@ -0,0 +1,108 @@ +# Contributing + +The where and when to open an [issue](#issues) or [pull +request](#pull-requests). + + +## Issues + +Issues are used to track **bugs** and **feature requests**. Need **help** or +have a **general question**? [Ask on Stack Overflow][] (tag `sqlite.swift`). + +Before reporting a bug or requesting a feature, [run a few searches][Search] to +see if a similar issue has already been opened and ensure you’re not submitting +a duplicate. + +If you find a similar issue, read the existing conversation and see if it +addresses everything. If it doesn’t, continue the conversation there. + +If your searches return empty, see the [bug](#bugs) or [feature +request](#feature-requests) guidelines below. + +[Ask on Stack Overflow]: http://stackoverflow.com/questions/tagged/sqlite.swift +[Search]: https://github.com/stephencelis/SQLite.swift/search?type=Issues + + +### Bugs + +Think you’ve discovered a new **bug**? Let’s try troubleshooting a few things +first. + + - **Is it an installation issue?** + + If this is your first time building SQLite.swift in your project, you may + encounter a build error, _e.g._: + + No such module 'SQLite' + + Please carefully re-read the [installation instructions][] to make sure + everything is in order. + + - **Have you read the documentation?** + + If you can’t seem to get something working, check + [the documentation][See Documentation] to see if the solution is there. + + - **Are you up-to-date?** + + If you’re perusing [the documentation][See Documentation] online and find + that an example is just not working, please upgrade to the latest version + of SQLite.swift and try again before continuing. + + - **Is it an unhelpful build error?** + + While Swift error messaging is improving with each release, complex + expressions still lend themselves to misleading errors. If you encounter an + error on a complex line, breaking it down into smaller pieces generally + yields a more understandable error. + + - **Is it an _even more_ unhelpful build error?** + + Have you updated Xcode recently? Did your project stop building out of the + blue? + + Hold down the **option** key and select **Clean Build Folder…** from the + **Product** menu (⌥⇧⌘K). + +Made it through everything above and still having trouble? Sorry! +[Open an issue][]! And _please_: + + - Be as descriptive as possible. + - Provide as much information needed to _reliably reproduce_ the issue. + - Attach screenshots if possible. + - Better yet: attach GIFs or link to video. + - Even better: link to a sample project exhibiting the issue. + - Include the SQLite.swift commit or branch experiencing the issue. + - Include devices and operating systems affected. + - Include build information: the Xcode and OS X versions affected. + +[installation instructions]: Documentation/Index.md#installation +[See Documentation]: Documentation/Index.md#sqliteswift-documentation +[Open an issue]: https://github.com/stephencelis/SQLite.swift/issues/new + + +### Feature Requests + +Have an innovative **feature request**? [Open an issue][]! Be thorough! Provide +context and examples. Be open to discussion. + + +## Pull Requests + +Interested in contributing but don’t know where to start? Try the [`help +wanted`][help wanted] label. + +Ready to submit a fix or a feature? [Submit a pull request][]! And _please_: + + - If code changes, run the tests and make sure everything still works. + - Write new tests for new functionality. + - Update documentation comments where applicable. + - Maintain the existing style. + - Don’t forget to have fun. + +While we cannot guarantee a merge to every pull request, we do read each one +and love your input. + + +[help wanted]: https://github.com/stephencelis/SQLite.swift/labels/help%20wanted +[Submit a pull request]: https://github.com/stephencelis/SQLite.swift/fork diff --git a/Carthage/Checkouts/SQLite.swift/Documentation/Index.md b/Carthage/Checkouts/SQLite.swift/Documentation/Index.md new file mode 100644 index 0000000..c97fe8c --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Documentation/Index.md @@ -0,0 +1,1901 @@ +# SQLite.swift Documentation + + - [Installation](#installation) + - [Carthage](#carthage) + - [CocoaPods](#cocoapods) + - [Swift Package Manager](#swift-package-manager) + - [Manual](#manual) + - [Getting Started](#getting-started) + - [Connecting to a Database](#connecting-to-a-database) + - [Read-Write Databases](#read-write-databases) + - [Read-Only Databases](#read-only-databases) + - [In-Memory Databases](#in-memory-databases) + - [Thread-Safety](#thread-safety) + - [Building Type-Safe SQL](#building-type-safe-sql) + - [Expressions](#expressions) + - [Compound Expressions](#compound-expressions) + - [Queries](#queries) + - [Creating a Table](#creating-a-table) + - [Create Table Options](#create-table-options) + - [Column Constraints](#column-constraints) + - [Table Constraints](#table-constraints) + - [Inserting Rows](#inserting-rows) + - [Handling SQLite errors](#handling-sqlite-errors) + - [Setters](#setters) + - [Selecting Rows](#selecting-rows) + - [Iterating and Accessing Values](#iterating-and-accessing-values) + - [Plucking Rows](#plucking-rows) + - [Building Complex Queries](#building-complex-queries) + - [Selecting Columns](#selecting-columns) + - [Joining Other Tables](#joining-other-tables) + - [Column Namespacing](#column-namespacing) + - [Table Aliasing](#table-aliasing) + - [Filtering Rows](#filtering-rows) + - [Filter Operators and Functions](#filter-operators-and-functions) + - [Sorting Rows](#sorting-rows) + - [Limiting and Paging Results](#limiting-and-paging-results) + - [Aggregation](#aggregation) + - [Updating Rows](#updating-rows) + - [Deleting Rows](#deleting-rows) + - [Transactions and Savepoints](#transactions-and-savepoints) + - [Altering the Schema](#altering-the-schema) + - [Renaming Tables](#renaming-tables) + - [Adding Columns](#adding-columns) + - [Added Column Constraints](#added-column-constraints) + - [Indexes](#indexes) + - [Creating Indexes](#creating-indexes) + - [Dropping Indexes](#dropping-indexes) + - [Dropping Tables](#dropping-tables) + - [Migrations and Schema Versioning](#migrations-and-schema-versioning) + - [Custom Types](#custom-types) + - [Date-Time Values](#date-time-values) + - [Binary Data](#binary-data) + - [Codable Types](#codable-types) + - [Other Operators](#other-operators) + - [Core SQLite Functions](#core-sqlite-functions) + - [Aggregate SQLite Functions](#aggregate-sqlite-functions) + - [Date and Time Functions](#date-and-time-functions) + - [Custom SQL Functions](#custom-sql-functions) + - [Custom Collations](#custom-collations) + - [Full-text Search](#full-text-search) + - [Executing Arbitrary SQL](#executing-arbitrary-sql) + - [Logging](#logging) + + +[↩]: #sqliteswift-documentation + + +## Installation + +> _Note:_ SQLite.swift requires Swift 4 (and +> [Xcode 9](https://developer.apple.com/xcode/downloads/)) or greater. + + +### Carthage + +[Carthage][] is a simple, decentralized dependency manager for Cocoa. To +install SQLite.swift with Carthage: + 1. Make sure Carthage is [installed][Carthage Installation]. + + 2. Update your Cartfile to include the following: + + ```ruby + github "stephencelis/SQLite.swift" ~> 0.11.4 + ``` + + 3. Run `carthage update` and [add the appropriate framework][Carthage Usage]. + + +[Carthage]: https://github.com/Carthage/Carthage +[Carthage Installation]: https://github.com/Carthage/Carthage#installing-carthage +[Carthage Usage]: https://github.com/Carthage/Carthage#adding-frameworks-to-an-application + + +### CocoaPods + +[CocoaPods][] is a dependency manager for Cocoa projects. To install SQLite.swift with CocoaPods: + + 1. Make sure CocoaPods is [installed][CocoaPods Installation] (SQLite.swift + requires version 1.0.0 or greater). + + ```sh + # Using the default Ruby install will require you to use sudo when + # installing and updating gems. + [sudo] gem install cocoapods + ``` + + 2. Update your Podfile to include the following: + + ```ruby + use_frameworks! + + target 'YourAppTargetName' do + pod 'SQLite.swift', '~> 0.11.4' + end + ``` + + 3. Run `pod install --repo-update`. + + +#### Requiring a specific version of SQLite + +If you want to use a more recent version of SQLite than what is provided +with the OS you can require the `standalone` subspec: + +```ruby +target 'YourAppTargetName' do + pod 'SQLite.swift/standalone', '~> 0.11.4' +end +``` + +By default this will use the most recent version of SQLite without any +extras. If you want you can further customize this by adding another +dependency to sqlite3 or one of its subspecs: + +```ruby +target 'YourAppTargetName' do + pod 'SQLite.swift/standalone', '~> 0.11.4' + pod 'sqlite3/fts5', '= 3.15.0' # SQLite 3.15.0 with FTS5 enabled +end +``` + +See the [sqlite3 podspec][sqlite3pod] for more details. + +#### Using SQLite.swift with SQLCipher + +If you want to use [SQLCipher][] with SQLite.swift you can require the +`SQLCipher` subspec in your Podfile: + +```ruby +target 'YourAppTargetName' do + pod 'SQLite.swift/SQLCipher', '~> 0.11.4' +end +``` + +This will automatically add a dependency to the SQLCipher pod as well as +extend `Connection` with methods to change the database key: + +```swift +import SQLite + +let db = try Connection("path/to/db.sqlite3") +try db.key("secret") +try db.rekey("another secret") +``` + +[CocoaPods]: https://cocoapods.org +[CocoaPods Installation]: https://guides.cocoapods.org/using/getting-started.html#getting-started +[sqlite3pod]: https://github.com/clemensg/sqlite3pod +[SQLCipher]: https://www.zetetic.net/sqlcipher/ + +### Swift Package Manager + +The [Swift Package Manager][] is a tool for managing the distribution of +Swift code. It’s integrated with the Swift build system to automate the +process of downloading, compiling, and linking dependencies. + +It is the recommended approach for using SQLite.swift in OSX CLI +applications. + + 1. Add the following to your `Package.swift` file: + + ```swift + dependencies: [ + .package(url: "https://github.com/stephencelis/SQLite.swift.git", from: "0.11.4") + ] + ``` + + 2. Build your project: + + ```sh + $ swift build + ``` + +[Swift Package Manager]: https://swift.org/package-manager + +### Manual + +To install SQLite.swift as an Xcode sub-project: + + 1. Drag the **SQLite.xcodeproj** file into your own project. + ([Submodule](http://git-scm.com/book/en/Git-Tools-Submodules), clone, or + [download](https://github.com/stephencelis/SQLite.swift/archive/master.zip) + the project first.) + + ![Installation Screen Shot](Resources/installation@2x.png) + + 2. In your target’s **General** tab, click the **+** button under **Linked + Frameworks and Libraries**. + + 3. Select the appropriate **SQLite.framework** for your platform. + + 4. **Add**. + +You should now be able to `import SQLite` from any of your target’s source +files and begin using SQLite.swift. + +Some additional steps are required to install the application on an actual +device: + + 5. In the **General** tab, click the **+** button under **Embedded + Binaries**. + + 6. Select the appropriate **SQLite.framework** for your platform. + + 7. **Add**. + +## Getting Started + +To use SQLite.swift classes or structures in your target’s source file, first +import the `SQLite` module. + +```swift +import SQLite +``` + + +### Connecting to a Database + +Database connections are established using the `Connection` class. A +connection is initialized with a path to a database. SQLite will attempt to +create the database file if it does not already exist. + +```swift +let db = try Connection("path/to/db.sqlite3") +``` + + +#### Read-Write Databases + +On iOS, you can create a writable database in your app’s **Documents** +directory. + +```swift +let path = NSSearchPathForDirectoriesInDomains( + .documentDirectory, .userDomainMask, true +).first! + +let db = try Connection("\(path)/db.sqlite3") +``` + +On OS X, you can use your app’s **Application Support** directory: + +```swift +var path = NSSearchPathForDirectoriesInDomains( + .applicationSupportDirectory, .userDomainMask, true +).first! + "/" + Bundle.main.bundleIdentifier! + +// create parent directory iff it doesn’t exist +try FileManager.default.createDirectoryAtPath( + path, withIntermediateDirectories: true, attributes: nil +) + +let db = try Connection("\(path)/db.sqlite3") +``` + + +#### Read-Only Databases + +If you bundle a database with your app (_i.e._, you’ve copied a database file +into your Xcode project and added it to your application target), you can +establish a _read-only_ connection to it. + +```swift +let path = Bundle.main.pathForResource("db", ofType: "sqlite3")! + +let db = try Connection(path, readonly: true) +``` + +> _Note:_ Signed applications cannot modify their bundle resources. If you +> bundle a database file with your app for the purpose of bootstrapping, copy +> it to a writable location _before_ establishing a connection (see +> [Read-Write Databases](#read-write-databases), above, for typical, writable +> locations). +> +> See these two Stack Overflow questions for more information about iOS apps +> with SQLite databases: [1](https://stackoverflow.com/questions/34609746/what-different-between-store-database-in-different-locations-in-ios), +> [2](https://stackoverflow.com/questions/34614968/ios-how-to-copy-pre-seeded-database-at-the-first-running-app-with-sqlite-swift). +> We welcome sample code to show how to successfully copy and use a bundled "seed" +> database for writing in an app. + +#### In-Memory Databases + +If you omit the path, SQLite.swift will provision an [in-memory +database](https://www.sqlite.org/inmemorydb.html). + +```swift +let db = try Connection() // equivalent to `Connection(.inMemory)` +``` + +To create a temporary, disk-backed database, pass an empty file name. + +```swift +let db = try Connection(.temporary) +``` + +In-memory databases are automatically deleted when the database connection is +closed. + + +#### Thread-Safety + +Every Connection comes equipped with its own serial queue for statement +execution and can be safely accessed across threads. Threads that open +transactions and savepoints will block other threads from executing +statements while the transaction is open. + +If you maintain multiple connections for a single database, consider setting a timeout (in seconds) and/or a busy handler: + +```swift +db.busyTimeout = 5 + +db.busyHandler({ tries in + if tries >= 3 { + return false + } + return true +}) +``` + +> _Note:_ The default timeout is 0, so if you see `database is locked` +> errors, you may be trying to access the same database simultaneously from +> multiple connections. + + +## Building Type-Safe SQL + +SQLite.swift comes with a typed expression layer that directly maps +[Swift types](https://developer.apple.com/library/prerelease/ios/documentation/General/Reference/SwiftStandardLibraryReference/) +to their [SQLite counterparts](https://www.sqlite.org/datatype3.html). + +| Swift Type | SQLite Type | +| --------------- | ----------- | +| `Int64`* | `INTEGER` | +| `Double` | `REAL` | +| `String` | `TEXT` | +| `nil` | `NULL` | +| `SQLite.Blob`† | `BLOB` | + +> *While `Int64` is the basic, raw type (to preserve 64-bit integers on +> 32-bit platforms), `Int` and `Bool` work transparently. +> +> †SQLite.swift defines its own `Blob` structure, which safely wraps the +> underlying bytes. +> +> See [Custom Types](#custom-types) for more information about extending +> other classes and structures to work with SQLite.swift. +> +> See [Executing Arbitrary SQL](#executing-arbitrary-sql) to forego the typed +> layer and execute raw SQL, instead. + +These expressions (in the form of the structure, +[`Expression`](#expressions)) build on one another and, with a query +([`QueryType`](#queries)), can create and execute SQL statements. + + +### Expressions + +Expressions are generic structures associated with a type ([built-in +](#building-type-safe-sql) or [custom](#custom-types)), raw SQL, and +(optionally) values to bind to that SQL. Typically, you will only explicitly +create expressions to describe your columns, and typically only once per +column. + +```swift +let id = Expression("id") +let email = Expression("email") +let balance = Expression("balance") +let verified = Expression("verified") +``` + +Use optional generics for expressions that can evaluate to `NULL`. + +```swift +let name = Expression("name") +``` + +> _Note:_ The default `Expression` initializer is for [quoted +> identifiers](https://www.sqlite.org/lang_keywords.html) (_i.e._, column +> names). To build a literal SQL expression, use `init(literal:)`. +> + + +### Compound Expressions + +Expressions can be combined with other expressions and types using +[filter operators and functions](#filter-operators-and-functions) +(as well as other [non-filter operators](#other-operators) and +[functions](#core-sqlite-functions)). These building blocks can create complex SQLite statements. + + +### Queries + +Queries are structures that reference a database and table name, and can be +used to build a variety of statements using expressions. We can create a +query by initializing a `Table`, `View`, or `VirtualTable`. + +```swift +let users = Table("users") +``` + +Assuming [the table exists](#creating-a-table), we can immediately [insert +](#inserting-rows), [select](#selecting-rows), [update](#updating-rows), and +[delete](#deleting-rows) rows. + + +## Creating a Table + +We can build [`CREATE TABLE` +statements](https://www.sqlite.org/lang_createtable.html) by calling the +`create` function on a `Table`. The following is a basic example of +SQLite.swift code (using the [expressions](#expressions) and +[query](#queries) above) and the corresponding SQL it generates. + +```swift +try db.run(users.create { t in // CREATE TABLE "users" ( + t.column(id, primaryKey: true) // "id" INTEGER PRIMARY KEY NOT NULL, + t.column(email, unique: true) // "email" TEXT UNIQUE NOT NULL, + t.column(name) // "name" TEXT +}) // ) +``` + +> _Note:_ `Expression` structures (in this case, the `id` and `email` +> columns), generate `NOT NULL` constraints automatically, while +> `Expression` structures (`name`) do not. + + +### Create Table Options + +The `Table.create` function has several default parameters we can override. + + - `temporary` adds a `TEMPORARY` clause to the `CREATE TABLE` statement (to + create a temporary table that will automatically drop when the database + connection closes). Default: `false`. + + ```swift + try db.run(users.create(temporary: true) { t in /* ... */ }) + // CREATE TEMPORARY TABLE "users" -- ... + ``` + + - `ifNotExists` adds an `IF NOT EXISTS` clause to the `CREATE TABLE` + statement (which will bail out gracefully if the table already exists). + Default: `false`. + + ```swift + try db.run(users.create(ifNotExists: true) { t in /* ... */ }) + // CREATE TABLE "users" IF NOT EXISTS -- ... + ``` + +### Column Constraints + +The `column` function is used for a single column definition. It takes an +[expression](#expressions) describing the column name and type, and accepts +several parameters that map to various column constraints and clauses. + + - `primaryKey` adds a `PRIMARY KEY` constraint to a single column. + + ```swift + t.column(id, primaryKey: true) + // "id" INTEGER PRIMARY KEY NOT NULL + + t.column(id, primaryKey: .autoincrement) + // "id" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL + ``` + + > _Note:_ The `primaryKey` parameter cannot be used alongside + > `references`. If you need to create a column that has a default value + > and is also a primary and/or foreign key, use the `primaryKey` and + > `foreignKey` functions mentioned under + > [Table Constraints](#table-constraints). + > + > Primary keys cannot be optional (_e.g._, `Expression`). + > + > Only an `INTEGER PRIMARY KEY` can take `.autoincrement`. + + - `unique` adds a `UNIQUE` constraint to the column. (See the `unique` + function under [Table Constraints](#table-constraints) for uniqueness + over multiple columns). + + ```swift + t.column(email, unique: true) + // "email" TEXT UNIQUE NOT NULL + ``` + + - `check` attaches a `CHECK` constraint to a column definition in the form + of a boolean expression (`Expression`). Boolean expressions can be + easily built using + [filter operators and functions](#filter-operators-and-functions). + (See also the `check` function under + [Table Constraints](#table-constraints).) + + ```swift + t.column(email, check: email.like("%@%")) + // "email" TEXT NOT NULL CHECK ("email" LIKE '%@%') + ``` + + - `defaultValue` adds a `DEFAULT` clause to a column definition and _only_ + accepts a value (or expression) matching the column’s type. This value is + used if none is explicitly provided during + [an `INSERT`](#inserting-rows). + + ```swift + t.column(name, defaultValue: "Anonymous") + // "name" TEXT DEFAULT 'Anonymous' + ``` + + > _Note:_ The `defaultValue` parameter cannot be used alongside + > `primaryKey` and `references`. If you need to create a column that has + > a default value and is also a primary and/or foreign key, use the + > `primaryKey` and `foreignKey` functions mentioned under + > [Table Constraints](#table-constraints). + + - `collate` adds a `COLLATE` clause to `Expression` (and + `Expression`) column definitions with + [a collating sequence](https://www.sqlite.org/datatype3.html#collation) + defined in the `Collation` enumeration. + + ```swift + t.column(email, collate: .nocase) + // "email" TEXT NOT NULL COLLATE "NOCASE" + + t.column(name, collate: .rtrim) + // "name" TEXT COLLATE "RTRIM" + ``` + + - `references` adds a `REFERENCES` clause to `Expression` (and + `Expression`) column definitions and accepts a table + (`SchemaType`) or namespaced column expression. (See the `foreignKey` + function under [Table Constraints](#table-constraints) for non-integer + foreign key support.) + + ```swift + t.column(user_id, references: users, id) + // "user_id" INTEGER REFERENCES "users" ("id") + ``` + + > _Note:_ The `references` parameter cannot be used alongside + > `primaryKey` and `defaultValue`. If you need to create a column that + > has a default value and is also a primary and/or foreign key, use the + > `primaryKey` and `foreignKey` functions mentioned under + > [Table Constraints](#table-constraints). + + +### Table Constraints + +Additional constraints may be provided outside the scope of a single column +using the following functions. + + - `primaryKey` adds a `PRIMARY KEY` constraint to the table. Unlike [the + column constraint, above](#column-constraints), it supports all SQLite + types, [ascending and descending orders](#sorting-rows), and composite + (multiple column) keys. + + ```swift + t.primaryKey(email.asc, name) + // PRIMARY KEY("email" ASC, "name") + ``` + + - `unique` adds a `UNIQUE` constraint to the table. Unlike + [the column constraint, above](#column-constraints), it + supports composite (multiplecolumn) constraints. + + ```swift + t.unique(local, domain) + // UNIQUE("local", "domain") + ``` + + - `check` adds a `CHECK` constraint to the table in the form of a boolean + expression (`Expression`). Boolean expressions can be easily built + using [filter operators and functions](#filter-operators-and-functions). + (See also the `check` parameter under + [Column Constraints](#column-constraints).) + + ```swift + t.check(balance >= 0) + // CHECK ("balance" >= 0.0) + ``` + + - `foreignKey` adds a `FOREIGN KEY` constraint to the table. Unlike [the + `references` constraint, above](#column-constraints), it supports all + SQLite types, both [`ON UPDATE` and `ON DELETE` + actions](https://www.sqlite.org/foreignkeys.html#fk_actions), and + composite (multiple column) keys. + + ```swift + t.foreignKey(user_id, references: users, id, delete: .setNull) + // FOREIGN KEY("user_id") REFERENCES "users"("id") ON DELETE SET NULL + ``` + + + + +## Inserting Rows + +We can insert rows into a table by calling a [query’s](#queries) `insert` +function with a list of [setters](#setters)—typically [typed column +expressions](#expressions) and values (which can also be expressions)—each +joined by the `<-` operator. + +```swift +try db.run(users.insert(email <- "alice@mac.com", name <- "Alice")) +// INSERT INTO "users" ("email", "name") VALUES ('alice@mac.com', 'Alice') + +try db.run(users.insert(or: .replace, email <- "alice@mac.com", name <- "Alice B.")) +// INSERT OR REPLACE INTO "users" ("email", "name") VALUES ('alice@mac.com', 'Alice B.') +``` + +The `insert` function, when run successfully, returns an `Int64` representing +the inserted row’s [`ROWID`][ROWID]. + +```swift +do { + let rowid = try db.run(users.insert(email <- "alice@mac.com")) + print("inserted id: \(rowid)") +} catch { + print("insertion failed: \(error)") +} +``` + +The [`update`](#updating-rows) and [`delete`](#deleting-rows) functions +follow similar patterns. + +> _Note:_ If `insert` is called without any arguments, the statement will run +> with a `DEFAULT VALUES` clause. The table must not have any constraints +> that aren’t fulfilled by default values. +> +> ```swift +> try db.run(timestamps.insert()) +> // INSERT INTO "timestamps" DEFAULT VALUES +> ``` + +### Handling SQLite errors + +You can pattern match on the error to selectively catch SQLite errors. For example, to +specifically handle constraint errors ([SQLITE_CONSTRAINT](https://sqlite.org/rescode.html#constraint)): + +```swift +do { + try db.run(users.insert(email <- "alice@mac.com")) + try db.run(users.insert(email <- "alice@mac.com")) +} catch let Result.error(message, code, statement) where code == SQLITE_CONSTRAINT { + print("constraint failed: \(message), in \(statement)") +} catch let error { + print("insertion failed: \(error)") +} +``` + +The `Result.error` type contains the English-language text that describes the error (`message`), +the error `code` (see [SQLite result code list](https://sqlite.org/rescode.html#primary_result_code_list) +for details) and a optional reference to the `statement` which produced the error. + +### Setters + +SQLite.swift typically uses the `<-` operator to set values during [inserts +](#inserting-rows) and [updates](#updating-rows). + +```swift +try db.run(counter.update(count <- 0)) +// UPDATE "counters" SET "count" = 0 WHERE ("id" = 1) +``` + +There are also a number of convenience setters that take the existing value +into account using native Swift operators. + +For example, to atomically increment a column, we can use `++`: + +```swift +try db.run(counter.update(count++)) // equivalent to `counter.update(count -> count + 1)` +// UPDATE "counters" SET "count" = "count" + 1 WHERE ("id" = 1) +``` + +To take an amount and “move” it via transaction, we can use `-=` and `+=`: + +```swift +let amount = 100.0 +try db.transaction { + try db.run(alice.update(balance -= amount)) + try db.run(betty.update(balance += amount)) +} +// BEGIN DEFERRED TRANSACTION +// UPDATE "users" SET "balance" = "balance" - 100.0 WHERE ("id" = 1) +// UPDATE "users" SET "balance" = "balance" + 100.0 WHERE ("id" = 2) +// COMMIT TRANSACTION +``` + + +###### Infix Setters + +| Operator | Types | +| -------- | ------------------ | +| `<-` | `Value -> Value` | +| `+=` | `Number -> Number` | +| `-=` | `Number -> Number` | +| `*=` | `Number -> Number` | +| `/=` | `Number -> Number` | +| `%=` | `Int -> Int` | +| `<<=` | `Int -> Int` | +| `>>=` | `Int -> Int` | +| `&=` | `Int -> Int` | +| `||=` | `Int -> Int` | +| `^=` | `Int -> Int` | +| `+=` | `String -> String` | + + +###### Postfix Setters + +| Operator | Types | +| -------- | ------------ | +| `++` | `Int -> Int` | +| `--` | `Int -> Int` | + + +## Selecting Rows + +[Query structures](#queries) are `SELECT` statements waiting to happen. They +execute via [iteration](#iterating-and-accessing-values) and [other means +](#plucking-values) of sequence access. + + +### Iterating and Accessing Values + +Prepared [queries](#queries) execute lazily upon iteration. Each row is +returned as a `Row` object, which can be subscripted with a [column +expression](#expressions) matching one of the columns returned. + +```swift +for user in try db.prepare(users) { + print("id: \(user[id]), email: \(user[email]), name: \(user[name])") + // id: 1, email: alice@mac.com, name: Optional("Alice") +} +// SELECT * FROM "users" +``` + +`Expression` column values are _automatically unwrapped_ (we’ve made a +promise to the compiler that they’ll never be `NULL`), while `Expression` +values remain wrapped. + +⚠ Column subscripts on `Row` will force try and abort execution in error cases. +If you want to handle this yourself, use `Row.get(_ column: Expression)`: + +```swift +for user in try db.prepare(users) { + do { + print("name: \(try user.get(name))") + } catch { + // handle + } +} +``` + +### Plucking Rows + +We can pluck the first row by passing a query to the `pluck` function on a +database connection. + +```swift +if let user = try db.pluck(users) { /* ... */ } // Row +// SELECT * FROM "users" LIMIT 1 +``` + +To collect all rows into an array, we can simply wrap the sequence (though +this is not always the most memory-efficient idea). + +```swift +let all = Array(try db.prepare(users)) +// SELECT * FROM "users" +``` + + +### Building Complex Queries + +[Queries](#queries) have a number of chainable functions that can be used +(with [expressions](#expressions)) to add and modify [a number of +clauses](https://www.sqlite.org/lang_select.html) to the underlying +statement. + +```swift +let query = users.select(email) // SELECT "email" FROM "users" + .filter(name != nil) // WHERE "name" IS NOT NULL + .order(email.desc, name) // ORDER BY "email" DESC, "name" + .limit(5, offset: 1) // LIMIT 5 OFFSET 1 +``` + + +#### Selecting Columns + +By default, [queries](#queries) select every column of the result set (using +`SELECT *`). We can use the `select` function with a list of +[expressions](#expressions) to return specific columns instead. + +```swift +for user in try db.prepare(users.select(id, email)) { + print("id: \(user[id]), email: \(user[email])") + // id: 1, email: alice@mac.com +} +// SELECT "id", "email" FROM "users" +``` + +We can access the results of more complex expressions by holding onto a +reference of the expression itself. + +```swift +let sentence = name + " is " + cast(age) as Expression + " years old!" +for user in users.select(sentence) { + print(user[sentence]) + // Optional("Alice is 30 years old!") +} +// SELECT ((("name" || ' is ') || CAST ("age" AS TEXT)) || ' years old!') FROM "users" +``` + + +#### Joining Other Tables + +We can join tables using a [query’s](#queries) `join` function. + +```swift +users.join(posts, on: user_id == users[id]) +// SELECT * FROM "users" INNER JOIN "posts" ON ("user_id" = "users"."id") +``` + +The `join` function takes a [query](#queries) object (for the table being +joined on), a join condition (`on`), and is prefixed with an optional join +type (default: `.inner`). Join conditions can be built using [filter +operators and functions](#filter-operators-and-functions), generally require +[namespacing](#column-namespacing), and sometimes require +[aliasing](#table-aliasing). + + +##### Column Namespacing + +When joining tables, column names can become ambiguous. _E.g._, both tables +may have an `id` column. + +```swift +let query = users.join(posts, on: user_id == id) +// assertion failure: ambiguous column 'id' +``` + +We can disambiguate by namespacing `id`. + +```swift +let query = users.join(posts, on: user_id == users[id]) +// SELECT * FROM "users" INNER JOIN "posts" ON ("user_id" = "users"."id") +``` + +Namespacing is achieved by subscripting a [query](#queries) with a [column +expression](#expressions) (_e.g._, `users[id]` above becomes `users.id`). + +> _Note:_ We can namespace all of a table’s columns using `*`. +> +> ```swift +> let query = users.select(users[*]) +> // SELECT "users".* FROM "users" +> ``` + + +##### Table Aliasing + +Occasionally, we need to join a table to itself, in which case we must alias +the table with another name. We can achieve this using the +[query’s](#queries) `alias` function. + +```swift +let managers = users.alias("managers") + +let query = users.join(managers, on: managers[id] == users[managerId]) +// SELECT * FROM "users" +// INNER JOIN ("users") AS "managers" ON ("managers"."id" = "users"."manager_id") +``` + +If query results can have ambiguous column names, row values should be +accessed with namespaced [column expressions](#expressions). In the above +case, `SELECT *` immediately namespaces all columns of the result set. + +```swift +let user = try db.pluck(query) +user[id] // fatal error: ambiguous column 'id' + // (please disambiguate: ["users"."id", "managers"."id"]) + +user[users[id]] // returns "users"."id" +user[managers[id]] // returns "managers"."id" +``` + + +#### Filtering Rows + +SQLite.swift filters rows using a [query’s](#queries) `filter` function with +a boolean [expression](#expressions) (`Expression`). + +```swift +users.filter(id == 1) +// SELECT * FROM "users" WHERE ("id" = 1) + +users.filter([1, 2, 3, 4, 5].contains(id)) +// SELECT * FROM "users" WHERE ("id" IN (1, 2, 3, 4, 5)) + +users.filter(email.like("%@mac.com")) +// SELECT * FROM "users" WHERE ("email" LIKE '%@mac.com') + +users.filter(verified && name.lowercaseString == "alice") +// SELECT * FROM "users" WHERE ("verified" AND (lower("name") == 'alice')) + +users.filter(verified || balance >= 10_000) +// SELECT * FROM "users" WHERE ("verified" OR ("balance" >= 10000.0)) +``` + +We can build our own boolean expressions by using one of the many [filter +operators and functions](#filter-operators-and-functions). + +Instead of `filter` we can also use the `where` function which is an alias: + +```swift +users.where(id == 1) +// SELECT * FROM "users" WHERE ("id" = 1) +``` + +##### Filter Operators and Functions + +SQLite.swift defines a number of operators for building filtering predicates. +Operators and functions work together in a type-safe manner, so attempting to +equate or compare different types will prevent compilation. + + +###### Infix Filter Operators + +| Swift | Types | SQLite | +| ----- | -------------------------------- | -------------- | +| `==` | `Equatable -> Bool` | `=`/`IS`* | +| `!=` | `Equatable -> Bool` | `!=`/`IS NOT`* | +| `>` | `Comparable -> Bool` | `>` | +| `>=` | `Comparable -> Bool` | `>=` | +| `<` | `Comparable -> Bool` | `<` | +| `<=` | `Comparable -> Bool` | `<=` | +| `~=` | `(Interval, Comparable) -> Bool` | `BETWEEN` | +| `&&` | `Bool -> Bool` | `AND` | +| `||` | `Bool -> Bool` | `OR` | + +> *When comparing against `nil`, SQLite.swift will use `IS` and `IS NOT` +> accordingly. + + +###### Prefix Filter Operators + +| Swift | Types | SQLite | +| ----- | ------------------ | ------ | +| `!` | `Bool -> Bool` | `NOT` | + + +###### Filtering Functions + +| Swift | Types | SQLite | +| ---------- | ----------------------- | ------- | +| `like` | `String -> Bool` | `LIKE` | +| `glob` | `String -> Bool` | `GLOB` | +| `match` | `String -> Bool` | `MATCH` | +| `contains` | `(Array, T) -> Bool` | `IN` | + + + + + +#### Sorting Rows + +We can pre-sort returned rows using the [query’s](#queries) `order` function. + +_E.g._, to return users sorted by `email`, then `name`, in ascending order: + +```swift +users.order(email, name) +// SELECT * FROM "users" ORDER BY "email", "name" +``` + +The `order` function takes a list of [column expressions](#expressions). + +`Expression` objects have two computed properties to assist sorting: `asc` +and `desc`. These properties append the expression with `ASC` and `DESC` to +mark ascending and descending order respectively. + +```swift +users.order(email.desc, name.asc) +// SELECT * FROM "users" ORDER BY "email" DESC, "name" ASC +``` + + +#### Limiting and Paging Results + +We can limit and skip returned rows using a [query’s](#queries) `limit` +function (and its optional `offset` parameter). + +```swift +users.limit(5) +// SELECT * FROM "users" LIMIT 5 + +users.limit(5, offset: 5) +// SELECT * FROM "users" LIMIT 5 OFFSET 5 +``` + + +#### Aggregation + +[Queries](#queries) come with a number of functions that quickly return +aggregate scalar values from the table. These mirror the [core aggregate +functions](#aggregate-sqlite-functions) and are executed immediately against +the query. + +```swift +let count = try db.scalar(users.count) +// SELECT count(*) FROM "users" +``` + +Filtered queries will appropriately filter aggregate values. + +```swift +let count = try db.scalar(users.filter(name != nil).count) +// SELECT count(*) FROM "users" WHERE "name" IS NOT NULL +``` + + - `count` as a computed property on a query (see examples above) returns + the total number of rows matching the query. + + `count` as a computed property on a column expression returns the total + number of rows where that column is not `NULL`. + + ```swift + let count = try db.scalar(users.select(name.count)) // -> Int + // SELECT count("name") FROM "users" + ``` + + - `max` takes a comparable column expression and returns the largest value + if any exists. + + ```swift + let max = try db.scalar(users.select(id.max)) // -> Int64? + // SELECT max("id") FROM "users" + ``` + + - `min` takes a comparable column expression and returns the smallest value + if any exists. + + ```swift + let min = try db.scalar(users.select(id.min)) // -> Int64? + // SELECT min("id") FROM "users" + ``` + + - `average` takes a numeric column expression and returns the average row + value (as a `Double`) if any exists. + + ```swift + let average = try db.scalar(users.select(balance.average)) // -> Double? + // SELECT avg("balance") FROM "users" + ``` + + - `sum` takes a numeric column expression and returns the sum total of all + rows if any exist. + + ```swift + let sum = try db.scalar(users.select(balance.sum)) // -> Double? + // SELECT sum("balance") FROM "users" + ``` + + - `total`, like `sum`, takes a numeric column expression and returns the + sum total of all rows, but in this case always returns a `Double`, and + returns `0.0` for an empty query. + + ```swift + let total = try db.scalar(users.select(balance.total)) // -> Double + // SELECT total("balance") FROM "users" + ``` + +> _Note:_ Expressions can be prefixed with a `DISTINCT` clause by calling the +> `distinct` computed property. +> +> ```swift +> let count = try db.scalar(users.select(name.distinct.count) // -> Int +> // SELECT count(DISTINCT "name") FROM "users" +> ``` + + +## Updating Rows + +We can update a table’s rows by calling a [query’s](#queries) `update` +function with a list of [setters](#setters)—typically [typed column +expressions](#expressions) and values (which can also be expressions)—each +joined by the `<-` operator. + +When an unscoped query calls `update`, it will update _every_ row in the +table. + +```swift +try db.run(users.update(email <- "alice@me.com")) +// UPDATE "users" SET "email" = 'alice@me.com' +``` + +Be sure to scope `UPDATE` statements beforehand using [the `filter` function +](#filtering-rows). + +```swift +let alice = users.filter(id == 1) +try db.run(alice.update(email <- "alice@me.com")) +// UPDATE "users" SET "email" = 'alice@me.com' WHERE ("id" = 1) +``` + +The `update` function returns an `Int` representing the number of updated +rows. + +```swift +do { + if try db.run(alice.update(email <- "alice@me.com")) > 0 { + print("updated alice") + } else { + print("alice not found") + } +} catch { + print("update failed: \(error)") +} +``` + + +## Deleting Rows + +We can delete rows from a table by calling a [query’s](#queries) `delete` +function. + +When an unscoped query calls `delete`, it will delete _every_ row in the +table. + +```swift +try db.run(users.delete()) +// DELETE FROM "users" +``` + +Be sure to scope `DELETE` statements beforehand using +[the `filter` function](#filtering-rows). + +```swift +let alice = users.filter(id == 1) +try db.run(alice.delete()) +// DELETE FROM "users" WHERE ("id" = 1) +``` + +The `delete` function returns an `Int` representing the number of deleted +rows. + +```swift +do { + if try db.run(alice.delete()) > 0 { + print("deleted alice") + } else { + print("alice not found") + } +} catch { + print("delete failed: \(error)") +} +``` + + +## Transactions and Savepoints + +Using the `transaction` and `savepoint` functions, we can run a series of +statements in a transaction. If a single statement fails or the block throws +an error, the changes will be rolled back. + +```swift +try db.transaction { + let rowid = try db.run(users.insert(email <- "betty@icloud.com")) + try db.run(users.insert(email <- "cathy@icloud.com", managerId <- rowid)) +} +// BEGIN DEFERRED TRANSACTION +// INSERT INTO "users" ("email") VALUES ('betty@icloud.com') +// INSERT INTO "users" ("email", "manager_id") VALUES ('cathy@icloud.com', 2) +// COMMIT TRANSACTION +``` + +> _Note:_ Transactions run in a serial queue. + + +## Altering the Schema + +SQLite.swift comes with several functions (in addition to `Table.create`) for +altering a database schema in a type-safe manner. + + +### Renaming Tables + +We can build an `ALTER TABLE … RENAME TO` statement by calling the `rename` +function on a `Table` or `VirtualTable`. + +```swift +try db.run(users.rename(Table("users_old")) +// ALTER TABLE "users" RENAME TO "users_old" +``` + + +### Adding Columns + +We can add columns to a table by calling `addColumn` function on a `Table`. +SQLite.swift enforces +[the same limited subset](https://www.sqlite.org/lang_altertable.html) of +`ALTER TABLE` that SQLite supports. + +```swift +try db.run(users.addColumn(suffix)) +// ALTER TABLE "users" ADD COLUMN "suffix" TEXT +``` + + +#### Added Column Constraints + +The `addColumn` function shares several of the same [`column` function +parameters](#column-constraints) used when [creating +tables](#creating-a-table). + + - `check` attaches a `CHECK` constraint to a column definition in the form + of a boolean expression (`Expression`). (See also the `check` + function under [Table Constraints](#table-constraints).) + + ```swift + try db.run(users.addColumn(suffix, check: ["JR", "SR"].contains(suffix))) + // ALTER TABLE "users" ADD COLUMN "suffix" TEXT CHECK ("suffix" IN ('JR', 'SR')) + ``` + + - `defaultValue` adds a `DEFAULT` clause to a column definition and _only_ + accepts a value matching the column’s type. This value is used if none is + explicitly provided during [an `INSERT`](#inserting-rows). + + ```swift + try db.run(users.addColumn(suffix, defaultValue: "SR")) + // ALTER TABLE "users" ADD COLUMN "suffix" TEXT DEFAULT 'SR' + ``` + + > _Note:_ Unlike the [`CREATE TABLE` constraint](#table-constraints), + > default values may not be expression structures (including + > `CURRENT_TIME`, `CURRENT_DATE`, or `CURRENT_TIMESTAMP`). + + - `collate` adds a `COLLATE` clause to `Expression` (and + `Expression`) column definitions with [a collating + sequence](https://www.sqlite.org/datatype3.html#collation) defined in the + `Collation` enumeration. + + ```swift + try db.run(users.addColumn(email, collate: .nocase)) + // ALTER TABLE "users" ADD COLUMN "email" TEXT NOT NULL COLLATE "NOCASE" + + try db.run(users.addColumn(name, collate: .rtrim)) + // ALTER TABLE "users" ADD COLUMN "name" TEXT COLLATE "RTRIM" + ``` + + - `references` adds a `REFERENCES` clause to `Int64` (and `Int64?`) column + definitions and accepts a table or namespaced column expression. (See the + `foreignKey` function under [Table Constraints](#table-constraints) for + non-integer foreign key support.) + + ```swift + try db.run(posts.addColumn(userId, references: users, id) + // ALTER TABLE "posts" ADD COLUMN "user_id" INTEGER REFERENCES "users" ("id") + ``` + + +### Indexes + + +#### Creating Indexes + +We can build +[`CREATE INDEX` statements](https://www.sqlite.org/lang_createindex.html) +by calling the `createIndex` function on a `SchemaType`. + +```swift +try db.run(users.createIndex(email)) +// CREATE INDEX "index_users_on_email" ON "users" ("email") +``` + +The index name is generated automatically based on the table and column +names. + +The `createIndex` function has a couple default parameters we can override. + + - `unique` adds a `UNIQUE` constraint to the index. Default: `false`. + + ```swift + try db.run(users.createIndex(email, unique: true)) + // CREATE UNIQUE INDEX "index_users_on_email" ON "users" ("email") + ``` + + - `ifNotExists` adds an `IF NOT EXISTS` clause to the `CREATE TABLE` + statement (which will bail out gracefully if the table already exists). + Default: `false`. + + ```swift + try db.run(users.createIndex(email, ifNotExists: true)) + // CREATE INDEX IF NOT EXISTS "index_users_on_email" ON "users" ("email") + ``` + + +#### Dropping Indexes + +We can build +[`DROP INDEX` statements](https://www.sqlite.org/lang_dropindex.html) by +calling the `dropIndex` function on a `SchemaType`. + +```swift +try db.run(users.dropIndex(email)) +// DROP INDEX "index_users_on_email" +``` + +The `dropIndex` function has one additional parameter, `ifExists`, which +(when `true`) adds an `IF EXISTS` clause to the statement. + +```swift +try db.run(users.dropIndex(email, ifExists: true)) +// DROP INDEX IF EXISTS "index_users_on_email" +``` + + +### Dropping Tables + +We can build +[`DROP TABLE` statements](https://www.sqlite.org/lang_droptable.html) +by calling the `dropTable` function on a `SchemaType`. + +```swift +try db.run(users.drop()) +// DROP TABLE "users" +``` + +The `drop` function has one additional parameter, `ifExists`, which (when +`true`) adds an `IF EXISTS` clause to the statement. + +```swift +try db.run(users.drop(ifExists: true)) +// DROP TABLE IF EXISTS "users" +``` + + +### Migrations and Schema Versioning + +You can add a convenience property on `Connection` to query and set the +[`PRAGMA user_version`](https://sqlite.org/pragma.html#pragma_user_version). + +This is a great way to manage your schema’s version over migrations. + +```swift +extension Connection { + public var userVersion: Int32 { + get { return Int32(try! scalar("PRAGMA user_version") as! Int64)} + set { try! run("PRAGMA user_version = \(newValue)") } + } +} +``` + +Then you can conditionally run your migrations along the lines of: + +```swift +if db.userVersion == 0 { + // handle first migration + db.userVersion = 1 +} +if db.userVersion == 1 { + // handle second migration + db.userVersion = 2 +} +``` + +For more complex migration requirements check out the schema management +system [SQLiteMigrationManager.swift][]. + +## Custom Types + +SQLite.swift supports serializing and deserializing any custom type as long +as it conforms to the `Value` protocol. + +```swift +protocol Value { + typealias Datatype: Binding + class var declaredDatatype: String { get } + class func fromDatatypeValue(datatypeValue: Datatype) -> Self + var datatypeValue: Datatype { get } +} +``` + +The `Datatype` must be one of the basic Swift types that values are bridged +through before serialization and deserialization (see [Building Type-Safe SQL +](#building-type-safe-sql) for a list of types). + +> ⚠ _Note:_ `Binding` is a protocol that SQLite.swift uses internally to +> directly map SQLite types to Swift types. **Do _not_** conform custom types +> to the `Binding` protocol. + + +### Date-Time Values + +In SQLite, `DATETIME` columns can be treated as strings or numbers, so we can +transparently bridge `Date` objects through Swift’s `String` types. + +We can use these types directly in SQLite statements. + +```swift +let published_at = Expression("published_at") + +let published = posts.filter(published_at <= Date()) +// SELECT * FROM "posts" WHERE "published_at" <= '2014-11-18T12:45:30.000' + +let startDate = Date(timeIntervalSince1970: 0) +let published = posts.filter(startDate...Date() ~= published_at) +// SELECT * FROM "posts" WHERE "published_at" BETWEEN '1970-01-01T00:00:00.000' AND '2014-11-18T12:45:30.000' +``` + + +### Binary Data + +We can bridge any type that can be initialized from and encoded to `Data`. + +```swift +extension UIImage: Value { + public class var declaredDatatype: String { + return Blob.declaredDatatype + } + public class func fromDatatypeValue(blobValue: Blob) -> UIImage { + return UIImage(data: Data.fromDatatypeValue(blobValue))! + } + public var datatypeValue: Blob { + return UIImagePNGRepresentation(self)!.datatypeValue + } + +} +``` + +> _Note:_ See the [Archives and Serializations Programming Guide][] for more +> information on encoding and decoding custom types. + + +[Archives and Serializations Programming Guide]: https://developer.apple.com/library/ios/documentation/Cocoa/Conceptual/Archiving/Archiving.html + +## Codable Types + +[Codable types][Encoding and Decoding Custom Types] were introduced as a part +of Swift 4 to allow serializing and deserializing types. SQLite.swift supports +the insertion, updating, and retrieval of basic Codable types. + +[Encoding and Decoding Custom Types]: https://developer.apple.com/documentation/foundation/archives_and_serialization/encoding_and_decoding_custom_types + +### Inserting Codable Types + +Queries have a method to allow inserting an [Encodable][] type. + +```swift +struct User: Encodable { + let name: String +} +try db.run(users.insert(User(name: "test"))) + +``` + +There are two other parameters also available to this method: + +- `userInfo` is a dictionary that is passed to the encoder and made available + to encodable types to allow customizing their behavior. + +- `otherSetters` allows you to specify additional setters on top of those + that are generated from the encodable types themselves. + +[Encodable]: https://developer.apple.com/documentation/swift/encodable + +### Updating Codable Types + +Queries have a method to allow updating an Encodable type. + +```swift +try db.run(users.filter(id == userId).update(user)) + +``` + +> ⚠ Unless filtered, using the update method on an instance of a Codable +> type updates all table rows. + +There are two other parameters also available to this method: + +- `userInfo` is a dictionary that is passed to the encoder and made available + to encodable types to allow customizing their behavior. + +- `otherSetters` allows you to specify additional setters on top of those + that are generated from the encodable types themselves. + +### Retrieving Codable Types + +Rows have a method to decode a [Decodable][] type. + +```swift +let loadedUsers: [User] = try db.prepare(users).map { row in + return try row.decode() +} +``` + +You can also create a decoder to use manually yourself. This can be useful +for example if you are using the +[Facade pattern](https://en.wikipedia.org/wiki/Facade_pattern) to hide +subclasses behind a super class. For example, you may want to encode an Image +type that can be multiple different formats such as PNGImage, JPGImage, or +HEIFIamge. You will need to determine the correct subclass before you know +which type to decode. + +```swift +enum ImageCodingKeys: String, CodingKey { + case kind +} + +enum ImageKind: Int, Codable { + case png, jpg, heif +} + +let loadedImages: [Image] = try db.prepare(images).map { row in + let decoder = row.decoder() + let container = try decoder.container(keyedBy: ImageCodingKeys.self) + switch try container.decode(ImageKind.self, forKey: .kind) { + case .png: + return try PNGImage(from: decoder) + case .jpg: + return try JPGImage(from: decoder) + case .heif: + return try HEIFImage(from: decoder) + } +} +``` + +Both of the above methods also have the following optional parameter: + +- `userInfo` is a dictionary that is passed to the decoder and made available + to decodable types to allow customizing their behavior. + +[Decodable]: https://developer.apple.com/documentation/swift/decodable + +### Restrictions + +There are a few restrictions on using Codable types: + +- The encodable and decodable objects can only use the following types: + - Int, Bool, Float, Double, String + - Nested Codable types that will be encoded as JSON to a single column +- These methods will not handle object relationships for you. You must write + your own Codable and Decodable implementations if you wish to support this. +- The Codable types may not try to access nested containers or nested unkeyed + containers +- The Codable types may not access single value containers or unkeyed + containers +- The Codable types may not access super decoders or encoders + +## Other Operators + +In addition to [filter operators](#filtering-infix-operators), SQLite.swift +defines a number of operators that can modify expression values with +arithmetic, bitwise operations, and concatenation. + + +###### Other Infix Operators + +| Swift | Types | SQLite | +| ----- | -------------------------------- | -------- | +| `+` | `Number -> Number` | `+` | +| `-` | `Number -> Number` | `-` | +| `*` | `Number -> Number` | `*` | +| `/` | `Number -> Number` | `/` | +| `%` | `Int -> Int` | `%` | +| `<<` | `Int -> Int` | `<<` | +| `>>` | `Int -> Int` | `>>` | +| `&` | `Int -> Int` | `&` | +| `|` | `Int -> Int` | `|` | +| `+` | `String -> String` | `||` | + +> _Note:_ SQLite.swift also defines a bitwise XOR operator, `^`, which +> expands the expression `lhs ^ rhs` to `~(lhs & rhs) & (lhs | rhs)`. + + +###### Other Prefix Operators + +| Swift | Types | SQLite | +| ----- | ------------------ | ------ | +| `~` | `Int -> Int` | `~` | +| `-` | `Number -> Number` | `-` | + + +## Core SQLite Functions + +Many of SQLite’s [core functions](https://www.sqlite.org/lang_corefunc.html) +have been surfaced in and type-audited for SQLite.swift. + +> _Note:_ SQLite.swift aliases the `??` operator to the `ifnull` function. +> +> ```swift +> name ?? email // ifnull("name", "email") +> ``` + + +## Aggregate SQLite Functions + +Most of SQLite’s +[aggregate functions](https://www.sqlite.org/lang_aggfunc.html) have been +surfaced in and type-audited for SQLite.swift. + +## Date and Time functions + +SQLite's [date and time](https://www.sqlite.org/lang_datefunc.html) +functions are available: + +```swift +DateFunctions.date("now") +// date('now') +Date().date +// date('2007-01-09T09:41:00.000') +Expression("date").date +// date("date") +``` + +## Custom SQL Functions + +We can create custom SQL functions by calling `createFunction` on a database +connection. + +For example, to give queries access to +[`MobileCoreServices.UTTypeConformsTo`][UTTypeConformsTo], we can +write the following: + +```swift +import MobileCoreServices + +let typeConformsTo: (Expression, Expression) -> Expression = ( + try db.createFunction("typeConformsTo", deterministic: true) { UTI, conformsToUTI in + return UTTypeConformsTo(UTI, conformsToUTI) + } +) +``` + +> _Note:_ The optional `deterministic` parameter is an optimization that +> causes the function to be created with +> [`SQLITE_DETERMINISTIC`](https://www.sqlite.org/c3ref/c_deterministic.html). + +Note `typeConformsTo`’s signature: + +```swift +(Expression, Expression) -> Expression +``` + +Because of this, `createFunction` expects a block with the following +signature: + +```swift +(String, String) -> Bool +``` + +Once assigned, the closure can be called wherever boolean expressions are +accepted. + +```swift +let attachments = Table("attachments") +let UTI = Expression("UTI") + +let images = attachments.filter(typeConformsTo(UTI, kUTTypeImage)) +// SELECT * FROM "attachments" WHERE "typeConformsTo"("UTI", 'public.image') +``` + +> _Note:_ The return type of a function must be +> [a core SQL type](#building-type-safe-sql) or [conform to `Value`](#custom-types). + +We can create loosely-typed functions by handling an array of raw arguments, +instead. + +```swift +db.createFunction("typeConformsTo", deterministic: true) { args in + guard let UTI = args[0] as? String, conformsToUTI = args[1] as? String else { return nil } + return UTTypeConformsTo(UTI, conformsToUTI) +} +``` + +Creating a loosely-typed function cannot return a closure and instead must be +wrapped manually or executed [using raw SQL](#executing-arbitrary-sql). + +```swift +let stmt = try db.prepare("SELECT * FROM attachments WHERE typeConformsTo(UTI, ?)") +for row in stmt.bind(kUTTypeImage) { /* ... */ } +``` + +[UTTypeConformsTo]: https://developer.apple.com/documentation/coreservices/1444079-uttypeconformsto + +## Custom Collations + +We can create custom collating sequences by calling `createCollation` on a +database connection. + +```swift +try db.createCollation("NODIACRITIC") { lhs, rhs in + return lhs.compare(rhs, options: .diacriticInsensitiveSearch) +} +``` + +We can reference a custom collation using the `Custom` member of the +`Collation` enumeration. + +```swift +restaurants.order(collate(.custom("NODIACRITIC"), name)) +// SELECT * FROM "restaurants" ORDER BY "name" COLLATE "NODIACRITIC" +``` + + +## Full-text Search + +We can create a virtual table using the [FTS4 +module](http://www.sqlite.org/fts3.html) by calling `create` on a +`VirtualTable`. + +```swift +let emails = VirtualTable("emails") +let subject = Expression("subject") +let body = Expression("body") + +try db.run(emails.create(.FTS4(subject, body))) +// CREATE VIRTUAL TABLE "emails" USING fts4("subject", "body") +``` + +We can specify a [tokenizer](http://www.sqlite.org/fts3.html#tokenizer) using the `tokenize` parameter. + +```swift +try db.run(emails.create(.FTS4([subject, body], tokenize: .Porter))) +// CREATE VIRTUAL TABLE "emails" USING fts4("subject", "body", tokenize=porter) +``` + +We can set the full range of parameters by creating a `FTS4Config` object. + +```swift +let emails = VirtualTable("emails") +let subject = Expression("subject") +let body = Expression("body") +let config = FTS4Config() + .column(subject) + .column(body, [.unindexed]) + .languageId("lid") + .order(.desc) + +try db.run(emails.create(.FTS4(config)) +// CREATE VIRTUAL TABLE "emails" USING fts4("subject", "body", notindexed="body", languageid="lid", order="desc") +``` + +Once we insert a few rows, we can search using the `match` function, which +takes a table or column as its first argument and a query string as its +second. + +```swift +try db.run(emails.insert( + subject <- "Just Checking In", + body <- "Hey, I was just wondering...did you get my last email?" +)) + +let wonderfulEmails: QueryType = emails.match("wonder*") +// SELECT * FROM "emails" WHERE "emails" MATCH 'wonder*' + +let replies = emails.filter(subject.match("Re:*")) +// SELECT * FROM "emails" WHERE "subject" MATCH 'Re:*' +``` + +### FTS5 + +When linking against a version of SQLite with +[FTS5](http://www.sqlite.org/fts5.html) enabled we can create the virtual +table in a similar fashion. + +```swift +let emails = VirtualTable("emails") +let subject = Expression("subject") +let body = Expression("body") +let config = FTS5Config() + .column(subject) + .column(body, [.unindexed]) + +try db.run(emails.create(.FTS5(config)) +// CREATE VIRTUAL TABLE "emails" USING fts5("subject", "body" UNINDEXED) + +// Note that FTS5 uses a different syntax to select columns, so we need to rewrite +// the last FTS4 query above as: +let replies = emails.filter(emails.match("subject:\"Re:\"*)) +// SELECT * FROM "emails" WHERE "emails" MATCH 'subject:"Re:"*' + +// https://www.sqlite.org/fts5.html#_changes_to_select_statements_ +``` + +## Executing Arbitrary SQL + +Though we recommend you stick with SQLite.swift’s +[type-safe system](#building-type-safe-sql) whenever possible, it is possible +to simply and safely prepare and execute raw SQL statements via a `Database` connection +using the following functions. + + - `execute` runs an arbitrary number of SQL statements as a convenience. + + ```swift + try db.execute(""" + BEGIN TRANSACTION; + CREATE TABLE users ( + id INTEGER PRIMARY KEY NOT NULL, + email TEXT UNIQUE NOT NULL, + name TEXT + ); + CREATE TABLE posts ( + id INTEGER PRIMARY KEY NOT NULL, + title TEXT NOT NULL, + body TEXT NOT NULL, + published_at DATETIME + ); + PRAGMA user_version = 1; + COMMIT TRANSACTION; + """ + ) + ``` + + - `prepare` prepares a single `Statement` object from a SQL string, + optionally binds values to it (using the statement’s `bind` function), + and returns the statement for deferred execution. + + ```swift + let stmt = try db.prepare("INSERT INTO users (email) VALUES (?)") + ``` + + Once prepared, statements may be executed using `run`, binding any + unbound parameters. + + ```swift + try stmt.run("alice@mac.com") + db.changes // -> {Some 1} + ``` + + Statements with results may be iterated over, using the columnNames if + useful. + + ```swift + let stmt = try db.prepare("SELECT id, email FROM users") + for row in stmt { + for (index, name) in stmt.columnNames.enumerate() { + print ("\(name)=\(row[index]!)") + // id: Optional(1), email: Optional("alice@mac.com") + } + } + ``` + + - `run` prepares a single `Statement` object from a SQL string, optionally + binds values to it (using the statement’s `bind` function), executes, + and returns the statement. + + ```swift + try db.run("INSERT INTO users (email) VALUES (?)", "alice@mac.com") + ``` + + - `scalar` prepares a single `Statement` object from a SQL string, + optionally binds values to it (using the statement’s `bind` function), + executes, and returns the first value of the first row. + + ```swift + let count = try db.scalar("SELECT count(*) FROM users") as! Int64 + ``` + + Statements also have a `scalar` function, which can optionally re-bind + values at execution. + + ```swift + let stmt = try db.prepare("SELECT count (*) FROM users") + let count = try stmt.scalar() as! Int64 + ``` + + +## Logging + +We can log SQL using the database’s `trace` function. + +```swift +#if DEBUG + db.trace { print($0) } +#endif +``` + + +[ROWID]: https://sqlite.org/lang_createtable.html#rowid +[SQLiteMigrationManager.swift]: https://github.com/garriguv/SQLiteMigrationManager.swift diff --git a/Carthage/Checkouts/SQLite.swift/Documentation/Planning.md b/Carthage/Checkouts/SQLite.swift/Documentation/Planning.md new file mode 100644 index 0000000..8a3d5a1 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Documentation/Planning.md @@ -0,0 +1,38 @@ +# SQLite.swift Planning + +This document captures both near term steps (aka Roadmap) and feature +requests. The goal is to add some visibility and guidance for future +additions and Pull Requests, as well as to keep the Issues list clear of +enhancement requests so that bugs are more visible. + +> ⚠ This document is currently not actively maintained. See +> the [0.12.0 milestone](https://github.com/stephencelis/SQLite.swift/issues?q=is%3Aopen+is%3Aissue+milestone%3A0.12.0) +> on Github for additional information about planned features for the next release. + +## Roadmap + +_Lists agreed upon next steps in approximate priority order._ + +## Feature Requests + +_A gathering point for ideas for new features. In general, the corresponding +issue will be closed once it is added here, with the assumption that it will +be referred to when it comes time to add the corresponding feature._ + +### Features + + * encapsulate ATTACH DATABASE / DETACH DATABASE as methods, per + [#30](https://github.com/stephencelis/SQLite.swift/issues/30) + * provide separate threads for update vs read, so updates don't block reads, + per [#236](https://github.com/stephencelis/SQLite.swift/issues/236) + * expose triggers, per + [#164](https://github.com/stephencelis/SQLite.swift/issues/164) + +## Suspended Feature Requests + +_Features that are not actively being considered, perhaps because of no clean +type-safe way to implement them with the current Swift, or bugs, or just +general uncertainty._ + + * provide a mechanism for INSERT INTO multiple values, per + [#168](https://github.com/stephencelis/SQLite.swift/issues/168) diff --git a/Carthage/Checkouts/SQLite.swift/Documentation/Resources/installation@2x.png b/Carthage/Checkouts/SQLite.swift/Documentation/Resources/installation@2x.png new file mode 100644 index 0000000..6b31f45 Binary files /dev/null and b/Carthage/Checkouts/SQLite.swift/Documentation/Resources/installation@2x.png differ diff --git a/Carthage/Checkouts/SQLite.swift/Documentation/Resources/playground@2x.png b/Carthage/Checkouts/SQLite.swift/Documentation/Resources/playground@2x.png new file mode 100644 index 0000000..32646d6 Binary files /dev/null and b/Carthage/Checkouts/SQLite.swift/Documentation/Resources/playground@2x.png differ diff --git a/Carthage/Checkouts/SQLite.swift/LICENSE.txt b/Carthage/Checkouts/SQLite.swift/LICENSE.txt new file mode 100644 index 0000000..13303c1 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/LICENSE.txt @@ -0,0 +1,21 @@ +(The MIT License) + +Copyright (c) 2014-2015 Stephen Celis () + +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. diff --git a/Carthage/Checkouts/SQLite.swift/Makefile b/Carthage/Checkouts/SQLite.swift/Makefile new file mode 100644 index 0000000..ebd3849 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Makefile @@ -0,0 +1,60 @@ +BUILD_TOOL = xcodebuild +BUILD_SCHEME = SQLite Mac +IOS_SIMULATOR = iPhone 6s +IOS_VERSION = 11.0 +ifeq ($(BUILD_SCHEME),SQLite iOS) + BUILD_ARGUMENTS = -scheme "$(BUILD_SCHEME)" -destination "platform=iOS Simulator,name=$(IOS_SIMULATOR),OS=$(IOS_VERSION)" +else + BUILD_ARGUMENTS = -scheme "$(BUILD_SCHEME)" +endif + +XCPRETTY := $(shell command -v xcpretty) +SWIFTCOV := $(shell command -v swiftcov) +GCOVR := $(shell command -v gcovr) +TEST_ACTIONS := clean build build-for-testing test-without-building + +default: test + +build: + $(BUILD_TOOL) $(BUILD_ARGUMENTS) + +test: +ifdef XCPRETTY + @set -o pipefail && $(BUILD_TOOL) $(BUILD_ARGUMENTS) $(TEST_ACTIONS) | $(XCPRETTY) -c +else + $(BUILD_TOOL) $(BUILD_ARGUMENTS) $(TEST_ACTIONS) +endif + +coverage: +ifdef SWIFTCOV + $(SWIFTCOV) generate --output coverage \ + $(BUILD_TOOL) $(BUILD_ARGUMENTS) -configuration Release test \ + -- ./SQLite/*.swift +ifdef GCOVR + $(GCOVR) \ + --root . \ + --use-gcov-files \ + --html \ + --html-details \ + --output coverage/index.html \ + --keep +else + @echo gcovr must be installed for HTML output: https://github.com/gcovr/gcovr +endif +else + @echo swiftcov must be installed for coverage: https://github.com/realm/SwiftCov + @exit 1 +endif + +clean: + $(BUILD_TOOL) $(BUILD_ARGUMENTS) clean + rm -r coverage + +repl: + @$(BUILD_TOOL) $(BUILD_ARGUMENTS) -derivedDataPath $(TMPDIR)/SQLite.swift > /dev/null && \ + swift -F '$(TMPDIR)/SQLite.swift/Build/Products/Debug' + +sloc: + @zsh -c "grep -vE '^ *//|^$$' SQLite/*/*.{swift,h,m} | wc -l" + +.PHONY: test coverage clean repl sloc diff --git a/Carthage/Checkouts/SQLite.swift/Package.swift b/Carthage/Checkouts/SQLite.swift/Package.swift new file mode 100644 index 0000000..c008e48 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Package.swift @@ -0,0 +1,24 @@ +// swift-tools-version:4.0 +import PackageDescription + +let package = Package( + name: "SQLite.swift", + products: [.library(name: "SQLite", targets: ["SQLite"])], + targets: [ + .target(name: "SQLite", dependencies: ["SQLiteObjc"]), + .target(name: "SQLiteObjc"), + .testTarget(name: "SQLiteTests", dependencies: ["SQLite"], path: "Tests/SQLiteTests") + ], + swiftLanguageVersions: [4] +) + +#if os(Linux) + package.dependencies = [.package(url: "https://github.com/stephencelis/CSQLite.git", from: "0.0.3")] + package.targets = [ + .target(name: "SQLite", exclude: ["Extensions/FTS4.swift", "Extensions/FTS5.swift"]), + .testTarget(name: "SQLiteTests", dependencies: ["SQLite"], path: "Tests/SQLiteTests", exclude: [ + "FTS4Tests.swift", + "FTS5Tests.swift" + ]) + ] +#endif diff --git a/Carthage/Checkouts/SQLite.swift/README.md b/Carthage/Checkouts/SQLite.swift/README.md new file mode 100644 index 0000000..3900c0a --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/README.md @@ -0,0 +1,293 @@ +# SQLite.swift + +[![Build Status][TravisBadge]][TravisLink] [![CocoaPods Version][CocoaPodsVersionBadge]][CocoaPodsVersionLink] [![Swift4 compatible][Swift4Badge]][Swift4Link] [![Platform][PlatformBadge]][PlatformLink] [![Carthage compatible][CartagheBadge]][CarthageLink] [![Join the chat at https://gitter.im/stephencelis/SQLite.swift][GitterBadge]][GitterLink] + +A type-safe, [Swift][]-language layer over [SQLite3][]. + +[SQLite.swift][] provides compile-time confidence in SQL statement +syntax _and_ intent. + +## Features + + - A pure-Swift interface + - A type-safe, optional-aware SQL expression builder + - A flexible, chainable, lazy-executing query layer + - Automatically-typed data access + - A lightweight, uncomplicated query and parameter binding interface + - Developer-friendly error handling and debugging + - [Full-text search][] support + - [Well-documented][See Documentation] + - Extensively tested + - [SQLCipher][] support via CocoaPods + - Active support at + [StackOverflow](http://stackoverflow.com/questions/tagged/sqlite.swift), + and [Gitter Chat Room](https://gitter.im/stephencelis/SQLite.swift) + (_experimental_) + +[SQLCipher]: https://www.zetetic.net/sqlcipher/ +[Full-text search]: Documentation/Index.md#full-text-search +[See Documentation]: Documentation/Index.md#sqliteswift-documentation + + +## Usage + +```swift +import SQLite + +let db = try Connection("path/to/db.sqlite3") + +let users = Table("users") +let id = Expression("id") +let name = Expression("name") +let email = Expression("email") + +try db.run(users.create { t in + t.column(id, primaryKey: true) + t.column(name) + t.column(email, unique: true) +}) +// CREATE TABLE "users" ( +// "id" INTEGER PRIMARY KEY NOT NULL, +// "name" TEXT, +// "email" TEXT NOT NULL UNIQUE +// ) + +let insert = users.insert(name <- "Alice", email <- "alice@mac.com") +let rowid = try db.run(insert) +// INSERT INTO "users" ("name", "email") VALUES ('Alice', 'alice@mac.com') + +for user in try db.prepare(users) { + print("id: \(user[id]), name: \(user[name]), email: \(user[email])") + // id: 1, name: Optional("Alice"), email: alice@mac.com +} +// SELECT * FROM "users" + +let alice = users.filter(id == rowid) + +try db.run(alice.update(email <- email.replace("mac.com", with: "me.com"))) +// UPDATE "users" SET "email" = replace("email", 'mac.com', 'me.com') +// WHERE ("id" = 1) + +try db.run(alice.delete()) +// DELETE FROM "users" WHERE ("id" = 1) + +try db.scalar(users.count) // 0 +// SELECT count(*) FROM "users" +``` + +SQLite.swift also works as a lightweight, Swift-friendly wrapper over the C +API. + +```swift +let stmt = try db.prepare("INSERT INTO users (email) VALUES (?)") +for email in ["betty@icloud.com", "cathy@icloud.com"] { + try stmt.run(email) +} + +db.totalChanges // 3 +db.changes // 1 +db.lastInsertRowid // 3 + +for row in try db.prepare("SELECT id, email FROM users") { + print("id: \(row[0]), email: \(row[1])") + // id: Optional(2), email: Optional("betty@icloud.com") + // id: Optional(3), email: Optional("cathy@icloud.com") +} + +try db.scalar("SELECT count(*) FROM users") // 2 +``` + +[Read the documentation][See Documentation] or explore more, +interactively, from the Xcode project’s playground. + +![SQLite.playground Screen Shot](Documentation/Resources/playground@2x.png) + +For a more comprehensive example, see +[this article][Create a Data Access Layer with SQLite.swift and Swift 2] +and the [companion repository][SQLiteDataAccessLayer2]. + + +[Create a Data Access Layer with SQLite.swift and Swift 2]: http://masteringswift.blogspot.com/2015/09/create-data-access-layer-with.html +[SQLiteDataAccessLayer2]: https://github.com/hoffmanjon/SQLiteDataAccessLayer2/tree/master + +## Installation + +> _Note:_ SQLite.swift requires Swift 4 (and [Xcode][] 9). + +### Carthage + +[Carthage][] is a simple, decentralized dependency manager for Cocoa. To +install SQLite.swift with Carthage: + + 1. Make sure Carthage is [installed][Carthage Installation]. + + 2. Update your Cartfile to include the following: + + ```ruby + github "stephencelis/SQLite.swift" ~> 0.11.4 + ``` + + 3. Run `carthage update` and + [add the appropriate framework][Carthage Usage]. + + +[Carthage]: https://github.com/Carthage/Carthage +[Carthage Installation]: https://github.com/Carthage/Carthage#installing-carthage +[Carthage Usage]: https://github.com/Carthage/Carthage#adding-frameworks-to-an-application + + +### CocoaPods + +[CocoaPods][] is a dependency manager for Cocoa projects. To install +SQLite.swift with CocoaPods: + + 1. Make sure CocoaPods is [installed][CocoaPods Installation]. (SQLite.swift + requires version 1.0.0 or greater.) + + ```sh + # Using the default Ruby install will require you to use sudo when + # installing and updating gems. + [sudo] gem install cocoapods + ``` + + 2. Update your Podfile to include the following: + + ```ruby + use_frameworks! + + target 'YourAppTargetName' do + pod 'SQLite.swift', '~> 0.11.4' + end + ``` + + 3. Run `pod install --repo-update`. + +[CocoaPods]: https://cocoapods.org +[CocoaPods Installation]: https://guides.cocoapods.org/using/getting-started.html#getting-started + +### Swift Package Manager + +The [Swift Package Manager][] is a tool for managing the distribution of +Swift code. + +1. Add the following to your `Package.swift` file: + + ```swift + dependencies: [ + .package(url: "https://github.com/stephencelis/SQLite.swift.git", from: "0.11.4") + ] + ``` + +2. Build your project: + + ```sh + $ swift build + ``` + +[Swift Package Manager]: https://swift.org/package-manager + +### Manual + +To install SQLite.swift as an Xcode sub-project: + + 1. Drag the **SQLite.xcodeproj** file into your own project. + ([Submodule][], clone, or [download][] the project first.) + + ![Installation Screen Shot](Documentation/Resources/installation@2x.png) + + 2. In your target’s **General** tab, click the **+** button under **Linked + Frameworks and Libraries**. + + 3. Select the appropriate **SQLite.framework** for your platform. + + 4. **Add**. + +Some additional steps are required to install the application on an actual +device: + + 5. In the **General** tab, click the **+** button under **Embedded + Binaries**. + + 6. Select the appropriate **SQLite.framework** for your platform. + + 7. **Add**. + + +[Xcode]: https://developer.apple.com/xcode/downloads/ +[Submodule]: http://git-scm.com/book/en/Git-Tools-Submodules +[download]: https://github.com/stephencelis/SQLite.swift/archive/master.zip + + +## Communication + +[See the planning document] for a roadmap and existing feature requests. + +[Read the contributing guidelines][]. The _TL;DR_ (but please; _R_): + + - Need **help** or have a **general question**? [Ask on Stack + Overflow][] (tag `sqlite.swift`). + - Found a **bug** or have a **feature request**? [Open an issue][]. + - Want to **contribute**? [Submit a pull request][]. + +[See the planning document]: /Documentation/Planning.md +[Read the contributing guidelines]: ./CONTRIBUTING.md#contributing +[Ask on Stack Overflow]: http://stackoverflow.com/questions/tagged/sqlite.swift +[Open an issue]: https://github.com/stephencelis/SQLite.swift/issues/new +[Submit a pull request]: https://github.com/stephencelis/SQLite.swift/fork + + +## Author + + - [Stephen Celis](mailto:stephen@stephencelis.com) + ([@stephencelis](https://twitter.com/stephencelis)) + + +## License + +SQLite.swift is available under the MIT license. See [the LICENSE +file](./LICENSE.txt) for more information. + +## Related + +These projects enhance or use SQLite.swift: + + - [SQLiteMigrationManager.swift][] (inspired by + [FMDBMigrationManager][]) + + +## Alternatives + +Looking for something else? Try another Swift wrapper (or [FMDB][]): + + - [Camembert](https://github.com/remirobert/Camembert) + - [GRDB](https://github.com/groue/GRDB.swift) + - [SQLiteDB](https://github.com/FahimF/SQLiteDB) + - [Squeal](https://github.com/nerdyc/Squeal) + - [SwiftData](https://github.com/ryanfowler/SwiftData) + - [SwiftSQLite](https://github.com/chrismsimpson/SwiftSQLite) + +[Swift]: https://swift.org/ +[SQLite3]: http://www.sqlite.org +[SQLite.swift]: https://github.com/stephencelis/SQLite.swift + +[TravisBadge]: https://img.shields.io/travis/stephencelis/SQLite.swift/master.svg?style=flat +[TravisLink]: https://travis-ci.org/stephencelis/SQLite.swift + +[CocoaPodsVersionBadge]: https://cocoapod-badges.herokuapp.com/v/SQLite.swift/badge.png +[CocoaPodsVersionLink]: http://cocoadocs.org/docsets/SQLite.swift + +[PlatformBadge]: https://cocoapod-badges.herokuapp.com/p/SQLite.swift/badge.png +[PlatformLink]: http://cocoadocs.org/docsets/SQLite.swift + +[CartagheBadge]: https://img.shields.io/badge/Carthage-compatible-4BC51D.svg?style=flat +[CarthageLink]: https://github.com/Carthage/Carthage + +[GitterBadge]: https://badges.gitter.im/stephencelis/SQLite.swift.svg +[GitterLink]: https://gitter.im/stephencelis/SQLite.swift + +[Swift4Badge]: https://img.shields.io/badge/swift-4-orange.svg?style=flat +[Swift4Link]: https://developer.apple.com/swift/ + +[SQLiteMigrationManager.swift]: https://github.com/garriguv/SQLiteMigrationManager.swift +[FMDB]: https://github.com/ccgus/fmdb +[FMDBMigrationManager]: https://github.com/layerhq/FMDBMigrationManager diff --git a/Carthage/Checkouts/SQLite.swift/SQLite.playground/Contents.swift b/Carthage/Checkouts/SQLite.swift/SQLite.playground/Contents.swift new file mode 100644 index 0000000..11e1313 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/SQLite.playground/Contents.swift @@ -0,0 +1,43 @@ +import SQLite + +let db = try! Connection() + +db.trace { print($0) } + +let users = Table("users") + +let id = Expression("id") +let email = Expression("email") +let name = Expression("name") + +try! db.run(users.create { t in + t.column(id, primaryKey: true) + t.column(email, unique: true, check: email.like("%@%")) + t.column(name) +}) + +let rowid = try! db.run(users.insert(email <- "alice@mac.com")) +let alice = users.filter(id == rowid) + +for user in try! db.prepare(users) { + print("id: \(user[id]), email: \(user[email])") +} + +let emails = VirtualTable("emails") + +let subject = Expression("subject") +let body = Expression("body") + +try! db.run(emails.create(.FTS4(subject, body))) + +try! db.run(emails.insert( + subject <- "Hello, world!", + body <- "This is a hello world message." +)) + +let row = try! db.pluck(emails.match("hello")) + +let query = try! db.prepare(emails.match("hello")) +for row in query { + print(row[subject]) +} diff --git a/Carthage/Checkouts/SQLite.swift/SQLite.playground/contents.xcplayground b/Carthage/Checkouts/SQLite.swift/SQLite.playground/contents.xcplayground new file mode 100644 index 0000000..fd676d5 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/SQLite.playground/contents.xcplayground @@ -0,0 +1,4 @@ + + + + \ No newline at end of file diff --git a/Carthage/Checkouts/SQLite.swift/SQLite.swift.podspec b/Carthage/Checkouts/SQLite.swift/SQLite.swift.podspec new file mode 100644 index 0000000..4a32933 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/SQLite.swift.podspec @@ -0,0 +1,69 @@ +Pod::Spec.new do |s| + s.name = "SQLite.swift" + s.version = "0.11.4" + s.summary = "A type-safe, Swift-language layer over SQLite3 for iOS and OS X." + + s.description = <<-DESC + SQLite.swift provides compile-time confidence in SQL statement syntax and + intent. + DESC + + s.homepage = "https://github.com/stephencelis/SQLite.swift" + s.license = 'MIT' + s.author = { "Stephen Celis" => "stephen@stephencelis.com" } + s.source = { :git => "https://github.com/stephencelis/SQLite.swift.git", :tag => s.version.to_s } + s.social_media_url = 'https://twitter.com/stephencelis' + + s.module_name = 'SQLite' + s.ios.deployment_target = "8.0" + s.tvos.deployment_target = "9.1" + s.osx.deployment_target = "10.10" + s.watchos.deployment_target = "2.2" + s.default_subspec = 'standard' + s.pod_target_xcconfig = { + 'SWIFT_VERSION' => '4.0', + } + + s.subspec 'standard' do |ss| + ss.source_files = 'Sources/{SQLite,SQLiteObjc}/**/*.{c,h,m,swift}' + ss.exclude_files = 'Sources/**/Cipher.swift' + ss.private_header_files = 'Sources/SQLiteObjc/*.h' + ss.library = 'sqlite3' + + ss.test_spec 'tests' do |test_spec| + test_spec.resources = 'Tests/SQLiteTests/fixtures/*' + test_spec.source_files = 'Tests/SQLiteTests/*.swift' + end + end + + s.subspec 'standalone' do |ss| + ss.source_files = 'Sources/{SQLite,SQLiteObjc}/**/*.{c,h,m,swift}' + ss.exclude_files = 'Sources/**/Cipher.swift' + ss.private_header_files = 'Sources/SQLiteObjc/*.h' + + ss.xcconfig = { + 'OTHER_SWIFT_FLAGS' => '$(inherited) -DSQLITE_SWIFT_STANDALONE' + } + ss.dependency 'sqlite3' + + ss.test_spec 'tests' do |test_spec| + test_spec.resources = 'Tests/SQLiteTests/fixtures/*' + test_spec.source_files = 'Tests/SQLiteTests/*.swift' + end + end + + s.subspec 'SQLCipher' do |ss| + ss.source_files = 'Sources/{SQLite,SQLiteObjc}/**/*.{c,h,m,swift}' + ss.private_header_files = 'Sources/SQLiteObjc/*.h' + ss.xcconfig = { + 'OTHER_SWIFT_FLAGS' => '$(inherited) -DSQLITE_SWIFT_SQLCIPHER', + 'GCC_PREPROCESSOR_DEFINITIONS' => '$(inherited) SQLITE_HAS_CODEC=1' + } + ss.dependency 'SQLCipher', '>= 3.4.0' + + ss.test_spec 'tests' do |test_spec| + test_spec.resources = 'Tests/SQLiteTests/fixtures/*' + test_spec.source_files = 'Tests/SQLiteTests/*.swift' + end + end +end diff --git a/Carthage/Checkouts/SQLite.swift/SQLite.xcodeproj/project.pbxproj b/Carthage/Checkouts/SQLite.swift/SQLite.xcodeproj/project.pbxproj new file mode 100644 index 0000000..cb77660 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/SQLite.xcodeproj/project.pbxproj @@ -0,0 +1,1502 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 46; + objects = { + +/* Begin PBXBuildFile section */ + 03A65E641C6BB0F60062603F /* SQLite.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 03A65E5A1C6BB0F50062603F /* SQLite.framework */; }; + 03A65E721C6BB2D30062603F /* SQLite.h in Headers */ = {isa = PBXBuildFile; fileRef = EE247AD61C3F04ED00AE3E12 /* SQLite.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 03A65E731C6BB2D80062603F /* Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AF71C3F06E900AE3E12 /* Foundation.swift */; }; + 03A65E741C6BB2DA0062603F /* Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AF81C3F06E900AE3E12 /* Helpers.swift */; }; + 03A65E751C6BB2DF0062603F /* SQLite-Bridging.h in Headers */ = {isa = PBXBuildFile; fileRef = EE91808D1C46E5230038162A /* SQLite-Bridging.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 03A65E761C6BB2E60062603F /* Blob.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AEE1C3F06E900AE3E12 /* Blob.swift */; }; + 03A65E771C6BB2E60062603F /* Connection.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AEF1C3F06E900AE3E12 /* Connection.swift */; }; + 03A65E781C6BB2EA0062603F /* fts3_tokenizer.h in Headers */ = {isa = PBXBuildFile; fileRef = EE247AF01C3F06E900AE3E12 /* fts3_tokenizer.h */; }; + 03A65E791C6BB2EF0062603F /* SQLite-Bridging.m in Sources */ = {isa = PBXBuildFile; fileRef = EE247AF11C3F06E900AE3E12 /* SQLite-Bridging.m */; }; + 03A65E7A1C6BB2F70062603F /* Statement.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AF21C3F06E900AE3E12 /* Statement.swift */; }; + 03A65E7B1C6BB2F70062603F /* Value.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AF31C3F06E900AE3E12 /* Value.swift */; }; + 03A65E7C1C6BB2F70062603F /* FTS4.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AF51C3F06E900AE3E12 /* FTS4.swift */; }; + 03A65E7D1C6BB2F70062603F /* RTree.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AF61C3F06E900AE3E12 /* RTree.swift */; }; + 03A65E7E1C6BB2FB0062603F /* AggregateFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AFA1C3F06E900AE3E12 /* AggregateFunctions.swift */; }; + 03A65E7F1C6BB2FB0062603F /* Collation.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AFB1C3F06E900AE3E12 /* Collation.swift */; }; + 03A65E801C6BB2FB0062603F /* CoreFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AFC1C3F06E900AE3E12 /* CoreFunctions.swift */; }; + 03A65E811C6BB2FB0062603F /* CustomFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AFD1C3F06E900AE3E12 /* CustomFunctions.swift */; }; + 03A65E821C6BB2FB0062603F /* Expression.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AFE1C3F06E900AE3E12 /* Expression.swift */; }; + 03A65E831C6BB2FB0062603F /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AFF1C3F06E900AE3E12 /* Operators.swift */; }; + 03A65E841C6BB2FB0062603F /* Query.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B001C3F06E900AE3E12 /* Query.swift */; }; + 03A65E851C6BB2FB0062603F /* Schema.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B011C3F06E900AE3E12 /* Schema.swift */; }; + 03A65E861C6BB2FB0062603F /* Setter.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B021C3F06E900AE3E12 /* Setter.swift */; }; + 03A65E871C6BB3030062603F /* AggregateFunctionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B1A1C3F137700AE3E12 /* AggregateFunctionsTests.swift */; }; + 03A65E881C6BB3030062603F /* BlobTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B1B1C3F137700AE3E12 /* BlobTests.swift */; }; + 03A65E891C6BB3030062603F /* ConnectionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B1D1C3F137700AE3E12 /* ConnectionTests.swift */; }; + 03A65E8A1C6BB3030062603F /* CoreFunctionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B1E1C3F137700AE3E12 /* CoreFunctionsTests.swift */; }; + 03A65E8B1C6BB3030062603F /* CustomFunctionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B1F1C3F137700AE3E12 /* CustomFunctionsTests.swift */; }; + 03A65E8C1C6BB3030062603F /* ExpressionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B201C3F137700AE3E12 /* ExpressionTests.swift */; }; + 03A65E8D1C6BB3030062603F /* FTS4Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B211C3F137700AE3E12 /* FTS4Tests.swift */; }; + 03A65E8E1C6BB3030062603F /* OperatorsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B2A1C3F141E00AE3E12 /* OperatorsTests.swift */; }; + 03A65E8F1C6BB3030062603F /* QueryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B2B1C3F141E00AE3E12 /* QueryTests.swift */; }; + 03A65E901C6BB3030062603F /* RTreeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B2C1C3F141E00AE3E12 /* RTreeTests.swift */; }; + 03A65E911C6BB3030062603F /* SchemaTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B2D1C3F141E00AE3E12 /* SchemaTests.swift */; }; + 03A65E921C6BB3030062603F /* SetterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B181C3F134A00AE3E12 /* SetterTests.swift */; }; + 03A65E931C6BB3030062603F /* StatementTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B321C3F142E00AE3E12 /* StatementTests.swift */; }; + 03A65E941C6BB3030062603F /* ValueTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B331C3F142E00AE3E12 /* ValueTests.swift */; }; + 03A65E951C6BB3030062603F /* TestHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B161C3F127200AE3E12 /* TestHelpers.swift */; }; + 03A65E971C6BB3210062603F /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 03A65E961C6BB3210062603F /* libsqlite3.tbd */; }; + 19A1709C3E7A406E62293B2A /* Fixtures.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A17B93B48B5560E6E51791 /* Fixtures.swift */; }; + 19A17152E32A9585831E3FE0 /* DateAndTimeFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A17BA55DABB480F9020C8A /* DateAndTimeFunctions.swift */; }; + 19A1717B10CC941ACB5533D6 /* FTS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A1730E4390C775C25677D1 /* FTS5.swift */; }; + 19A171967CC511C4F6F773C9 /* RowTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A175C1F9CB3BBAB8FCEC7B /* RowTests.swift */; }; + 19A171E6FA242F72A308C594 /* FTS5Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A1721B8984686B9963B45D /* FTS5Tests.swift */; }; + 19A171F12AB8B07F2FD7201A /* Cipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A178A39ACA9667A62663CC /* Cipher.swift */; }; + 19A1720B67ED13E6150C6A3D /* RowTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A175C1F9CB3BBAB8FCEC7B /* RowTests.swift */; }; + 19A17254FBA7894891F7297B /* FTS5Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A1721B8984686B9963B45D /* FTS5Tests.swift */; }; + 19A172EB202970561E5C4245 /* DateAndTimeFunctionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A1729B75C33F9A0B9A89C1 /* DateAndTimeFunctionTests.swift */; }; + 19A173668D948AD4DF1F5352 /* DateAndTimeFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A17BA55DABB480F9020C8A /* DateAndTimeFunctions.swift */; }; + 19A1737286A74F3CF7412906 /* DateAndTimeFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A17BA55DABB480F9020C8A /* DateAndTimeFunctions.swift */; }; + 19A17408007B182F884E3A53 /* Fixtures.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A17B93B48B5560E6E51791 /* Fixtures.swift */; }; + 19A17490543609FCED53CACC /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A1710E73A46D5AC721CDA9 /* Errors.swift */; }; + 19A174D78559CD30679BCCCB /* FTS5Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A1721B8984686B9963B45D /* FTS5Tests.swift */; }; + 19A1750CEE9B05267995CF3D /* FTS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A1730E4390C775C25677D1 /* FTS5.swift */; }; + 19A175DFF47B84757E547C62 /* fixtures in Resources */ = {isa = PBXBuildFile; fileRef = 19A17E2695737FAB5D6086E3 /* fixtures */; }; + 19A1769C1F3A7542BECF50FF /* DateAndTimeFunctionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A1729B75C33F9A0B9A89C1 /* DateAndTimeFunctionTests.swift */; }; + 19A177CC33F2E6A24AF90B02 /* CipherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A17399EA9E61235D5D77BF /* CipherTests.swift */; }; + 19A178072B371489E6A1E839 /* FoundationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A1794CC4D7827E997E32A7 /* FoundationTests.swift */; }; + 19A17835FD5886FDC5A3228F /* Cipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A178A39ACA9667A62663CC /* Cipher.swift */; }; + 19A1785195182AF8731A8BDA /* RowTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A175C1F9CB3BBAB8FCEC7B /* RowTests.swift */; }; + 19A1792C0520D4E83C2EB075 /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A1710E73A46D5AC721CDA9 /* Errors.swift */; }; + 19A179A0C45377CB09BB358C /* CipherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A17399EA9E61235D5D77BF /* CipherTests.swift */; }; + 19A179CCF9671E345E5A9811 /* Cipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A178A39ACA9667A62663CC /* Cipher.swift */; }; + 19A179E76EA6207669B60C1B /* Cipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A178A39ACA9667A62663CC /* Cipher.swift */; }; + 19A17C4B951CB054EE48AB1C /* CipherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A17399EA9E61235D5D77BF /* CipherTests.swift */; }; + 19A17C80076860CF7751A056 /* DateAndTimeFunctionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A1729B75C33F9A0B9A89C1 /* DateAndTimeFunctionTests.swift */; }; + 19A17DC282E36C4F41AA440B /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A1710E73A46D5AC721CDA9 /* Errors.swift */; }; + 19A17E04C4C0956715C5676A /* FoundationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A1794CC4D7827E997E32A7 /* FoundationTests.swift */; }; + 19A17E29278A12BC4F542506 /* DateAndTimeFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A17BA55DABB480F9020C8A /* DateAndTimeFunctions.swift */; }; + 19A17EC0D68BA8C03288ADF7 /* FTS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A1730E4390C775C25677D1 /* FTS5.swift */; }; + 19A17F3E1F7ACA33BD43E138 /* fixtures in Resources */ = {isa = PBXBuildFile; fileRef = 19A17E2695737FAB5D6086E3 /* fixtures */; }; + 19A17F60B685636D1F83C2DD /* Fixtures.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A17B93B48B5560E6E51791 /* Fixtures.swift */; }; + 19A17FB80B94E882050AA908 /* FoundationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A1794CC4D7827E997E32A7 /* FoundationTests.swift */; }; + 19A17FDA323BAFDEC627E76F /* fixtures in Resources */ = {isa = PBXBuildFile; fileRef = 19A17E2695737FAB5D6086E3 /* fixtures */; }; + 19A17FF4A10B44D3937C8CAC /* Errors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A1710E73A46D5AC721CDA9 /* Errors.swift */; }; + 3D67B3E61DB2469200A4F4C6 /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = 3D67B3E51DB2469200A4F4C6 /* libsqlite3.tbd */; }; + 3D67B3E71DB246BA00A4F4C6 /* Blob.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AEE1C3F06E900AE3E12 /* Blob.swift */; }; + 3D67B3E81DB246BA00A4F4C6 /* Connection.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AEF1C3F06E900AE3E12 /* Connection.swift */; }; + 3D67B3E91DB246D100A4F4C6 /* Statement.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AF21C3F06E900AE3E12 /* Statement.swift */; }; + 3D67B3EA1DB246D100A4F4C6 /* Value.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AF31C3F06E900AE3E12 /* Value.swift */; }; + 3D67B3EB1DB246D100A4F4C6 /* FTS4.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AF51C3F06E900AE3E12 /* FTS4.swift */; }; + 3D67B3EC1DB246D100A4F4C6 /* RTree.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AF61C3F06E900AE3E12 /* RTree.swift */; }; + 3D67B3ED1DB246D100A4F4C6 /* FTS5.swift in Sources */ = {isa = PBXBuildFile; fileRef = 19A1730E4390C775C25677D1 /* FTS5.swift */; }; + 3D67B3EE1DB246D100A4F4C6 /* AggregateFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AFA1C3F06E900AE3E12 /* AggregateFunctions.swift */; }; + 3D67B3EF1DB246D100A4F4C6 /* Collation.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AFB1C3F06E900AE3E12 /* Collation.swift */; }; + 3D67B3F01DB246D100A4F4C6 /* CoreFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AFC1C3F06E900AE3E12 /* CoreFunctions.swift */; }; + 3D67B3F11DB246D100A4F4C6 /* CustomFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AFD1C3F06E900AE3E12 /* CustomFunctions.swift */; }; + 3D67B3F21DB246D100A4F4C6 /* Expression.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AFE1C3F06E900AE3E12 /* Expression.swift */; }; + 3D67B3F31DB246D100A4F4C6 /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AFF1C3F06E900AE3E12 /* Operators.swift */; }; + 3D67B3F41DB246D100A4F4C6 /* Query.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B001C3F06E900AE3E12 /* Query.swift */; }; + 3D67B3F51DB246D100A4F4C6 /* Schema.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B011C3F06E900AE3E12 /* Schema.swift */; }; + 3D67B3F61DB246D100A4F4C6 /* Setter.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B021C3F06E900AE3E12 /* Setter.swift */; }; + 3D67B3F71DB246D700A4F4C6 /* Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AF71C3F06E900AE3E12 /* Foundation.swift */; }; + 3D67B3F81DB246D700A4F4C6 /* Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AF81C3F06E900AE3E12 /* Helpers.swift */; }; + 3D67B3F91DB246E700A4F4C6 /* SQLite-Bridging.m in Sources */ = {isa = PBXBuildFile; fileRef = EE247AF11C3F06E900AE3E12 /* SQLite-Bridging.m */; }; + 3D67B3FB1DB2470600A4F4C6 /* SQLite-Bridging.h in Headers */ = {isa = PBXBuildFile; fileRef = EE91808D1C46E5230038162A /* SQLite-Bridging.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3D67B3FC1DB2471B00A4F4C6 /* SQLite.h in Headers */ = {isa = PBXBuildFile; fileRef = EE247AD61C3F04ED00AE3E12 /* SQLite.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3D67B3FD1DB2472D00A4F4C6 /* fts3_tokenizer.h in Headers */ = {isa = PBXBuildFile; fileRef = EE247AF01C3F06E900AE3E12 /* fts3_tokenizer.h */; }; + 49EB68C41F7B3CB400D89D40 /* Coding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49EB68C31F7B3CB400D89D40 /* Coding.swift */; }; + 49EB68C51F7B3CB400D89D40 /* Coding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49EB68C31F7B3CB400D89D40 /* Coding.swift */; }; + 49EB68C61F7B3CB400D89D40 /* Coding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49EB68C31F7B3CB400D89D40 /* Coding.swift */; }; + 49EB68C71F7B3CB400D89D40 /* Coding.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49EB68C31F7B3CB400D89D40 /* Coding.swift */; }; + EE247AD71C3F04ED00AE3E12 /* SQLite.h in Headers */ = {isa = PBXBuildFile; fileRef = EE247AD61C3F04ED00AE3E12 /* SQLite.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EE247ADE1C3F04ED00AE3E12 /* SQLite.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EE247AD31C3F04ED00AE3E12 /* SQLite.framework */; }; + EE247B031C3F06E900AE3E12 /* Blob.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AEE1C3F06E900AE3E12 /* Blob.swift */; }; + EE247B041C3F06E900AE3E12 /* Connection.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AEF1C3F06E900AE3E12 /* Connection.swift */; }; + EE247B051C3F06E900AE3E12 /* fts3_tokenizer.h in Headers */ = {isa = PBXBuildFile; fileRef = EE247AF01C3F06E900AE3E12 /* fts3_tokenizer.h */; }; + EE247B061C3F06E900AE3E12 /* SQLite-Bridging.m in Sources */ = {isa = PBXBuildFile; fileRef = EE247AF11C3F06E900AE3E12 /* SQLite-Bridging.m */; }; + EE247B071C3F06E900AE3E12 /* Statement.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AF21C3F06E900AE3E12 /* Statement.swift */; }; + EE247B081C3F06E900AE3E12 /* Value.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AF31C3F06E900AE3E12 /* Value.swift */; }; + EE247B091C3F06E900AE3E12 /* FTS4.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AF51C3F06E900AE3E12 /* FTS4.swift */; }; + EE247B0A1C3F06E900AE3E12 /* RTree.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AF61C3F06E900AE3E12 /* RTree.swift */; }; + EE247B0B1C3F06E900AE3E12 /* Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AF71C3F06E900AE3E12 /* Foundation.swift */; }; + EE247B0C1C3F06E900AE3E12 /* Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AF81C3F06E900AE3E12 /* Helpers.swift */; }; + EE247B0D1C3F06E900AE3E12 /* AggregateFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AFA1C3F06E900AE3E12 /* AggregateFunctions.swift */; }; + EE247B0E1C3F06E900AE3E12 /* Collation.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AFB1C3F06E900AE3E12 /* Collation.swift */; }; + EE247B0F1C3F06E900AE3E12 /* CoreFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AFC1C3F06E900AE3E12 /* CoreFunctions.swift */; }; + EE247B101C3F06E900AE3E12 /* CustomFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AFD1C3F06E900AE3E12 /* CustomFunctions.swift */; }; + EE247B111C3F06E900AE3E12 /* Expression.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AFE1C3F06E900AE3E12 /* Expression.swift */; }; + EE247B121C3F06E900AE3E12 /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AFF1C3F06E900AE3E12 /* Operators.swift */; }; + EE247B131C3F06E900AE3E12 /* Query.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B001C3F06E900AE3E12 /* Query.swift */; }; + EE247B141C3F06E900AE3E12 /* Schema.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B011C3F06E900AE3E12 /* Schema.swift */; }; + EE247B151C3F06E900AE3E12 /* Setter.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B021C3F06E900AE3E12 /* Setter.swift */; }; + EE247B171C3F127200AE3E12 /* TestHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B161C3F127200AE3E12 /* TestHelpers.swift */; }; + EE247B191C3F134A00AE3E12 /* SetterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B181C3F134A00AE3E12 /* SetterTests.swift */; }; + EE247B221C3F137700AE3E12 /* AggregateFunctionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B1A1C3F137700AE3E12 /* AggregateFunctionsTests.swift */; }; + EE247B231C3F137700AE3E12 /* BlobTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B1B1C3F137700AE3E12 /* BlobTests.swift */; }; + EE247B251C3F137700AE3E12 /* ConnectionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B1D1C3F137700AE3E12 /* ConnectionTests.swift */; }; + EE247B261C3F137700AE3E12 /* CoreFunctionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B1E1C3F137700AE3E12 /* CoreFunctionsTests.swift */; }; + EE247B271C3F137700AE3E12 /* CustomFunctionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B1F1C3F137700AE3E12 /* CustomFunctionsTests.swift */; }; + EE247B281C3F137700AE3E12 /* ExpressionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B201C3F137700AE3E12 /* ExpressionTests.swift */; }; + EE247B291C3F137700AE3E12 /* FTS4Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B211C3F137700AE3E12 /* FTS4Tests.swift */; }; + EE247B2E1C3F141E00AE3E12 /* OperatorsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B2A1C3F141E00AE3E12 /* OperatorsTests.swift */; }; + EE247B2F1C3F141E00AE3E12 /* QueryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B2B1C3F141E00AE3E12 /* QueryTests.swift */; }; + EE247B301C3F141E00AE3E12 /* RTreeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B2C1C3F141E00AE3E12 /* RTreeTests.swift */; }; + EE247B311C3F141E00AE3E12 /* SchemaTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B2D1C3F141E00AE3E12 /* SchemaTests.swift */; }; + EE247B341C3F142E00AE3E12 /* StatementTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B321C3F142E00AE3E12 /* StatementTests.swift */; }; + EE247B351C3F142E00AE3E12 /* ValueTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B331C3F142E00AE3E12 /* ValueTests.swift */; }; + EE247B461C3F3ED000AE3E12 /* SQLite.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = EE247B3C1C3F3ED000AE3E12 /* SQLite.framework */; }; + EE247B531C3F3FC700AE3E12 /* AggregateFunctionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B1A1C3F137700AE3E12 /* AggregateFunctionsTests.swift */; }; + EE247B541C3F3FC700AE3E12 /* BlobTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B1B1C3F137700AE3E12 /* BlobTests.swift */; }; + EE247B551C3F3FC700AE3E12 /* ConnectionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B1D1C3F137700AE3E12 /* ConnectionTests.swift */; }; + EE247B561C3F3FC700AE3E12 /* CoreFunctionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B1E1C3F137700AE3E12 /* CoreFunctionsTests.swift */; }; + EE247B571C3F3FC700AE3E12 /* CustomFunctionsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B1F1C3F137700AE3E12 /* CustomFunctionsTests.swift */; }; + EE247B581C3F3FC700AE3E12 /* ExpressionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B201C3F137700AE3E12 /* ExpressionTests.swift */; }; + EE247B591C3F3FC700AE3E12 /* FTS4Tests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B211C3F137700AE3E12 /* FTS4Tests.swift */; }; + EE247B5A1C3F3FC700AE3E12 /* OperatorsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B2A1C3F141E00AE3E12 /* OperatorsTests.swift */; }; + EE247B5B1C3F3FC700AE3E12 /* QueryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B2B1C3F141E00AE3E12 /* QueryTests.swift */; }; + EE247B5C1C3F3FC700AE3E12 /* RTreeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B2C1C3F141E00AE3E12 /* RTreeTests.swift */; }; + EE247B5D1C3F3FC700AE3E12 /* SchemaTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B2D1C3F141E00AE3E12 /* SchemaTests.swift */; }; + EE247B5E1C3F3FC700AE3E12 /* SetterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B181C3F134A00AE3E12 /* SetterTests.swift */; }; + EE247B5F1C3F3FC700AE3E12 /* StatementTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B321C3F142E00AE3E12 /* StatementTests.swift */; }; + EE247B601C3F3FC700AE3E12 /* ValueTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B331C3F142E00AE3E12 /* ValueTests.swift */; }; + EE247B611C3F3FC700AE3E12 /* TestHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B161C3F127200AE3E12 /* TestHelpers.swift */; }; + EE247B621C3F3FDB00AE3E12 /* SQLite.h in Headers */ = {isa = PBXBuildFile; fileRef = EE247AD61C3F04ED00AE3E12 /* SQLite.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EE247B631C3F3FDB00AE3E12 /* Foundation.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AF71C3F06E900AE3E12 /* Foundation.swift */; }; + EE247B641C3F3FDB00AE3E12 /* Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AF81C3F06E900AE3E12 /* Helpers.swift */; }; + EE247B651C3F3FEC00AE3E12 /* Blob.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AEE1C3F06E900AE3E12 /* Blob.swift */; }; + EE247B661C3F3FEC00AE3E12 /* Connection.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AEF1C3F06E900AE3E12 /* Connection.swift */; }; + EE247B671C3F3FEC00AE3E12 /* fts3_tokenizer.h in Headers */ = {isa = PBXBuildFile; fileRef = EE247AF01C3F06E900AE3E12 /* fts3_tokenizer.h */; }; + EE247B681C3F3FEC00AE3E12 /* SQLite-Bridging.m in Sources */ = {isa = PBXBuildFile; fileRef = EE247AF11C3F06E900AE3E12 /* SQLite-Bridging.m */; }; + EE247B691C3F3FEC00AE3E12 /* Statement.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AF21C3F06E900AE3E12 /* Statement.swift */; }; + EE247B6A1C3F3FEC00AE3E12 /* Value.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AF31C3F06E900AE3E12 /* Value.swift */; }; + EE247B6B1C3F3FEC00AE3E12 /* FTS4.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AF51C3F06E900AE3E12 /* FTS4.swift */; }; + EE247B6C1C3F3FEC00AE3E12 /* RTree.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AF61C3F06E900AE3E12 /* RTree.swift */; }; + EE247B6D1C3F3FEC00AE3E12 /* AggregateFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AFA1C3F06E900AE3E12 /* AggregateFunctions.swift */; }; + EE247B6E1C3F3FEC00AE3E12 /* Collation.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AFB1C3F06E900AE3E12 /* Collation.swift */; }; + EE247B6F1C3F3FEC00AE3E12 /* CoreFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AFC1C3F06E900AE3E12 /* CoreFunctions.swift */; }; + EE247B701C3F3FEC00AE3E12 /* CustomFunctions.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AFD1C3F06E900AE3E12 /* CustomFunctions.swift */; }; + EE247B711C3F3FEC00AE3E12 /* Expression.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AFE1C3F06E900AE3E12 /* Expression.swift */; }; + EE247B721C3F3FEC00AE3E12 /* Operators.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247AFF1C3F06E900AE3E12 /* Operators.swift */; }; + EE247B731C3F3FEC00AE3E12 /* Query.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B001C3F06E900AE3E12 /* Query.swift */; }; + EE247B741C3F3FEC00AE3E12 /* Schema.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B011C3F06E900AE3E12 /* Schema.swift */; }; + EE247B751C3F3FEC00AE3E12 /* Setter.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE247B021C3F06E900AE3E12 /* Setter.swift */; }; + EE91808E1C46E5230038162A /* SQLite-Bridging.h in Headers */ = {isa = PBXBuildFile; fileRef = EE91808D1C46E5230038162A /* SQLite-Bridging.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EE91808F1C46E76D0038162A /* SQLite-Bridging.h in Headers */ = {isa = PBXBuildFile; fileRef = EE91808D1C46E5230038162A /* SQLite-Bridging.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EE9180941C46EA210038162A /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = EE9180931C46EA210038162A /* libsqlite3.tbd */; }; + EE9180951C46EBCC0038162A /* libsqlite3.tbd in Frameworks */ = {isa = PBXBuildFile; fileRef = EE9180911C46E9D30038162A /* libsqlite3.tbd */; }; +/* End PBXBuildFile section */ + +/* Begin PBXContainerItemProxy section */ + 03A65E651C6BB0F60062603F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = EE247ACA1C3F04ED00AE3E12 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 03A65E591C6BB0F50062603F; + remoteInfo = "SQLite tvOS"; + }; + EE247ADF1C3F04ED00AE3E12 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = EE247ACA1C3F04ED00AE3E12 /* Project object */; + proxyType = 1; + remoteGlobalIDString = EE247AD21C3F04ED00AE3E12; + remoteInfo = SQLite; + }; + EE247B471C3F3ED000AE3E12 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = EE247ACA1C3F04ED00AE3E12 /* Project object */; + proxyType = 1; + remoteGlobalIDString = EE247B3B1C3F3ED000AE3E12; + remoteInfo = SQLite; + }; +/* End PBXContainerItemProxy section */ + +/* Begin PBXFileReference section */ + 03A65E5A1C6BB0F50062603F /* SQLite.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SQLite.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 03A65E631C6BB0F60062603F /* SQLiteTests tvOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "SQLiteTests tvOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + 03A65E961C6BB3210062603F /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = Platforms/AppleTVOS.platform/Developer/SDKs/AppleTVOS.sdk/usr/lib/libsqlite3.tbd; sourceTree = DEVELOPER_DIR; }; + 19A1710E73A46D5AC721CDA9 /* Errors.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Errors.swift; sourceTree = ""; }; + 19A1721B8984686B9963B45D /* FTS5Tests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FTS5Tests.swift; sourceTree = ""; }; + 19A1729B75C33F9A0B9A89C1 /* DateAndTimeFunctionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DateAndTimeFunctionTests.swift; sourceTree = ""; }; + 19A1730E4390C775C25677D1 /* FTS5.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FTS5.swift; sourceTree = ""; }; + 19A17399EA9E61235D5D77BF /* CipherTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CipherTests.swift; sourceTree = ""; }; + 19A175C1F9CB3BBAB8FCEC7B /* RowTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RowTests.swift; sourceTree = ""; }; + 19A178A39ACA9667A62663CC /* Cipher.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Cipher.swift; sourceTree = ""; }; + 19A1794CC4D7827E997E32A7 /* FoundationTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FoundationTests.swift; sourceTree = ""; }; + 19A17B93B48B5560E6E51791 /* Fixtures.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Fixtures.swift; sourceTree = ""; }; + 19A17BA55DABB480F9020C8A /* DateAndTimeFunctions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DateAndTimeFunctions.swift; sourceTree = ""; }; + 19A17E2695737FAB5D6086E3 /* fixtures */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = folder; path = fixtures; sourceTree = ""; }; + 3D67B3E51DB2469200A4F4C6 /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = Platforms/WatchOS.platform/Developer/SDKs/WatchOS3.0.sdk/usr/lib/libsqlite3.tbd; sourceTree = DEVELOPER_DIR; }; + 49EB68C31F7B3CB400D89D40 /* Coding.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Coding.swift; sourceTree = ""; }; + A121AC451CA35C79005A31D1 /* SQLite.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SQLite.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + EE247AD31C3F04ED00AE3E12 /* SQLite.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SQLite.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + EE247AD61C3F04ED00AE3E12 /* SQLite.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = SQLite.h; sourceTree = ""; }; + EE247AD81C3F04ED00AE3E12 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + EE247ADD1C3F04ED00AE3E12 /* SQLiteTests iOS.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "SQLiteTests iOS.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + EE247AE41C3F04ED00AE3E12 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + EE247AEE1C3F06E900AE3E12 /* Blob.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Blob.swift; sourceTree = ""; }; + EE247AEF1C3F06E900AE3E12 /* Connection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Connection.swift; sourceTree = ""; }; + EE247AF01C3F06E900AE3E12 /* fts3_tokenizer.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = fts3_tokenizer.h; path = ../../SQLiteObjc/fts3_tokenizer.h; sourceTree = ""; }; + EE247AF11C3F06E900AE3E12 /* SQLite-Bridging.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; name = "SQLite-Bridging.m"; path = "../../SQLiteObjc/SQLite-Bridging.m"; sourceTree = ""; }; + EE247AF21C3F06E900AE3E12 /* Statement.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Statement.swift; sourceTree = ""; }; + EE247AF31C3F06E900AE3E12 /* Value.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Value.swift; sourceTree = ""; }; + EE247AF51C3F06E900AE3E12 /* FTS4.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FTS4.swift; sourceTree = ""; }; + EE247AF61C3F06E900AE3E12 /* RTree.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RTree.swift; sourceTree = ""; }; + EE247AF71C3F06E900AE3E12 /* Foundation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Foundation.swift; sourceTree = ""; }; + EE247AF81C3F06E900AE3E12 /* Helpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Helpers.swift; sourceTree = ""; }; + EE247AFA1C3F06E900AE3E12 /* AggregateFunctions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AggregateFunctions.swift; sourceTree = ""; }; + EE247AFB1C3F06E900AE3E12 /* Collation.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Collation.swift; sourceTree = ""; }; + EE247AFC1C3F06E900AE3E12 /* CoreFunctions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreFunctions.swift; sourceTree = ""; }; + EE247AFD1C3F06E900AE3E12 /* CustomFunctions.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CustomFunctions.swift; sourceTree = ""; }; + EE247AFE1C3F06E900AE3E12 /* Expression.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Expression.swift; sourceTree = ""; }; + EE247AFF1C3F06E900AE3E12 /* Operators.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Operators.swift; sourceTree = ""; }; + EE247B001C3F06E900AE3E12 /* Query.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Query.swift; sourceTree = ""; }; + EE247B011C3F06E900AE3E12 /* Schema.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Schema.swift; sourceTree = ""; }; + EE247B021C3F06E900AE3E12 /* Setter.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Setter.swift; sourceTree = ""; }; + EE247B161C3F127200AE3E12 /* TestHelpers.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestHelpers.swift; sourceTree = ""; }; + EE247B181C3F134A00AE3E12 /* SetterTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SetterTests.swift; sourceTree = ""; }; + EE247B1A1C3F137700AE3E12 /* AggregateFunctionsTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = AggregateFunctionsTests.swift; sourceTree = ""; }; + EE247B1B1C3F137700AE3E12 /* BlobTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = BlobTests.swift; sourceTree = ""; }; + EE247B1D1C3F137700AE3E12 /* ConnectionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ConnectionTests.swift; sourceTree = ""; }; + EE247B1E1C3F137700AE3E12 /* CoreFunctionsTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CoreFunctionsTests.swift; sourceTree = ""; }; + EE247B1F1C3F137700AE3E12 /* CustomFunctionsTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = CustomFunctionsTests.swift; sourceTree = ""; }; + EE247B201C3F137700AE3E12 /* ExpressionTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ExpressionTests.swift; sourceTree = ""; }; + EE247B211C3F137700AE3E12 /* FTS4Tests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = FTS4Tests.swift; sourceTree = ""; }; + EE247B2A1C3F141E00AE3E12 /* OperatorsTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = OperatorsTests.swift; sourceTree = ""; }; + EE247B2B1C3F141E00AE3E12 /* QueryTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = QueryTests.swift; sourceTree = ""; }; + EE247B2C1C3F141E00AE3E12 /* RTreeTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = RTreeTests.swift; sourceTree = ""; }; + EE247B2D1C3F141E00AE3E12 /* SchemaTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SchemaTests.swift; sourceTree = ""; }; + EE247B321C3F142E00AE3E12 /* StatementTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = StatementTests.swift; sourceTree = ""; }; + EE247B331C3F142E00AE3E12 /* ValueTests.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = ValueTests.swift; sourceTree = ""; }; + EE247B3C1C3F3ED000AE3E12 /* SQLite.framework */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; path = SQLite.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + EE247B451C3F3ED000AE3E12 /* SQLiteTests Mac.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "SQLiteTests Mac.xctest"; sourceTree = BUILT_PRODUCTS_DIR; }; + EE247B771C3F40D700AE3E12 /* README.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = README.md; sourceTree = ""; }; + EE247B8B1C3F820300AE3E12 /* CONTRIBUTING.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = CONTRIBUTING.md; sourceTree = ""; }; + EE247B8C1C3F821200AE3E12 /* .travis.yml */ = {isa = PBXFileReference; lastKnownFileType = text; path = .travis.yml; sourceTree = ""; }; + EE247B8D1C3F821200AE3E12 /* Makefile */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.make; path = Makefile; sourceTree = ""; }; + EE247B8F1C3F822500AE3E12 /* Index.md */ = {isa = PBXFileReference; lastKnownFileType = net.daringfireball.markdown; path = Index.md; sourceTree = ""; }; + EE247B911C3F822500AE3E12 /* installation@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "installation@2x.png"; sourceTree = ""; }; + EE247B921C3F822600AE3E12 /* playground@2x.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = "playground@2x.png"; sourceTree = ""; }; + EE247B931C3F826100AE3E12 /* SQLite.swift.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; path = SQLite.swift.podspec; sourceTree = ""; }; + EE91808D1C46E5230038162A /* SQLite-Bridging.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; name = "SQLite-Bridging.h"; path = "../../SQLiteObjc/include/SQLite-Bridging.h"; sourceTree = ""; }; + EE9180911C46E9D30038162A /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = Platforms/MacOSX.platform/Developer/SDKs/MacOSX10.11.sdk/usr/lib/libsqlite3.tbd; sourceTree = DEVELOPER_DIR; }; + EE9180931C46EA210038162A /* libsqlite3.tbd */ = {isa = PBXFileReference; lastKnownFileType = "sourcecode.text-based-dylib-definition"; name = libsqlite3.tbd; path = usr/lib/libsqlite3.tbd; sourceTree = SDKROOT; }; +/* End PBXFileReference section */ + +/* Begin PBXFrameworksBuildPhase section */ + 03A65E561C6BB0F50062603F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 03A65E971C6BB3210062603F /* libsqlite3.tbd in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 03A65E601C6BB0F60062603F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 03A65E641C6BB0F60062603F /* SQLite.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A121AC411CA35C79005A31D1 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 3D67B3E61DB2469200A4F4C6 /* libsqlite3.tbd in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EE247ACF1C3F04ED00AE3E12 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + EE9180941C46EA210038162A /* libsqlite3.tbd in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EE247ADA1C3F04ED00AE3E12 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + EE247ADE1C3F04ED00AE3E12 /* SQLite.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EE247B381C3F3ED000AE3E12 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + EE9180951C46EBCC0038162A /* libsqlite3.tbd in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EE247B421C3F3ED000AE3E12 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + EE247B461C3F3ED000AE3E12 /* SQLite.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXFrameworksBuildPhase section */ + +/* Begin PBXGroup section */ + 3D67B3E41DB2469200A4F4C6 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 3D67B3E51DB2469200A4F4C6 /* libsqlite3.tbd */, + ); + name = Frameworks; + sourceTree = ""; + }; + EE247AC91C3F04ED00AE3E12 = { + isa = PBXGroup; + children = ( + EE247AD51C3F04ED00AE3E12 /* SQLite */, + EE247AE11C3F04ED00AE3E12 /* SQLiteTests */, + EE247B8A1C3F81D000AE3E12 /* Metadata */, + EE247AD41C3F04ED00AE3E12 /* Products */, + 3D67B3E41DB2469200A4F4C6 /* Frameworks */, + ); + indentWidth = 4; + sourceTree = ""; + tabWidth = 4; + }; + EE247AD41C3F04ED00AE3E12 /* Products */ = { + isa = PBXGroup; + children = ( + EE247AD31C3F04ED00AE3E12 /* SQLite.framework */, + EE247ADD1C3F04ED00AE3E12 /* SQLiteTests iOS.xctest */, + EE247B3C1C3F3ED000AE3E12 /* SQLite.framework */, + EE247B451C3F3ED000AE3E12 /* SQLiteTests Mac.xctest */, + 03A65E5A1C6BB0F50062603F /* SQLite.framework */, + 03A65E631C6BB0F60062603F /* SQLiteTests tvOS.xctest */, + A121AC451CA35C79005A31D1 /* SQLite.framework */, + ); + name = Products; + sourceTree = ""; + }; + EE247AD51C3F04ED00AE3E12 /* SQLite */ = { + isa = PBXGroup; + children = ( + EE247AD61C3F04ED00AE3E12 /* SQLite.h */, + EE247AF71C3F06E900AE3E12 /* Foundation.swift */, + EE247AF81C3F06E900AE3E12 /* Helpers.swift */, + EE247AD81C3F04ED00AE3E12 /* Info.plist */, + EE247AED1C3F06E900AE3E12 /* Core */, + EE247AF41C3F06E900AE3E12 /* Extensions */, + EE247AF91C3F06E900AE3E12 /* Typed */, + ); + name = SQLite; + path = Sources/SQLite; + sourceTree = ""; + }; + EE247AE11C3F04ED00AE3E12 /* SQLiteTests */ = { + isa = PBXGroup; + children = ( + 19A17E2695737FAB5D6086E3 /* fixtures */, + EE247B1A1C3F137700AE3E12 /* AggregateFunctionsTests.swift */, + EE247B1B1C3F137700AE3E12 /* BlobTests.swift */, + EE247B1D1C3F137700AE3E12 /* ConnectionTests.swift */, + EE247B1E1C3F137700AE3E12 /* CoreFunctionsTests.swift */, + EE247B1F1C3F137700AE3E12 /* CustomFunctionsTests.swift */, + EE247B201C3F137700AE3E12 /* ExpressionTests.swift */, + EE247B211C3F137700AE3E12 /* FTS4Tests.swift */, + EE247B2A1C3F141E00AE3E12 /* OperatorsTests.swift */, + EE247B2B1C3F141E00AE3E12 /* QueryTests.swift */, + EE247B2C1C3F141E00AE3E12 /* RTreeTests.swift */, + EE247B2D1C3F141E00AE3E12 /* SchemaTests.swift */, + EE247B181C3F134A00AE3E12 /* SetterTests.swift */, + EE247B321C3F142E00AE3E12 /* StatementTests.swift */, + EE247B331C3F142E00AE3E12 /* ValueTests.swift */, + EE247B161C3F127200AE3E12 /* TestHelpers.swift */, + EE247AE41C3F04ED00AE3E12 /* Info.plist */, + 19A1721B8984686B9963B45D /* FTS5Tests.swift */, + 19A1794CC4D7827E997E32A7 /* FoundationTests.swift */, + 19A17399EA9E61235D5D77BF /* CipherTests.swift */, + 19A17B93B48B5560E6E51791 /* Fixtures.swift */, + 19A175C1F9CB3BBAB8FCEC7B /* RowTests.swift */, + 19A1729B75C33F9A0B9A89C1 /* DateAndTimeFunctionTests.swift */, + ); + name = SQLiteTests; + path = Tests/SQLiteTests; + sourceTree = ""; + }; + EE247AED1C3F06E900AE3E12 /* Core */ = { + isa = PBXGroup; + children = ( + EE91808D1C46E5230038162A /* SQLite-Bridging.h */, + EE247AEE1C3F06E900AE3E12 /* Blob.swift */, + EE247AEF1C3F06E900AE3E12 /* Connection.swift */, + EE247AF01C3F06E900AE3E12 /* fts3_tokenizer.h */, + EE247AF11C3F06E900AE3E12 /* SQLite-Bridging.m */, + EE247AF21C3F06E900AE3E12 /* Statement.swift */, + EE247AF31C3F06E900AE3E12 /* Value.swift */, + 19A1710E73A46D5AC721CDA9 /* Errors.swift */, + ); + path = Core; + sourceTree = ""; + }; + EE247AF41C3F06E900AE3E12 /* Extensions */ = { + isa = PBXGroup; + children = ( + EE247AF51C3F06E900AE3E12 /* FTS4.swift */, + EE247AF61C3F06E900AE3E12 /* RTree.swift */, + 19A1730E4390C775C25677D1 /* FTS5.swift */, + 19A178A39ACA9667A62663CC /* Cipher.swift */, + ); + path = Extensions; + sourceTree = ""; + }; + EE247AF91C3F06E900AE3E12 /* Typed */ = { + isa = PBXGroup; + children = ( + EE247AFA1C3F06E900AE3E12 /* AggregateFunctions.swift */, + EE247AFB1C3F06E900AE3E12 /* Collation.swift */, + EE247AFC1C3F06E900AE3E12 /* CoreFunctions.swift */, + EE247AFD1C3F06E900AE3E12 /* CustomFunctions.swift */, + EE247AFE1C3F06E900AE3E12 /* Expression.swift */, + EE247AFF1C3F06E900AE3E12 /* Operators.swift */, + EE247B001C3F06E900AE3E12 /* Query.swift */, + EE247B011C3F06E900AE3E12 /* Schema.swift */, + EE247B021C3F06E900AE3E12 /* Setter.swift */, + 49EB68C31F7B3CB400D89D40 /* Coding.swift */, + 19A17BA55DABB480F9020C8A /* DateAndTimeFunctions.swift */, + ); + path = Typed; + sourceTree = ""; + }; + EE247B8A1C3F81D000AE3E12 /* Metadata */ = { + isa = PBXGroup; + children = ( + EE247B771C3F40D700AE3E12 /* README.md */, + EE247B8B1C3F820300AE3E12 /* CONTRIBUTING.md */, + EE247B931C3F826100AE3E12 /* SQLite.swift.podspec */, + EE247B8C1C3F821200AE3E12 /* .travis.yml */, + EE247B8D1C3F821200AE3E12 /* Makefile */, + EE9180931C46EA210038162A /* libsqlite3.tbd */, + EE9180911C46E9D30038162A /* libsqlite3.tbd */, + 03A65E961C6BB3210062603F /* libsqlite3.tbd */, + EE247B8E1C3F822500AE3E12 /* Documentation */, + ); + name = Metadata; + sourceTree = ""; + }; + EE247B8E1C3F822500AE3E12 /* Documentation */ = { + isa = PBXGroup; + children = ( + EE247B8F1C3F822500AE3E12 /* Index.md */, + EE247B901C3F822500AE3E12 /* Resources */, + ); + path = Documentation; + sourceTree = ""; + }; + EE247B901C3F822500AE3E12 /* Resources */ = { + isa = PBXGroup; + children = ( + EE247B911C3F822500AE3E12 /* installation@2x.png */, + EE247B921C3F822600AE3E12 /* playground@2x.png */, + ); + path = Resources; + sourceTree = ""; + }; +/* End PBXGroup section */ + +/* Begin PBXHeadersBuildPhase section */ + 03A65E571C6BB0F50062603F /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 03A65E781C6BB2EA0062603F /* fts3_tokenizer.h in Headers */, + 03A65E751C6BB2DF0062603F /* SQLite-Bridging.h in Headers */, + 03A65E721C6BB2D30062603F /* SQLite.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A121AC421CA35C79005A31D1 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 3D67B3FB1DB2470600A4F4C6 /* SQLite-Bridging.h in Headers */, + 3D67B3FC1DB2471B00A4F4C6 /* SQLite.h in Headers */, + 3D67B3FD1DB2472D00A4F4C6 /* fts3_tokenizer.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EE247AD01C3F04ED00AE3E12 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + EE91808E1C46E5230038162A /* SQLite-Bridging.h in Headers */, + EE247B051C3F06E900AE3E12 /* fts3_tokenizer.h in Headers */, + EE247AD71C3F04ED00AE3E12 /* SQLite.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EE247B391C3F3ED000AE3E12 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + EE247B671C3F3FEC00AE3E12 /* fts3_tokenizer.h in Headers */, + EE247B621C3F3FDB00AE3E12 /* SQLite.h in Headers */, + EE91808F1C46E76D0038162A /* SQLite-Bridging.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXHeadersBuildPhase section */ + +/* Begin PBXNativeTarget section */ + 03A65E591C6BB0F50062603F /* SQLite tvOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 03A65E6F1C6BB0F60062603F /* Build configuration list for PBXNativeTarget "SQLite tvOS" */; + buildPhases = ( + 03A65E551C6BB0F50062603F /* Sources */, + 03A65E561C6BB0F50062603F /* Frameworks */, + 03A65E571C6BB0F50062603F /* Headers */, + 03A65E581C6BB0F50062603F /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "SQLite tvOS"; + productName = "SQLite tvOS"; + productReference = 03A65E5A1C6BB0F50062603F /* SQLite.framework */; + productType = "com.apple.product-type.framework"; + }; + 03A65E621C6BB0F60062603F /* SQLiteTests tvOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = 03A65E701C6BB0F60062603F /* Build configuration list for PBXNativeTarget "SQLiteTests tvOS" */; + buildPhases = ( + 03A65E5F1C6BB0F60062603F /* Sources */, + 03A65E601C6BB0F60062603F /* Frameworks */, + 03A65E611C6BB0F60062603F /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 03A65E661C6BB0F60062603F /* PBXTargetDependency */, + ); + name = "SQLiteTests tvOS"; + productName = "SQLite tvOSTests"; + productReference = 03A65E631C6BB0F60062603F /* SQLiteTests tvOS.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + A121AC441CA35C79005A31D1 /* SQLite watchOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = A121AC4C1CA35C79005A31D1 /* Build configuration list for PBXNativeTarget "SQLite watchOS" */; + buildPhases = ( + A121AC401CA35C79005A31D1 /* Sources */, + A121AC411CA35C79005A31D1 /* Frameworks */, + A121AC421CA35C79005A31D1 /* Headers */, + A121AC431CA35C79005A31D1 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "SQLite watchOS"; + productName = "SQLite watchOS"; + productReference = A121AC451CA35C79005A31D1 /* SQLite.framework */; + productType = "com.apple.product-type.framework"; + }; + EE247AD21C3F04ED00AE3E12 /* SQLite iOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = EE247AE71C3F04ED00AE3E12 /* Build configuration list for PBXNativeTarget "SQLite iOS" */; + buildPhases = ( + EE247ACE1C3F04ED00AE3E12 /* Sources */, + EE247ACF1C3F04ED00AE3E12 /* Frameworks */, + EE247AD01C3F04ED00AE3E12 /* Headers */, + EE247AD11C3F04ED00AE3E12 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "SQLite iOS"; + productName = SQLite; + productReference = EE247AD31C3F04ED00AE3E12 /* SQLite.framework */; + productType = "com.apple.product-type.framework"; + }; + EE247ADC1C3F04ED00AE3E12 /* SQLiteTests iOS */ = { + isa = PBXNativeTarget; + buildConfigurationList = EE247AEA1C3F04ED00AE3E12 /* Build configuration list for PBXNativeTarget "SQLiteTests iOS" */; + buildPhases = ( + EE247AD91C3F04ED00AE3E12 /* Sources */, + EE247ADA1C3F04ED00AE3E12 /* Frameworks */, + EE247ADB1C3F04ED00AE3E12 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + EE247AE01C3F04ED00AE3E12 /* PBXTargetDependency */, + ); + name = "SQLiteTests iOS"; + productName = SQLiteTests; + productReference = EE247ADD1C3F04ED00AE3E12 /* SQLiteTests iOS.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + EE247B3B1C3F3ED000AE3E12 /* SQLite Mac */ = { + isa = PBXNativeTarget; + buildConfigurationList = EE247B511C3F3ED000AE3E12 /* Build configuration list for PBXNativeTarget "SQLite Mac" */; + buildPhases = ( + EE247B371C3F3ED000AE3E12 /* Sources */, + EE247B381C3F3ED000AE3E12 /* Frameworks */, + EE247B391C3F3ED000AE3E12 /* Headers */, + EE247B3A1C3F3ED000AE3E12 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "SQLite Mac"; + productName = SQLite; + productReference = EE247B3C1C3F3ED000AE3E12 /* SQLite.framework */; + productType = "com.apple.product-type.framework"; + }; + EE247B441C3F3ED000AE3E12 /* SQLiteTests Mac */ = { + isa = PBXNativeTarget; + buildConfigurationList = EE247B521C3F3ED000AE3E12 /* Build configuration list for PBXNativeTarget "SQLiteTests Mac" */; + buildPhases = ( + EE247B411C3F3ED000AE3E12 /* Sources */, + EE247B421C3F3ED000AE3E12 /* Frameworks */, + EE247B431C3F3ED000AE3E12 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + EE247B481C3F3ED000AE3E12 /* PBXTargetDependency */, + ); + name = "SQLiteTests Mac"; + productName = SQLiteTests; + productReference = EE247B451C3F3ED000AE3E12 /* SQLiteTests Mac.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; +/* End PBXNativeTarget section */ + +/* Begin PBXProject section */ + EE247ACA1C3F04ED00AE3E12 /* Project object */ = { + isa = PBXProject; + attributes = { + LastSwiftUpdateCheck = 0720; + LastUpgradeCheck = 0900; + TargetAttributes = { + 03A65E591C6BB0F50062603F = { + CreatedOnToolsVersion = 7.2; + LastSwiftMigration = 0900; + }; + 03A65E621C6BB0F60062603F = { + CreatedOnToolsVersion = 7.2; + LastSwiftMigration = 0900; + }; + A121AC441CA35C79005A31D1 = { + CreatedOnToolsVersion = 7.3; + LastSwiftMigration = 0900; + }; + EE247AD21C3F04ED00AE3E12 = { + CreatedOnToolsVersion = 7.2; + LastSwiftMigration = 0900; + }; + EE247ADC1C3F04ED00AE3E12 = { + CreatedOnToolsVersion = 7.2; + LastSwiftMigration = 0900; + }; + EE247B3B1C3F3ED000AE3E12 = { + CreatedOnToolsVersion = 7.2; + LastSwiftMigration = 0900; + }; + EE247B441C3F3ED000AE3E12 = { + CreatedOnToolsVersion = 7.2; + LastSwiftMigration = 0900; + }; + }; + }; + buildConfigurationList = EE247ACD1C3F04ED00AE3E12 /* Build configuration list for PBXProject "SQLite" */; + compatibilityVersion = "Xcode 3.2"; + developmentRegion = English; + hasScannedForEncodings = 0; + knownRegions = ( + en, + ); + mainGroup = EE247AC91C3F04ED00AE3E12; + productRefGroup = EE247AD41C3F04ED00AE3E12 /* Products */; + projectDirPath = ""; + projectRoot = ""; + targets = ( + EE247AD21C3F04ED00AE3E12 /* SQLite iOS */, + EE247ADC1C3F04ED00AE3E12 /* SQLiteTests iOS */, + EE247B3B1C3F3ED000AE3E12 /* SQLite Mac */, + EE247B441C3F3ED000AE3E12 /* SQLiteTests Mac */, + 03A65E591C6BB0F50062603F /* SQLite tvOS */, + 03A65E621C6BB0F60062603F /* SQLiteTests tvOS */, + A121AC441CA35C79005A31D1 /* SQLite watchOS */, + ); + }; +/* End PBXProject section */ + +/* Begin PBXResourcesBuildPhase section */ + 03A65E581C6BB0F50062603F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 03A65E611C6BB0F60062603F /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 19A17F3E1F7ACA33BD43E138 /* fixtures in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A121AC431CA35C79005A31D1 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EE247AD11C3F04ED00AE3E12 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EE247ADB1C3F04ED00AE3E12 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 19A17FDA323BAFDEC627E76F /* fixtures in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EE247B3A1C3F3ED000AE3E12 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EE247B431C3F3ED000AE3E12 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 19A175DFF47B84757E547C62 /* fixtures in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXResourcesBuildPhase section */ + +/* Begin PBXSourcesBuildPhase section */ + 03A65E551C6BB0F50062603F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 03A65E801C6BB2FB0062603F /* CoreFunctions.swift in Sources */, + 49EB68C61F7B3CB400D89D40 /* Coding.swift in Sources */, + 03A65E761C6BB2E60062603F /* Blob.swift in Sources */, + 03A65E7D1C6BB2F70062603F /* RTree.swift in Sources */, + 03A65E791C6BB2EF0062603F /* SQLite-Bridging.m in Sources */, + 03A65E7B1C6BB2F70062603F /* Value.swift in Sources */, + 03A65E821C6BB2FB0062603F /* Expression.swift in Sources */, + 03A65E731C6BB2D80062603F /* Foundation.swift in Sources */, + 03A65E7F1C6BB2FB0062603F /* Collation.swift in Sources */, + 03A65E861C6BB2FB0062603F /* Setter.swift in Sources */, + 03A65E811C6BB2FB0062603F /* CustomFunctions.swift in Sources */, + 03A65E7A1C6BB2F70062603F /* Statement.swift in Sources */, + 03A65E741C6BB2DA0062603F /* Helpers.swift in Sources */, + 03A65E831C6BB2FB0062603F /* Operators.swift in Sources */, + 03A65E851C6BB2FB0062603F /* Schema.swift in Sources */, + 03A65E841C6BB2FB0062603F /* Query.swift in Sources */, + 03A65E7C1C6BB2F70062603F /* FTS4.swift in Sources */, + 03A65E771C6BB2E60062603F /* Connection.swift in Sources */, + 03A65E7E1C6BB2FB0062603F /* AggregateFunctions.swift in Sources */, + 19A17EC0D68BA8C03288ADF7 /* FTS5.swift in Sources */, + 19A179E76EA6207669B60C1B /* Cipher.swift in Sources */, + 19A17FF4A10B44D3937C8CAC /* Errors.swift in Sources */, + 19A1737286A74F3CF7412906 /* DateAndTimeFunctions.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 03A65E5F1C6BB0F60062603F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 03A65E881C6BB3030062603F /* BlobTests.swift in Sources */, + 03A65E901C6BB3030062603F /* RTreeTests.swift in Sources */, + 03A65E941C6BB3030062603F /* ValueTests.swift in Sources */, + 03A65E8F1C6BB3030062603F /* QueryTests.swift in Sources */, + 03A65E8B1C6BB3030062603F /* CustomFunctionsTests.swift in Sources */, + 03A65E871C6BB3030062603F /* AggregateFunctionsTests.swift in Sources */, + 03A65E921C6BB3030062603F /* SetterTests.swift in Sources */, + 03A65E891C6BB3030062603F /* ConnectionTests.swift in Sources */, + 03A65E8A1C6BB3030062603F /* CoreFunctionsTests.swift in Sources */, + 03A65E931C6BB3030062603F /* StatementTests.swift in Sources */, + 03A65E911C6BB3030062603F /* SchemaTests.swift in Sources */, + 03A65E8D1C6BB3030062603F /* FTS4Tests.swift in Sources */, + 03A65E8C1C6BB3030062603F /* ExpressionTests.swift in Sources */, + 03A65E8E1C6BB3030062603F /* OperatorsTests.swift in Sources */, + 03A65E951C6BB3030062603F /* TestHelpers.swift in Sources */, + 19A17254FBA7894891F7297B /* FTS5Tests.swift in Sources */, + 19A17E04C4C0956715C5676A /* FoundationTests.swift in Sources */, + 19A179A0C45377CB09BB358C /* CipherTests.swift in Sources */, + 19A17F60B685636D1F83C2DD /* Fixtures.swift in Sources */, + 19A1785195182AF8731A8BDA /* RowTests.swift in Sources */, + 19A1769C1F3A7542BECF50FF /* DateAndTimeFunctionTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A121AC401CA35C79005A31D1 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 3D67B3F91DB246E700A4F4C6 /* SQLite-Bridging.m in Sources */, + 49EB68C71F7B3CB400D89D40 /* Coding.swift in Sources */, + 3D67B3F71DB246D700A4F4C6 /* Foundation.swift in Sources */, + 3D67B3F81DB246D700A4F4C6 /* Helpers.swift in Sources */, + 3D67B3E91DB246D100A4F4C6 /* Statement.swift in Sources */, + 3D67B3EA1DB246D100A4F4C6 /* Value.swift in Sources */, + 3D67B3EB1DB246D100A4F4C6 /* FTS4.swift in Sources */, + 3D67B3EC1DB246D100A4F4C6 /* RTree.swift in Sources */, + 3D67B3ED1DB246D100A4F4C6 /* FTS5.swift in Sources */, + 3D67B3EE1DB246D100A4F4C6 /* AggregateFunctions.swift in Sources */, + 3D67B3EF1DB246D100A4F4C6 /* Collation.swift in Sources */, + 3D67B3F01DB246D100A4F4C6 /* CoreFunctions.swift in Sources */, + 3D67B3F11DB246D100A4F4C6 /* CustomFunctions.swift in Sources */, + 3D67B3F21DB246D100A4F4C6 /* Expression.swift in Sources */, + 3D67B3F31DB246D100A4F4C6 /* Operators.swift in Sources */, + 3D67B3F41DB246D100A4F4C6 /* Query.swift in Sources */, + 3D67B3F51DB246D100A4F4C6 /* Schema.swift in Sources */, + 3D67B3F61DB246D100A4F4C6 /* Setter.swift in Sources */, + 3D67B3E71DB246BA00A4F4C6 /* Blob.swift in Sources */, + 3D67B3E81DB246BA00A4F4C6 /* Connection.swift in Sources */, + 19A179CCF9671E345E5A9811 /* Cipher.swift in Sources */, + 19A17DC282E36C4F41AA440B /* Errors.swift in Sources */, + 19A173668D948AD4DF1F5352 /* DateAndTimeFunctions.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EE247ACE1C3F04ED00AE3E12 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EE247B0F1C3F06E900AE3E12 /* CoreFunctions.swift in Sources */, + 49EB68C41F7B3CB400D89D40 /* Coding.swift in Sources */, + EE247B0A1C3F06E900AE3E12 /* RTree.swift in Sources */, + EE247B031C3F06E900AE3E12 /* Blob.swift in Sources */, + EE247B0B1C3F06E900AE3E12 /* Foundation.swift in Sources */, + EE247B041C3F06E900AE3E12 /* Connection.swift in Sources */, + EE247B111C3F06E900AE3E12 /* Expression.swift in Sources */, + EE247B0C1C3F06E900AE3E12 /* Helpers.swift in Sources */, + EE247B0E1C3F06E900AE3E12 /* Collation.swift in Sources */, + EE247B151C3F06E900AE3E12 /* Setter.swift in Sources */, + EE247B101C3F06E900AE3E12 /* CustomFunctions.swift in Sources */, + EE247B091C3F06E900AE3E12 /* FTS4.swift in Sources */, + EE247B081C3F06E900AE3E12 /* Value.swift in Sources */, + EE247B121C3F06E900AE3E12 /* Operators.swift in Sources */, + EE247B141C3F06E900AE3E12 /* Schema.swift in Sources */, + EE247B131C3F06E900AE3E12 /* Query.swift in Sources */, + EE247B061C3F06E900AE3E12 /* SQLite-Bridging.m in Sources */, + EE247B071C3F06E900AE3E12 /* Statement.swift in Sources */, + EE247B0D1C3F06E900AE3E12 /* AggregateFunctions.swift in Sources */, + 19A1717B10CC941ACB5533D6 /* FTS5.swift in Sources */, + 19A171F12AB8B07F2FD7201A /* Cipher.swift in Sources */, + 19A1792C0520D4E83C2EB075 /* Errors.swift in Sources */, + 19A17E29278A12BC4F542506 /* DateAndTimeFunctions.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EE247AD91C3F04ED00AE3E12 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EE247B261C3F137700AE3E12 /* CoreFunctionsTests.swift in Sources */, + EE247B291C3F137700AE3E12 /* FTS4Tests.swift in Sources */, + EE247B191C3F134A00AE3E12 /* SetterTests.swift in Sources */, + EE247B311C3F141E00AE3E12 /* SchemaTests.swift in Sources */, + EE247B171C3F127200AE3E12 /* TestHelpers.swift in Sources */, + EE247B281C3F137700AE3E12 /* ExpressionTests.swift in Sources */, + EE247B271C3F137700AE3E12 /* CustomFunctionsTests.swift in Sources */, + EE247B341C3F142E00AE3E12 /* StatementTests.swift in Sources */, + EE247B301C3F141E00AE3E12 /* RTreeTests.swift in Sources */, + EE247B231C3F137700AE3E12 /* BlobTests.swift in Sources */, + EE247B351C3F142E00AE3E12 /* ValueTests.swift in Sources */, + EE247B2F1C3F141E00AE3E12 /* QueryTests.swift in Sources */, + EE247B221C3F137700AE3E12 /* AggregateFunctionsTests.swift in Sources */, + EE247B2E1C3F141E00AE3E12 /* OperatorsTests.swift in Sources */, + EE247B251C3F137700AE3E12 /* ConnectionTests.swift in Sources */, + 19A171E6FA242F72A308C594 /* FTS5Tests.swift in Sources */, + 19A17FB80B94E882050AA908 /* FoundationTests.swift in Sources */, + 19A177CC33F2E6A24AF90B02 /* CipherTests.swift in Sources */, + 19A17408007B182F884E3A53 /* Fixtures.swift in Sources */, + 19A1720B67ED13E6150C6A3D /* RowTests.swift in Sources */, + 19A17C80076860CF7751A056 /* DateAndTimeFunctionTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EE247B371C3F3ED000AE3E12 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EE247B6F1C3F3FEC00AE3E12 /* CoreFunctions.swift in Sources */, + 49EB68C51F7B3CB400D89D40 /* Coding.swift in Sources */, + EE247B651C3F3FEC00AE3E12 /* Blob.swift in Sources */, + EE247B6C1C3F3FEC00AE3E12 /* RTree.swift in Sources */, + EE247B681C3F3FEC00AE3E12 /* SQLite-Bridging.m in Sources */, + EE247B6A1C3F3FEC00AE3E12 /* Value.swift in Sources */, + EE247B711C3F3FEC00AE3E12 /* Expression.swift in Sources */, + EE247B631C3F3FDB00AE3E12 /* Foundation.swift in Sources */, + EE247B6E1C3F3FEC00AE3E12 /* Collation.swift in Sources */, + EE247B751C3F3FEC00AE3E12 /* Setter.swift in Sources */, + EE247B701C3F3FEC00AE3E12 /* CustomFunctions.swift in Sources */, + EE247B691C3F3FEC00AE3E12 /* Statement.swift in Sources */, + EE247B641C3F3FDB00AE3E12 /* Helpers.swift in Sources */, + EE247B721C3F3FEC00AE3E12 /* Operators.swift in Sources */, + EE247B741C3F3FEC00AE3E12 /* Schema.swift in Sources */, + EE247B731C3F3FEC00AE3E12 /* Query.swift in Sources */, + EE247B6B1C3F3FEC00AE3E12 /* FTS4.swift in Sources */, + EE247B661C3F3FEC00AE3E12 /* Connection.swift in Sources */, + EE247B6D1C3F3FEC00AE3E12 /* AggregateFunctions.swift in Sources */, + 19A1750CEE9B05267995CF3D /* FTS5.swift in Sources */, + 19A17835FD5886FDC5A3228F /* Cipher.swift in Sources */, + 19A17490543609FCED53CACC /* Errors.swift in Sources */, + 19A17152E32A9585831E3FE0 /* DateAndTimeFunctions.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EE247B411C3F3ED000AE3E12 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EE247B561C3F3FC700AE3E12 /* CoreFunctionsTests.swift in Sources */, + EE247B5A1C3F3FC700AE3E12 /* OperatorsTests.swift in Sources */, + EE247B541C3F3FC700AE3E12 /* BlobTests.swift in Sources */, + EE247B5D1C3F3FC700AE3E12 /* SchemaTests.swift in Sources */, + EE247B591C3F3FC700AE3E12 /* FTS4Tests.swift in Sources */, + EE247B531C3F3FC700AE3E12 /* AggregateFunctionsTests.swift in Sources */, + EE247B5F1C3F3FC700AE3E12 /* StatementTests.swift in Sources */, + EE247B5C1C3F3FC700AE3E12 /* RTreeTests.swift in Sources */, + EE247B571C3F3FC700AE3E12 /* CustomFunctionsTests.swift in Sources */, + EE247B601C3F3FC700AE3E12 /* ValueTests.swift in Sources */, + EE247B551C3F3FC700AE3E12 /* ConnectionTests.swift in Sources */, + EE247B611C3F3FC700AE3E12 /* TestHelpers.swift in Sources */, + EE247B581C3F3FC700AE3E12 /* ExpressionTests.swift in Sources */, + EE247B5E1C3F3FC700AE3E12 /* SetterTests.swift in Sources */, + EE247B5B1C3F3FC700AE3E12 /* QueryTests.swift in Sources */, + 19A174D78559CD30679BCCCB /* FTS5Tests.swift in Sources */, + 19A178072B371489E6A1E839 /* FoundationTests.swift in Sources */, + 19A17C4B951CB054EE48AB1C /* CipherTests.swift in Sources */, + 19A1709C3E7A406E62293B2A /* Fixtures.swift in Sources */, + 19A171967CC511C4F6F773C9 /* RowTests.swift in Sources */, + 19A172EB202970561E5C4245 /* DateAndTimeFunctionTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; +/* End PBXSourcesBuildPhase section */ + +/* Begin PBXTargetDependency section */ + 03A65E661C6BB0F60062603F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 03A65E591C6BB0F50062603F /* SQLite tvOS */; + targetProxy = 03A65E651C6BB0F60062603F /* PBXContainerItemProxy */; + }; + EE247AE01C3F04ED00AE3E12 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = EE247AD21C3F04ED00AE3E12 /* SQLite iOS */; + targetProxy = EE247ADF1C3F04ED00AE3E12 /* PBXContainerItemProxy */; + }; + EE247B481C3F3ED000AE3E12 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = EE247B3B1C3F3ED000AE3E12 /* SQLite Mac */; + targetProxy = EE247B471C3F3ED000AE3E12 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + +/* Begin XCBuildConfiguration section */ + 03A65E6B1C6BB0F60062603F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "$(SRCROOT)/Sources/SQLite/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.stephencelis.SQLite; + PRODUCT_NAME = SQLite; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + "SWIFT_INCLUDE_PATHS[sdk=appletvos*]" = "$(SRCROOT)/CocoaPods/appletvos"; + "SWIFT_INCLUDE_PATHS[sdk=appletvsimulator*]" = "$(SRCROOT)/CocoaPods/appletvsimulator"; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; + TVOS_DEPLOYMENT_TARGET = 9.1; + }; + name = Debug; + }; + 03A65E6C1C6BB0F60062603F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "$(SRCROOT)/Sources/SQLite/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.stephencelis.SQLite; + PRODUCT_NAME = SQLite; + SDKROOT = appletvos; + SKIP_INSTALL = YES; + "SWIFT_INCLUDE_PATHS[sdk=appletvos*]" = "$(SRCROOT)/CocoaPods/appletvos"; + "SWIFT_INCLUDE_PATHS[sdk=appletvsimulator*]" = "$(SRCROOT)/CocoaPods/appletvsimulator"; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; + TVOS_DEPLOYMENT_TARGET = 9.1; + }; + name = Release; + }; + 03A65E6D1C6BB0F60062603F /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = Tests/SQLite/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.stephencelis.SQLiteTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; + TVOS_DEPLOYMENT_TARGET = 9.1; + }; + name = Debug; + }; + 03A65E6E1C6BB0F60062603F /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = Tests/SQLite/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.stephencelis.SQLiteTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = appletvos; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; + TVOS_DEPLOYMENT_TARGET = 9.1; + }; + name = Release; + }; + A121AC4A1CA35C79005A31D1 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CLANG_ANALYZER_NONNULL = YES; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "$(SRCROOT)/Sources/SQLite/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.stephencelis.SQLite; + PRODUCT_NAME = SQLite; + SDKROOT = watchos; + SKIP_INSTALL = YES; + "SWIFT_INCLUDE_PATHS[sdk=watchos*]" = "$(SRCROOT)/CocoaPods/watchos"; + "SWIFT_INCLUDE_PATHS[sdk=watchsimulator*]" = "$(SRCROOT)/CocoaPods/watchsimulator"; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = 4; + WATCHOS_DEPLOYMENT_TARGET = 2.2; + }; + name = Debug; + }; + A121AC4B1CA35C79005A31D1 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CLANG_ANALYZER_NONNULL = YES; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "$(SRCROOT)/Sources/SQLite/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.stephencelis.SQLite; + PRODUCT_NAME = SQLite; + SDKROOT = watchos; + SKIP_INSTALL = YES; + "SWIFT_INCLUDE_PATHS[sdk=watchos*]" = "$(SRCROOT)/CocoaPods/watchos"; + "SWIFT_INCLUDE_PATHS[sdk=watchsimulator*]" = "$(SRCROOT)/CocoaPods/watchsimulator"; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = 4; + WATCHOS_DEPLOYMENT_TARGET = 2.2; + }; + name = Release; + }; + EE247AE51C3F04ED00AE3E12 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = dwarf; + ENABLE_STRICT_OBJC_MSGSEND = YES; + ENABLE_TESTABILITY = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_DYNAMIC_NO_PIC = NO; + GCC_NO_COMMON_BLOCKS = YES; + GCC_OPTIMIZATION_LEVEL = 0; + GCC_PREPROCESSOR_DEFINITIONS = ( + "DEBUG=1", + "$(inherited)", + ); + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MACOSX_DEPLOYMENT_TARGET = 10.9; + MTL_ENABLE_DEBUG_INFO = YES; + ONLY_ACTIVE_ARCH = YES; + PRODUCT_NAME = ""; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + TARGETED_DEVICE_FAMILY = "1,2,3"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + EE247AE61C3F04ED00AE3E12 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; + CLANG_CXX_LIBRARY = "libc++"; + CLANG_ENABLE_MODULES = YES; + CLANG_ENABLE_OBJC_ARC = YES; + CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES; + CLANG_WARN_BOOL_CONVERSION = YES; + CLANG_WARN_COMMA = YES; + CLANG_WARN_CONSTANT_CONVERSION = YES; + CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR; + CLANG_WARN_EMPTY_BODY = YES; + CLANG_WARN_ENUM_CONVERSION = YES; + CLANG_WARN_INFINITE_RECURSION = YES; + CLANG_WARN_INT_CONVERSION = YES; + CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES; + CLANG_WARN_OBJC_LITERAL_CONVERSION = YES; + CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR; + CLANG_WARN_RANGE_LOOP_ANALYSIS = YES; + CLANG_WARN_STRICT_PROTOTYPES = YES; + CLANG_WARN_SUSPICIOUS_MOVE = YES; + CLANG_WARN_UNREACHABLE_CODE = YES; + CLANG_WARN__DUPLICATE_METHOD_MATCH = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer"; + COPY_PHASE_STRIP = NO; + CURRENT_PROJECT_VERSION = 1; + DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym"; + ENABLE_NS_ASSERTIONS = NO; + ENABLE_STRICT_OBJC_MSGSEND = YES; + GCC_C_LANGUAGE_STANDARD = gnu99; + GCC_NO_COMMON_BLOCKS = YES; + GCC_WARN_64_TO_32_BIT_CONVERSION = YES; + GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR; + GCC_WARN_UNDECLARED_SELECTOR = YES; + GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; + GCC_WARN_UNUSED_FUNCTION = YES; + GCC_WARN_UNUSED_VARIABLE = YES; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + MACOSX_DEPLOYMENT_TARGET = 10.9; + MTL_ENABLE_DEBUG_INFO = NO; + PRODUCT_NAME = ""; + SDKROOT = iphoneos; + SWIFT_OPTIMIZATION_LEVEL = "-Owholemodule"; + TARGETED_DEVICE_FAMILY = "1,2,3"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + EE247AE81C3F04ED00AE3E12 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CLANG_ENABLE_MODULES = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "$(SRCROOT)/Sources/SQLite/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.stephencelis.SQLite; + PRODUCT_NAME = SQLite; + SKIP_INSTALL = YES; + "SWIFT_INCLUDE_PATHS[sdk=iphoneos*]" = "$(SRCROOT)/CocoaPods/iphoneos"; + "SWIFT_INCLUDE_PATHS[sdk=iphoneos10.0]" = "$(SRCROOT)/CocoaPods/iphoneos-10.0"; + "SWIFT_INCLUDE_PATHS[sdk=iphonesimulator*]" = "$(SRCROOT)/CocoaPods/iphonesimulator"; + "SWIFT_INCLUDE_PATHS[sdk=iphonesimulator10.0]" = "$(SRCROOT)/CocoaPods/iphonesimulator-10.0"; + SWIFT_OPTIMIZATION_LEVEL = "-Onone"; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; + }; + name = Debug; + }; + EE247AE91C3F04ED00AE3E12 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CLANG_ENABLE_MODULES = YES; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + INFOPLIST_FILE = "$(SRCROOT)/Sources/SQLite/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.stephencelis.SQLite; + PRODUCT_NAME = SQLite; + SKIP_INSTALL = YES; + "SWIFT_INCLUDE_PATHS[sdk=iphoneos*]" = "$(SRCROOT)/CocoaPods/iphoneos"; + "SWIFT_INCLUDE_PATHS[sdk=iphoneos10.0]" = "$(SRCROOT)/CocoaPods/iphoneos-10.0"; + "SWIFT_INCLUDE_PATHS[sdk=iphonesimulator*]" = "$(SRCROOT)/CocoaPods/iphonesimulator"; + "SWIFT_INCLUDE_PATHS[sdk=iphonesimulator10.0]" = "$(SRCROOT)/CocoaPods/iphonesimulator-10.0"; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; + }; + name = Release; + }; + EE247AEB1C3F04ED00AE3E12 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = Tests/SQLiteTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.stephencelis.SQLiteTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; + }; + name = Debug; + }; + EE247AEC1C3F04ED00AE3E12 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + INFOPLIST_FILE = Tests/SQLiteTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.stephencelis.SQLiteTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; + }; + name = Release; + }; + EE247B4D1C3F3ED000AE3E12 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CODE_SIGN_IDENTITY = ""; + COMBINE_HIDPI_IMAGES = YES; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_VERSION = A; + INFOPLIST_FILE = "$(SRCROOT)/Sources/SQLite/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + PRODUCT_BUNDLE_IDENTIFIER = com.stephencelis.SQLite; + PRODUCT_NAME = SQLite; + SDKROOT = macosx; + SKIP_INSTALL = YES; + SWIFT_INCLUDE_PATHS = ""; + "SWIFT_INCLUDE_PATHS[sdk=macosx*]" = "$(SRCROOT)/CocoaPods/macosx"; + "SWIFT_INCLUDE_PATHS[sdk=macosx10.11]" = "$(SRCROOT)/CocoaPods/macosx-10.11"; + "SWIFT_INCLUDE_PATHS[sdk=macosx10.12]" = "$(SRCROOT)/CocoaPods/macosx-10.12"; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; + }; + name = Debug; + }; + EE247B4E1C3F3ED000AE3E12 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + APPLICATION_EXTENSION_API_ONLY = YES; + CODE_SIGN_IDENTITY = ""; + COMBINE_HIDPI_IMAGES = YES; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + FRAMEWORK_VERSION = A; + INFOPLIST_FILE = "$(SRCROOT)/Sources/SQLite/Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + PRODUCT_BUNDLE_IDENTIFIER = com.stephencelis.SQLite; + PRODUCT_NAME = SQLite; + SDKROOT = macosx; + SKIP_INSTALL = YES; + SWIFT_INCLUDE_PATHS = ""; + "SWIFT_INCLUDE_PATHS[sdk=macosx*]" = "$(SRCROOT)/CocoaPods/macosx"; + "SWIFT_INCLUDE_PATHS[sdk=macosx10.11]" = "$(SRCROOT)/CocoaPods/macosx-10.11"; + "SWIFT_INCLUDE_PATHS[sdk=macosx10.12]" = "$(SRCROOT)/CocoaPods/macosx-10.12"; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; + }; + name = Release; + }; + EE247B4F1C3F3ED000AE3E12 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "-"; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Tests/SQLiteTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + PRODUCT_BUNDLE_IDENTIFIER = com.stephencelis.SQLiteTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; + }; + name = Debug; + }; + EE247B501C3F3ED000AE3E12 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CODE_SIGN_IDENTITY = "-"; + COMBINE_HIDPI_IMAGES = YES; + INFOPLIST_FILE = Tests/SQLiteTests/Info.plist; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/../Frameworks @loader_path/../Frameworks"; + MACOSX_DEPLOYMENT_TARGET = 10.10; + PRODUCT_BUNDLE_IDENTIFIER = com.stephencelis.SQLiteTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SDKROOT = macosx; + SWIFT_SWIFT3_OBJC_INFERENCE = Default; + SWIFT_VERSION = 4.0; + }; + name = Release; + }; +/* End XCBuildConfiguration section */ + +/* Begin XCConfigurationList section */ + 03A65E6F1C6BB0F60062603F /* Build configuration list for PBXNativeTarget "SQLite tvOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 03A65E6B1C6BB0F60062603F /* Debug */, + 03A65E6C1C6BB0F60062603F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 03A65E701C6BB0F60062603F /* Build configuration list for PBXNativeTarget "SQLiteTests tvOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 03A65E6D1C6BB0F60062603F /* Debug */, + 03A65E6E1C6BB0F60062603F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + A121AC4C1CA35C79005A31D1 /* Build configuration list for PBXNativeTarget "SQLite watchOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A121AC4A1CA35C79005A31D1 /* Debug */, + A121AC4B1CA35C79005A31D1 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + EE247ACD1C3F04ED00AE3E12 /* Build configuration list for PBXProject "SQLite" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EE247AE51C3F04ED00AE3E12 /* Debug */, + EE247AE61C3F04ED00AE3E12 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + EE247AE71C3F04ED00AE3E12 /* Build configuration list for PBXNativeTarget "SQLite iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EE247AE81C3F04ED00AE3E12 /* Debug */, + EE247AE91C3F04ED00AE3E12 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + EE247AEA1C3F04ED00AE3E12 /* Build configuration list for PBXNativeTarget "SQLiteTests iOS" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EE247AEB1C3F04ED00AE3E12 /* Debug */, + EE247AEC1C3F04ED00AE3E12 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + EE247B511C3F3ED000AE3E12 /* Build configuration list for PBXNativeTarget "SQLite Mac" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EE247B4D1C3F3ED000AE3E12 /* Debug */, + EE247B4E1C3F3ED000AE3E12 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + EE247B521C3F3ED000AE3E12 /* Build configuration list for PBXNativeTarget "SQLiteTests Mac" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + EE247B4F1C3F3ED000AE3E12 /* Debug */, + EE247B501C3F3ED000AE3E12 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; +/* End XCConfigurationList section */ + }; + rootObject = EE247ACA1C3F04ED00AE3E12 /* Project object */; +} diff --git a/Carthage/Checkouts/SQLite.swift/SQLite.xcodeproj/project.xcworkspace/contents.xcworkspacedata b/Carthage/Checkouts/SQLite.swift/SQLite.xcodeproj/project.xcworkspace/contents.xcworkspacedata new file mode 100644 index 0000000..cd11dc9 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/SQLite.xcodeproj/project.xcworkspace/contents.xcworkspacedata @@ -0,0 +1,7 @@ + + + + + diff --git a/Carthage/Checkouts/SQLite.swift/SQLite.xcodeproj/xcshareddata/xcschemes/SQLite Mac.xcscheme b/Carthage/Checkouts/SQLite.swift/SQLite.xcodeproj/xcshareddata/xcschemes/SQLite Mac.xcscheme new file mode 100644 index 0000000..2c3c431 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/SQLite.xcodeproj/xcshareddata/xcschemes/SQLite Mac.xcscheme @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Carthage/Checkouts/SQLite.swift/SQLite.xcodeproj/xcshareddata/xcschemes/SQLite iOS.xcscheme b/Carthage/Checkouts/SQLite.swift/SQLite.xcodeproj/xcshareddata/xcschemes/SQLite iOS.xcscheme new file mode 100644 index 0000000..fb00f5b --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/SQLite.xcodeproj/xcshareddata/xcschemes/SQLite iOS.xcscheme @@ -0,0 +1,102 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Carthage/Checkouts/SQLite.swift/SQLite.xcodeproj/xcshareddata/xcschemes/SQLite tvOS.xcscheme b/Carthage/Checkouts/SQLite.swift/SQLite.xcodeproj/xcshareddata/xcschemes/SQLite tvOS.xcscheme new file mode 100644 index 0000000..cfa4e0f --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/SQLite.xcodeproj/xcshareddata/xcschemes/SQLite tvOS.xcscheme @@ -0,0 +1,100 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Carthage/Checkouts/SQLite.swift/SQLite.xcodeproj/xcshareddata/xcschemes/SQLite watchOS.xcscheme b/Carthage/Checkouts/SQLite.swift/SQLite.xcodeproj/xcshareddata/xcschemes/SQLite watchOS.xcscheme new file mode 100644 index 0000000..92cc912 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/SQLite.xcodeproj/xcshareddata/xcschemes/SQLite watchOS.xcscheme @@ -0,0 +1,80 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Blob.swift b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Blob.swift new file mode 100644 index 0000000..2f5d2a1 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Blob.swift @@ -0,0 +1,60 @@ +// +// SQLite.swift +// https://github.com/stephencelis/SQLite.swift +// Copyright © 2014-2015 Stephen Celis. +// +// 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. +// + +public struct Blob { + + public let bytes: [UInt8] + + public init(bytes: [UInt8]) { + self.bytes = bytes + } + + public init(bytes: UnsafeRawPointer, length: Int) { + let i8bufptr = UnsafeBufferPointer(start: bytes.assumingMemoryBound(to: UInt8.self), count: length) + self.init(bytes: [UInt8](i8bufptr)) + } + + public func toHex() -> String { + return bytes.map { + ($0 < 16 ? "0" : "") + String($0, radix: 16, uppercase: false) + }.joined(separator: "") + } + +} + +extension Blob : CustomStringConvertible { + + public var description: String { + return "x'\(toHex())'" + } + +} + +extension Blob : Equatable { + +} + +public func ==(lhs: Blob, rhs: Blob) -> Bool { + return lhs.bytes == rhs.bytes +} diff --git a/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Connection.swift b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Connection.swift new file mode 100644 index 0000000..f751311 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Connection.swift @@ -0,0 +1,750 @@ +// +// SQLite.swift +// https://github.com/stephencelis/SQLite.swift +// Copyright © 2014-2015 Stephen Celis. +// +// 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. +// + +import Foundation +import Dispatch +#if SQLITE_SWIFT_STANDALONE +import sqlite3 +#elseif SQLITE_SWIFT_SQLCIPHER +import SQLCipher +#elseif os(Linux) +import CSQLite +#else +import SQLite3 +#endif + +/// A connection to SQLite. +public final class Connection { + + /// The location of a SQLite database. + public enum Location { + + /// An in-memory database (equivalent to `.uri(":memory:")`). + /// + /// See: + case inMemory + + /// A temporary, file-backed database (equivalent to `.uri("")`). + /// + /// See: + case temporary + + /// A database located at the given URI filename (or path). + /// + /// See: + /// + /// - Parameter filename: A URI filename + case uri(String) + } + + /// An SQL operation passed to update callbacks. + public enum Operation { + + /// An INSERT operation. + case insert + + /// An UPDATE operation. + case update + + /// A DELETE operation. + case delete + + fileprivate init(rawValue:Int32) { + switch rawValue { + case SQLITE_INSERT: + self = .insert + case SQLITE_UPDATE: + self = .update + case SQLITE_DELETE: + self = .delete + default: + fatalError("unhandled operation code: \(rawValue)") + } + } + } + + public var handle: OpaquePointer { return _handle! } + + fileprivate var _handle: OpaquePointer? = nil + + /// Initializes a new SQLite connection. + /// + /// - Parameters: + /// + /// - location: The location of the database. Creates a new database if it + /// doesn’t already exist (unless in read-only mode). + /// + /// Default: `.inMemory`. + /// + /// - readonly: Whether or not to open the database in a read-only state. + /// + /// Default: `false`. + /// + /// - Returns: A new database connection. + public init(_ location: Location = .inMemory, readonly: Bool = false) throws { + let flags = readonly ? SQLITE_OPEN_READONLY : SQLITE_OPEN_CREATE | SQLITE_OPEN_READWRITE + try check(sqlite3_open_v2(location.description, &_handle, flags | SQLITE_OPEN_FULLMUTEX, nil)) + queue.setSpecific(key: Connection.queueKey, value: queueContext) + } + + /// Initializes a new connection to a database. + /// + /// - Parameters: + /// + /// - filename: The location of the database. Creates a new database if + /// it doesn’t already exist (unless in read-only mode). + /// + /// - readonly: Whether or not to open the database in a read-only state. + /// + /// Default: `false`. + /// + /// - Throws: `Result.Error` iff a connection cannot be established. + /// + /// - Returns: A new database connection. + public convenience init(_ filename: String, readonly: Bool = false) throws { + try self.init(.uri(filename), readonly: readonly) + } + + deinit { + sqlite3_close(handle) + } + + // MARK: - + + /// Whether or not the database was opened in a read-only state. + public var readonly: Bool { return sqlite3_db_readonly(handle, nil) == 1 } + + /// The last rowid inserted into the database via this connection. + public var lastInsertRowid: Int64 { + return sqlite3_last_insert_rowid(handle) + } + + /// The last number of changes (inserts, updates, or deletes) made to the + /// database via this connection. + public var changes: Int { + return Int(sqlite3_changes(handle)) + } + + /// The total number of changes (inserts, updates, or deletes) made to the + /// database via this connection. + public var totalChanges: Int { + return Int(sqlite3_total_changes(handle)) + } + + // MARK: - Execute + + /// Executes a batch of SQL statements. + /// + /// - Parameter SQL: A batch of zero or more semicolon-separated SQL + /// statements. + /// + /// - Throws: `Result.Error` if query execution fails. + public func execute(_ SQL: String) throws { + _ = try sync { try self.check(sqlite3_exec(self.handle, SQL, nil, nil, nil)) } + } + + // MARK: - Prepare + + /// Prepares a single SQL statement (with optional parameter bindings). + /// + /// - Parameters: + /// + /// - statement: A single SQL statement. + /// + /// - bindings: A list of parameters to bind to the statement. + /// + /// - Returns: A prepared statement. + public func prepare(_ statement: String, _ bindings: Binding?...) throws -> Statement { + if !bindings.isEmpty { return try prepare(statement, bindings) } + return try Statement(self, statement) + } + + /// Prepares a single SQL statement and binds parameters to it. + /// + /// - Parameters: + /// + /// - statement: A single SQL statement. + /// + /// - bindings: A list of parameters to bind to the statement. + /// + /// - Returns: A prepared statement. + public func prepare(_ statement: String, _ bindings: [Binding?]) throws -> Statement { + return try prepare(statement).bind(bindings) + } + + /// Prepares a single SQL statement and binds parameters to it. + /// + /// - Parameters: + /// + /// - statement: A single SQL statement. + /// + /// - bindings: A dictionary of named parameters to bind to the statement. + /// + /// - Returns: A prepared statement. + public func prepare(_ statement: String, _ bindings: [String: Binding?]) throws -> Statement { + return try prepare(statement).bind(bindings) + } + + // MARK: - Run + + /// Runs a single SQL statement (with optional parameter bindings). + /// + /// - Parameters: + /// + /// - statement: A single SQL statement. + /// + /// - bindings: A list of parameters to bind to the statement. + /// + /// - Throws: `Result.Error` if query execution fails. + /// + /// - Returns: The statement. + @discardableResult public func run(_ statement: String, _ bindings: Binding?...) throws -> Statement { + return try run(statement, bindings) + } + + /// Prepares, binds, and runs a single SQL statement. + /// + /// - Parameters: + /// + /// - statement: A single SQL statement. + /// + /// - bindings: A list of parameters to bind to the statement. + /// + /// - Throws: `Result.Error` if query execution fails. + /// + /// - Returns: The statement. + @discardableResult public func run(_ statement: String, _ bindings: [Binding?]) throws -> Statement { + return try prepare(statement).run(bindings) + } + + /// Prepares, binds, and runs a single SQL statement. + /// + /// - Parameters: + /// + /// - statement: A single SQL statement. + /// + /// - bindings: A dictionary of named parameters to bind to the statement. + /// + /// - Throws: `Result.Error` if query execution fails. + /// + /// - Returns: The statement. + @discardableResult public func run(_ statement: String, _ bindings: [String: Binding?]) throws -> Statement { + return try prepare(statement).run(bindings) + } + + // MARK: - Scalar + + /// Runs a single SQL statement (with optional parameter bindings), + /// returning the first value of the first row. + /// + /// - Parameters: + /// + /// - statement: A single SQL statement. + /// + /// - bindings: A list of parameters to bind to the statement. + /// + /// - Returns: The first value of the first row returned. + public func scalar(_ statement: String, _ bindings: Binding?...) throws -> Binding? { + return try scalar(statement, bindings) + } + + /// Runs a single SQL statement (with optional parameter bindings), + /// returning the first value of the first row. + /// + /// - Parameters: + /// + /// - statement: A single SQL statement. + /// + /// - bindings: A list of parameters to bind to the statement. + /// + /// - Returns: The first value of the first row returned. + public func scalar(_ statement: String, _ bindings: [Binding?]) throws -> Binding? { + return try prepare(statement).scalar(bindings) + } + + /// Runs a single SQL statement (with optional parameter bindings), + /// returning the first value of the first row. + /// + /// - Parameters: + /// + /// - statement: A single SQL statement. + /// + /// - bindings: A dictionary of named parameters to bind to the statement. + /// + /// - Returns: The first value of the first row returned. + public func scalar(_ statement: String, _ bindings: [String: Binding?]) throws -> Binding? { + return try prepare(statement).scalar(bindings) + } + + // MARK: - Transactions + + /// The mode in which a transaction acquires a lock. + public enum TransactionMode : String { + + /// Defers locking the database till the first read/write executes. + case deferred = "DEFERRED" + + /// Immediately acquires a reserved lock on the database. + case immediate = "IMMEDIATE" + + /// Immediately acquires an exclusive lock on all databases. + case exclusive = "EXCLUSIVE" + + } + + // TODO: Consider not requiring a throw to roll back? + /// Runs a transaction with the given mode. + /// + /// - Note: Transactions cannot be nested. To nest transactions, see + /// `savepoint()`, instead. + /// + /// - Parameters: + /// + /// - mode: The mode in which a transaction acquires a lock. + /// + /// Default: `.deferred` + /// + /// - block: A closure to run SQL statements within the transaction. + /// The transaction will be committed when the block returns. The block + /// must throw to roll the transaction back. + /// + /// - Throws: `Result.Error`, and rethrows. + public func transaction(_ mode: TransactionMode = .deferred, block: () throws -> Void) throws { + try transaction("BEGIN \(mode.rawValue) TRANSACTION", block, "COMMIT TRANSACTION", or: "ROLLBACK TRANSACTION") + } + + // TODO: Consider not requiring a throw to roll back? + // TODO: Consider removing ability to set a name? + /// Runs a transaction with the given savepoint name (if omitted, it will + /// generate a UUID). + /// + /// - SeeAlso: `transaction()`. + /// + /// - Parameters: + /// + /// - savepointName: A unique identifier for the savepoint (optional). + /// + /// - block: A closure to run SQL statements within the transaction. + /// The savepoint will be released (committed) when the block returns. + /// The block must throw to roll the savepoint back. + /// + /// - Throws: `SQLite.Result.Error`, and rethrows. + public func savepoint(_ name: String = UUID().uuidString, block: () throws -> Void) throws { + let name = name.quote("'") + let savepoint = "SAVEPOINT \(name)" + + try transaction(savepoint, block, "RELEASE \(savepoint)", or: "ROLLBACK TO \(savepoint)") + } + + fileprivate func transaction(_ begin: String, _ block: () throws -> Void, _ commit: String, or rollback: String) throws { + return try sync { + try self.run(begin) + do { + try block() + try self.run(commit) + } catch { + try self.run(rollback) + throw error + } + } + } + + /// Interrupts any long-running queries. + public func interrupt() { + sqlite3_interrupt(handle) + } + + // MARK: - Handlers + + /// The number of seconds a connection will attempt to retry a statement + /// after encountering a busy signal (lock). + public var busyTimeout: Double = 0 { + didSet { + sqlite3_busy_timeout(handle, Int32(busyTimeout * 1_000)) + } + } + + /// Sets a handler to call after encountering a busy signal (lock). + /// + /// - Parameter callback: This block is executed during a lock in which a + /// busy error would otherwise be returned. It’s passed the number of + /// times it’s been called for this lock. If it returns `true`, it will + /// try again. If it returns `false`, no further attempts will be made. + public func busyHandler(_ callback: ((_ tries: Int) -> Bool)?) { + guard let callback = callback else { + sqlite3_busy_handler(handle, nil, nil) + busyHandler = nil + return + } + + let box: BusyHandler = { callback(Int($0)) ? 1 : 0 } + sqlite3_busy_handler(handle, { callback, tries in + unsafeBitCast(callback, to: BusyHandler.self)(tries) + }, unsafeBitCast(box, to: UnsafeMutableRawPointer.self)) + busyHandler = box + } + fileprivate typealias BusyHandler = @convention(block) (Int32) -> Int32 + fileprivate var busyHandler: BusyHandler? + + /// Sets a handler to call when a statement is executed with the compiled + /// SQL. + /// + /// - Parameter callback: This block is invoked when a statement is executed + /// with the compiled SQL as its argument. + /// + /// db.trace { SQL in print(SQL) } + public func trace(_ callback: ((String) -> Void)?) { + #if SQLITE_SWIFT_SQLCIPHER || os(Linux) + trace_v1(callback) + #else + if #available(iOS 10.0, OSX 10.12, tvOS 10.0, watchOS 3.0, *) { + trace_v2(callback) + } else { + trace_v1(callback) + } + #endif + } + + fileprivate func trace_v1(_ callback: ((String) -> Void)?) { + guard let callback = callback else { + sqlite3_trace(handle, nil /* xCallback */, nil /* pCtx */) + trace = nil + return + } + let box: Trace = { (pointer: UnsafeRawPointer) in + callback(String(cString: pointer.assumingMemoryBound(to: UInt8.self))) + } + sqlite3_trace(handle, + { + (C: UnsafeMutableRawPointer?, SQL: UnsafePointer?) in + if let C = C, let SQL = SQL { + unsafeBitCast(C, to: Trace.self)(SQL) + } + }, + unsafeBitCast(box, to: UnsafeMutableRawPointer.self) + ) + trace = box + } + + + + + fileprivate typealias Trace = @convention(block) (UnsafeRawPointer) -> Void + fileprivate var trace: Trace? + + /// Registers a callback to be invoked whenever a row is inserted, updated, + /// or deleted in a rowid table. + /// + /// - Parameter callback: A callback invoked with the `Operation` (one of + /// `.Insert`, `.Update`, or `.Delete`), database name, table name, and + /// rowid. + public func updateHook(_ callback: ((_ operation: Operation, _ db: String, _ table: String, _ rowid: Int64) -> Void)?) { + guard let callback = callback else { + sqlite3_update_hook(handle, nil, nil) + updateHook = nil + return + } + + let box: UpdateHook = { + callback( + Operation(rawValue: $0), + String(cString: $1), + String(cString: $2), + $3 + ) + } + sqlite3_update_hook(handle, { callback, operation, db, table, rowid in + unsafeBitCast(callback, to: UpdateHook.self)(operation, db!, table!, rowid) + }, unsafeBitCast(box, to: UnsafeMutableRawPointer.self)) + updateHook = box + } + fileprivate typealias UpdateHook = @convention(block) (Int32, UnsafePointer, UnsafePointer, Int64) -> Void + fileprivate var updateHook: UpdateHook? + + /// Registers a callback to be invoked whenever a transaction is committed. + /// + /// - Parameter callback: A callback invoked whenever a transaction is + /// committed. If this callback throws, the transaction will be rolled + /// back. + public func commitHook(_ callback: (() throws -> Void)?) { + guard let callback = callback else { + sqlite3_commit_hook(handle, nil, nil) + commitHook = nil + return + } + + let box: CommitHook = { + do { + try callback() + } catch { + return 1 + } + return 0 + } + sqlite3_commit_hook(handle, { callback in + unsafeBitCast(callback, to: CommitHook.self)() + }, unsafeBitCast(box, to: UnsafeMutableRawPointer.self)) + commitHook = box + } + fileprivate typealias CommitHook = @convention(block) () -> Int32 + fileprivate var commitHook: CommitHook? + + /// Registers a callback to be invoked whenever a transaction rolls back. + /// + /// - Parameter callback: A callback invoked when a transaction is rolled + /// back. + public func rollbackHook(_ callback: (() -> Void)?) { + guard let callback = callback else { + sqlite3_rollback_hook(handle, nil, nil) + rollbackHook = nil + return + } + + let box: RollbackHook = { callback() } + sqlite3_rollback_hook(handle, { callback in + unsafeBitCast(callback, to: RollbackHook.self)() + }, unsafeBitCast(box, to: UnsafeMutableRawPointer.self)) + rollbackHook = box + } + fileprivate typealias RollbackHook = @convention(block) () -> Void + fileprivate var rollbackHook: RollbackHook? + + /// Creates or redefines a custom SQL function. + /// + /// - Parameters: + /// + /// - function: The name of the function to create or redefine. + /// + /// - argumentCount: The number of arguments that the function takes. If + /// `nil`, the function may take any number of arguments. + /// + /// Default: `nil` + /// + /// - deterministic: Whether or not the function is deterministic (_i.e._ + /// the function always returns the same result for a given input). + /// + /// Default: `false` + /// + /// - block: A block of code to run when the function is called. The block + /// is called with an array of raw SQL values mapped to the function’s + /// parameters and should return a raw SQL value (or nil). + public func createFunction(_ function: String, argumentCount: UInt? = nil, deterministic: Bool = false, _ block: @escaping (_ args: [Binding?]) -> Binding?) { + let argc = argumentCount.map { Int($0) } ?? -1 + let box: Function = { context, argc, argv in + let arguments: [Binding?] = (0..?) -> Void + fileprivate var functions = [String: [Int: Function]]() + + /// Defines a new collating sequence. + /// + /// - Parameters: + /// + /// - collation: The name of the collation added. + /// + /// - block: A collation function that takes two strings and returns the + /// comparison result. + public func createCollation(_ collation: String, _ block: @escaping (_ lhs: String, _ rhs: String) -> ComparisonResult) throws { + let box: Collation = { (lhs: UnsafeRawPointer, rhs: UnsafeRawPointer) in + let lstr = String(cString: lhs.assumingMemoryBound(to: UInt8.self)) + let rstr = String(cString: rhs.assumingMemoryBound(to: UInt8.self)) + return Int32(block(lstr, rstr).rawValue) + } + try check(sqlite3_create_collation_v2(handle, collation, SQLITE_UTF8, + unsafeBitCast(box, to: UnsafeMutableRawPointer.self), + { (callback: UnsafeMutableRawPointer?, _, lhs: UnsafeRawPointer?, _, rhs: UnsafeRawPointer?) in /* xCompare */ + if let lhs = lhs, let rhs = rhs { + return unsafeBitCast(callback, to: Collation.self)(lhs, rhs) + } else { + fatalError("sqlite3_create_collation_v2 callback called with NULL pointer") + } + }, nil /* xDestroy */)) + collations[collation] = box + } + fileprivate typealias Collation = @convention(block) (UnsafeRawPointer, UnsafeRawPointer) -> Int32 + fileprivate var collations = [String: Collation]() + + // MARK: - Error Handling + + func sync(_ block: () throws -> T) rethrows -> T { + if DispatchQueue.getSpecific(key: Connection.queueKey) == queueContext { + return try block() + } else { + return try queue.sync(execute: block) + } + } + + @discardableResult func check(_ resultCode: Int32, statement: Statement? = nil) throws -> Int32 { + guard let error = Result(errorCode: resultCode, connection: self, statement: statement) else { + return resultCode + } + + throw error + } + + fileprivate var queue = DispatchQueue(label: "SQLite.Database", attributes: []) + + fileprivate static let queueKey = DispatchSpecificKey() + + fileprivate lazy var queueContext: Int = unsafeBitCast(self, to: Int.self) + +} + +extension Connection : CustomStringConvertible { + + public var description: String { + return String(cString: sqlite3_db_filename(handle, nil)) + } + +} + +extension Connection.Location : CustomStringConvertible { + + public var description: String { + switch self { + case .inMemory: + return ":memory:" + case .temporary: + return "" + case .uri(let URI): + return URI + } + } + +} + +public enum Result : Error { + + fileprivate static let successCodes: Set = [SQLITE_OK, SQLITE_ROW, SQLITE_DONE] + + /// Represents a SQLite specific [error code](https://sqlite.org/rescode.html) + /// + /// - message: English-language text that describes the error + /// + /// - code: SQLite [error code](https://sqlite.org/rescode.html#primary_result_code_list) + /// + /// - statement: the statement which produced the error + case error(message: String, code: Int32, statement: Statement?) + + init?(errorCode: Int32, connection: Connection, statement: Statement? = nil) { + guard !Result.successCodes.contains(errorCode) else { return nil } + + let message = String(cString: sqlite3_errmsg(connection.handle)) + self = .error(message: message, code: errorCode, statement: statement) + } + +} + +extension Result : CustomStringConvertible { + + public var description: String { + switch self { + case let .error(message, errorCode, statement): + if let statement = statement { + return "\(message) (\(statement)) (code: \(errorCode))" + } else { + return "\(message) (code: \(errorCode))" + } + } + } +} + +#if !SQLITE_SWIFT_SQLCIPHER && !os(Linux) +@available(iOS 10.0, OSX 10.12, tvOS 10.0, watchOS 3.0, *) +extension Connection { + fileprivate func trace_v2(_ callback: ((String) -> Void)?) { + guard let callback = callback else { + // If the X callback is NULL or if the M mask is zero, then tracing is disabled. + sqlite3_trace_v2(handle, 0 /* mask */, nil /* xCallback */, nil /* pCtx */) + trace = nil + return + } + + let box: Trace = { (pointer: UnsafeRawPointer) in + callback(String(cString: pointer.assumingMemoryBound(to: UInt8.self))) + } + sqlite3_trace_v2(handle, + UInt32(SQLITE_TRACE_STMT) /* mask */, + { + // A trace callback is invoked with four arguments: callback(T,C,P,X). + // The T argument is one of the SQLITE_TRACE constants to indicate why the + // callback was invoked. The C argument is a copy of the context pointer. + // The P and X arguments are pointers whose meanings depend on T. + (T: UInt32, C: UnsafeMutableRawPointer?, P: UnsafeMutableRawPointer?, X: UnsafeMutableRawPointer?) in + if let P = P, + let expandedSQL = sqlite3_expanded_sql(OpaquePointer(P)) { + unsafeBitCast(C, to: Trace.self)(expandedSQL) + sqlite3_free(expandedSQL) + } + return Int32(0) // currently ignored + }, + unsafeBitCast(box, to: UnsafeMutableRawPointer.self) /* pCtx */ + ) + trace = box + } +} +#endif diff --git a/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Errors.swift b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Errors.swift new file mode 100644 index 0000000..3cd7ae9 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Errors.swift @@ -0,0 +1,21 @@ +import Foundation + +public enum QueryError: Error, CustomStringConvertible { + case noSuchTable(name: String) + case noSuchColumn(name: String, columns: [String]) + case ambiguousColumn(name: String, similar: [String]) + case unexpectedNullValue(name: String) + + public var description: String { + switch self { + case .noSuchTable(let name): + return "No such table: \(name)" + case .noSuchColumn(let name, let columns): + return "No such column `\(name)` in columns \(columns)" + case .ambiguousColumn(let name, let similar): + return "Ambiguous column `\(name)` (please disambiguate: \(similar))" + case .unexpectedNullValue(let name): + return "Unexpected null value for column `\(name)`" + } + } +} diff --git a/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Statement.swift b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Statement.swift new file mode 100644 index 0000000..dc91d3d --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Statement.swift @@ -0,0 +1,317 @@ +// +// SQLite.swift +// https://github.com/stephencelis/SQLite.swift +// Copyright © 2014-2015 Stephen Celis. +// +// 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. +// + +#if SQLITE_SWIFT_STANDALONE +import sqlite3 +#elseif SQLITE_SWIFT_SQLCIPHER +import SQLCipher +#elseif os(Linux) +import CSQLite +#else +import SQLite3 +#endif + +/// A single SQL statement. +public final class Statement { + + fileprivate var handle: OpaquePointer? = nil + + fileprivate let connection: Connection + + init(_ connection: Connection, _ SQL: String) throws { + self.connection = connection + try connection.check(sqlite3_prepare_v2(connection.handle, SQL, -1, &handle, nil)) + } + + deinit { + sqlite3_finalize(handle) + } + + public lazy var columnCount: Int = Int(sqlite3_column_count(self.handle)) + + public lazy var columnNames: [String] = (0.. Statement { + return bind(values) + } + + /// Binds a list of parameters to a statement. + /// + /// - Parameter values: A list of parameters to bind to the statement. + /// + /// - Returns: The statement object (useful for chaining). + public func bind(_ values: [Binding?]) -> Statement { + if values.isEmpty { return self } + reset() + guard values.count == Int(sqlite3_bind_parameter_count(handle)) else { + fatalError("\(sqlite3_bind_parameter_count(handle)) values expected, \(values.count) passed") + } + for idx in 1...values.count { bind(values[idx - 1], atIndex: idx) } + return self + } + + /// Binds a dictionary of named parameters to a statement. + /// + /// - Parameter values: A dictionary of named parameters to bind to the + /// statement. + /// + /// - Returns: The statement object (useful for chaining). + public func bind(_ values: [String: Binding?]) -> Statement { + reset() + for (name, value) in values { + let idx = sqlite3_bind_parameter_index(handle, name) + guard idx > 0 else { + fatalError("parameter not found: \(name)") + } + bind(value, atIndex: Int(idx)) + } + return self + } + + fileprivate func bind(_ value: Binding?, atIndex idx: Int) { + if value == nil { + sqlite3_bind_null(handle, Int32(idx)) + } else if let value = value as? Blob { + sqlite3_bind_blob(handle, Int32(idx), value.bytes, Int32(value.bytes.count), SQLITE_TRANSIENT) + } else if let value = value as? Double { + sqlite3_bind_double(handle, Int32(idx), value) + } else if let value = value as? Int64 { + sqlite3_bind_int64(handle, Int32(idx), value) + } else if let value = value as? String { + sqlite3_bind_text(handle, Int32(idx), value, -1, SQLITE_TRANSIENT) + } else if let value = value as? Int { + self.bind(value.datatypeValue, atIndex: idx) + } else if let value = value as? Bool { + self.bind(value.datatypeValue, atIndex: idx) + } else if let value = value { + fatalError("tried to bind unexpected value \(value)") + } + } + + /// - Parameter bindings: A list of parameters to bind to the statement. + /// + /// - Throws: `Result.Error` if query execution fails. + /// + /// - Returns: The statement object (useful for chaining). + @discardableResult public func run(_ bindings: Binding?...) throws -> Statement { + guard bindings.isEmpty else { + return try run(bindings) + } + + reset(clearBindings: false) + repeat {} while try step() + return self + } + + /// - Parameter bindings: A list of parameters to bind to the statement. + /// + /// - Throws: `Result.Error` if query execution fails. + /// + /// - Returns: The statement object (useful for chaining). + @discardableResult public func run(_ bindings: [Binding?]) throws -> Statement { + return try bind(bindings).run() + } + + /// - Parameter bindings: A dictionary of named parameters to bind to the + /// statement. + /// + /// - Throws: `Result.Error` if query execution fails. + /// + /// - Returns: The statement object (useful for chaining). + @discardableResult public func run(_ bindings: [String: Binding?]) throws -> Statement { + return try bind(bindings).run() + } + + /// - Parameter bindings: A list of parameters to bind to the statement. + /// + /// - Returns: The first value of the first row returned. + public func scalar(_ bindings: Binding?...) throws -> Binding? { + guard bindings.isEmpty else { + return try scalar(bindings) + } + + reset(clearBindings: false) + _ = try step() + return row[0] + } + + /// - Parameter bindings: A list of parameters to bind to the statement. + /// + /// - Returns: The first value of the first row returned. + public func scalar(_ bindings: [Binding?]) throws -> Binding? { + return try bind(bindings).scalar() + } + + + /// - Parameter bindings: A dictionary of named parameters to bind to the + /// statement. + /// + /// - Returns: The first value of the first row returned. + public func scalar(_ bindings: [String: Binding?]) throws -> Binding? { + return try bind(bindings).scalar() + } + + public func step() throws -> Bool { + return try connection.sync { try self.connection.check(sqlite3_step(self.handle)) == SQLITE_ROW } + } + + fileprivate func reset(clearBindings shouldClear: Bool = true) { + sqlite3_reset(handle) + if (shouldClear) { sqlite3_clear_bindings(handle) } + } + +} + +extension Statement : Sequence { + + public func makeIterator() -> Statement { + reset(clearBindings: false) + return self + } + +} + +public protocol FailableIterator : IteratorProtocol { + func failableNext() throws -> Self.Element? +} + +extension FailableIterator { + public func next() -> Element? { + return try! failableNext() + } +} + +extension Array { + public init(_ failableIterator: I) throws where I.Element == Element { + self.init() + while let row = try failableIterator.failableNext() { + append(row) + } + } +} + +extension Statement : FailableIterator { + public typealias Element = [Binding?] + public func failableNext() throws -> [Binding?]? { + return try step() ? Array(row) : nil + } +} + +extension Statement : CustomStringConvertible { + + public var description: String { + return String(cString: sqlite3_sql(handle)) + } + +} + +public struct Cursor { + + fileprivate let handle: OpaquePointer + + fileprivate let columnCount: Int + + fileprivate init(_ statement: Statement) { + handle = statement.handle! + columnCount = statement.columnCount + } + + public subscript(idx: Int) -> Double { + return sqlite3_column_double(handle, Int32(idx)) + } + + public subscript(idx: Int) -> Int64 { + return sqlite3_column_int64(handle, Int32(idx)) + } + + public subscript(idx: Int) -> String { + return String(cString: UnsafePointer(sqlite3_column_text(handle, Int32(idx)))) + } + + public subscript(idx: Int) -> Blob { + if let pointer = sqlite3_column_blob(handle, Int32(idx)) { + let length = Int(sqlite3_column_bytes(handle, Int32(idx))) + return Blob(bytes: pointer, length: length) + } else { + // The return value from sqlite3_column_blob() for a zero-length BLOB is a NULL pointer. + // https://www.sqlite.org/c3ref/column_blob.html + return Blob(bytes: []) + } + } + + // MARK: - + + public subscript(idx: Int) -> Bool { + return Bool.fromDatatypeValue(self[idx]) + } + + public subscript(idx: Int) -> Int { + return Int.fromDatatypeValue(self[idx]) + } + +} + +/// Cursors provide direct access to a statement’s current row. +extension Cursor : Sequence { + + public subscript(idx: Int) -> Binding? { + switch sqlite3_column_type(handle, Int32(idx)) { + case SQLITE_BLOB: + return self[idx] as Blob + case SQLITE_FLOAT: + return self[idx] as Double + case SQLITE_INTEGER: + return self[idx] as Int64 + case SQLITE_NULL: + return nil + case SQLITE_TEXT: + return self[idx] as String + case let type: + fatalError("unsupported column type: \(type)") + } + } + + public func makeIterator() -> AnyIterator { + var idx = 0 + return AnyIterator { + if idx >= self.columnCount { + return Optional.none + } else { + idx += 1 + return self[idx - 1] + } + } + } + +} diff --git a/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Value.swift b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Value.swift new file mode 100644 index 0000000..608f0ce --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Core/Value.swift @@ -0,0 +1,132 @@ +// +// SQLite.swift +// https://github.com/stephencelis/SQLite.swift +// Copyright © 2014-2015 Stephen Celis. +// +// 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. +// + +/// - Warning: `Binding` is a protocol that SQLite.swift uses internally to +/// directly map SQLite types to Swift types. +/// +/// Do not conform custom types to the Binding protocol. See the `Value` +/// protocol, instead. +public protocol Binding {} + +public protocol Number : Binding {} + +public protocol Value : Expressible { // extensions cannot have inheritance clauses + + associatedtype ValueType = Self + + associatedtype Datatype : Binding + + static var declaredDatatype: String { get } + + static func fromDatatypeValue(_ datatypeValue: Datatype) -> ValueType + + var datatypeValue: Datatype { get } + +} + +extension Double : Number, Value { + + public static let declaredDatatype = "REAL" + + public static func fromDatatypeValue(_ datatypeValue: Double) -> Double { + return datatypeValue + } + + public var datatypeValue: Double { + return self + } + +} + +extension Int64 : Number, Value { + + public static let declaredDatatype = "INTEGER" + + public static func fromDatatypeValue(_ datatypeValue: Int64) -> Int64 { + return datatypeValue + } + + public var datatypeValue: Int64 { + return self + } + +} + +extension String : Binding, Value { + + public static let declaredDatatype = "TEXT" + + public static func fromDatatypeValue(_ datatypeValue: String) -> String { + return datatypeValue + } + + public var datatypeValue: String { + return self + } + +} + +extension Blob : Binding, Value { + + public static let declaredDatatype = "BLOB" + + public static func fromDatatypeValue(_ datatypeValue: Blob) -> Blob { + return datatypeValue + } + + public var datatypeValue: Blob { + return self + } + +} + +// MARK: - + +extension Bool : Binding, Value { + + public static var declaredDatatype = Int64.declaredDatatype + + public static func fromDatatypeValue(_ datatypeValue: Int64) -> Bool { + return datatypeValue != 0 + } + + public var datatypeValue: Int64 { + return self ? 1 : 0 + } + +} + +extension Int : Number, Value { + + public static var declaredDatatype = Int64.declaredDatatype + + public static func fromDatatypeValue(_ datatypeValue: Int64) -> Int { + return Int(datatypeValue) + } + + public var datatypeValue: Int64 { + return Int64(self) + } + +} diff --git a/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Extensions/Cipher.swift b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Extensions/Cipher.swift new file mode 100644 index 0000000..6c0d465 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Extensions/Cipher.swift @@ -0,0 +1,61 @@ +#if SQLITE_SWIFT_SQLCIPHER +import SQLCipher + + +/// Extension methods for [SQLCipher](https://www.zetetic.net/sqlcipher/). +/// @see [sqlcipher api](https://www.zetetic.net/sqlcipher/sqlcipher-api/) +extension Connection { + + /// Specify the key for an encrypted database. This routine should be + /// called right after sqlite3_open(). + /// + /// @param key The key to use.The key itself can be a passphrase, which is converted to a key + /// using [PBKDF2](https://en.wikipedia.org/wiki/PBKDF2) key derivation. The result + /// is used as the encryption key for the database. + /// + /// Alternatively, it is possible to specify an exact byte sequence using a blob literal. + /// With this method, it is the calling application's responsibility to ensure that the data + /// provided is a 64 character hex string, which will be converted directly to 32 bytes (256 bits) + /// of key data. + /// e.g. x'2DD29CA851E7B56E4697B0E1F08507293D761A05CE4D1B628663F411A8086D99' + /// @param db name of the database, defaults to 'main' + public func key(_ key: String, db: String = "main") throws { + try _key_v2(db: db, keyPointer: key, keySize: key.utf8.count) + } + + public func key(_ key: Blob, db: String = "main") throws { + try _key_v2(db: db, keyPointer: key.bytes, keySize: key.bytes.count) + } + + + /// Change the key on an open database. If the current database is not encrypted, this routine + /// will encrypt it. + /// To change the key on an existing encrypted database, it must first be unlocked with the + /// current encryption key. Once the database is readable and writeable, rekey can be used + /// to re-encrypt every page in the database with a new key. + public func rekey(_ key: String, db: String = "main") throws { + try _rekey_v2(db: db, keyPointer: key, keySize: key.utf8.count) + } + + public func rekey(_ key: Blob, db: String = "main") throws { + try _rekey_v2(db: db, keyPointer: key.bytes, keySize: key.bytes.count) + } + + // MARK: - private + private func _key_v2(db: String, keyPointer: UnsafePointer, keySize: Int) throws { + try check(sqlite3_key_v2(handle, db, keyPointer, Int32(keySize))) + try cipher_key_check() + } + + private func _rekey_v2(db: String, keyPointer: UnsafePointer, keySize: Int) throws { + try check(sqlite3_rekey_v2(handle, db, keyPointer, Int32(keySize))) + } + + // When opening an existing database, sqlite3_key_v2 will not immediately throw an error if + // the key provided is incorrect. To test that the database can be successfully opened with the + // provided key, it is necessary to perform some operation on the database (i.e. read from it). + private func cipher_key_check() throws { + try scalar("SELECT count(*) FROM sqlite_master;") + } +} +#endif diff --git a/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Extensions/FTS4.swift b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Extensions/FTS4.swift new file mode 100644 index 0000000..5ef84dd --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Extensions/FTS4.swift @@ -0,0 +1,352 @@ +// +// SQLite.swift +// https://github.com/stephencelis/SQLite.swift +// Copyright © 2014-2015 Stephen Celis. +// +// 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. +// + +#if SWIFT_PACKAGE +import SQLiteObjc +#endif + +extension Module { + + public static func FTS4(_ column: Expressible, _ more: Expressible...) -> Module { + return FTS4([column] + more) + } + + public static func FTS4(_ columns: [Expressible] = [], tokenize tokenizer: Tokenizer? = nil) -> Module { + return FTS4(FTS4Config().columns(columns).tokenizer(tokenizer)) + } + + public static func FTS4(_ config: FTS4Config) -> Module { + return Module(name: "fts4", arguments: config.arguments()) + } +} + +extension VirtualTable { + + /// Builds an expression appended with a `MATCH` query against the given + /// pattern. + /// + /// let emails = VirtualTable("emails") + /// + /// emails.filter(emails.match("Hello")) + /// // SELECT * FROM "emails" WHERE "emails" MATCH 'Hello' + /// + /// - Parameter pattern: A pattern to match. + /// + /// - Returns: An expression appended with a `MATCH` query against the given + /// pattern. + public func match(_ pattern: String) -> Expression { + return "MATCH".infix(tableName(), pattern) + } + + public func match(_ pattern: Expression) -> Expression { + return "MATCH".infix(tableName(), pattern) + } + + public func match(_ pattern: Expression) -> Expression { + return "MATCH".infix(tableName(), pattern) + } + + /// Builds a copy of the query with a `WHERE … MATCH` clause. + /// + /// let emails = VirtualTable("emails") + /// + /// emails.match("Hello") + /// // SELECT * FROM "emails" WHERE "emails" MATCH 'Hello' + /// + /// - Parameter pattern: A pattern to match. + /// + /// - Returns: A query with the given `WHERE … MATCH` clause applied. + public func match(_ pattern: String) -> QueryType { + return filter(match(pattern)) + } + + public func match(_ pattern: Expression) -> QueryType { + return filter(match(pattern)) + } + + public func match(_ pattern: Expression) -> QueryType { + return filter(match(pattern)) + } + +} + +public struct Tokenizer { + + public static let Simple = Tokenizer("simple") + + public static let Porter = Tokenizer("porter") + + public static func Unicode61(removeDiacritics: Bool? = nil, tokenchars: Set = [], separators: Set = []) -> Tokenizer { + var arguments = [String]() + + if let removeDiacritics = removeDiacritics { + arguments.append("removeDiacritics=\(removeDiacritics ? 1 : 0)".quote()) + } + + if !tokenchars.isEmpty { + let joined = tokenchars.map { String($0) }.joined(separator: "") + arguments.append("tokenchars=\(joined)".quote()) + } + + if !separators.isEmpty { + let joined = separators.map { String($0) }.joined(separator: "") + arguments.append("separators=\(joined)".quote()) + } + + return Tokenizer("unicode61", arguments) + } + + public static func Custom(_ name: String) -> Tokenizer { + return Tokenizer(Tokenizer.moduleName.quote(), [name.quote()]) + } + + public let name: String + + public let arguments: [String] + + fileprivate init(_ name: String, _ arguments: [String] = []) { + self.name = name + self.arguments = arguments + } + + fileprivate static let moduleName = "SQLite.swift" + +} + +extension Tokenizer : CustomStringConvertible { + + public var description: String { + return ([name] + arguments).joined(separator: " ") + } + +} + +extension Connection { + + public func registerTokenizer(_ submoduleName: String, next: @escaping (String) -> (String, Range)?) throws { + try check(_SQLiteRegisterTokenizer(handle, Tokenizer.moduleName, submoduleName) { ( + input: UnsafePointer, offset: UnsafeMutablePointer, length: UnsafeMutablePointer) in + let string = String(cString: input) + + guard let (token, range) = next(string) else { return nil } + + let view:String.UTF8View = string.utf8 + + if let from = range.lowerBound.samePosition(in: view), + let to = range.upperBound.samePosition(in: view) { + offset.pointee += Int32(string[string.startIndex.. Self { + self.columnDefinitions.append((column, options)) + return self + } + + @discardableResult open func columns(_ columns: [Expressible]) -> Self { + for column in columns { + self.column(column) + } + return self + } + + /// [Tokenizers](https://www.sqlite.org/fts3.html#tokenizer) + open func tokenizer(_ tokenizer: Tokenizer?) -> Self { + self.tokenizer = tokenizer + return self + } + + /// [The prefix= option](https://www.sqlite.org/fts3.html#section_6_6) + open func prefix(_ prefix: [Int]) -> Self { + self.prefixes += prefix + return self + } + + /// [The content= option](https://www.sqlite.org/fts3.html#section_6_2) + open func externalContent(_ schema: SchemaType) -> Self { + self.externalContentSchema = schema + return self + } + + /// [Contentless FTS4 Tables](https://www.sqlite.org/fts3.html#section_6_2_1) + open func contentless() -> Self { + self.isContentless = true + return self + } + + func formatColumnDefinitions() -> [Expressible] { + return columnDefinitions.map { $0.0 } + } + + func arguments() -> [Expressible] { + return options().arguments + } + + func options() -> Options { + var options = Options() + options.append(formatColumnDefinitions()) + if let tokenizer = tokenizer { + options.append("tokenize", value: Expression(literal: tokenizer.description)) + } + options.appendCommaSeparated("prefix", values:prefixes.sorted().map { String($0) }) + if isContentless { + options.append("content", value: "") + } else if let externalContentSchema = externalContentSchema { + options.append("content", value: externalContentSchema.tableName()) + } + return options + } + + struct Options { + var arguments = [Expressible]() + + @discardableResult mutating func append(_ columns: [Expressible]) -> Options { + arguments.append(contentsOf: columns) + return self + } + + @discardableResult mutating func appendCommaSeparated(_ key: String, values: [String]) -> Options { + if values.isEmpty { + return self + } else { + return append(key, value: values.joined(separator: ",")) + } + } + + @discardableResult mutating func append(_ key: String, value: CustomStringConvertible?) -> Options { + return append(key, value: value?.description) + } + + @discardableResult mutating func append(_ key: String, value: String?) -> Options { + return append(key, value: value.map { Expression($0) }) + } + + @discardableResult mutating func append(_ key: String, value: Expressible?) -> Options { + if let value = value { + arguments.append("=".join([Expression(literal: key), value])) + } + return self + } + } +} + +/// Configuration for the [FTS4](https://www.sqlite.org/fts3.html) extension. +open class FTS4Config : FTSConfig { + /// [The matchinfo= option](https://www.sqlite.org/fts3.html#section_6_4) + public enum MatchInfo : CustomStringConvertible { + case fts3 + public var description: String { + return "fts3" + } + } + + /// [FTS4 options](https://www.sqlite.org/fts3.html#fts4_options) + public enum Order : CustomStringConvertible { + /// Data structures are optimized for returning results in ascending order by docid (default) + case asc + /// FTS4 stores its data in such a way as to optimize returning results in descending order by docid. + case desc + + public var description: String { + switch self { + case .asc: return "asc" + case .desc: return "desc" + } + } + } + + var compressFunction: String? + var uncompressFunction: String? + var languageId: String? + var matchInfo: MatchInfo? + var order: Order? + + override public init() { + } + + /// [The compress= and uncompress= options](https://www.sqlite.org/fts3.html#section_6_1) + open func compress(_ functionName: String) -> Self { + self.compressFunction = functionName + return self + } + + /// [The compress= and uncompress= options](https://www.sqlite.org/fts3.html#section_6_1) + open func uncompress(_ functionName: String) -> Self { + self.uncompressFunction = functionName + return self + } + + /// [The languageid= option](https://www.sqlite.org/fts3.html#section_6_3) + open func languageId(_ columnName: String) -> Self { + self.languageId = columnName + return self + } + + /// [The matchinfo= option](https://www.sqlite.org/fts3.html#section_6_4) + open func matchInfo(_ matchInfo: MatchInfo) -> Self { + self.matchInfo = matchInfo + return self + } + + /// [FTS4 options](https://www.sqlite.org/fts3.html#fts4_options) + open func order(_ order: Order) -> Self { + self.order = order + return self + } + + override func options() -> Options { + var options = super.options() + for (column, _) in (columnDefinitions.filter { $0.options.contains(.unindexed) }) { + options.append("notindexed", value: column) + } + options.append("languageid", value: languageId) + options.append("compress", value: compressFunction) + options.append("uncompress", value: uncompressFunction) + options.append("matchinfo", value: matchInfo) + options.append("order", value: order) + return options + } +} diff --git a/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Extensions/FTS5.swift b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Extensions/FTS5.swift new file mode 100644 index 0000000..763927f --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Extensions/FTS5.swift @@ -0,0 +1,97 @@ +// +// SQLite.swift +// https://github.com/stephencelis/SQLite.swift +// Copyright © 2014-2015 Stephen Celis. +// +// 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. +// + +extension Module { + public static func FTS5(_ config: FTS5Config) -> Module { + return Module(name: "fts5", arguments: config.arguments()) + } +} + +/// Configuration for the [FTS5](https://www.sqlite.org/fts5.html) extension. +/// +/// **Note:** this is currently only applicable when using SQLite.swift together with a FTS5-enabled version +/// of SQLite. +open class FTS5Config : FTSConfig { + public enum Detail : CustomStringConvertible { + /// store rowid, column number, term offset + case full + /// store rowid, column number + case column + /// store rowid + case none + + public var description: String { + switch self { + case .full: return "full" + case .column: return "column" + case .none: return "none" + } + } + } + + var detail: Detail? + var contentRowId: Expressible? + var columnSize: Int? + + override public init() { + } + + /// [External Content Tables](https://www.sqlite.org/fts5.html#section_4_4_2) + open func contentRowId(_ column: Expressible) -> Self { + self.contentRowId = column + return self + } + + /// [The Columnsize Option](https://www.sqlite.org/fts5.html#section_4_5) + open func columnSize(_ size: Int) -> Self { + self.columnSize = size + return self + } + + /// [The Detail Option](https://www.sqlite.org/fts5.html#section_4_6) + open func detail(_ detail: Detail) -> Self { + self.detail = detail + return self + } + + override func options() -> Options { + var options = super.options() + options.append("content_rowid", value: contentRowId) + if let columnSize = columnSize { + options.append("columnsize", value: Expression(value: columnSize)) + } + options.append("detail", value: detail) + return options + } + + override func formatColumnDefinitions() -> [Expressible] { + return columnDefinitions.map { definition in + if definition.options.contains(.unindexed) { + return " ".join([definition.0, Expression(literal: "UNINDEXED")]) + } else { + return definition.0 + } + } + } +} diff --git a/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Extensions/RTree.swift b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Extensions/RTree.swift new file mode 100644 index 0000000..4fc1a23 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Extensions/RTree.swift @@ -0,0 +1,37 @@ +// +// SQLite.swift +// https://github.com/stephencelis/SQLite.swift +// Copyright © 2014-2015 Stephen Celis. +// +// 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. +// + +extension Module { + + public static func RTree(_ primaryKey: Expression, _ pairs: (Expression, Expression)...) -> Module where T.Datatype == Int64, U.Datatype == Double { + var arguments: [Expressible] = [primaryKey] + + for pair in pairs { + arguments.append(contentsOf: [pair.0, pair.1] as [Expressible]) + } + + return Module(name: "rtree", arguments: arguments) + } + +} diff --git a/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Foundation.swift b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Foundation.swift new file mode 100644 index 0000000..5638bc5 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Foundation.swift @@ -0,0 +1,70 @@ +// +// SQLite.swift +// https://github.com/stephencelis/SQLite.swift +// Copyright © 2014-2015 Stephen Celis. +// +// 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. +// + +import Foundation + +extension Data : Value { + + public static var declaredDatatype: String { + return Blob.declaredDatatype + } + + public static func fromDatatypeValue(_ dataValue: Blob) -> Data { + return Data(bytes: dataValue.bytes) + } + + public var datatypeValue: Blob { + return withUnsafeBytes { (pointer: UnsafePointer) -> Blob in + return Blob(bytes: pointer, length: count) + } + } + +} + +extension Date : Value { + + public static var declaredDatatype: String { + return String.declaredDatatype + } + + public static func fromDatatypeValue(_ stringValue: String) -> Date { + return dateFormatter.date(from: stringValue)! + } + + public var datatypeValue: String { + return dateFormatter.string(from: self) + } + +} + +/// A global date formatter used to serialize and deserialize `NSDate` objects. +/// If multiple date formats are used in an application’s database(s), use a +/// custom `Value` type per additional format. +public var dateFormatter: DateFormatter = { + let formatter = DateFormatter() + formatter.dateFormat = "yyyy-MM-dd'T'HH:mm:ss.SSS" + formatter.locale = Locale(identifier: "en_US_POSIX") + formatter.timeZone = TimeZone(secondsFromGMT: 0) + return formatter +}() diff --git a/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Helpers.swift b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Helpers.swift new file mode 100644 index 0000000..64e5eca --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Helpers.swift @@ -0,0 +1,132 @@ +// +// SQLite.swift +// https://github.com/stephencelis/SQLite.swift +// Copyright © 2014-2015 Stephen Celis. +// +// 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. +// + +#if SQLITE_SWIFT_STANDALONE +import sqlite3 +#elseif SQLITE_SWIFT_SQLCIPHER +import SQLCipher +#elseif os(Linux) +import CSQLite +#else +import SQLite3 +#endif + +public typealias Star = (Expression?, Expression?) -> Expression + +public func *(_: Expression?, _: Expression?) -> Expression { + return Expression(literal: "*") +} + +public protocol _OptionalType { + + associatedtype WrappedType + +} + +extension Optional : _OptionalType { + + public typealias WrappedType = Wrapped + +} + +// let SQLITE_STATIC = unsafeBitCast(0, sqlite3_destructor_type.self) +let SQLITE_TRANSIENT = unsafeBitCast(-1, to: sqlite3_destructor_type.self) + +extension String { + + func quote(_ mark: Character = "\"") -> String { + let escaped = characters.reduce("") { string, character in + string + (character == mark ? "\(mark)\(mark)" : "\(character)") + } + return "\(mark)\(escaped)\(mark)" + } + + func join(_ expressions: [Expressible]) -> Expressible { + var (template, bindings) = ([String](), [Binding?]()) + for expressible in expressions { + let expression = expressible.expression + template.append(expression.template) + bindings.append(contentsOf: expression.bindings) + } + return Expression(template.joined(separator: self), bindings) + } + + func infix(_ lhs: Expressible, _ rhs: Expressible, wrap: Bool = true) -> Expression { + let expression = Expression(" \(self) ".join([lhs, rhs]).expression) + guard wrap else { + return expression + } + return "".wrap(expression) + } + + func prefix(_ expressions: Expressible) -> Expressible { + return "\(self) ".wrap(expressions) as Expression + } + + func prefix(_ expressions: [Expressible]) -> Expressible { + return "\(self) ".wrap(expressions) as Expression + } + + func wrap(_ expression: Expressible) -> Expression { + return Expression("\(self)(\(expression.expression.template))", expression.expression.bindings) + } + + func wrap(_ expressions: [Expressible]) -> Expression { + return wrap(", ".join(expressions)) + } + +} + +func infix(_ lhs: Expressible, _ rhs: Expressible, wrap: Bool = true, function: String = #function) -> Expression { + return function.infix(lhs, rhs, wrap: wrap) +} + +func wrap(_ expression: Expressible, function: String = #function) -> Expression { + return function.wrap(expression) +} + +func wrap(_ expressions: [Expressible], function: String = #function) -> Expression { + return function.wrap(", ".join(expressions)) +} + +func transcode(_ literal: Binding?) -> String { + guard let literal = literal else { return "NULL" } + + switch literal { + case let blob as Blob: + return blob.description + case let string as String: + return string.quote("'") + case let binding: + return "\(binding)" + } +} + +func value(_ v: Binding) -> A { + return A.fromDatatypeValue(v as! A.Datatype) as! A +} + +func value(_ v: Binding?) -> A { + return value(v!) +} diff --git a/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Info.plist b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Info.plist new file mode 100644 index 0000000..7347d84 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Info.plist @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + FMWK + CFBundleShortVersionString + 0.11.4 + CFBundleSignature + ???? + CFBundleVersion + $(CURRENT_PROJECT_VERSION) + NSPrincipalClass + + + diff --git a/Carthage/Checkouts/SQLite.swift/Sources/SQLite/SQLite.h b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/SQLite.h new file mode 100644 index 0000000..693ce32 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/SQLite.h @@ -0,0 +1,6 @@ +@import Foundation; + +FOUNDATION_EXPORT double SQLiteVersionNumber; +FOUNDATION_EXPORT const unsigned char SQLiteVersionString[]; + +#import diff --git a/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/AggregateFunctions.swift b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/AggregateFunctions.swift new file mode 100644 index 0000000..249bbe6 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/AggregateFunctions.swift @@ -0,0 +1,251 @@ +// +// SQLite.swift +// https://github.com/stephencelis/SQLite.swift +// Copyright © 2014-2015 Stephen Celis. +// +// 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. +// + +extension ExpressionType where UnderlyingType : Value { + + /// Builds a copy of the expression prefixed with the `DISTINCT` keyword. + /// + /// let name = Expression("name") + /// name.distinct + /// // DISTINCT "name" + /// + /// - Returns: A copy of the expression prefixed with the `DISTINCT` + /// keyword. + public var distinct: Expression { + return Expression("DISTINCT \(template)", bindings) + } + + /// Builds a copy of the expression wrapped with the `count` aggregate + /// function. + /// + /// let name = Expression("name") + /// name.count + /// // count("name") + /// name.distinct.count + /// // count(DISTINCT "name") + /// + /// - Returns: A copy of the expression wrapped with the `count` aggregate + /// function. + public var count: Expression { + return wrap(self) + } + +} + +extension ExpressionType where UnderlyingType : _OptionalType, UnderlyingType.WrappedType : Value { + + /// Builds a copy of the expression prefixed with the `DISTINCT` keyword. + /// + /// let name = Expression("name") + /// name.distinct + /// // DISTINCT "name" + /// + /// - Returns: A copy of the expression prefixed with the `DISTINCT` + /// keyword. + public var distinct: Expression { + return Expression("DISTINCT \(template)", bindings) + } + + /// Builds a copy of the expression wrapped with the `count` aggregate + /// function. + /// + /// let name = Expression("name") + /// name.count + /// // count("name") + /// name.distinct.count + /// // count(DISTINCT "name") + /// + /// - Returns: A copy of the expression wrapped with the `count` aggregate + /// function. + public var count: Expression { + return wrap(self) + } + +} + +extension ExpressionType where UnderlyingType : Value, UnderlyingType.Datatype : Comparable { + + /// Builds a copy of the expression wrapped with the `max` aggregate + /// function. + /// + /// let age = Expression("age") + /// age.max + /// // max("age") + /// + /// - Returns: A copy of the expression wrapped with the `max` aggregate + /// function. + public var max: Expression { + return wrap(self) + } + + /// Builds a copy of the expression wrapped with the `min` aggregate + /// function. + /// + /// let age = Expression("age") + /// age.min + /// // min("age") + /// + /// - Returns: A copy of the expression wrapped with the `min` aggregate + /// function. + public var min: Expression { + return wrap(self) + } + +} + +extension ExpressionType where UnderlyingType : _OptionalType, UnderlyingType.WrappedType : Value, UnderlyingType.WrappedType.Datatype : Comparable { + + /// Builds a copy of the expression wrapped with the `max` aggregate + /// function. + /// + /// let age = Expression("age") + /// age.max + /// // max("age") + /// + /// - Returns: A copy of the expression wrapped with the `max` aggregate + /// function. + public var max: Expression { + return wrap(self) + } + + /// Builds a copy of the expression wrapped with the `min` aggregate + /// function. + /// + /// let age = Expression("age") + /// age.min + /// // min("age") + /// + /// - Returns: A copy of the expression wrapped with the `min` aggregate + /// function. + public var min: Expression { + return wrap(self) + } + +} + +extension ExpressionType where UnderlyingType : Value, UnderlyingType.Datatype : Number { + + /// Builds a copy of the expression wrapped with the `avg` aggregate + /// function. + /// + /// let salary = Expression("salary") + /// salary.average + /// // avg("salary") + /// + /// - Returns: A copy of the expression wrapped with the `min` aggregate + /// function. + public var average: Expression { + return "avg".wrap(self) + } + + /// Builds a copy of the expression wrapped with the `sum` aggregate + /// function. + /// + /// let salary = Expression("salary") + /// salary.sum + /// // sum("salary") + /// + /// - Returns: A copy of the expression wrapped with the `min` aggregate + /// function. + public var sum: Expression { + return wrap(self) + } + + /// Builds a copy of the expression wrapped with the `total` aggregate + /// function. + /// + /// let salary = Expression("salary") + /// salary.total + /// // total("salary") + /// + /// - Returns: A copy of the expression wrapped with the `min` aggregate + /// function. + public var total: Expression { + return wrap(self) + } + +} + +extension ExpressionType where UnderlyingType : _OptionalType, UnderlyingType.WrappedType : Value, UnderlyingType.WrappedType.Datatype : Number { + + /// Builds a copy of the expression wrapped with the `avg` aggregate + /// function. + /// + /// let salary = Expression("salary") + /// salary.average + /// // avg("salary") + /// + /// - Returns: A copy of the expression wrapped with the `min` aggregate + /// function. + public var average: Expression { + return "avg".wrap(self) + } + + /// Builds a copy of the expression wrapped with the `sum` aggregate + /// function. + /// + /// let salary = Expression("salary") + /// salary.sum + /// // sum("salary") + /// + /// - Returns: A copy of the expression wrapped with the `min` aggregate + /// function. + public var sum: Expression { + return wrap(self) + } + + /// Builds a copy of the expression wrapped with the `total` aggregate + /// function. + /// + /// let salary = Expression("salary") + /// salary.total + /// // total("salary") + /// + /// - Returns: A copy of the expression wrapped with the `min` aggregate + /// function. + public var total: Expression { + return wrap(self) + } + +} + +extension ExpressionType where UnderlyingType == Int { + + static func count(_ star: Star) -> Expression { + return wrap(star(nil, nil)) + } + +} + +/// Builds an expression representing `count(*)` (when called with the `*` +/// function literal). +/// +/// count(*) +/// // count(*) +/// +/// - Returns: An expression returning `count(*)` (when called with the `*` +/// function literal). +public func count(_ star: Star) -> Expression { + return Expression.count(star) +} diff --git a/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Coding.swift b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Coding.swift new file mode 100644 index 0000000..dd6a4ec --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Coding.swift @@ -0,0 +1,340 @@ +// +// SQLite.swift +// https://github.com/stephencelis/SQLite.swift +// Copyright © 2014-2015 Stephen Celis. +// +// 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. +// + +import Foundation + +extension QueryType { + /// Creates an `INSERT` statement by encoding the given object + /// This method converts any custom nested types to JSON data and does not handle any sort + /// of object relationships. If you want to support relationships between objects you will + /// have to provide your own Encodable implementations that encode the correct ids. + /// + /// - Parameters: + /// + /// - encodable: An encodable object to insert + /// + /// - userInfo: User info to be passed to encoder + /// + /// - otherSetters: Any other setters to include in the insert + /// + /// - Returns: An `INSERT` statement fort the encodable object + public func insert(_ encodable: Encodable, userInfo: [CodingUserInfoKey:Any] = [:], otherSetters: [Setter] = []) throws -> Insert { + let encoder = SQLiteEncoder(userInfo: userInfo) + try encodable.encode(to: encoder) + return self.insert(encoder.setters + otherSetters) + } + + /// Creates an `UPDATE` statement by encoding the given object + /// This method converts any custom nested types to JSON data and does not handle any sort + /// of object relationships. If you want to support relationships between objects you will + /// have to provide your own Encodable implementations that encode the correct ids. + /// + /// - Parameters: + /// + /// - encodable: An encodable object to insert + /// + /// - userInfo: User info to be passed to encoder + /// + /// - otherSetters: Any other setters to include in the insert + /// + /// - Returns: An `UPDATE` statement fort the encodable object + public func update(_ encodable: Encodable, userInfo: [CodingUserInfoKey:Any] = [:], otherSetters: [Setter] = []) throws -> Update { + let encoder = SQLiteEncoder(userInfo: userInfo) + try encodable.encode(to: encoder) + return self.update(encoder.setters + otherSetters) + } +} + +extension Row { + /// Decode an object from this row + /// This method expects any custom nested types to be in the form of JSON data and does not handle + /// any sort of object relationships. If you want to support relationships between objects you will + /// have to provide your own Decodable implementations that decodes the correct columns. + /// + /// - Parameter: userInfo + /// + /// - Returns: a decoded object from this row + public func decode(userInfo: [CodingUserInfoKey: Any] = [:]) throws -> V { + return try V(from: self.decoder(userInfo: userInfo)) + } + + public func decoder(userInfo: [CodingUserInfoKey: Any] = [:]) -> Decoder { + return SQLiteDecoder(row: self, userInfo: userInfo) + } +} + +/// Generates a list of settings for an Encodable object +fileprivate class SQLiteEncoder: Encoder { + class SQLiteKeyedEncodingContainer: KeyedEncodingContainerProtocol { + typealias Key = MyKey + + let encoder: SQLiteEncoder + let codingPath: [CodingKey] = [] + + init(encoder: SQLiteEncoder) { + self.encoder = encoder + } + + func superEncoder() -> Swift.Encoder { + fatalError("SQLiteEncoding does not support super encoders") + } + + func superEncoder(forKey key: Key) -> Swift.Encoder { + fatalError("SQLiteEncoding does not support super encoders") + } + + func encodeNil(forKey key: SQLiteEncoder.SQLiteKeyedEncodingContainer.Key) throws { + self.encoder.setters.append(Expression(key.stringValue) <- nil) + } + + func encode(_ value: Int, forKey key: SQLiteEncoder.SQLiteKeyedEncodingContainer.Key) throws { + self.encoder.setters.append(Expression(key.stringValue) <- value) + } + + func encode(_ value: Bool, forKey key: Key) throws { + self.encoder.setters.append(Expression(key.stringValue) <- value) + } + + func encode(_ value: Float, forKey key: Key) throws { + self.encoder.setters.append(Expression(key.stringValue) <- Double(value)) + } + + func encode(_ value: Double, forKey key: Key) throws { + self.encoder.setters.append(Expression(key.stringValue) <- value) + } + + func encode(_ value: String, forKey key: Key) throws { + self.encoder.setters.append(Expression(key.stringValue) <- value) + } + + func encode(_ value: T, forKey key: Key) throws where T : Swift.Encodable { + if let data = value as? Data { + self.encoder.setters.append(Expression(key.stringValue) <- data) + } + else { + let encoded = try JSONEncoder().encode(value) + let string = String(data: encoded, encoding: .utf8) + self.encoder.setters.append(Expression(key.stringValue) <- string) + } + } + + func encode(_ value: Int8, forKey key: Key) throws { + throw EncodingError.invalidValue(value, EncodingError.Context(codingPath: self.codingPath, debugDescription: "encoding an Int8 is not supported")) + } + + func encode(_ value: Int16, forKey key: Key) throws { + throw EncodingError.invalidValue(value, EncodingError.Context(codingPath: self.codingPath, debugDescription: "encoding an Int16 is not supported")) + } + + func encode(_ value: Int32, forKey key: Key) throws { + throw EncodingError.invalidValue(value, EncodingError.Context(codingPath: self.codingPath, debugDescription: "encoding an Int32 is not supported")) + } + + func encode(_ value: Int64, forKey key: Key) throws { + throw EncodingError.invalidValue(value, EncodingError.Context(codingPath: self.codingPath, debugDescription: "encoding an Int64 is not supported")) + } + + func encode(_ value: UInt, forKey key: Key) throws { + throw EncodingError.invalidValue(value, EncodingError.Context(codingPath: self.codingPath, debugDescription: "encoding an UInt is not supported")) + } + + func encode(_ value: UInt8, forKey key: Key) throws { + throw EncodingError.invalidValue(value, EncodingError.Context(codingPath: self.codingPath, debugDescription: "encoding an UInt8 is not supported")) + } + + func encode(_ value: UInt16, forKey key: Key) throws { + throw EncodingError.invalidValue(value, EncodingError.Context(codingPath: self.codingPath, debugDescription: "encoding an UInt16 is not supported")) + } + + func encode(_ value: UInt32, forKey key: Key) throws { + throw EncodingError.invalidValue(value, EncodingError.Context(codingPath: self.codingPath, debugDescription: "encoding an UInt32 is not supported")) + } + + func encode(_ value: UInt64, forKey key: Key) throws { + throw EncodingError.invalidValue(value, EncodingError.Context(codingPath: self.codingPath, debugDescription: "encoding an UInt64 is not supported")) + } + + func nestedContainer(keyedBy keyType: NestedKey.Type, forKey key: Key) -> KeyedEncodingContainer where NestedKey : CodingKey { + fatalError("encoding a nested container is not supported") + } + + func nestedUnkeyedContainer(forKey key: Key) -> UnkeyedEncodingContainer { + fatalError("encoding nested values is not supported") + } + } + + fileprivate var setters: [SQLite.Setter] = [] + let codingPath: [CodingKey] = [] + let userInfo: [CodingUserInfoKey: Any] + + init(userInfo: [CodingUserInfoKey: Any]) { + self.userInfo = userInfo + } + + func singleValueContainer() -> SingleValueEncodingContainer { + fatalError("not supported") + } + + func unkeyedContainer() -> UnkeyedEncodingContainer { + fatalError("not supported") + } + + func container(keyedBy type: Key.Type) -> KeyedEncodingContainer where Key : CodingKey { + return KeyedEncodingContainer(SQLiteKeyedEncodingContainer(encoder: self)) + } +} + +fileprivate class SQLiteDecoder : Decoder { + class SQLiteKeyedDecodingContainer : KeyedDecodingContainerProtocol { + typealias Key = MyKey + + let codingPath: [CodingKey] = [] + let row: Row + + init(row: Row) { + self.row = row + } + + var allKeys: [Key] { + return self.row.columnNames.keys.flatMap({Key(stringValue: $0)}) + } + + func contains(_ key: Key) -> Bool { + return self.row.hasValue(for: key.stringValue) + } + + func decodeNil(forKey key: Key) throws -> Bool { + return !self.contains(key) + } + + func decode(_ type: Bool.Type, forKey key: Key) throws -> Bool { + return try self.row.get(Expression(key.stringValue)) + } + + func decode(_ type: Int.Type, forKey key: Key) throws -> Int { + return try self.row.get(Expression(key.stringValue)) + } + + func decode(_ type: Int8.Type, forKey key: Key) throws -> Int8 { + throw DecodingError.typeMismatch(type, DecodingError.Context(codingPath: self.codingPath, debugDescription: "decoding an Int8 is not supported")) + } + + func decode(_ type: Int16.Type, forKey key: Key) throws -> Int16 { + throw DecodingError.typeMismatch(type, DecodingError.Context(codingPath: self.codingPath, debugDescription: "decoding an Int16 is not supported")) + } + + func decode(_ type: Int32.Type, forKey key: Key) throws -> Int32 { + throw DecodingError.typeMismatch(type, DecodingError.Context(codingPath: self.codingPath, debugDescription: "decoding an Int32 is not supported")) + } + + func decode(_ type: Int64.Type, forKey key: Key) throws -> Int64 { + throw DecodingError.typeMismatch(type, DecodingError.Context(codingPath: self.codingPath, debugDescription: "decoding an UInt64 is not supported")) + } + + func decode(_ type: UInt.Type, forKey key: Key) throws -> UInt { + throw DecodingError.typeMismatch(type, DecodingError.Context(codingPath: self.codingPath, debugDescription: "decoding an UInt is not supported")) + + } + + func decode(_ type: UInt8.Type, forKey key: Key) throws -> UInt8 { + throw DecodingError.typeMismatch(type, DecodingError.Context(codingPath: self.codingPath, debugDescription: "decoding an UInt8 is not supported")) + } + + func decode(_ type: UInt16.Type, forKey key: Key) throws -> UInt16 { + throw DecodingError.typeMismatch(type, DecodingError.Context(codingPath: self.codingPath, debugDescription: "decoding an UInt16 is not supported")) + } + + func decode(_ type: UInt32.Type, forKey key: Key) throws -> UInt32 { + throw DecodingError.typeMismatch(type, DecodingError.Context(codingPath: self.codingPath, debugDescription: "decoding an UInt32 is not supported")) + } + + func decode(_ type: UInt64.Type, forKey key: Key) throws -> UInt64 { + throw DecodingError.typeMismatch(type, DecodingError.Context(codingPath: self.codingPath, debugDescription: "decoding an UInt64 is not supported")) + } + + func decode(_ type: Float.Type, forKey key: Key) throws -> Float { + return Float(try self.row.get(Expression(key.stringValue))) + } + + func decode(_ type: Double.Type, forKey key: Key) throws -> Double { + return try self.row.get(Expression(key.stringValue)) + } + + func decode(_ type: String.Type, forKey key: Key) throws -> String { + return try self.row.get(Expression(key.stringValue)) + } + + func decode(_ type: T.Type, forKey key: Key) throws -> T where T: Swift.Decodable { + if type == Data.self { + let data = try self.row.get(Expression(key.stringValue)) + return data as! T + } + guard let JSONString = try self.row.get(Expression(key.stringValue)) else { + throw DecodingError.typeMismatch(type, DecodingError.Context(codingPath: self.codingPath, debugDescription: "an unsupported type was found")) + } + guard let data = JSONString.data(using: .utf8) else { + throw DecodingError.dataCorrupted(DecodingError.Context(codingPath: self.codingPath, debugDescription: "invalid utf8 data found")) + } + return try JSONDecoder().decode(type, from: data) + } + + func nestedContainer(keyedBy type: NestedKey.Type, forKey key: Key) throws -> KeyedDecodingContainer where NestedKey : CodingKey { + throw DecodingError.dataCorrupted(DecodingError.Context(codingPath: self.codingPath, debugDescription: "decoding nested containers is not supported")) + } + + func nestedUnkeyedContainer(forKey key: Key) throws -> UnkeyedDecodingContainer { + throw DecodingError.dataCorrupted(DecodingError.Context(codingPath: self.codingPath, debugDescription: "decoding unkeyed containers is not supported")) + } + + func superDecoder() throws -> Swift.Decoder { + throw DecodingError.dataCorrupted(DecodingError.Context(codingPath: self.codingPath, debugDescription: "decoding super encoders containers is not supported")) + } + + func superDecoder(forKey key: Key) throws -> Swift.Decoder { + throw DecodingError.dataCorrupted(DecodingError.Context(codingPath: self.codingPath, debugDescription: "decoding super decoders is not supported")) + } + } + + let row: Row + let codingPath: [CodingKey] = [] + let userInfo: [CodingUserInfoKey: Any] + + init(row: Row, userInfo: [CodingUserInfoKey: Any]) { + self.row = row + self.userInfo = userInfo + } + + func container(keyedBy type: Key.Type) throws -> KeyedDecodingContainer where Key : CodingKey { + return KeyedDecodingContainer(SQLiteKeyedDecodingContainer(row: self.row)) + } + + func unkeyedContainer() throws -> UnkeyedDecodingContainer { + throw DecodingError.dataCorrupted(DecodingError.Context(codingPath: self.codingPath, debugDescription: "decoding an unkeyed container is not supported")) + } + + func singleValueContainer() throws -> SingleValueDecodingContainer { + throw DecodingError.dataCorrupted(DecodingError.Context(codingPath: self.codingPath, debugDescription: "decoding a single value container is not supported")) + } +} + diff --git a/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Collation.swift b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Collation.swift new file mode 100644 index 0000000..e2ff9d1 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Collation.swift @@ -0,0 +1,69 @@ +// +// SQLite.swift +// https://github.com/stephencelis/SQLite.swift +// Copyright © 2014-2015 Stephen Celis. +// +// 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. +// + +/// A collating function used to compare to strings. +/// +/// - SeeAlso: +public enum Collation { + + /// Compares string by raw data. + case binary + + /// Like binary, but folds uppercase ASCII letters into their lowercase + /// equivalents. + case nocase + + /// Like binary, but strips trailing space. + case rtrim + + /// A custom collating sequence identified by the given string, registered + /// using `Database.create(collation:…)` + case custom(String) + +} + +extension Collation : Expressible { + + public var expression: Expression { + return Expression(literal: description) + } + +} + +extension Collation : CustomStringConvertible { + + public var description : String { + switch self { + case .binary: + return "BINARY" + case .nocase: + return "NOCASE" + case .rtrim: + return "RTRIM" + case .custom(let collation): + return collation.quote() + } + } + +} diff --git a/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/CoreFunctions.swift b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/CoreFunctions.swift new file mode 100644 index 0000000..1afe4e8 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/CoreFunctions.swift @@ -0,0 +1,762 @@ +// +// SQLite.swift +// https://github.com/stephencelis/SQLite.swift +// Copyright © 2014-2015 Stephen Celis. +// +// 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. +// + +import Foundation + + +extension ExpressionType where UnderlyingType : Number { + + /// Builds a copy of the expression wrapped with the `abs` function. + /// + /// let x = Expression("x") + /// x.absoluteValue + /// // abs("x") + /// + /// - Returns: A copy of the expression wrapped with the `abs` function. + public var absoluteValue : Expression { + return "abs".wrap(self) + } + +} + +extension ExpressionType where UnderlyingType : _OptionalType, UnderlyingType.WrappedType : Number { + + /// Builds a copy of the expression wrapped with the `abs` function. + /// + /// let x = Expression("x") + /// x.absoluteValue + /// // abs("x") + /// + /// - Returns: A copy of the expression wrapped with the `abs` function. + public var absoluteValue : Expression { + return "abs".wrap(self) + } + +} + +extension ExpressionType where UnderlyingType == Double { + + /// Builds a copy of the expression wrapped with the `round` function. + /// + /// let salary = Expression("salary") + /// salary.round() + /// // round("salary") + /// salary.round(2) + /// // round("salary", 2) + /// + /// - Returns: A copy of the expression wrapped with the `round` function. + public func round(_ precision: Int? = nil) -> Expression { + guard let precision = precision else { + return wrap([self]) + } + return wrap([self, Int(precision)]) + } + +} + +extension ExpressionType where UnderlyingType == Double? { + + /// Builds a copy of the expression wrapped with the `round` function. + /// + /// let salary = Expression("salary") + /// salary.round() + /// // round("salary") + /// salary.round(2) + /// // round("salary", 2) + /// + /// - Returns: A copy of the expression wrapped with the `round` function. + public func round(_ precision: Int? = nil) -> Expression { + guard let precision = precision else { + return wrap(self) + } + return wrap([self, Int(precision)]) + } + +} + +extension ExpressionType where UnderlyingType : Value, UnderlyingType.Datatype == Int64 { + + /// Builds an expression representing the `random` function. + /// + /// Expression.random() + /// // random() + /// + /// - Returns: An expression calling the `random` function. + public static func random() -> Expression { + return "random".wrap([]) + } + +} + +extension ExpressionType where UnderlyingType == Data { + + /// Builds an expression representing the `randomblob` function. + /// + /// Expression.random(16) + /// // randomblob(16) + /// + /// - Parameter length: Length in bytes. + /// + /// - Returns: An expression calling the `randomblob` function. + public static func random(_ length: Int) -> Expression { + return "randomblob".wrap([]) + } + + /// Builds an expression representing the `zeroblob` function. + /// + /// Expression.allZeros(16) + /// // zeroblob(16) + /// + /// - Parameter length: Length in bytes. + /// + /// - Returns: An expression calling the `zeroblob` function. + public static func allZeros(_ length: Int) -> Expression { + return "zeroblob".wrap([]) + } + + /// Builds a copy of the expression wrapped with the `length` function. + /// + /// let data = Expression("data") + /// data.length + /// // length("data") + /// + /// - Returns: A copy of the expression wrapped with the `length` function. + public var length: Expression { + return wrap(self) + } + +} + +extension ExpressionType where UnderlyingType == Data? { + + /// Builds a copy of the expression wrapped with the `length` function. + /// + /// let data = Expression("data") + /// data.length + /// // length("data") + /// + /// - Returns: A copy of the expression wrapped with the `length` function. + public var length: Expression { + return wrap(self) + } + +} + +extension ExpressionType where UnderlyingType == String { + + /// Builds a copy of the expression wrapped with the `length` function. + /// + /// let name = Expression("name") + /// name.length + /// // length("name") + /// + /// - Returns: A copy of the expression wrapped with the `length` function. + public var length: Expression { + return wrap(self) + } + + /// Builds a copy of the expression wrapped with the `lower` function. + /// + /// let name = Expression("name") + /// name.lowercaseString + /// // lower("name") + /// + /// - Returns: A copy of the expression wrapped with the `lower` function. + public var lowercaseString: Expression { + return "lower".wrap(self) + } + + /// Builds a copy of the expression wrapped with the `upper` function. + /// + /// let name = Expression("name") + /// name.uppercaseString + /// // lower("name") + /// + /// - Returns: A copy of the expression wrapped with the `upper` function. + public var uppercaseString: Expression { + return "upper".wrap(self) + } + + /// Builds a copy of the expression appended with a `LIKE` query against the + /// given pattern. + /// + /// let email = Expression("email") + /// email.like("%@example.com") + /// // "email" LIKE '%@example.com' + /// email.like("99\\%@%", escape: "\\") + /// // "email" LIKE '99\%@%' ESCAPE '\' + /// + /// - Parameters: + /// + /// - pattern: A pattern to match. + /// + /// - escape: An (optional) character designated for escaping + /// pattern-matching characters (*i.e.*, the `%` and `_` characters). + /// + /// - Returns: A copy of the expression appended with a `LIKE` query against + /// the given pattern. + public func like(_ pattern: String, escape character: Character? = nil) -> Expression { + guard let character = character else { + return "LIKE".infix(self, pattern) + } + return Expression("(\(template) LIKE ? ESCAPE ?)", bindings + [pattern, String(character)]) + } + + /// Builds a copy of the expression appended with a `LIKE` query against the + /// given pattern. + /// + /// let email = Expression("email") + /// let pattern = Expression("pattern") + /// email.like(pattern) + /// // "email" LIKE "pattern" + /// + /// - Parameters: + /// + /// - pattern: A pattern to match. + /// + /// - escape: An (optional) character designated for escaping + /// pattern-matching characters (*i.e.*, the `%` and `_` characters). + /// + /// - Returns: A copy of the expression appended with a `LIKE` query against + /// the given pattern. + public func like(_ pattern: Expression, escape character: Character? = nil) -> Expression { + guard let character = character else { + return "LIKE".infix(self, pattern) + } + let like: Expression = "LIKE".infix(self, pattern, wrap: false) + return Expression("(\(like.template) ESCAPE ?)", like.bindings + [String(character)]) + } + + /// Builds a copy of the expression appended with a `GLOB` query against the + /// given pattern. + /// + /// let path = Expression("path") + /// path.glob("*.png") + /// // "path" GLOB '*.png' + /// + /// - Parameter pattern: A pattern to match. + /// + /// - Returns: A copy of the expression appended with a `GLOB` query against + /// the given pattern. + public func glob(_ pattern: String) -> Expression { + return "GLOB".infix(self, pattern) + } + + /// Builds a copy of the expression appended with a `MATCH` query against + /// the given pattern. + /// + /// let title = Expression("title") + /// title.match("swift AND programming") + /// // "title" MATCH 'swift AND programming' + /// + /// - Parameter pattern: A pattern to match. + /// + /// - Returns: A copy of the expression appended with a `MATCH` query + /// against the given pattern. + public func match(_ pattern: String) -> Expression { + return "MATCH".infix(self, pattern) + } + + /// Builds a copy of the expression appended with a `REGEXP` query against + /// the given pattern. + /// + /// - Parameter pattern: A pattern to match. + /// + /// - Returns: A copy of the expression appended with a `REGEXP` query + /// against the given pattern. + public func regexp(_ pattern: String) -> Expression { + return "REGEXP".infix(self, pattern) + } + + /// Builds a copy of the expression appended with a `COLLATE` clause with + /// the given sequence. + /// + /// let name = Expression("name") + /// name.collate(.Nocase) + /// // "name" COLLATE NOCASE + /// + /// - Parameter collation: A collating sequence. + /// + /// - Returns: A copy of the expression appended with a `COLLATE` clause + /// with the given sequence. + public func collate(_ collation: Collation) -> Expression { + return "COLLATE".infix(self, collation) + } + + /// Builds a copy of the expression wrapped with the `ltrim` function. + /// + /// let name = Expression("name") + /// name.ltrim() + /// // ltrim("name") + /// name.ltrim([" ", "\t"]) + /// // ltrim("name", ' \t') + /// + /// - Parameter characters: A set of characters to trim. + /// + /// - Returns: A copy of the expression wrapped with the `ltrim` function. + public func ltrim(_ characters: Set? = nil) -> Expression { + guard let characters = characters else { + return wrap(self) + } + return wrap([self, String(characters)]) + } + + /// Builds a copy of the expression wrapped with the `rtrim` function. + /// + /// let name = Expression("name") + /// name.rtrim() + /// // rtrim("name") + /// name.rtrim([" ", "\t"]) + /// // rtrim("name", ' \t') + /// + /// - Parameter characters: A set of characters to trim. + /// + /// - Returns: A copy of the expression wrapped with the `rtrim` function. + public func rtrim(_ characters: Set? = nil) -> Expression { + guard let characters = characters else { + return wrap(self) + } + return wrap([self, String(characters)]) + } + + /// Builds a copy of the expression wrapped with the `trim` function. + /// + /// let name = Expression("name") + /// name.trim() + /// // trim("name") + /// name.trim([" ", "\t"]) + /// // trim("name", ' \t') + /// + /// - Parameter characters: A set of characters to trim. + /// + /// - Returns: A copy of the expression wrapped with the `trim` function. + public func trim(_ characters: Set? = nil) -> Expression { + guard let characters = characters else { + return wrap([self]) + } + return wrap([self, String(characters)]) + } + + /// Builds a copy of the expression wrapped with the `replace` function. + /// + /// let email = Expression("email") + /// email.replace("@mac.com", with: "@icloud.com") + /// // replace("email", '@mac.com', '@icloud.com') + /// + /// - Parameters: + /// + /// - pattern: A pattern to match. + /// + /// - replacement: The replacement string. + /// + /// - Returns: A copy of the expression wrapped with the `replace` function. + public func replace(_ pattern: String, with replacement: String) -> Expression { + return "replace".wrap([self, pattern, replacement]) + } + + public func substring(_ location: Int, length: Int? = nil) -> Expression { + guard let length = length else { + return "substr".wrap([self, location]) + } + return "substr".wrap([self, location, length]) + } + + public subscript(range: Range) -> Expression { + return substring(range.lowerBound, length: range.upperBound - range.lowerBound) + } + +} + +extension ExpressionType where UnderlyingType == String? { + + /// Builds a copy of the expression wrapped with the `length` function. + /// + /// let name = Expression("name") + /// name.length + /// // length("name") + /// + /// - Returns: A copy of the expression wrapped with the `length` function. + public var length: Expression { + return wrap(self) + } + + /// Builds a copy of the expression wrapped with the `lower` function. + /// + /// let name = Expression("name") + /// name.lowercaseString + /// // lower("name") + /// + /// - Returns: A copy of the expression wrapped with the `lower` function. + public var lowercaseString: Expression { + return "lower".wrap(self) + } + + /// Builds a copy of the expression wrapped with the `upper` function. + /// + /// let name = Expression("name") + /// name.uppercaseString + /// // lower("name") + /// + /// - Returns: A copy of the expression wrapped with the `upper` function. + public var uppercaseString: Expression { + return "upper".wrap(self) + } + + /// Builds a copy of the expression appended with a `LIKE` query against the + /// given pattern. + /// + /// let email = Expression("email") + /// email.like("%@example.com") + /// // "email" LIKE '%@example.com' + /// email.like("99\\%@%", escape: "\\") + /// // "email" LIKE '99\%@%' ESCAPE '\' + /// + /// - Parameters: + /// + /// - pattern: A pattern to match. + /// + /// - escape: An (optional) character designated for escaping + /// pattern-matching characters (*i.e.*, the `%` and `_` characters). + /// + /// - Returns: A copy of the expression appended with a `LIKE` query against + /// the given pattern. + public func like(_ pattern: String, escape character: Character? = nil) -> Expression { + guard let character = character else { + return "LIKE".infix(self, pattern) + } + return Expression("(\(template) LIKE ? ESCAPE ?)", bindings + [pattern, String(character)]) + } + + /// Builds a copy of the expression appended with a `LIKE` query against the + /// given pattern. + /// + /// let email = Expression("email") + /// let pattern = Expression("pattern") + /// email.like(pattern) + /// // "email" LIKE "pattern" + /// + /// - Parameters: + /// + /// - pattern: A pattern to match. + /// + /// - escape: An (optional) character designated for escaping + /// pattern-matching characters (*i.e.*, the `%` and `_` characters). + /// + /// - Returns: A copy of the expression appended with a `LIKE` query against + /// the given pattern. + public func like(_ pattern: Expression, escape character: Character? = nil) -> Expression { + guard let character = character else { + return "LIKE".infix(self, pattern) + } + let like: Expression = "LIKE".infix(self, pattern, wrap: false) + return Expression("(\(like.template) ESCAPE ?)", like.bindings + [String(character)]) + } + + /// Builds a copy of the expression appended with a `GLOB` query against the + /// given pattern. + /// + /// let path = Expression("path") + /// path.glob("*.png") + /// // "path" GLOB '*.png' + /// + /// - Parameter pattern: A pattern to match. + /// + /// - Returns: A copy of the expression appended with a `GLOB` query against + /// the given pattern. + public func glob(_ pattern: String) -> Expression { + return "GLOB".infix(self, pattern) + } + + /// Builds a copy of the expression appended with a `MATCH` query against + /// the given pattern. + /// + /// let title = Expression("title") + /// title.match("swift AND programming") + /// // "title" MATCH 'swift AND programming' + /// + /// - Parameter pattern: A pattern to match. + /// + /// - Returns: A copy of the expression appended with a `MATCH` query + /// against the given pattern. + public func match(_ pattern: String) -> Expression { + return "MATCH".infix(self, pattern) + } + + /// Builds a copy of the expression appended with a `REGEXP` query against + /// the given pattern. + /// + /// - Parameter pattern: A pattern to match. + /// + /// - Returns: A copy of the expression appended with a `REGEXP` query + /// against the given pattern. + public func regexp(_ pattern: String) -> Expression { + return "REGEXP".infix(self, pattern) + } + + /// Builds a copy of the expression appended with a `COLLATE` clause with + /// the given sequence. + /// + /// let name = Expression("name") + /// name.collate(.Nocase) + /// // "name" COLLATE NOCASE + /// + /// - Parameter collation: A collating sequence. + /// + /// - Returns: A copy of the expression appended with a `COLLATE` clause + /// with the given sequence. + public func collate(_ collation: Collation) -> Expression { + return "COLLATE".infix(self, collation) + } + + /// Builds a copy of the expression wrapped with the `ltrim` function. + /// + /// let name = Expression("name") + /// name.ltrim() + /// // ltrim("name") + /// name.ltrim([" ", "\t"]) + /// // ltrim("name", ' \t') + /// + /// - Parameter characters: A set of characters to trim. + /// + /// - Returns: A copy of the expression wrapped with the `ltrim` function. + public func ltrim(_ characters: Set? = nil) -> Expression { + guard let characters = characters else { + return wrap(self) + } + return wrap([self, String(characters)]) + } + + /// Builds a copy of the expression wrapped with the `rtrim` function. + /// + /// let name = Expression("name") + /// name.rtrim() + /// // rtrim("name") + /// name.rtrim([" ", "\t"]) + /// // rtrim("name", ' \t') + /// + /// - Parameter characters: A set of characters to trim. + /// + /// - Returns: A copy of the expression wrapped with the `rtrim` function. + public func rtrim(_ characters: Set? = nil) -> Expression { + guard let characters = characters else { + return wrap(self) + } + return wrap([self, String(characters)]) + } + + /// Builds a copy of the expression wrapped with the `trim` function. + /// + /// let name = Expression("name") + /// name.trim() + /// // trim("name") + /// name.trim([" ", "\t"]) + /// // trim("name", ' \t') + /// + /// - Parameter characters: A set of characters to trim. + /// + /// - Returns: A copy of the expression wrapped with the `trim` function. + public func trim(_ characters: Set? = nil) -> Expression { + guard let characters = characters else { + return wrap(self) + } + return wrap([self, String(characters)]) + } + + /// Builds a copy of the expression wrapped with the `replace` function. + /// + /// let email = Expression("email") + /// email.replace("@mac.com", with: "@icloud.com") + /// // replace("email", '@mac.com', '@icloud.com') + /// + /// - Parameters: + /// + /// - pattern: A pattern to match. + /// + /// - replacement: The replacement string. + /// + /// - Returns: A copy of the expression wrapped with the `replace` function. + public func replace(_ pattern: String, with replacement: String) -> Expression { + return "replace".wrap([self, pattern, replacement]) + } + + /// Builds a copy of the expression wrapped with the `substr` function. + /// + /// let title = Expression("title") + /// title.substr(-100) + /// // substr("title", -100) + /// title.substr(0, length: 100) + /// // substr("title", 0, 100) + /// + /// - Parameters: + /// + /// - location: The substring’s start index. + /// + /// - length: An optional substring length. + /// + /// - Returns: A copy of the expression wrapped with the `substr` function. + public func substring(_ location: Int, length: Int? = nil) -> Expression { + guard let length = length else { + return "substr".wrap([self, location]) + } + return "substr".wrap([self, location, length]) + } + + /// Builds a copy of the expression wrapped with the `substr` function. + /// + /// let title = Expression("title") + /// title[0..<100] + /// // substr("title", 0, 100) + /// + /// - Parameter range: The character index range of the substring. + /// + /// - Returns: A copy of the expression wrapped with the `substr` function. + public subscript(range: Range) -> Expression { + return substring(range.lowerBound, length: range.upperBound - range.lowerBound) + } + +} + +extension Collection where Iterator.Element : Value, IndexDistance == Int { + + /// Builds a copy of the expression prepended with an `IN` check against the + /// collection. + /// + /// let name = Expression("name") + /// ["alice", "betty"].contains(name) + /// // "name" IN ('alice', 'betty') + /// + /// - Parameter pattern: A pattern to match. + /// + /// - Returns: A copy of the expression prepended with an `IN` check against + /// the collection. + public func contains(_ expression: Expression) -> Expression { + let templates = [String](repeating: "?", count: count).joined(separator: ", ") + return "IN".infix(expression, Expression("(\(templates))", map { $0.datatypeValue })) + } + + /// Builds a copy of the expression prepended with an `IN` check against the + /// collection. + /// + /// let name = Expression("name") + /// ["alice", "betty"].contains(name) + /// // "name" IN ('alice', 'betty') + /// + /// - Parameter pattern: A pattern to match. + /// + /// - Returns: A copy of the expression prepended with an `IN` check against + /// the collection. + public func contains(_ expression: Expression) -> Expression { + let templates = [String](repeating: "?", count: count).joined(separator: ", ") + return "IN".infix(expression, Expression("(\(templates))", map { $0.datatypeValue })) + } + +} + +extension String { + + /// Builds a copy of the expression appended with a `LIKE` query against the + /// given pattern. + /// + /// let email = "some@thing.com" + /// let pattern = Expression("pattern") + /// email.like(pattern) + /// // 'some@thing.com' LIKE "pattern" + /// + /// - Parameters: + /// + /// - pattern: A pattern to match. + /// + /// - escape: An (optional) character designated for escaping + /// pattern-matching characters (*i.e.*, the `%` and `_` characters). + /// + /// - Returns: A copy of the expression appended with a `LIKE` query against + /// the given pattern. + public func like(_ pattern: Expression, escape character: Character? = nil) -> Expression { + guard let character = character else { + return "LIKE".infix(self, pattern) + } + let like: Expression = "LIKE".infix(self, pattern, wrap: false) + return Expression("(\(like.template) ESCAPE ?)", like.bindings + [String(character)]) + } + +} + +/// Builds a copy of the given expressions wrapped with the `ifnull` function. +/// +/// let name = Expression("name") +/// name ?? "An Anonymous Coward" +/// // ifnull("name", 'An Anonymous Coward') +/// +/// - Parameters: +/// +/// - optional: An optional expression. +/// +/// - defaultValue: A fallback value for when the optional expression is +/// `nil`. +/// +/// - Returns: A copy of the given expressions wrapped with the `ifnull` +/// function. +public func ??(optional: Expression, defaultValue: V) -> Expression { + return "ifnull".wrap([optional, defaultValue]) +} + +/// Builds a copy of the given expressions wrapped with the `ifnull` function. +/// +/// let nick = Expression("nick") +/// let name = Expression("name") +/// nick ?? name +/// // ifnull("nick", "name") +/// +/// - Parameters: +/// +/// - optional: An optional expression. +/// +/// - defaultValue: A fallback expression for when the optional expression is +/// `nil`. +/// +/// - Returns: A copy of the given expressions wrapped with the `ifnull` +/// function. +public func ??(optional: Expression, defaultValue: Expression) -> Expression { + return "ifnull".wrap([optional, defaultValue]) +} + +/// Builds a copy of the given expressions wrapped with the `ifnull` function. +/// +/// let nick = Expression("nick") +/// let name = Expression("name") +/// nick ?? name +/// // ifnull("nick", "name") +/// +/// - Parameters: +/// +/// - optional: An optional expression. +/// +/// - defaultValue: A fallback expression for when the optional expression is +/// `nil`. +/// +/// - Returns: A copy of the given expressions wrapped with the `ifnull` +/// function. +public func ??(optional: Expression, defaultValue: Expression) -> Expression { + return "ifnull".wrap([optional, defaultValue]) +} diff --git a/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/CustomFunctions.swift b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/CustomFunctions.swift new file mode 100644 index 0000000..2389901 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/CustomFunctions.swift @@ -0,0 +1,136 @@ +// +// SQLite.swift +// https://github.com/stephencelis/SQLite.swift +// Copyright © 2014-2015 Stephen Celis. +// +// 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. +// + +public extension Connection { + + /// Creates or redefines a custom SQL function. + /// + /// - Parameters: + /// + /// - function: The name of the function to create or redefine. + /// + /// - deterministic: Whether or not the function is deterministic (_i.e._ + /// the function always returns the same result for a given input). + /// + /// Default: `false` + /// + /// - block: A block of code to run when the function is called. + /// The assigned types must be explicit. + /// + /// - Returns: A closure returning an SQL expression to call the function. + public func createFunction(_ function: String, deterministic: Bool = false, _ block: @escaping () -> Z) throws -> (() -> Expression) { + let fn = try createFunction(function, 0, deterministic) { _ in block() } + return { fn([]) } + } + + public func createFunction(_ function: String, deterministic: Bool = false, _ block: @escaping () -> Z?) throws -> (() -> Expression) { + let fn = try createFunction(function, 0, deterministic) { _ in block() } + return { fn([]) } + } + + // MARK: - + + public func createFunction(_ function: String, deterministic: Bool = false, _ block: @escaping (A) -> Z) throws -> ((Expression) -> Expression) { + let fn = try createFunction(function, 1, deterministic) { args in block(value(args[0])) } + return { arg in fn([arg]) } + } + + public func createFunction(_ function: String, deterministic: Bool = false, _ block: @escaping (A?) -> Z) throws -> ((Expression) -> Expression) { + let fn = try createFunction(function, 1, deterministic) { args in block(args[0].map(value)) } + return { arg in fn([arg]) } + } + + public func createFunction(_ function: String, deterministic: Bool = false, _ block: @escaping (A) -> Z?) throws -> ((Expression) -> Expression) { + let fn = try createFunction(function, 1, deterministic) { args in block(value(args[0])) } + return { arg in fn([arg]) } + } + + public func createFunction(_ function: String, deterministic: Bool = false, _ block: @escaping (A?) -> Z?) throws -> ((Expression) -> Expression) { + let fn = try createFunction(function, 1, deterministic) { args in block(args[0].map(value)) } + return { arg in fn([arg]) } + } + + // MARK: - + + public func createFunction(_ function: String, deterministic: Bool = false, _ block: @escaping (A, B) -> Z) throws -> (Expression, Expression) -> Expression { + let fn = try createFunction(function, 2, deterministic) { args in block(value(args[0]), value(args[1])) } + return { a, b in fn([a, b]) } + } + + public func createFunction(_ function: String, deterministic: Bool = false, _ block: @escaping (A?, B) -> Z) throws -> (Expression, Expression) -> Expression { + let fn = try createFunction(function, 2, deterministic) { args in block(args[0].map(value), value(args[1])) } + return { a, b in fn([a, b]) } + } + + public func createFunction(_ function: String, deterministic: Bool = false, _ block: @escaping (A, B?) -> Z) throws -> (Expression, Expression) -> Expression { + let fn = try createFunction(function, 2, deterministic) { args in block(value(args[0]), args[1].map(value)) } + return { a, b in fn([a, b]) } + } + + public func createFunction(_ function: String, deterministic: Bool = false, _ block: @escaping (A, B) -> Z?) throws -> (Expression, Expression) -> Expression { + let fn = try createFunction(function, 2, deterministic) { args in block(value(args[0]), value(args[1])) } + return { a, b in fn([a, b]) } + } + + public func createFunction(_ function: String, deterministic: Bool = false, _ block: @escaping (A?, B?) -> Z) throws -> (Expression, Expression) -> Expression { + let fn = try createFunction(function, 2, deterministic) { args in block(args[0].map(value), args[1].map(value)) } + return { a, b in fn([a, b]) } + } + + public func createFunction(_ function: String, deterministic: Bool = false, _ block: @escaping (A?, B) -> Z?) throws -> (Expression, Expression) -> Expression { + let fn = try createFunction(function, 2, deterministic) { args in block(args[0].map(value), value(args[1])) } + return { a, b in fn([a, b]) } + } + + public func createFunction(_ function: String, deterministic: Bool = false, _ block: @escaping (A, B?) -> Z?) throws -> (Expression, Expression) -> Expression { + let fn = try createFunction(function, 2, deterministic) { args in block(value(args[0]), args[1].map(value)) } + return { a, b in fn([a, b]) } + } + + public func createFunction(_ function: String, deterministic: Bool = false, _ block: @escaping (A?, B?) -> Z?) throws -> (Expression, Expression) -> Expression { + let fn = try createFunction(function, 2, deterministic) { args in block(args[0].map(value), args[1].map(value)) } + return { a, b in fn([a, b]) } + } + + // MARK: - + + fileprivate func createFunction(_ function: String, _ argumentCount: UInt, _ deterministic: Bool, _ block: @escaping ([Binding?]) -> Z) throws -> (([Expressible]) -> Expression) { + createFunction(function, argumentCount: argumentCount, deterministic: deterministic) { arguments in + block(arguments).datatypeValue + } + return { arguments in + function.quote().wrap(", ".join(arguments)) + } + } + + fileprivate func createFunction(_ function: String, _ argumentCount: UInt, _ deterministic: Bool, _ block: @escaping ([Binding?]) -> Z?) throws -> (([Expressible]) -> Expression) { + createFunction(function, argumentCount: argumentCount, deterministic: deterministic) { arguments in + block(arguments)?.datatypeValue + } + return { arguments in + function.quote().wrap(", ".join(arguments)) + } + } + +} diff --git a/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/DateAndTimeFunctions.swift b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/DateAndTimeFunctions.swift new file mode 100644 index 0000000..0b9a497 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/DateAndTimeFunctions.swift @@ -0,0 +1,106 @@ +// +// SQLite.swift +// https://github.com/stephencelis/SQLite.swift +// Copyright © 2014-2015 Stephen Celis. +// +// 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. +// + +import Foundation + +/// All five date and time functions take a time string as an argument. +/// The time string is followed by zero or more modifiers. +/// The strftime() function also takes a format string as its first argument. +/// +/// https://www.sqlite.org/lang_datefunc.html +public class DateFunctions { + /// The date() function returns the date in this format: YYYY-MM-DD. + public static func date(_ timestring: String, _ modifiers: String...) -> Expression { + return timefunction("date", timestring: timestring, modifiers: modifiers) + } + + /// The time() function returns the time as HH:MM:SS. + public static func time(_ timestring: String, _ modifiers: String...) -> Expression { + return timefunction("time", timestring: timestring, modifiers: modifiers) + } + + /// The datetime() function returns "YYYY-MM-DD HH:MM:SS". + public static func datetime(_ timestring: String, _ modifiers: String...) -> Expression { + return timefunction("datetime", timestring: timestring, modifiers: modifiers) + } + + /// The julianday() function returns the Julian day - + /// the number of days since noon in Greenwich on November 24, 4714 B.C. + public static func julianday(_ timestring: String, _ modifiers: String...) -> Expression { + return timefunction("julianday", timestring: timestring, modifiers: modifiers) + } + + /// The strftime() routine returns the date formatted according to the format string specified as the first argument. + public static func strftime(_ format: String, _ timestring: String, _ modifiers: String...) -> Expression { + if !modifiers.isEmpty { + let templates = [String](repeating: "?", count: modifiers.count).joined(separator: ", ") + return Expression("strftime(?, ?, \(templates))", [format, timestring] + modifiers) + } + return Expression("strftime(?, ?)", [format, timestring]) + } + + private static func timefunction(_ name: String, timestring: String, modifiers: [String]) -> Expression { + if !modifiers.isEmpty { + let templates = [String](repeating: "?", count: modifiers.count).joined(separator: ", ") + return Expression("\(name)(?, \(templates))", [timestring] + modifiers) + } + return Expression("\(name)(?)", [timestring]) + } +} + +extension Date { + public var date: Expression { + return DateFunctions.date(dateFormatter.string(from: self)) + } + + public var time: Expression { + return DateFunctions.time(dateFormatter.string(from: self)) + } + + public var datetime: Expression { + return DateFunctions.datetime(dateFormatter.string(from: self)) + } + + public var julianday: Expression { + return DateFunctions.julianday(dateFormatter.string(from: self)) + } +} + +extension Expression where UnderlyingType == Date { + public var date: Expression { + return Expression("date(\(template))", bindings) + } + + public var time: Expression { + return Expression("time(\(template))", bindings) + } + + public var datetime: Expression { + return Expression("datetime(\(template))", bindings) + } + + public var julianday: Expression { + return Expression("julianday(\(template))", bindings) + } +} diff --git a/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Expression.swift b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Expression.swift new file mode 100644 index 0000000..33329b7 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Expression.swift @@ -0,0 +1,147 @@ +// +// SQLite.swift +// https://github.com/stephencelis/SQLite.swift +// Copyright © 2014-2015 Stephen Celis. +// +// 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. +// + +public protocol ExpressionType : Expressible { // extensions cannot have inheritance clauses + + associatedtype UnderlyingType = Void + + var template: String { get } + var bindings: [Binding?] { get } + + init(_ template: String, _ bindings: [Binding?]) + +} + +extension ExpressionType { + + public init(literal: String) { + self.init(literal, []) + } + + public init(_ identifier: String) { + self.init(literal: identifier.quote()) + } + + public init(_ expression: U) { + self.init(expression.template, expression.bindings) + } + +} + +/// An `Expression` represents a raw SQL fragment and any associated bindings. +public struct Expression : ExpressionType { + + public typealias UnderlyingType = Datatype + + public var template: String + public var bindings: [Binding?] + + public init(_ template: String, _ bindings: [Binding?]) { + self.template = template + self.bindings = bindings + } + +} + +public protocol Expressible { + + var expression: Expression { get } + +} + +extension Expressible { + + // naïve compiler for statements that can’t be bound, e.g., CREATE TABLE + // FIXME: make internal (0.12.0) + public func asSQL() -> String { + let expressed = expression + var idx = 0 + return expressed.template.characters.reduce("") { template, character in + let transcoded: String + + if character == "?" { + transcoded = transcode(expressed.bindings[idx]) + idx += 1 + } else { + transcoded = String(character) + } + return template + transcoded + } + } + +} + +extension ExpressionType { + + public var expression: Expression { + return Expression(template, bindings) + } + + public var asc: Expressible { + return " ".join([self, Expression(literal: "ASC")]) + } + + public var desc: Expressible { + return " ".join([self, Expression(literal: "DESC")]) + } + +} + +extension ExpressionType where UnderlyingType : Value { + + public init(value: UnderlyingType) { + self.init("?", [value.datatypeValue]) + } + +} + +extension ExpressionType where UnderlyingType : _OptionalType, UnderlyingType.WrappedType : Value { + + public static var null: Self { + return self.init(value: nil) + } + + public init(value: UnderlyingType.WrappedType?) { + self.init("?", [value?.datatypeValue]) + } + +} + +extension Value { + + public var expression: Expression { + return Expression(value: self).expression + } + +} + +public let rowid = Expression("ROWID") + +public func cast(_ expression: Expression) -> Expression { + return Expression("CAST (\(expression.template) AS \(U.declaredDatatype))", expression.bindings) +} + +public func cast(_ expression: Expression) -> Expression { + return Expression("CAST (\(expression.template) AS \(U.declaredDatatype))", expression.bindings) +} diff --git a/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Operators.swift b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Operators.swift new file mode 100644 index 0000000..d97e52b --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Operators.swift @@ -0,0 +1,574 @@ +// +// SQLite.swift +// https://github.com/stephencelis/SQLite.swift +// Copyright © 2014-2015 Stephen Celis. +// +// 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. +// + +// TODO: use `@warn_unused_result` by the time operator functions support it + +public func +(lhs: Expression, rhs: Expression) -> Expression { + return "||".infix(lhs, rhs) +} + +public func +(lhs: Expression, rhs: Expression) -> Expression { + return "||".infix(lhs, rhs) +} +public func +(lhs: Expression, rhs: Expression) -> Expression { + return "||".infix(lhs, rhs) +} +public func +(lhs: Expression, rhs: Expression) -> Expression { + return "||".infix(lhs, rhs) +} +public func +(lhs: Expression, rhs: String) -> Expression { + return "||".infix(lhs, rhs) +} +public func +(lhs: Expression, rhs: String) -> Expression { + return "||".infix(lhs, rhs) +} +public func +(lhs: String, rhs: Expression) -> Expression { + return "||".infix(lhs, rhs) +} +public func +(lhs: String, rhs: Expression) -> Expression { + return "||".infix(lhs, rhs) +} + +// MARK: - + +public func +(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} +public func +(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} +public func +(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} +public func +(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} +public func +(lhs: Expression, rhs: V) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} +public func +(lhs: Expression, rhs: V) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} +public func +(lhs: V, rhs: Expression) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} +public func +(lhs: V, rhs: Expression) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} + +public func -(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} +public func -(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} +public func -(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} +public func -(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} +public func -(lhs: Expression, rhs: V) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} +public func -(lhs: Expression, rhs: V) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} +public func -(lhs: V, rhs: Expression) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} +public func -(lhs: V, rhs: Expression) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} + +public func *(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} +public func *(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} +public func *(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} +public func *(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} +public func *(lhs: Expression, rhs: V) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} +public func *(lhs: Expression, rhs: V) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} +public func *(lhs: V, rhs: Expression) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} +public func *(lhs: V, rhs: Expression) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} + +public func /(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} +public func /(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} +public func /(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} +public func /(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} +public func /(lhs: Expression, rhs: V) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} +public func /(lhs: Expression, rhs: V) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} +public func /(lhs: V, rhs: Expression) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} +public func /(lhs: V, rhs: Expression) -> Expression where V.Datatype : Number { + return infix(lhs, rhs) +} + +public prefix func -(rhs: Expression) -> Expression where V.Datatype : Number { + return wrap(rhs) +} +public prefix func -(rhs: Expression) -> Expression where V.Datatype : Number { + return wrap(rhs) +} + +// MARK: - + +public func %(lhs: Expression, rhs: Expression) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func %(lhs: Expression, rhs: Expression) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func %(lhs: Expression, rhs: Expression) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func %(lhs: Expression, rhs: Expression) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func %(lhs: Expression, rhs: V) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func %(lhs: Expression, rhs: V) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func %(lhs: V, rhs: Expression) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func %(lhs: V, rhs: Expression) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} + +public func <<(lhs: Expression, rhs: Expression) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func <<(lhs: Expression, rhs: Expression) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func <<(lhs: Expression, rhs: Expression) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func <<(lhs: Expression, rhs: Expression) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func <<(lhs: Expression, rhs: V) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func <<(lhs: Expression, rhs: V) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func <<(lhs: V, rhs: Expression) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func <<(lhs: V, rhs: Expression) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} + +public func >>(lhs: Expression, rhs: Expression) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func >>(lhs: Expression, rhs: Expression) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func >>(lhs: Expression, rhs: Expression) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func >>(lhs: Expression, rhs: Expression) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func >>(lhs: Expression, rhs: V) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func >>(lhs: Expression, rhs: V) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func >>(lhs: V, rhs: Expression) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func >>(lhs: V, rhs: Expression) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} + +public func &(lhs: Expression, rhs: Expression) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func &(lhs: Expression, rhs: Expression) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func &(lhs: Expression, rhs: Expression) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func &(lhs: Expression, rhs: Expression) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func &(lhs: Expression, rhs: V) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func &(lhs: Expression, rhs: V) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func &(lhs: V, rhs: Expression) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func &(lhs: V, rhs: Expression) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} + +public func |(lhs: Expression, rhs: Expression) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func |(lhs: Expression, rhs: Expression) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func |(lhs: Expression, rhs: Expression) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func |(lhs: Expression, rhs: Expression) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func |(lhs: Expression, rhs: V) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func |(lhs: Expression, rhs: V) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func |(lhs: V, rhs: Expression) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} +public func |(lhs: V, rhs: Expression) -> Expression where V.Datatype == Int64 { + return infix(lhs, rhs) +} + +public func ^(lhs: Expression, rhs: Expression) -> Expression where V.Datatype == Int64 { + return (~(lhs & rhs)) & (lhs | rhs) +} +public func ^(lhs: Expression, rhs: Expression) -> Expression where V.Datatype == Int64 { + return (~(lhs & rhs)) & (lhs | rhs) +} +public func ^(lhs: Expression, rhs: Expression) -> Expression where V.Datatype == Int64 { + return (~(lhs & rhs)) & (lhs | rhs) +} +public func ^(lhs: Expression, rhs: Expression) -> Expression where V.Datatype == Int64 { + return (~(lhs & rhs)) & (lhs | rhs) +} +public func ^(lhs: Expression, rhs: V) -> Expression where V.Datatype == Int64 { + return (~(lhs & rhs)) & (lhs | rhs) +} +public func ^(lhs: Expression, rhs: V) -> Expression where V.Datatype == Int64 { + return (~(lhs & rhs)) & (lhs | rhs) +} +public func ^(lhs: V, rhs: Expression) -> Expression where V.Datatype == Int64 { + return (~(lhs & rhs)) & (lhs | rhs) +} +public func ^(lhs: V, rhs: Expression) -> Expression where V.Datatype == Int64 { + return (~(lhs & rhs)) & (lhs | rhs) +} + +public prefix func ~(rhs: Expression) -> Expression where V.Datatype == Int64 { + return wrap(rhs) +} +public prefix func ~(rhs: Expression) -> Expression where V.Datatype == Int64 { + return wrap(rhs) +} + +// MARK: - + +public func ==(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Equatable { + return "=".infix(lhs, rhs) +} +public func ==(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Equatable { + return "=".infix(lhs, rhs) +} +public func ==(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Equatable { + return "=".infix(lhs, rhs) +} +public func ==(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Equatable { + return "=".infix(lhs, rhs) +} +public func ==(lhs: Expression, rhs: V) -> Expression where V.Datatype : Equatable { + return "=".infix(lhs, rhs) +} +public func ==(lhs: Expression, rhs: V?) -> Expression where V.Datatype : Equatable { + guard let rhs = rhs else { return "IS".infix(lhs, Expression(value: nil)) } + return "=".infix(lhs, rhs) +} +public func ==(lhs: V, rhs: Expression) -> Expression where V.Datatype : Equatable { + return "=".infix(lhs, rhs) +} +public func ==(lhs: V?, rhs: Expression) -> Expression where V.Datatype : Equatable { + guard let lhs = lhs else { return "IS".infix(Expression(value: nil), rhs) } + return "=".infix(lhs, rhs) +} + +public func !=(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Equatable { + return infix(lhs, rhs) +} +public func !=(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Equatable { + return infix(lhs, rhs) +} +public func !=(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Equatable { + return infix(lhs, rhs) +} +public func !=(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Equatable { + return infix(lhs, rhs) +} +public func !=(lhs: Expression, rhs: V) -> Expression where V.Datatype : Equatable { + return infix(lhs, rhs) +} +public func !=(lhs: Expression, rhs: V?) -> Expression where V.Datatype : Equatable { + guard let rhs = rhs else { return "IS NOT".infix(lhs, Expression(value: nil)) } + return infix(lhs, rhs) +} +public func !=(lhs: V, rhs: Expression) -> Expression where V.Datatype : Equatable { + return infix(lhs, rhs) +} +public func !=(lhs: V?, rhs: Expression) -> Expression where V.Datatype : Equatable { + guard let lhs = lhs else { return "IS NOT".infix(Expression(value: nil), rhs) } + return infix(lhs, rhs) +} + +public func >(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} +public func >(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} +public func >(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} +public func >(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} +public func >(lhs: Expression, rhs: V) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} +public func >(lhs: Expression, rhs: V) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} +public func >(lhs: V, rhs: Expression) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} +public func >(lhs: V, rhs: Expression) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} + +public func >=(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} +public func >=(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} +public func >=(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} +public func >=(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} +public func >=(lhs: Expression, rhs: V) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} +public func >=(lhs: Expression, rhs: V) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} +public func >=(lhs: V, rhs: Expression) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} +public func >=(lhs: V, rhs: Expression) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} + +public func <(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} +public func <(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} +public func <(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} +public func <(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} +public func <(lhs: Expression, rhs: V) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} +public func <(lhs: Expression, rhs: V) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} +public func <(lhs: V, rhs: Expression) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} +public func <(lhs: V, rhs: Expression) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} + +public func <=(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} +public func <=(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} +public func <=(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} +public func <=(lhs: Expression, rhs: Expression) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} +public func <=(lhs: Expression, rhs: V) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} +public func <=(lhs: Expression, rhs: V) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} +public func <=(lhs: V, rhs: Expression) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} +public func <=(lhs: V, rhs: Expression) -> Expression where V.Datatype : Comparable { + return infix(lhs, rhs) +} + +public func ~=(lhs: ClosedRange, rhs: Expression) -> Expression where V.Datatype : Comparable & Value { + return Expression("\(rhs.template) BETWEEN ? AND ?", rhs.bindings + [lhs.lowerBound.datatypeValue, lhs.upperBound.datatypeValue]) +} + +public func ~=(lhs: ClosedRange, rhs: Expression) -> Expression where V.Datatype : Comparable & Value { + return Expression("\(rhs.template) BETWEEN ? AND ?", rhs.bindings + [lhs.lowerBound.datatypeValue, lhs.upperBound.datatypeValue]) +} + +public func ~=(lhs: Range, rhs: Expression) -> Expression where V.Datatype : Comparable & Value { + return Expression("\(rhs.template) >= ? AND \(rhs.template) < ?", rhs.bindings + [lhs.lowerBound.datatypeValue] + rhs.bindings + [lhs.upperBound.datatypeValue]) +} + +public func ~=(lhs: Range, rhs: Expression) -> Expression where V.Datatype : Comparable & Value { + return Expression("\(rhs.template) >= ? AND \(rhs.template) < ?", rhs.bindings + [lhs.lowerBound.datatypeValue] + rhs.bindings + [lhs.upperBound.datatypeValue]) +} + +public func ~=(lhs: PartialRangeThrough, rhs: Expression) -> Expression where V.Datatype : Comparable & Value { + return Expression("\(rhs.template) <= ?", rhs.bindings + [lhs.upperBound.datatypeValue]) +} + +public func ~=(lhs: PartialRangeThrough, rhs: Expression) -> Expression where V.Datatype : Comparable & Value { + return Expression("\(rhs.template) <= ?", rhs.bindings + [lhs.upperBound.datatypeValue]) +} + +public func ~=(lhs: PartialRangeUpTo, rhs: Expression) -> Expression where V.Datatype : Comparable & Value { + return Expression("\(rhs.template) < ?", rhs.bindings + [lhs.upperBound.datatypeValue]) +} + +public func ~=(lhs: PartialRangeUpTo, rhs: Expression) -> Expression where V.Datatype : Comparable & Value { + return Expression("\(rhs.template) < ?", rhs.bindings + [lhs.upperBound.datatypeValue]) +} + +public func ~=(lhs: PartialRangeFrom, rhs: Expression) -> Expression where V.Datatype : Comparable & Value { + return Expression("\(rhs.template) >= ?", rhs.bindings + [lhs.lowerBound.datatypeValue]) +} + +public func ~=(lhs: PartialRangeFrom, rhs: Expression) -> Expression where V.Datatype : Comparable & Value { + return Expression("\(rhs.template) >= ?", rhs.bindings + [lhs.lowerBound.datatypeValue]) +} + +// MARK: - + +public func &&(lhs: Expression, rhs: Expression) -> Expression { + return "AND".infix(lhs, rhs) +} +public func &&(lhs: Expression, rhs: Expression) -> Expression { + return "AND".infix(lhs, rhs) +} +public func &&(lhs: Expression, rhs: Expression) -> Expression { + return "AND".infix(lhs, rhs) +} +public func &&(lhs: Expression, rhs: Expression) -> Expression { + return "AND".infix(lhs, rhs) +} +public func &&(lhs: Expression, rhs: Bool) -> Expression { + return "AND".infix(lhs, rhs) +} +public func &&(lhs: Expression, rhs: Bool) -> Expression { + return "AND".infix(lhs, rhs) +} +public func &&(lhs: Bool, rhs: Expression) -> Expression { + return "AND".infix(lhs, rhs) +} +public func &&(lhs: Bool, rhs: Expression) -> Expression { + return "AND".infix(lhs, rhs) +} + +public func ||(lhs: Expression, rhs: Expression) -> Expression { + return "OR".infix(lhs, rhs) +} +public func ||(lhs: Expression, rhs: Expression) -> Expression { + return "OR".infix(lhs, rhs) +} +public func ||(lhs: Expression, rhs: Expression) -> Expression { + return "OR".infix(lhs, rhs) +} +public func ||(lhs: Expression, rhs: Expression) -> Expression { + return "OR".infix(lhs, rhs) +} +public func ||(lhs: Expression, rhs: Bool) -> Expression { + return "OR".infix(lhs, rhs) +} +public func ||(lhs: Expression, rhs: Bool) -> Expression { + return "OR".infix(lhs, rhs) +} +public func ||(lhs: Bool, rhs: Expression) -> Expression { + return "OR".infix(lhs, rhs) +} +public func ||(lhs: Bool, rhs: Expression) -> Expression { + return "OR".infix(lhs, rhs) +} + +public prefix func !(rhs: Expression) -> Expression { + return "NOT ".wrap(rhs) +} +public prefix func !(rhs: Expression) -> Expression { + return "NOT ".wrap(rhs) +} diff --git a/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Query.swift b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Query.swift new file mode 100644 index 0000000..17ec715 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Query.swift @@ -0,0 +1,1175 @@ +// +// SQLite.swift +// https://github.com/stephencelis/SQLite.swift +// Copyright © 2014-2015 Stephen Celis. +// +// 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. +// + +import Foundation + +public protocol QueryType : Expressible { + + var clauses: QueryClauses { get set } + + init(_ name: String, database: String?) + +} + +public protocol SchemaType : QueryType { + + static var identifier: String { get } + +} + +extension SchemaType { + + /// Builds a copy of the query with the `SELECT` clause applied. + /// + /// let users = Table("users") + /// let id = Expression("id") + /// let email = Expression("email") + /// + /// users.select(id, email) + /// // SELECT "id", "email" FROM "users" + /// + /// - Parameter all: A list of expressions to select. + /// + /// - Returns: A query with the given `SELECT` clause applied. + public func select(_ column1: Expressible, _ more: Expressible...) -> Self { + return select(false, [column1] + more) + } + + /// Builds a copy of the query with the `SELECT DISTINCT` clause applied. + /// + /// let users = Table("users") + /// let email = Expression("email") + /// + /// users.select(distinct: email) + /// // SELECT DISTINCT "email" FROM "users" + /// + /// - Parameter columns: A list of expressions to select. + /// + /// - Returns: A query with the given `SELECT DISTINCT` clause applied. + public func select(distinct column1: Expressible, _ more: Expressible...) -> Self { + return select(true, [column1] + more) + } + + /// Builds a copy of the query with the `SELECT` clause applied. + /// + /// let users = Table("users") + /// let id = Expression("id") + /// let email = Expression("email") + /// + /// users.select([id, email]) + /// // SELECT "id", "email" FROM "users" + /// + /// - Parameter all: A list of expressions to select. + /// + /// - Returns: A query with the given `SELECT` clause applied. + public func select(_ all: [Expressible]) -> Self { + return select(false, all) + } + + /// Builds a copy of the query with the `SELECT DISTINCT` clause applied. + /// + /// let users = Table("users") + /// let email = Expression("email") + /// + /// users.select(distinct: [email]) + /// // SELECT DISTINCT "email" FROM "users" + /// + /// - Parameter columns: A list of expressions to select. + /// + /// - Returns: A query with the given `SELECT DISTINCT` clause applied. + public func select(distinct columns: [Expressible]) -> Self { + return select(true, columns) + } + + /// Builds a copy of the query with the `SELECT *` clause applied. + /// + /// let users = Table("users") + /// + /// users.select(*) + /// // SELECT * FROM "users" + /// + /// - Parameter star: A star literal. + /// + /// - Returns: A query with the given `SELECT *` clause applied. + public func select(_ star: Star) -> Self { + return select([star(nil, nil)]) + } + + /// Builds a copy of the query with the `SELECT DISTINCT *` clause applied. + /// + /// let users = Table("users") + /// + /// users.select(distinct: *) + /// // SELECT DISTINCT * FROM "users" + /// + /// - Parameter star: A star literal. + /// + /// - Returns: A query with the given `SELECT DISTINCT *` clause applied. + public func select(distinct star: Star) -> Self { + return select(distinct: [star(nil, nil)]) + } + + /// Builds a scalar copy of the query with the `SELECT` clause applied. + /// + /// let users = Table("users") + /// let id = Expression("id") + /// + /// users.select(id) + /// // SELECT "id" FROM "users" + /// + /// - Parameter all: A list of expressions to select. + /// + /// - Returns: A query with the given `SELECT` clause applied. + public func select(_ column: Expression) -> ScalarQuery { + return select(false, [column]) + } + public func select(_ column: Expression) -> ScalarQuery { + return select(false, [column]) + } + + /// Builds a scalar copy of the query with the `SELECT DISTINCT` clause + /// applied. + /// + /// let users = Table("users") + /// let email = Expression("email") + /// + /// users.select(distinct: email) + /// // SELECT DISTINCT "email" FROM "users" + /// + /// - Parameter column: A list of expressions to select. + /// + /// - Returns: A query with the given `SELECT DISTINCT` clause applied. + public func select(distinct column: Expression) -> ScalarQuery { + return select(true, [column]) + } + public func select(distinct column: Expression) -> ScalarQuery { + return select(true, [column]) + } + + public var count: ScalarQuery { + return select(Expression.count(*)) + } + +} + +extension QueryType { + + fileprivate func select(_ distinct: Bool, _ columns: [Expressible]) -> Q { + var query = Q.init(clauses.from.name, database: clauses.from.database) + query.clauses = clauses + query.clauses.select = (distinct, columns) + return query + } + + // MARK: UNION + + /// Adds a `UNION` clause to the query. + /// + /// let users = Table("users") + /// let email = Expression("email") + /// + /// users.filter(email == "alice@example.com").union(users.filter(email == "sally@example.com")) + /// // SELECT * FROM "users" WHERE email = 'alice@example.com' UNION SELECT * FROM "users" WHERE email = 'sally@example.com' + /// + /// - Parameters: + /// + /// - table: A query representing the other table. + /// + /// - Returns: A query with the given `UNION` clause applied. + public func union(_ table: QueryType) -> Self { + var query = self + query.clauses.union.append(table) + return query + } + + // MARK: JOIN + + /// Adds a `JOIN` clause to the query. + /// + /// let users = Table("users") + /// let id = Expression("id") + /// let posts = Table("posts") + /// let userId = Expression("user_id") + /// + /// users.join(posts, on: posts[userId] == users[id]) + /// // SELECT * FROM "users" INNER JOIN "posts" ON ("posts"."user_id" = "users"."id") + /// + /// - Parameters: + /// + /// - table: A query representing the other table. + /// + /// - condition: A boolean expression describing the join condition. + /// + /// - Returns: A query with the given `JOIN` clause applied. + public func join(_ table: QueryType, on condition: Expression) -> Self { + return join(table, on: Expression(condition)) + } + + /// Adds a `JOIN` clause to the query. + /// + /// let users = Table("users") + /// let id = Expression("id") + /// let posts = Table("posts") + /// let userId = Expression("user_id") + /// + /// users.join(posts, on: posts[userId] == users[id]) + /// // SELECT * FROM "users" INNER JOIN "posts" ON ("posts"."user_id" = "users"."id") + /// + /// - Parameters: + /// + /// - table: A query representing the other table. + /// + /// - condition: A boolean expression describing the join condition. + /// + /// - Returns: A query with the given `JOIN` clause applied. + public func join(_ table: QueryType, on condition: Expression) -> Self { + return join(.inner, table, on: condition) + } + + /// Adds a `JOIN` clause to the query. + /// + /// let users = Table("users") + /// let id = Expression("id") + /// let posts = Table("posts") + /// let userId = Expression("user_id") + /// + /// users.join(.LeftOuter, posts, on: posts[userId] == users[id]) + /// // SELECT * FROM "users" LEFT OUTER JOIN "posts" ON ("posts"."user_id" = "users"."id") + /// + /// - Parameters: + /// + /// - type: The `JOIN` operator. + /// + /// - table: A query representing the other table. + /// + /// - condition: A boolean expression describing the join condition. + /// + /// - Returns: A query with the given `JOIN` clause applied. + public func join(_ type: JoinType, _ table: QueryType, on condition: Expression) -> Self { + return join(type, table, on: Expression(condition)) + } + + /// Adds a `JOIN` clause to the query. + /// + /// let users = Table("users") + /// let id = Expression("id") + /// let posts = Table("posts") + /// let userId = Expression("user_id") + /// + /// users.join(.LeftOuter, posts, on: posts[userId] == users[id]) + /// // SELECT * FROM "users" LEFT OUTER JOIN "posts" ON ("posts"."user_id" = "users"."id") + /// + /// - Parameters: + /// + /// - type: The `JOIN` operator. + /// + /// - table: A query representing the other table. + /// + /// - condition: A boolean expression describing the join condition. + /// + /// - Returns: A query with the given `JOIN` clause applied. + public func join(_ type: JoinType, _ table: QueryType, on condition: Expression) -> Self { + var query = self + query.clauses.join.append((type: type, query: table, condition: table.clauses.filters.map { condition && $0 } ?? condition as Expressible)) + return query + } + + // MARK: WHERE + + /// Adds a condition to the query’s `WHERE` clause. + /// + /// let users = Table("users") + /// let id = Expression("id") + /// + /// users.filter(id == 1) + /// // SELECT * FROM "users" WHERE ("id" = 1) + /// + /// - Parameter condition: A boolean expression to filter on. + /// + /// - Returns: A query with the given `WHERE` clause applied. + public func filter(_ predicate: Expression) -> Self { + return filter(Expression(predicate)) + } + + /// Adds a condition to the query’s `WHERE` clause. + /// + /// let users = Table("users") + /// let age = Expression("age") + /// + /// users.filter(age >= 35) + /// // SELECT * FROM "users" WHERE ("age" >= 35) + /// + /// - Parameter condition: A boolean expression to filter on. + /// + /// - Returns: A query with the given `WHERE` clause applied. + public func filter(_ predicate: Expression) -> Self { + var query = self + query.clauses.filters = query.clauses.filters.map { $0 && predicate } ?? predicate + return query + } + + /// Adds a condition to the query’s `WHERE` clause. + /// This is an alias for `filter(predicate)` + public func `where`(_ predicate: Expression) -> Self { + return `where`(Expression(predicate)) + } + + /// Adds a condition to the query’s `WHERE` clause. + /// This is an alias for `filter(predicate)` + public func `where`(_ predicate: Expression) -> Self { + return filter(predicate) + } + + // MARK: GROUP BY + + /// Sets a `GROUP BY` clause on the query. + /// + /// - Parameter by: A list of columns to group by. + /// + /// - Returns: A query with the given `GROUP BY` clause applied. + public func group(_ by: Expressible...) -> Self { + return group(by) + } + + /// Sets a `GROUP BY` clause on the query. + /// + /// - Parameter by: A list of columns to group by. + /// + /// - Returns: A query with the given `GROUP BY` clause applied. + public func group(_ by: [Expressible]) -> Self { + return group(by, nil) + } + + /// Sets a `GROUP BY`-`HAVING` clause on the query. + /// + /// - Parameters: + /// + /// - by: A column to group by. + /// + /// - having: A condition determining which groups are returned. + /// + /// - Returns: A query with the given `GROUP BY`–`HAVING` clause applied. + public func group(_ by: Expressible, having: Expression) -> Self { + return group([by], having: having) + } + + /// Sets a `GROUP BY`-`HAVING` clause on the query. + /// + /// - Parameters: + /// + /// - by: A column to group by. + /// + /// - having: A condition determining which groups are returned. + /// + /// - Returns: A query with the given `GROUP BY`–`HAVING` clause applied. + public func group(_ by: Expressible, having: Expression) -> Self { + return group([by], having: having) + } + + /// Sets a `GROUP BY`-`HAVING` clause on the query. + /// + /// - Parameters: + /// + /// - by: A list of columns to group by. + /// + /// - having: A condition determining which groups are returned. + /// + /// - Returns: A query with the given `GROUP BY`–`HAVING` clause applied. + public func group(_ by: [Expressible], having: Expression) -> Self { + return group(by, Expression(having)) + } + + /// Sets a `GROUP BY`-`HAVING` clause on the query. + /// + /// - Parameters: + /// + /// - by: A list of columns to group by. + /// + /// - having: A condition determining which groups are returned. + /// + /// - Returns: A query with the given `GROUP BY`–`HAVING` clause applied. + public func group(_ by: [Expressible], having: Expression) -> Self { + return group(by, having) + } + + fileprivate func group(_ by: [Expressible], _ having: Expression?) -> Self { + var query = self + query.clauses.group = (by, having) + return query + } + + // MARK: ORDER BY + + /// Sets an `ORDER BY` clause on the query. + /// + /// let users = Table("users") + /// let email = Expression("email") + /// let name = Expression("name") + /// + /// users.order(email.desc, name.asc) + /// // SELECT * FROM "users" ORDER BY "email" DESC, "name" ASC + /// + /// - Parameter by: An ordered list of columns and directions to sort by. + /// + /// - Returns: A query with the given `ORDER BY` clause applied. + public func order(_ by: Expressible...) -> Self { + return order(by) + } + + /// Sets an `ORDER BY` clause on the query. + /// + /// let users = Table("users") + /// let email = Expression("email") + /// let name = Expression("name") + /// + /// users.order([email.desc, name.asc]) + /// // SELECT * FROM "users" ORDER BY "email" DESC, "name" ASC + /// + /// - Parameter by: An ordered list of columns and directions to sort by. + /// + /// - Returns: A query with the given `ORDER BY` clause applied. + public func order(_ by: [Expressible]) -> Self { + var query = self + query.clauses.order = by + return query + } + + // MARK: LIMIT/OFFSET + + /// Sets the LIMIT clause (and resets any OFFSET clause) on the query. + /// + /// let users = Table("users") + /// + /// users.limit(20) + /// // SELECT * FROM "users" LIMIT 20 + /// + /// - Parameter length: The maximum number of rows to return (or `nil` to + /// return unlimited rows). + /// + /// - Returns: A query with the given LIMIT clause applied. + public func limit(_ length: Int?) -> Self { + return limit(length, nil) + } + + /// Sets LIMIT and OFFSET clauses on the query. + /// + /// let users = Table("users") + /// + /// users.limit(20, offset: 20) + /// // SELECT * FROM "users" LIMIT 20 OFFSET 20 + /// + /// - Parameters: + /// + /// - length: The maximum number of rows to return. + /// + /// - offset: The number of rows to skip. + /// + /// - Returns: A query with the given LIMIT and OFFSET clauses applied. + public func limit(_ length: Int, offset: Int) -> Self { + return limit(length, offset) + } + + // prevents limit(nil, offset: 5) + fileprivate func limit(_ length: Int?, _ offset: Int?) -> Self { + var query = self + query.clauses.limit = length.map { ($0, offset) } + return query + } + + // MARK: - Clauses + // + // MARK: SELECT + + // MARK: - + + fileprivate var selectClause: Expressible { + return " ".join([ + Expression(literal: clauses.select.distinct ? "SELECT DISTINCT" : "SELECT"), + ", ".join(clauses.select.columns), + Expression(literal: "FROM"), + tableName(alias: true) + ]) + } + + fileprivate var joinClause: Expressible? { + guard !clauses.join.isEmpty else { + return nil + } + + return " ".join(clauses.join.map { arg in + let (type, query, condition) = arg + return " ".join([ + Expression(literal: "\(type.rawValue) JOIN"), + query.tableName(alias: true), + Expression(literal: "ON"), + condition + ]) + }) + } + + fileprivate var whereClause: Expressible? { + guard let filters = clauses.filters else { + return nil + } + + return " ".join([ + Expression(literal: "WHERE"), + filters + ]) + } + + fileprivate var groupByClause: Expressible? { + guard let group = clauses.group else { + return nil + } + + let groupByClause = " ".join([ + Expression(literal: "GROUP BY"), + ", ".join(group.by) + ]) + + guard let having = group.having else { + return groupByClause + } + + return " ".join([ + groupByClause, + " ".join([ + Expression(literal: "HAVING"), + having + ]) + ]) + } + + fileprivate var orderClause: Expressible? { + guard !clauses.order.isEmpty else { + return nil + } + + return " ".join([ + Expression(literal: "ORDER BY"), + ", ".join(clauses.order) + ]) + } + + fileprivate var limitOffsetClause: Expressible? { + guard let limit = clauses.limit else { + return nil + } + + let limitClause = Expression(literal: "LIMIT \(limit.length)") + + guard let offset = limit.offset else { + return limitClause + } + + return " ".join([ + limitClause, + Expression(literal: "OFFSET \(offset)") + ]) + } + + fileprivate var unionClause: Expressible? { + guard !clauses.union.isEmpty else { + return nil + } + + return " ".join(clauses.union.map { query in + " ".join([ + Expression(literal: "UNION"), + query + ]) + }) + } + + // MARK: - + + public func alias(_ aliasName: String) -> Self { + var query = self + query.clauses.from = (clauses.from.name, aliasName, clauses.from.database) + return query + } + + // MARK: - Operations + // + // MARK: INSERT + + public func insert(_ value: Setter, _ more: Setter...) -> Insert { + return insert([value] + more) + } + + public func insert(_ values: [Setter]) -> Insert { + return insert(nil, values) + } + + public func insert(or onConflict: OnConflict, _ values: Setter...) -> Insert { + return insert(or: onConflict, values) + } + + public func insert(or onConflict: OnConflict, _ values: [Setter]) -> Insert { + return insert(onConflict, values) + } + + fileprivate func insert(_ or: OnConflict?, _ values: [Setter]) -> Insert { + let insert = values.reduce((columns: [Expressible](), values: [Expressible]())) { insert, setter in + (insert.columns + [setter.column], insert.values + [setter.value]) + } + + let clauses: [Expressible?] = [ + Expression(literal: "INSERT"), + or.map { Expression(literal: "OR \($0.rawValue)") }, + Expression(literal: "INTO"), + tableName(), + "".wrap(insert.columns) as Expression, + Expression(literal: "VALUES"), + "".wrap(insert.values) as Expression, + whereClause + ] + + return Insert(" ".join(clauses.flatMap { $0 }).expression) + } + + /// Runs an `INSERT` statement against the query with `DEFAULT VALUES`. + public func insert() -> Insert { + return Insert(" ".join([ + Expression(literal: "INSERT INTO"), + tableName(), + Expression(literal: "DEFAULT VALUES") + ]).expression) + } + + /// Runs an `INSERT` statement against the query with the results of another + /// query. + /// + /// - Parameter query: A query to `SELECT` results from. + /// + /// - Returns: The number of updated rows and statement. + public func insert(_ query: QueryType) -> Update { + return Update(" ".join([ + Expression(literal: "INSERT INTO"), + tableName(), + query.expression + ]).expression) + } + + // MARK: UPDATE + + public func update(_ values: Setter...) -> Update { + return update(values) + } + + public func update(_ values: [Setter]) -> Update { + let clauses: [Expressible?] = [ + Expression(literal: "UPDATE"), + tableName(), + Expression(literal: "SET"), + ", ".join(values.map { " = ".join([$0.column, $0.value]) }), + whereClause, + orderClause, + limitOffsetClause + ] + + return Update(" ".join(clauses.flatMap { $0 }).expression) + } + + // MARK: DELETE + + public func delete() -> Delete { + let clauses: [Expressible?] = [ + Expression(literal: "DELETE FROM"), + tableName(), + whereClause, + orderClause, + limitOffsetClause + ] + + return Delete(" ".join(clauses.flatMap { $0 }).expression) + } + + // MARK: EXISTS + + public var exists: Select { + return Select(" ".join([ + Expression(literal: "SELECT EXISTS"), + "".wrap(expression) as Expression + ]).expression) + } + + // MARK: - + + /// Prefixes a column expression with the query’s table name or alias. + /// + /// - Parameter column: A column expression. + /// + /// - Returns: A column expression namespaced with the query’s table name or + /// alias. + public func namespace(_ column: Expression) -> Expression { + return Expression(".".join([tableName(), column]).expression) + } + + public subscript(column: Expression) -> Expression { + return namespace(column) + } + + public subscript(column: Expression) -> Expression { + return namespace(column) + } + + /// Prefixes a star with the query’s table name or alias. + /// + /// - Parameter star: A literal `*`. + /// + /// - Returns: A `*` expression namespaced with the query’s table name or + /// alias. + public subscript(star: Star) -> Expression { + return namespace(star(nil, nil)) + } + + // MARK: - + + // TODO: alias support + func tableName(alias aliased: Bool = false) -> Expressible { + guard let alias = clauses.from.alias , aliased else { + return database(namespace: clauses.from.alias ?? clauses.from.name) + } + + return " ".join([ + database(namespace: clauses.from.name), + Expression(literal: "AS"), + Expression(alias) + ]) + } + + func tableName(qualified: Bool) -> Expressible { + if qualified { + return tableName() + } + return Expression(clauses.from.alias ?? clauses.from.name) + } + + func database(namespace name: String) -> Expressible { + let name = Expression(name) + + guard let database = clauses.from.database else { + return name + } + + return ".".join([Expression(database), name]) + } + + public var expression: Expression { + let clauses: [Expressible?] = [ + selectClause, + joinClause, + whereClause, + groupByClause, + unionClause, + orderClause, + limitOffsetClause + ] + + return " ".join(clauses.flatMap { $0 }).expression + } + +} + +// TODO: decide: simplify the below with a boxed type instead + +/// Queries a collection of chainable helper functions and expressions to build +/// executable SQL statements. +public struct Table : SchemaType { + + public static let identifier = "TABLE" + + public var clauses: QueryClauses + + public init(_ name: String, database: String? = nil) { + clauses = QueryClauses(name, alias: nil, database: database) + } + +} + +public struct View : SchemaType { + + public static let identifier = "VIEW" + + public var clauses: QueryClauses + + public init(_ name: String, database: String? = nil) { + clauses = QueryClauses(name, alias: nil, database: database) + } + +} + +public struct VirtualTable : SchemaType { + + public static let identifier = "VIRTUAL TABLE" + + public var clauses: QueryClauses + + public init(_ name: String, database: String? = nil) { + clauses = QueryClauses(name, alias: nil, database: database) + } + +} + +// TODO: make `ScalarQuery` work in `QueryType.select()`, `.filter()`, etc. + +public struct ScalarQuery : QueryType { + + public var clauses: QueryClauses + + public init(_ name: String, database: String? = nil) { + clauses = QueryClauses(name, alias: nil, database: database) + } + +} + +// TODO: decide: simplify the below with a boxed type instead + +public struct Select : ExpressionType { + + public var template: String + public var bindings: [Binding?] + + public init(_ template: String, _ bindings: [Binding?]) { + self.template = template + self.bindings = bindings + } + +} + +public struct Insert : ExpressionType { + + public var template: String + public var bindings: [Binding?] + + public init(_ template: String, _ bindings: [Binding?]) { + self.template = template + self.bindings = bindings + } + +} + +public struct Update : ExpressionType { + + public var template: String + public var bindings: [Binding?] + + public init(_ template: String, _ bindings: [Binding?]) { + self.template = template + self.bindings = bindings + } + +} + +public struct Delete : ExpressionType { + + public var template: String + public var bindings: [Binding?] + + public init(_ template: String, _ bindings: [Binding?]) { + self.template = template + self.bindings = bindings + } + +} + + +public struct RowIterator: FailableIterator { + public typealias Element = Row + let statement: Statement + let columnNames: [String: Int] + + public func failableNext() throws -> Row? { + return try statement.failableNext().flatMap { Row(columnNames, $0) } + } + + public func map(_ transform: (Element) throws -> T) throws -> [T] { + var elements = [T]() + while let row = try failableNext() { + elements.append(try transform(row)) + } + return elements + } +} + +extension Connection { + + public func prepare(_ query: QueryType) throws -> AnySequence { + let expression = query.expression + let statement = try prepare(expression.template, expression.bindings) + + let columnNames = try columnNamesForQuery(query) + + return AnySequence { + AnyIterator { statement.next().map { Row(columnNames, $0) } } + } + } + + + public func prepareRowIterator(_ query: QueryType) throws -> RowIterator { + let expression = query.expression + let statement = try prepare(expression.template, expression.bindings) + return RowIterator(statement: statement, columnNames: try columnNamesForQuery(query)) + } + + private func columnNamesForQuery(_ query: QueryType) throws -> [String: Int] { + var (columnNames, idx) = ([String: Int](), 0) + column: for each in query.clauses.select.columns { + var names = each.expression.template.characters.split { $0 == "." }.map(String.init) + let column = names.removeLast() + let namespace = names.joined(separator: ".") + + func expandGlob(_ namespace: Bool) -> ((QueryType) throws -> Void) { + return { (query: QueryType) throws -> (Void) in + var q = type(of: query).init(query.clauses.from.name, database: query.clauses.from.database) + q.clauses.select = query.clauses.select + let e = q.expression + var names = try self.prepare(e.template, e.bindings).columnNames.map { $0.quote() } + if namespace { names = names.map { "\(query.tableName().expression.template).\($0)" } } + for name in names { columnNames[name] = idx; idx += 1 } + } + } + + if column == "*" { + var select = query + select.clauses.select = (false, [Expression(literal: "*") as Expressible]) + let queries = [select] + query.clauses.join.map { $0.query } + if !namespace.isEmpty { + for q in queries { + if q.tableName().expression.template == namespace { + try expandGlob(true)(q) + continue column + } + throw QueryError.noSuchTable(name: namespace) + } + throw QueryError.noSuchTable(name: namespace) + } + for q in queries { + try expandGlob(query.clauses.join.count > 0)(q) + } + continue + } + + columnNames[each.expression.template] = idx + idx += 1 + } + return columnNames + } + + public func scalar(_ query: ScalarQuery) throws -> V { + let expression = query.expression + return value(try scalar(expression.template, expression.bindings)) + } + + public func scalar(_ query: ScalarQuery) throws -> V.ValueType? { + let expression = query.expression + guard let value = try scalar(expression.template, expression.bindings) as? V.Datatype else { return nil } + return V.fromDatatypeValue(value) + } + + public func scalar(_ query: Select) throws -> V { + let expression = query.expression + return value(try scalar(expression.template, expression.bindings)) + } + + public func scalar(_ query: Select) throws -> V.ValueType? { + let expression = query.expression + guard let value = try scalar(expression.template, expression.bindings) as? V.Datatype else { return nil } + return V.fromDatatypeValue(value) + } + + public func pluck(_ query: QueryType) throws -> Row? { + return try prepareRowIterator(query.limit(1, query.clauses.limit?.offset)).failableNext() + } + + /// Runs an `Insert` query. + /// + /// - SeeAlso: `QueryType.insert(value:_:)` + /// - SeeAlso: `QueryType.insert(values:)` + /// - SeeAlso: `QueryType.insert(or:_:)` + /// - SeeAlso: `QueryType.insert()` + /// + /// - Parameter query: An insert query. + /// + /// - Returns: The insert’s rowid. + @discardableResult public func run(_ query: Insert) throws -> Int64 { + let expression = query.expression + return try sync { + try self.run(expression.template, expression.bindings) + return self.lastInsertRowid + } + } + + /// Runs an `Update` query. + /// + /// - SeeAlso: `QueryType.insert(query:)` + /// - SeeAlso: `QueryType.update(values:)` + /// + /// - Parameter query: An update query. + /// + /// - Returns: The number of updated rows. + @discardableResult public func run(_ query: Update) throws -> Int { + let expression = query.expression + return try sync { + try self.run(expression.template, expression.bindings) + return self.changes + } + } + + /// Runs a `Delete` query. + /// + /// - SeeAlso: `QueryType.delete()` + /// + /// - Parameter query: A delete query. + /// + /// - Returns: The number of deleted rows. + @discardableResult public func run(_ query: Delete) throws -> Int { + let expression = query.expression + return try sync { + try self.run(expression.template, expression.bindings) + return self.changes + } + } + +} + +public struct Row { + + let columnNames: [String: Int] + + fileprivate let values: [Binding?] + + internal init(_ columnNames: [String: Int], _ values: [Binding?]) { + self.columnNames = columnNames + self.values = values + } + + func hasValue(for column: String) -> Bool { + guard let idx = columnNames[column.quote()] else { + return false + } + return values[idx] != nil + } + + /// Returns a row’s value for the given column. + /// + /// - Parameter column: An expression representing a column selected in a Query. + /// + /// - Returns: The value for the given column. + public func get(_ column: Expression) throws -> V { + if let value = try get(Expression(column)) { + return value + } else { + throw QueryError.unexpectedNullValue(name: column.template) + } + } + + public func get(_ column: Expression) throws -> V? { + func valueAtIndex(_ idx: Int) -> V? { + guard let value = values[idx] as? V.Datatype else { return nil } + return V.fromDatatypeValue(value) as? V + } + + guard let idx = columnNames[column.template] else { + let similar = Array(columnNames.keys).filter { $0.hasSuffix(".\(column.template)") } + + switch similar.count { + case 0: + throw QueryError.noSuchColumn(name: column.template, columns: columnNames.keys.sorted()) + case 1: + return valueAtIndex(columnNames[similar[0]]!) + default: + throw QueryError.ambiguousColumn(name: column.template, similar: similar) + } + } + + return valueAtIndex(idx) + } + + public subscript(column: Expression) -> T { + return try! get(column) + } + + public subscript(column: Expression) -> T? { + return try! get(column) + } +} + +/// Determines the join operator for a query’s `JOIN` clause. +public enum JoinType : String { + + /// A `CROSS` join. + case cross = "CROSS" + + /// An `INNER` join. + case inner = "INNER" + + /// A `LEFT OUTER` join. + case leftOuter = "LEFT OUTER" + +} + +/// ON CONFLICT resolutions. +public enum OnConflict: String { + + case replace = "REPLACE" + + case rollback = "ROLLBACK" + + case abort = "ABORT" + + case fail = "FAIL" + + case ignore = "IGNORE" + +} + +// MARK: - Private + +public struct QueryClauses { + + var select = (distinct: false, columns: [Expression(literal: "*") as Expressible]) + + var from: (name: String, alias: String?, database: String?) + + var join = [(type: JoinType, query: QueryType, condition: Expressible)]() + + var filters: Expression? + + var group: (by: [Expressible], having: Expression?)? + + var order = [Expressible]() + + var limit: (length: Int, offset: Int?)? + + var union = [QueryType]() + + fileprivate init(_ name: String, alias: String?, database: String?) { + self.from = (name, alias, database) + } + +} + diff --git a/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Schema.swift b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Schema.swift new file mode 100644 index 0000000..46a1f87 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Schema.swift @@ -0,0 +1,513 @@ +// +// SQLite.swift +// https://github.com/stephencelis/SQLite.swift +// Copyright © 2014-2015 Stephen Celis. +// +// 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. +// + +extension SchemaType { + + // MARK: - DROP TABLE / VIEW / VIRTUAL TABLE + + public func drop(ifExists: Bool = false) -> String { + return drop("TABLE", tableName(), ifExists) + } + +} + +extension Table { + + // MARK: - CREATE TABLE + + public func create(temporary: Bool = false, ifNotExists: Bool = false, withoutRowid: Bool = false, block: (TableBuilder) -> Void) -> String { + let builder = TableBuilder() + + block(builder) + + let clauses: [Expressible?] = [ + create(Table.identifier, tableName(), temporary ? .temporary : nil, ifNotExists), + "".wrap(builder.definitions) as Expression, + withoutRowid ? Expression(literal: "WITHOUT ROWID") : nil + ] + + return " ".join(clauses.flatMap { $0 }).asSQL() + } + + public func create(_ query: QueryType, temporary: Bool = false, ifNotExists: Bool = false) -> String { + let clauses: [Expressible?] = [ + create(Table.identifier, tableName(), temporary ? .temporary : nil, ifNotExists), + Expression(literal: "AS"), + query + ] + + return " ".join(clauses.flatMap { $0 }).asSQL() + } + + // MARK: - ALTER TABLE … ADD COLUMN + + public func addColumn(_ name: Expression, check: Expression? = nil, defaultValue: V) -> String { + return addColumn(definition(name, V.declaredDatatype, nil, false, false, check, defaultValue, nil, nil)) + } + + public func addColumn(_ name: Expression, check: Expression, defaultValue: V) -> String { + return addColumn(definition(name, V.declaredDatatype, nil, false, false, check, defaultValue, nil, nil)) + } + + public func addColumn(_ name: Expression, check: Expression? = nil, defaultValue: V? = nil) -> String { + return addColumn(definition(name, V.declaredDatatype, nil, true, false, check, defaultValue, nil, nil)) + } + + public func addColumn(_ name: Expression, check: Expression, defaultValue: V? = nil) -> String { + return addColumn(definition(name, V.declaredDatatype, nil, true, false, check, defaultValue, nil, nil)) + } + + public func addColumn(_ name: Expression, unique: Bool = false, check: Expression? = nil, references table: QueryType, _ other: Expression) -> String where V.Datatype == Int64 { + return addColumn(definition(name, V.declaredDatatype, nil, false, unique, check, nil, (table, other), nil)) + } + + public func addColumn(_ name: Expression, unique: Bool = false, check: Expression, references table: QueryType, _ other: Expression) -> String where V.Datatype == Int64 { + return addColumn(definition(name, V.declaredDatatype, nil, false, unique, check, nil, (table, other), nil)) + } + + public func addColumn(_ name: Expression, unique: Bool = false, check: Expression? = nil, references table: QueryType, _ other: Expression) -> String where V.Datatype == Int64 { + return addColumn(definition(name, V.declaredDatatype, nil, true, unique, check, nil, (table, other), nil)) + } + + public func addColumn(_ name: Expression, unique: Bool = false, check: Expression, references table: QueryType, _ other: Expression) -> String where V.Datatype == Int64 { + return addColumn(definition(name, V.declaredDatatype, nil, true, unique, check, nil, (table, other), nil)) + } + + public func addColumn(_ name: Expression, check: Expression? = nil, defaultValue: V, collate: Collation) -> String where V.Datatype == String { + return addColumn(definition(name, V.declaredDatatype, nil, false, false, check, defaultValue, nil, collate)) + } + + public func addColumn(_ name: Expression, check: Expression, defaultValue: V, collate: Collation) -> String where V.Datatype == String { + return addColumn(definition(name, V.declaredDatatype, nil, false, false, check, defaultValue, nil, collate)) + } + + public func addColumn(_ name: Expression, check: Expression? = nil, defaultValue: V? = nil, collate: Collation) -> String where V.Datatype == String { + return addColumn(definition(name, V.declaredDatatype, nil, true, false, check, defaultValue, nil, collate)) + } + + public func addColumn(_ name: Expression, check: Expression, defaultValue: V? = nil, collate: Collation) -> String where V.Datatype == String { + return addColumn(definition(name, V.declaredDatatype, nil, true, false, check, defaultValue, nil, collate)) + } + + fileprivate func addColumn(_ expression: Expressible) -> String { + return " ".join([ + Expression(literal: "ALTER TABLE"), + tableName(), + Expression(literal: "ADD COLUMN"), + expression + ]).asSQL() + } + + // MARK: - ALTER TABLE … RENAME TO + + public func rename(_ to: Table) -> String { + return rename(to: to) + } + + // MARK: - CREATE INDEX + + public func createIndex(_ columns: Expressible..., unique: Bool = false, ifNotExists: Bool = false) -> String { + let clauses: [Expressible?] = [ + create("INDEX", indexName(columns), unique ? .unique : nil, ifNotExists), + Expression(literal: "ON"), + tableName(qualified: false), + "".wrap(columns) as Expression + ] + + return " ".join(clauses.flatMap { $0 }).asSQL() + } + + // MARK: - DROP INDEX + + + public func dropIndex(_ columns: Expressible..., ifExists: Bool = false) -> String { + return drop("INDEX", indexName(columns), ifExists) + } + + fileprivate func indexName(_ columns: [Expressible]) -> Expressible { + let string = (["index", clauses.from.name, "on"] + columns.map { $0.expression.template }).joined(separator: " ").lowercased() + + let index = string.characters.reduce("") { underscored, character in + guard character != "\"" else { + return underscored + } + guard "a"..."z" ~= character || "0"..."9" ~= character else { + return underscored + "_" + } + return underscored + String(character) + } + + return database(namespace: index) + } + +} + +extension View { + + // MARK: - CREATE VIEW + + public func create(_ query: QueryType, temporary: Bool = false, ifNotExists: Bool = false) -> String { + let clauses: [Expressible?] = [ + create(View.identifier, tableName(), temporary ? .temporary : nil, ifNotExists), + Expression(literal: "AS"), + query + ] + + return " ".join(clauses.flatMap { $0 }).asSQL() + } + + // MARK: - DROP VIEW + + public func drop(ifExists: Bool = false) -> String { + return drop("VIEW", tableName(), ifExists) + } + +} + +extension VirtualTable { + + // MARK: - CREATE VIRTUAL TABLE + + public func create(_ using: Module, ifNotExists: Bool = false) -> String { + let clauses: [Expressible?] = [ + create(VirtualTable.identifier, tableName(), nil, ifNotExists), + Expression(literal: "USING"), + using + ] + + return " ".join(clauses.flatMap { $0 }).asSQL() + } + + // MARK: - ALTER TABLE … RENAME TO + + public func rename(_ to: VirtualTable) -> String { + return rename(to: to) + } + +} + +public final class TableBuilder { + + fileprivate var definitions = [Expressible]() + + public func column(_ name: Expression, unique: Bool = false, check: Expression? = nil, defaultValue: Expression? = nil) { + column(name, V.declaredDatatype, nil, false, unique, check, defaultValue, nil, nil) + } + + public func column(_ name: Expression, unique: Bool = false, check: Expression? = nil, defaultValue: V) { + column(name, V.declaredDatatype, nil, false, unique, check, defaultValue, nil, nil) + } + + public func column(_ name: Expression, unique: Bool = false, check: Expression, defaultValue: Expression? = nil) { + column(name, V.declaredDatatype, nil, false, unique, check, defaultValue, nil, nil) + } + + public func column(_ name: Expression, unique: Bool = false, check: Expression, defaultValue: V) { + column(name, V.declaredDatatype, nil, false, unique, check, defaultValue, nil, nil) + } + + public func column(_ name: Expression, unique: Bool = false, check: Expression? = nil, defaultValue: Expression? = nil) { + column(name, V.declaredDatatype, nil, true, unique, check, defaultValue, nil, nil) + } + + public func column(_ name: Expression, unique: Bool = false, check: Expression? = nil, defaultValue: Expression) { + column(name, V.declaredDatatype, nil, true, unique, check, defaultValue, nil, nil) + } + + public func column(_ name: Expression, unique: Bool = false, check: Expression? = nil, defaultValue: V) { + column(name, V.declaredDatatype, nil, true, unique, check, defaultValue, nil, nil) + } + + public func column(_ name: Expression, unique: Bool = false, check: Expression, defaultValue: Expression? = nil) { + column(name, V.declaredDatatype, nil, true, unique, check, defaultValue, nil, nil) + } + + public func column(_ name: Expression, unique: Bool = false, check: Expression, defaultValue: Expression) { + column(name, V.declaredDatatype, nil, true, unique, check, defaultValue, nil, nil) + } + + public func column(_ name: Expression, unique: Bool = false, check: Expression, defaultValue: V) { + column(name, V.declaredDatatype, nil, true, unique, check, defaultValue, nil, nil) + } + + public func column(_ name: Expression, primaryKey: Bool, check: Expression? = nil, defaultValue: Expression? = nil) { + column(name, V.declaredDatatype, primaryKey ? .default : nil, false, false, check, defaultValue, nil, nil) + } + + public func column(_ name: Expression, primaryKey: Bool, check: Expression, defaultValue: Expression? = nil) { + column(name, V.declaredDatatype, primaryKey ? .default : nil, false, false, check, defaultValue, nil, nil) + } + + public func column(_ name: Expression, primaryKey: PrimaryKey, check: Expression? = nil) where V.Datatype == Int64 { + column(name, V.declaredDatatype, primaryKey, false, false, check, nil, nil, nil) + } + + public func column(_ name: Expression, primaryKey: PrimaryKey, check: Expression) where V.Datatype == Int64 { + column(name, V.declaredDatatype, primaryKey, false, false, check, nil, nil, nil) + } + + public func column(_ name: Expression, unique: Bool = false, check: Expression? = nil, references table: QueryType, _ other: Expression) where V.Datatype == Int64 { + column(name, V.declaredDatatype, nil, false, unique, check, nil, (table, other), nil) + } + + public func column(_ name: Expression, unique: Bool = false, check: Expression, references table: QueryType, _ other: Expression) where V.Datatype == Int64 { + column(name, V.declaredDatatype, nil, false, unique, check, nil, (table, other), nil) + } + + public func column(_ name: Expression, unique: Bool = false, check: Expression? = nil, references table: QueryType, _ other: Expression) where V.Datatype == Int64 { + column(name, V.declaredDatatype, nil, true, unique, check, nil, (table, other), nil) + } + + public func column(_ name: Expression, unique: Bool = false, check: Expression, references table: QueryType, _ other: Expression) where V.Datatype == Int64 { + column(name, V.declaredDatatype, nil, true, unique, check, nil, (table, other), nil) + } + + public func column(_ name: Expression, unique: Bool = false, check: Expression? = nil, defaultValue: Expression? = nil, collate: Collation) where V.Datatype == String { + column(name, V.declaredDatatype, nil, false, unique, check, defaultValue, nil, collate) + } + + public func column(_ name: Expression, unique: Bool = false, check: Expression? = nil, defaultValue: V, collate: Collation) where V.Datatype == String { + column(name, V.declaredDatatype, nil, false, unique, check, defaultValue, nil, collate) + } + + public func column(_ name: Expression, unique: Bool = false, check: Expression, defaultValue: Expression? = nil, collate: Collation) where V.Datatype == String { + column(name, V.declaredDatatype, nil, false, unique, check, defaultValue, nil, collate) + } + + public func column(_ name: Expression, unique: Bool = false, check: Expression, defaultValue: V, collate: Collation) where V.Datatype == String { + column(name, V.declaredDatatype, nil, false, unique, check, defaultValue, nil, collate) + } + + public func column(_ name: Expression, unique: Bool = false, check: Expression? = nil, defaultValue: Expression? = nil, collate: Collation) where V.Datatype == String { + column(name, V.declaredDatatype, nil, true, unique, check, defaultValue, nil, collate) + } + + public func column(_ name: Expression, unique: Bool = false, check: Expression? = nil, defaultValue: Expression, collate: Collation) where V.Datatype == String { + column(name, V.declaredDatatype, nil, true, unique, check, defaultValue, nil, collate) + } + + public func column(_ name: Expression, unique: Bool = false, check: Expression? = nil, defaultValue: V, collate: Collation) where V.Datatype == String { + column(name, V.declaredDatatype, nil, true, unique, check, defaultValue, nil, collate) + } + + public func column(_ name: Expression, unique: Bool = false, check: Expression, defaultValue: Expression? = nil, collate: Collation) where V.Datatype == String { + column(name, V.declaredDatatype, nil, true, unique, check, defaultValue, nil, collate) + } + + public func column(_ name: Expression, unique: Bool = false, check: Expression, defaultValue: Expression, collate: Collation) where V.Datatype == String { + column(name, V.declaredDatatype, nil, true, unique, check, defaultValue, nil, collate) + } + + public func column(_ name: Expression, unique: Bool = false, check: Expression, defaultValue: V, collate: Collation) where V.Datatype == String { + column(name, V.declaredDatatype, nil, true, unique, check, defaultValue, nil, collate) + } + + fileprivate func column(_ name: Expressible, _ datatype: String, _ primaryKey: PrimaryKey?, _ null: Bool, _ unique: Bool, _ check: Expressible?, _ defaultValue: Expressible?, _ references: (QueryType, Expressible)?, _ collate: Collation?) { + definitions.append(definition(name, datatype, primaryKey, null, unique, check, defaultValue, references, collate)) + } + + // MARK: - + + public func primaryKey(_ column: Expression) { + primaryKey([column]) + } + + public func primaryKey(_ compositeA: Expression, _ b: Expression) { + primaryKey([compositeA, b]) + } + + public func primaryKey(_ compositeA: Expression, _ b: Expression, _ c: Expression) { + primaryKey([compositeA, b, c]) + } + + fileprivate func primaryKey(_ composite: [Expressible]) { + definitions.append("PRIMARY KEY".prefix(composite)) + } + + public func unique(_ columns: Expressible...) { + unique(columns) + } + + public func unique(_ columns: [Expressible]) { + definitions.append("UNIQUE".prefix(columns)) + } + + public func check(_ condition: Expression) { + check(Expression(condition)) + } + + public func check(_ condition: Expression) { + definitions.append("CHECK".prefix(condition)) + } + + public enum Dependency: String { + + case noAction = "NO ACTION" + + case restrict = "RESTRICT" + + case setNull = "SET NULL" + + case setDefault = "SET DEFAULT" + + case cascade = "CASCADE" + + } + + public func foreignKey(_ column: Expression, references table: QueryType, _ other: Expression, update: Dependency? = nil, delete: Dependency? = nil) { + foreignKey(column, (table, other), update, delete) + } + + public func foreignKey(_ column: Expression, references table: QueryType, _ other: Expression, update: Dependency? = nil, delete: Dependency? = nil) { + foreignKey(column, (table, other), update, delete) + } + + public func foreignKey(_ composite: (Expression, Expression), references table: QueryType, _ other: (Expression, Expression), update: Dependency? = nil, delete: Dependency? = nil) { + let composite = ", ".join([composite.0, composite.1]) + let references = (table, ", ".join([other.0, other.1])) + + foreignKey(composite, references, update, delete) + } + + public func foreignKey(_ composite: (Expression, Expression, Expression), references table: QueryType, _ other: (Expression, Expression, Expression), update: Dependency? = nil, delete: Dependency? = nil) { + let composite = ", ".join([composite.0, composite.1, composite.2]) + let references = (table, ", ".join([other.0, other.1, other.2])) + + foreignKey(composite, references, update, delete) + } + + fileprivate func foreignKey(_ column: Expressible, _ references: (QueryType, Expressible), _ update: Dependency?, _ delete: Dependency?) { + let clauses: [Expressible?] = [ + "FOREIGN KEY".prefix(column), + reference(references), + update.map { Expression(literal: "ON UPDATE \($0.rawValue)") }, + delete.map { Expression(literal: "ON DELETE \($0.rawValue)") } + ] + + definitions.append(" ".join(clauses.flatMap { $0 })) + } + +} + +public enum PrimaryKey { + + case `default` + + case autoincrement + +} + +public struct Module { + + fileprivate let name: String + + fileprivate let arguments: [Expressible] + + public init(_ name: String, _ arguments: [Expressible]) { + self.init(name: name.quote(), arguments: arguments) + } + + init(name: String, arguments: [Expressible]) { + self.name = name + self.arguments = arguments + } + +} + +extension Module : Expressible { + + public var expression: Expression { + return name.wrap(arguments) + } + +} + +// MARK: - Private + +private extension QueryType { + + func create(_ identifier: String, _ name: Expressible, _ modifier: Modifier?, _ ifNotExists: Bool) -> Expressible { + let clauses: [Expressible?] = [ + Expression(literal: "CREATE"), + modifier.map { Expression(literal: $0.rawValue) }, + Expression(literal: identifier), + ifNotExists ? Expression(literal: "IF NOT EXISTS") : nil, + name + ] + + return " ".join(clauses.flatMap { $0 }) + } + + func rename(to: Self) -> String { + return " ".join([ + Expression(literal: "ALTER TABLE"), + tableName(), + Expression(literal: "RENAME TO"), + Expression(to.clauses.from.name) + ]).asSQL() + } + + func drop(_ identifier: String, _ name: Expressible, _ ifExists: Bool) -> String { + let clauses: [Expressible?] = [ + Expression(literal: "DROP \(identifier)"), + ifExists ? Expression(literal: "IF EXISTS") : nil, + name + ] + + return " ".join(clauses.flatMap { $0 }).asSQL() + } + +} + +private func definition(_ column: Expressible, _ datatype: String, _ primaryKey: PrimaryKey?, _ null: Bool, _ unique: Bool, _ check: Expressible?, _ defaultValue: Expressible?, _ references: (QueryType, Expressible)?, _ collate: Collation?) -> Expressible { + let clauses: [Expressible?] = [ + column, + Expression(literal: datatype), + primaryKey.map { Expression(literal: $0 == .autoincrement ? "PRIMARY KEY AUTOINCREMENT" : "PRIMARY KEY") }, + null ? nil : Expression(literal: "NOT NULL"), + unique ? Expression(literal: "UNIQUE") : nil, + check.map { " ".join([Expression(literal: "CHECK"), $0]) }, + defaultValue.map { "DEFAULT".prefix($0) }, + references.map(reference), + collate.map { " ".join([Expression(literal: "COLLATE"), $0]) } + ] + + return " ".join(clauses.flatMap { $0 }) +} + +private func reference(_ primary: (QueryType, Expressible)) -> Expressible { + return " ".join([ + Expression(literal: "REFERENCES"), + primary.0.tableName(qualified: false), + "".wrap(primary.1) as Expression + ]) +} + +private enum Modifier : String { + + case unique = "UNIQUE" + + case temporary = "TEMPORARY" + +} diff --git a/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Setter.swift b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Setter.swift new file mode 100644 index 0000000..86f16fc --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Sources/SQLite/Typed/Setter.swift @@ -0,0 +1,277 @@ +// +// SQLite.swift +// https://github.com/stephencelis/SQLite.swift +// Copyright © 2014-2015 Stephen Celis. +// +// 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. +// + +precedencegroup ColumnAssignment { + associativity: left + assignment: true + lowerThan: AssignmentPrecedence +} + +infix operator <- : ColumnAssignment + +public struct Setter { + + let column: Expressible + let value: Expressible + + fileprivate init(column: Expression, value: Expression) { + self.column = column + self.value = value + } + + fileprivate init(column: Expression, value: V) { + self.column = column + self.value = value + } + + fileprivate init(column: Expression, value: Expression) { + self.column = column + self.value = value + } + + fileprivate init(column: Expression, value: Expression) { + self.column = column + self.value = value + } + + fileprivate init(column: Expression, value: V?) { + self.column = column + self.value = Expression(value: value) + } + +} + +extension Setter : Expressible { + + public var expression: Expression { + return "=".infix(column, value, wrap: false) + } + +} + +public func <-(column: Expression, value: Expression) -> Setter { + return Setter(column: column, value: value) +} +public func <-(column: Expression, value: V) -> Setter { + return Setter(column: column, value: value) +} +public func <-(column: Expression, value: Expression) -> Setter { + return Setter(column: column, value: value) +} +public func <-(column: Expression, value: Expression) -> Setter { + return Setter(column: column, value: value) +} +public func <-(column: Expression, value: V?) -> Setter { + return Setter(column: column, value: value) +} + +public func +=(column: Expression, value: Expression) -> Setter { + return column <- column + value +} +public func +=(column: Expression, value: String) -> Setter { + return column <- column + value +} +public func +=(column: Expression, value: Expression) -> Setter { + return column <- column + value +} +public func +=(column: Expression, value: Expression) -> Setter { + return column <- column + value +} +public func +=(column: Expression, value: String) -> Setter { + return column <- column + value +} + +public func +=(column: Expression, value: Expression) -> Setter where V.Datatype : Number { + return column <- column + value +} +public func +=(column: Expression, value: V) -> Setter where V.Datatype : Number { + return column <- column + value +} +public func +=(column: Expression, value: Expression) -> Setter where V.Datatype : Number { + return column <- column + value +} +public func +=(column: Expression, value: Expression) -> Setter where V.Datatype : Number { + return column <- column + value +} +public func +=(column: Expression, value: V) -> Setter where V.Datatype : Number { + return column <- column + value +} + +public func -=(column: Expression, value: Expression) -> Setter where V.Datatype : Number { + return column <- column - value +} +public func -=(column: Expression, value: V) -> Setter where V.Datatype : Number { + return column <- column - value +} +public func -=(column: Expression, value: Expression) -> Setter where V.Datatype : Number { + return column <- column - value +} +public func -=(column: Expression, value: Expression) -> Setter where V.Datatype : Number { + return column <- column - value +} +public func -=(column: Expression, value: V) -> Setter where V.Datatype : Number { + return column <- column - value +} + +public func *=(column: Expression, value: Expression) -> Setter where V.Datatype : Number { + return column <- column * value +} +public func *=(column: Expression, value: V) -> Setter where V.Datatype : Number { + return column <- column * value +} +public func *=(column: Expression, value: Expression) -> Setter where V.Datatype : Number { + return column <- column * value +} +public func *=(column: Expression, value: Expression) -> Setter where V.Datatype : Number { + return column <- column * value +} +public func *=(column: Expression, value: V) -> Setter where V.Datatype : Number { + return column <- column * value +} + +public func /=(column: Expression, value: Expression) -> Setter where V.Datatype : Number { + return column <- column / value +} +public func /=(column: Expression, value: V) -> Setter where V.Datatype : Number { + return column <- column / value +} +public func /=(column: Expression, value: Expression) -> Setter where V.Datatype : Number { + return column <- column / value +} +public func /=(column: Expression, value: Expression) -> Setter where V.Datatype : Number { + return column <- column / value +} +public func /=(column: Expression, value: V) -> Setter where V.Datatype : Number { + return column <- column / value +} + +public func %=(column: Expression, value: Expression) -> Setter where V.Datatype == Int64 { + return column <- column % value +} +public func %=(column: Expression, value: V) -> Setter where V.Datatype == Int64 { + return column <- column % value +} +public func %=(column: Expression, value: Expression) -> Setter where V.Datatype == Int64 { + return column <- column % value +} +public func %=(column: Expression, value: Expression) -> Setter where V.Datatype == Int64 { + return column <- column % value +} +public func %=(column: Expression, value: V) -> Setter where V.Datatype == Int64 { + return column <- column % value +} + +public func <<=(column: Expression, value: Expression) -> Setter where V.Datatype == Int64 { + return column <- column << value +} +public func <<=(column: Expression, value: V) -> Setter where V.Datatype == Int64 { + return column <- column << value +} +public func <<=(column: Expression, value: Expression) -> Setter where V.Datatype == Int64 { + return column <- column << value +} +public func <<=(column: Expression, value: Expression) -> Setter where V.Datatype == Int64 { + return column <- column << value +} +public func <<=(column: Expression, value: V) -> Setter where V.Datatype == Int64 { + return column <- column << value +} + +public func >>=(column: Expression, value: Expression) -> Setter where V.Datatype == Int64 { + return column <- column >> value +} +public func >>=(column: Expression, value: V) -> Setter where V.Datatype == Int64 { + return column <- column >> value +} +public func >>=(column: Expression, value: Expression) -> Setter where V.Datatype == Int64 { + return column <- column >> value +} +public func >>=(column: Expression, value: Expression) -> Setter where V.Datatype == Int64 { + return column <- column >> value +} +public func >>=(column: Expression, value: V) -> Setter where V.Datatype == Int64 { + return column <- column >> value +} + +public func &=(column: Expression, value: Expression) -> Setter where V.Datatype == Int64 { + return column <- column & value +} +public func &=(column: Expression, value: V) -> Setter where V.Datatype == Int64 { + return column <- column & value +} +public func &=(column: Expression, value: Expression) -> Setter where V.Datatype == Int64 { + return column <- column & value +} +public func &=(column: Expression, value: Expression) -> Setter where V.Datatype == Int64 { + return column <- column & value +} +public func &=(column: Expression, value: V) -> Setter where V.Datatype == Int64 { + return column <- column & value +} + +public func |=(column: Expression, value: Expression) -> Setter where V.Datatype == Int64 { + return column <- column | value +} +public func |=(column: Expression, value: V) -> Setter where V.Datatype == Int64 { + return column <- column | value +} +public func |=(column: Expression, value: Expression) -> Setter where V.Datatype == Int64 { + return column <- column | value +} +public func |=(column: Expression, value: Expression) -> Setter where V.Datatype == Int64 { + return column <- column | value +} +public func |=(column: Expression, value: V) -> Setter where V.Datatype == Int64 { + return column <- column | value +} + +public func ^=(column: Expression, value: Expression) -> Setter where V.Datatype == Int64 { + return column <- column ^ value +} +public func ^=(column: Expression, value: V) -> Setter where V.Datatype == Int64 { + return column <- column ^ value +} +public func ^=(column: Expression, value: Expression) -> Setter where V.Datatype == Int64 { + return column <- column ^ value +} +public func ^=(column: Expression, value: Expression) -> Setter where V.Datatype == Int64 { + return column <- column ^ value +} +public func ^=(column: Expression, value: V) -> Setter where V.Datatype == Int64 { + return column <- column ^ value +} + +public postfix func ++(column: Expression) -> Setter where V.Datatype == Int64 { + return Expression(column) += 1 +} +public postfix func ++(column: Expression) -> Setter where V.Datatype == Int64 { + return Expression(column) += 1 +} + +public postfix func --(column: Expression) -> Setter where V.Datatype == Int64 { + return Expression(column) -= 1 +} +public postfix func --(column: Expression) -> Setter where V.Datatype == Int64 { + return Expression(column) -= 1 +} diff --git a/Carthage/Checkouts/SQLite.swift/Sources/SQLiteObjc/SQLite-Bridging.m b/Carthage/Checkouts/SQLite.swift/Sources/SQLiteObjc/SQLite-Bridging.m new file mode 100644 index 0000000..e00a731 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Sources/SQLiteObjc/SQLite-Bridging.m @@ -0,0 +1,138 @@ +// +// SQLite.swift +// https://github.com/stephencelis/SQLite.swift +// Copyright © 2014-2015 Stephen Celis. +// +// 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. +// + +#import "SQLite-Bridging.h" +#import "fts3_tokenizer.h" + +#pragma mark - FTS + +typedef struct __SQLiteTokenizer { + sqlite3_tokenizer base; + __unsafe_unretained _SQLiteTokenizerNextCallback callback; +} __SQLiteTokenizer; + +typedef struct __SQLiteTokenizerCursor { + void * base; + const char * input; + int inputOffset; + int inputLength; + int idx; +} __SQLiteTokenizerCursor; + +static NSMutableDictionary * __SQLiteTokenizerMap; + +static int __SQLiteTokenizerCreate(int argc, const char * const * argv, sqlite3_tokenizer ** ppTokenizer) { + __SQLiteTokenizer * tokenizer = (__SQLiteTokenizer *)sqlite3_malloc(sizeof(__SQLiteTokenizer)); + if (!tokenizer) { + return SQLITE_NOMEM; + } + memset(tokenizer, 0, sizeof(* tokenizer)); + + NSString * key = [NSString stringWithUTF8String:argv[0]]; + tokenizer->callback = [__SQLiteTokenizerMap objectForKey:key]; + if (!tokenizer->callback) { + return SQLITE_ERROR; + } + + *ppTokenizer = &tokenizer->base; + return SQLITE_OK; +} + +static int __SQLiteTokenizerDestroy(sqlite3_tokenizer * pTokenizer) { + sqlite3_free(pTokenizer); + return SQLITE_OK; +} + +static int __SQLiteTokenizerOpen(sqlite3_tokenizer * pTokenizer, const char * pInput, int nBytes, sqlite3_tokenizer_cursor ** ppCursor) { + __SQLiteTokenizerCursor * cursor = (__SQLiteTokenizerCursor *)sqlite3_malloc(sizeof(__SQLiteTokenizerCursor)); + if (!cursor) { + return SQLITE_NOMEM; + } + + cursor->input = pInput; + cursor->inputOffset = 0; + cursor->inputLength = 0; + cursor->idx = 0; + + *ppCursor = (sqlite3_tokenizer_cursor *)cursor; + return SQLITE_OK; +} + +static int __SQLiteTokenizerClose(sqlite3_tokenizer_cursor * pCursor) { + sqlite3_free(pCursor); + return SQLITE_OK; +} + +static int __SQLiteTokenizerNext(sqlite3_tokenizer_cursor * pCursor, const char ** ppToken, int * pnBytes, int * piStartOffset, int * piEndOffset, int * piPosition) { + __SQLiteTokenizerCursor * cursor = (__SQLiteTokenizerCursor *)pCursor; + __SQLiteTokenizer * tokenizer = (__SQLiteTokenizer *)cursor->base; + + cursor->inputOffset += cursor->inputLength; + const char * input = cursor->input + cursor->inputOffset; + const char * token = [tokenizer->callback(input, &cursor->inputOffset, &cursor->inputLength) cStringUsingEncoding:NSUTF8StringEncoding]; + if (!token) { + return SQLITE_DONE; + } + + *ppToken = token; + *pnBytes = (int)strlen(token); + *piStartOffset = cursor->inputOffset; + *piEndOffset = cursor->inputOffset + cursor->inputLength; + *piPosition = cursor->idx++; + return SQLITE_OK; +} + +static const sqlite3_tokenizer_module __SQLiteTokenizerModule = { + 0, + __SQLiteTokenizerCreate, + __SQLiteTokenizerDestroy, + __SQLiteTokenizerOpen, + __SQLiteTokenizerClose, + __SQLiteTokenizerNext +}; + +int _SQLiteRegisterTokenizer(sqlite3 *db, const char * moduleName, const char * submoduleName, _SQLiteTokenizerNextCallback callback) { + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + __SQLiteTokenizerMap = [NSMutableDictionary new]; + }); + + sqlite3_stmt * stmt; + int status = sqlite3_prepare_v2(db, "SELECT fts3_tokenizer(?, ?)", -1, &stmt, 0); + if (status != SQLITE_OK ){ + return status; + } + const sqlite3_tokenizer_module * pModule = &__SQLiteTokenizerModule; + sqlite3_bind_text(stmt, 1, moduleName, -1, SQLITE_STATIC); + sqlite3_bind_blob(stmt, 2, &pModule, sizeof(pModule), SQLITE_STATIC); + sqlite3_step(stmt); + status = sqlite3_finalize(stmt); + if (status != SQLITE_OK ){ + return status; + } + + [__SQLiteTokenizerMap setObject:[callback copy] forKey:[NSString stringWithUTF8String:submoduleName]]; + + return SQLITE_OK; +} diff --git a/Carthage/Checkouts/SQLite.swift/Sources/SQLiteObjc/fts3_tokenizer.h b/Carthage/Checkouts/SQLite.swift/Sources/SQLiteObjc/fts3_tokenizer.h new file mode 100644 index 0000000..d8a1e44 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Sources/SQLiteObjc/fts3_tokenizer.h @@ -0,0 +1,161 @@ +/* +** 2006 July 10 +** +** The author disclaims copyright to this source code. +** +************************************************************************* +** Defines the interface to tokenizers used by fulltext-search. There +** are three basic components: +** +** sqlite3_tokenizer_module is a singleton defining the tokenizer +** interface functions. This is essentially the class structure for +** tokenizers. +** +** sqlite3_tokenizer is used to define a particular tokenizer, perhaps +** including customization information defined at creation time. +** +** sqlite3_tokenizer_cursor is generated by a tokenizer to generate +** tokens from a particular input. +*/ +#ifndef _FTS3_TOKENIZER_H_ +#define _FTS3_TOKENIZER_H_ + +/* TODO(shess) Only used for SQLITE_OK and SQLITE_DONE at this time. +** If tokenizers are to be allowed to call sqlite3_*() functions, then +** we will need a way to register the API consistently. +*/ +#import "sqlite3.h" + +/* +** Structures used by the tokenizer interface. When a new tokenizer +** implementation is registered, the caller provides a pointer to +** an sqlite3_tokenizer_module containing pointers to the callback +** functions that make up an implementation. +** +** When an fts3 table is created, it passes any arguments passed to +** the tokenizer clause of the CREATE VIRTUAL TABLE statement to the +** sqlite3_tokenizer_module.xCreate() function of the requested tokenizer +** implementation. The xCreate() function in turn returns an +** sqlite3_tokenizer structure representing the specific tokenizer to +** be used for the fts3 table (customized by the tokenizer clause arguments). +** +** To tokenize an input buffer, the sqlite3_tokenizer_module.xOpen() +** method is called. It returns an sqlite3_tokenizer_cursor object +** that may be used to tokenize a specific input buffer based on +** the tokenization rules supplied by a specific sqlite3_tokenizer +** object. +*/ +typedef struct sqlite3_tokenizer_module sqlite3_tokenizer_module; +typedef struct sqlite3_tokenizer sqlite3_tokenizer; +typedef struct sqlite3_tokenizer_cursor sqlite3_tokenizer_cursor; + +struct sqlite3_tokenizer_module { + + /* + ** Structure version. Should always be set to 0 or 1. + */ + int iVersion; + + /* + ** Create a new tokenizer. The values in the argv[] array are the + ** arguments passed to the "tokenizer" clause of the CREATE VIRTUAL + ** TABLE statement that created the fts3 table. For example, if + ** the following SQL is executed: + ** + ** CREATE .. USING fts3( ... , tokenizer arg1 arg2) + ** + ** then argc is set to 2, and the argv[] array contains pointers + ** to the strings "arg1" and "arg2". + ** + ** This method should return either SQLITE_OK (0), or an SQLite error + ** code. If SQLITE_OK is returned, then *ppTokenizer should be set + ** to point at the newly created tokenizer structure. The generic + ** sqlite3_tokenizer.pModule variable should not be initialized by + ** this callback. The caller will do so. + */ + int (*xCreate)( + int argc, /* Size of argv array */ + const char *const*argv, /* Tokenizer argument strings */ + sqlite3_tokenizer **ppTokenizer /* OUT: Created tokenizer */ + ); + + /* + ** Destroy an existing tokenizer. The fts3 module calls this method + ** exactly once for each successful call to xCreate(). + */ + int (*xDestroy)(sqlite3_tokenizer *pTokenizer); + + /* + ** Create a tokenizer cursor to tokenize an input buffer. The caller + ** is responsible for ensuring that the input buffer remains valid + ** until the cursor is closed (using the xClose() method). + */ + int (*xOpen)( + sqlite3_tokenizer *pTokenizer, /* Tokenizer object */ + const char *pInput, int nBytes, /* Input buffer */ + sqlite3_tokenizer_cursor **ppCursor /* OUT: Created tokenizer cursor */ + ); + + /* + ** Destroy an existing tokenizer cursor. The fts3 module calls this + ** method exactly once for each successful call to xOpen(). + */ + int (*xClose)(sqlite3_tokenizer_cursor *pCursor); + + /* + ** Retrieve the next token from the tokenizer cursor pCursor. This + ** method should either return SQLITE_OK and set the values of the + ** "OUT" variables identified below, or SQLITE_DONE to indicate that + ** the end of the buffer has been reached, or an SQLite error code. + ** + ** *ppToken should be set to point at a buffer containing the + ** normalized version of the token (i.e. after any case-folding and/or + ** stemming has been performed). *pnBytes should be set to the length + ** of this buffer in bytes. The input text that generated the token is + ** identified by the byte offsets returned in *piStartOffset and + ** *piEndOffset. *piStartOffset should be set to the index of the first + ** byte of the token in the input buffer. *piEndOffset should be set + ** to the index of the first byte just past the end of the token in + ** the input buffer. + ** + ** The buffer *ppToken is set to point at is managed by the tokenizer + ** implementation. It is only required to be valid until the next call + ** to xNext() or xClose(). + */ + /* TODO(shess) current implementation requires pInput to be + ** nul-terminated. This should either be fixed, or pInput/nBytes + ** should be converted to zInput. + */ + int (*xNext)( + sqlite3_tokenizer_cursor *pCursor, /* Tokenizer cursor */ + const char **ppToken, int *pnBytes, /* OUT: Normalized text for token */ + int *piStartOffset, /* OUT: Byte offset of token in input buffer */ + int *piEndOffset, /* OUT: Byte offset of end of token in input buffer */ + int *piPosition /* OUT: Number of tokens returned before this one */ + ); + + /*********************************************************************** + ** Methods below this point are only available if iVersion>=1. + */ + + /* + ** Configure the language id of a tokenizer cursor. + */ + int (*xLanguageid)(sqlite3_tokenizer_cursor *pCsr, int iLangid); +}; + +struct sqlite3_tokenizer { + const sqlite3_tokenizer_module *pModule; /* The module for this tokenizer */ + /* Tokenizer implementations will typically add additional fields */ +}; + +struct sqlite3_tokenizer_cursor { + sqlite3_tokenizer *pTokenizer; /* Tokenizer for this cursor. */ + /* Tokenizer implementations will typically add additional fields */ +}; + +int fts3_global_term_cnt(int iTerm, int iCol); +int fts3_term_cnt(int iTerm, int iCol); + + +#endif /* _FTS3_TOKENIZER_H_ */ diff --git a/Carthage/Checkouts/SQLite.swift/Sources/SQLiteObjc/include/SQLite-Bridging.h b/Carthage/Checkouts/SQLite.swift/Sources/SQLiteObjc/include/SQLite-Bridging.h new file mode 100644 index 0000000..5b35659 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Sources/SQLiteObjc/include/SQLite-Bridging.h @@ -0,0 +1,33 @@ +// +// SQLite.swift +// https://github.com/stephencelis/SQLite.swift +// Copyright © 2014-2015 Stephen Celis. +// +// 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. +// + +@import Foundation; + +#import "sqlite3.h" + +NS_ASSUME_NONNULL_BEGIN +typedef NSString * _Nullable (^_SQLiteTokenizerNextCallback)(const char *input, int *inputOffset, int *inputLength); +int _SQLiteRegisterTokenizer(sqlite3 *db, const char *module, const char *tokenizer, _Nullable _SQLiteTokenizerNextCallback callback); +NS_ASSUME_NONNULL_END + diff --git a/Carthage/Checkouts/SQLite.swift/Tests/Carthage/.gitignore b/Carthage/Checkouts/SQLite.swift/Tests/Carthage/.gitignore new file mode 100644 index 0000000..2d43454 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Tests/Carthage/.gitignore @@ -0,0 +1,3 @@ +Carthage/ +Cartfile +Cartfile.resolved diff --git a/Carthage/Checkouts/SQLite.swift/Tests/Carthage/Makefile b/Carthage/Checkouts/SQLite.swift/Tests/Carthage/Makefile new file mode 100644 index 0000000..f28eb25 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Tests/Carthage/Makefile @@ -0,0 +1,16 @@ +CARTHAGE := /usr/local/bin/carthage +CARTHAGE_PLATFORM := iOS +CARTHAGE_CONFIGURATION := Release +CARTHAGE_DIR := Carthage +CARTHAGE_ARGS := --no-use-binaries +CARTHAGE_TOOLCHAIN := com.apple.dt.toolchain.Swift_3_0 +CARTHAGE_CMDLINE := --configuration $(CARTHAGE_CONFIGURATION) --platform $(CARTHAGE_PLATFORM) --toolchain $(CARTHAGE_TOOLCHAIN) $(CARTHAGE_ARGS) + +test: $(CARTHAGE) Cartfile + $< bootstrap $(CARTHAGE_CMDLINE) + +Cartfile: + echo 'git "$(TRAVIS_BUILD_DIR)" "HEAD"' > $@ + +clean: + @rm -f Cartfile Cartfile.resolved diff --git a/Carthage/Checkouts/SQLite.swift/Tests/CocoaPods/.gitignore b/Carthage/Checkouts/SQLite.swift/Tests/CocoaPods/.gitignore new file mode 100644 index 0000000..4cf24de --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Tests/CocoaPods/.gitignore @@ -0,0 +1 @@ +gems/ diff --git a/Carthage/Checkouts/SQLite.swift/Tests/CocoaPods/Gemfile b/Carthage/Checkouts/SQLite.swift/Tests/CocoaPods/Gemfile new file mode 100644 index 0000000..04f0155 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Tests/CocoaPods/Gemfile @@ -0,0 +1,4 @@ +source 'https://rubygems.org' + +gem 'cocoapods', '~> 1.3.1' +gem 'minitest' diff --git a/Carthage/Checkouts/SQLite.swift/Tests/CocoaPods/Gemfile.lock b/Carthage/Checkouts/SQLite.swift/Tests/CocoaPods/Gemfile.lock new file mode 100644 index 0000000..47a2db5 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Tests/CocoaPods/Gemfile.lock @@ -0,0 +1,73 @@ +GEM + remote: https://rubygems.org/ + specs: + CFPropertyList (2.3.5) + activesupport (4.2.9) + i18n (~> 0.7) + minitest (~> 5.1) + thread_safe (~> 0.3, >= 0.3.4) + tzinfo (~> 1.1) + claide (1.0.2) + cocoapods (1.3.1) + activesupport (>= 4.0.2, < 5) + claide (>= 1.0.2, < 2.0) + cocoapods-core (= 1.3.1) + cocoapods-deintegrate (>= 1.0.1, < 2.0) + cocoapods-downloader (>= 1.1.3, < 2.0) + cocoapods-plugins (>= 1.0.0, < 2.0) + cocoapods-search (>= 1.0.0, < 2.0) + cocoapods-stats (>= 1.0.0, < 2.0) + cocoapods-trunk (>= 1.2.0, < 2.0) + cocoapods-try (>= 1.1.0, < 2.0) + colored2 (~> 3.1) + escape (~> 0.0.4) + fourflusher (~> 2.0.1) + gh_inspector (~> 1.0) + molinillo (~> 0.5.7) + nap (~> 1.0) + ruby-macho (~> 1.1) + xcodeproj (>= 1.5.1, < 2.0) + cocoapods-core (1.3.1) + activesupport (>= 4.0.2, < 6) + fuzzy_match (~> 2.0.4) + nap (~> 1.0) + cocoapods-deintegrate (1.0.1) + cocoapods-downloader (1.1.3) + cocoapods-plugins (1.0.0) + nap + cocoapods-search (1.0.0) + cocoapods-stats (1.0.0) + cocoapods-trunk (1.2.0) + nap (>= 0.8, < 2.0) + netrc (= 0.7.8) + cocoapods-try (1.1.0) + colored2 (3.1.2) + escape (0.0.4) + fourflusher (2.0.1) + fuzzy_match (2.0.4) + gh_inspector (1.0.3) + i18n (0.8.6) + minitest (5.10.1) + molinillo (0.5.7) + nanaimo (0.2.3) + nap (1.1.0) + netrc (0.7.8) + ruby-macho (1.1.0) + thread_safe (0.3.6) + tzinfo (1.2.3) + thread_safe (~> 0.1) + xcodeproj (1.5.1) + CFPropertyList (~> 2.3.3) + claide (>= 1.0.2, < 2.0) + colored2 (~> 3.1) + nanaimo (~> 0.2.3) + +PLATFORMS + ruby + +DEPENDENCIES + cocoapods (~> 1.3.1) + minitest + +BUNDLED WITH + 1.13.6 diff --git a/Carthage/Checkouts/SQLite.swift/Tests/CocoaPods/Makefile b/Carthage/Checkouts/SQLite.swift/Tests/CocoaPods/Makefile new file mode 100644 index 0000000..26163fd --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Tests/CocoaPods/Makefile @@ -0,0 +1,13 @@ +test: install repo_update + @set -e; \ + for test in *_test.rb; do \ + bundle exec ./$$test; \ + done + +repo_update: + @bundle exec pod repo update --silent + +install: + @bundle install --path gems + +.PHONY: test install diff --git a/Carthage/Checkouts/SQLite.swift/Tests/CocoaPods/integration_test.rb b/Carthage/Checkouts/SQLite.swift/Tests/CocoaPods/integration_test.rb new file mode 100755 index 0000000..9792b57 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Tests/CocoaPods/integration_test.rb @@ -0,0 +1,43 @@ +#!/usr/bin/env ruby + +require 'cocoapods' +require 'cocoapods/validator' +require 'minitest/autorun' + +class IntegrationTest < Minitest::Test + + def test_validate_project + assert validator.validate, "validation failed: #{validator.failure_reason}" + end + + private + + def validator + @validator ||= CustomValidator.new(podspec, ['https://github.com/CocoaPods/Specs.git']).tap do |validator| + validator.config.verbose = true + validator.no_clean = true + validator.use_frameworks = true + validator.fail_fast = true + validator.local = true + validator.allow_warnings = true + subspec = ENV['VALIDATOR_SUBSPEC'] + if subspec == 'none' + validator.no_subspecs = true + else + validator.only_subspec = subspec + end + end + end + + def podspec + File.expand_path(File.dirname(__FILE__) + '/../../SQLite.swift.podspec') + end + + + class CustomValidator < Pod::Validator + def test_pod + # https://github.com/CocoaPods/CocoaPods/issues/7009 + super unless consumer.platform_name == :watchos + end + end +end diff --git a/Carthage/Checkouts/SQLite.swift/Tests/LinuxMain.swift b/Carthage/Checkouts/SQLite.swift/Tests/LinuxMain.swift new file mode 100644 index 0000000..59796fd --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Tests/LinuxMain.swift @@ -0,0 +1,6 @@ +import XCTest +@testable import SQLiteTests + +XCTMain([ +testCase([ +])]) diff --git a/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/AggregateFunctionsTests.swift b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/AggregateFunctionsTests.swift new file mode 100644 index 0000000..6b583cc --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/AggregateFunctionsTests.swift @@ -0,0 +1,68 @@ +import XCTest +import SQLite + +class AggregateFunctionsTests : XCTestCase { + + func test_distinct_prependsExpressionsWithDistinctKeyword() { + AssertSQL("DISTINCT \"int\"", int.distinct) + AssertSQL("DISTINCT \"intOptional\"", intOptional.distinct) + AssertSQL("DISTINCT \"double\"", double.distinct) + AssertSQL("DISTINCT \"doubleOptional\"", doubleOptional.distinct) + AssertSQL("DISTINCT \"string\"", string.distinct) + AssertSQL("DISTINCT \"stringOptional\"", stringOptional.distinct) + } + + func test_count_wrapsOptionalExpressionsWithCountFunction() { + AssertSQL("count(\"intOptional\")", intOptional.count) + AssertSQL("count(\"doubleOptional\")", doubleOptional.count) + AssertSQL("count(\"stringOptional\")", stringOptional.count) + } + + func test_max_wrapsComparableExpressionsWithMaxFunction() { + AssertSQL("max(\"int\")", int.max) + AssertSQL("max(\"intOptional\")", intOptional.max) + AssertSQL("max(\"double\")", double.max) + AssertSQL("max(\"doubleOptional\")", doubleOptional.max) + AssertSQL("max(\"string\")", string.max) + AssertSQL("max(\"stringOptional\")", stringOptional.max) + AssertSQL("max(\"date\")", date.max) + AssertSQL("max(\"dateOptional\")", dateOptional.max) + } + + func test_min_wrapsComparableExpressionsWithMinFunction() { + AssertSQL("min(\"int\")", int.min) + AssertSQL("min(\"intOptional\")", intOptional.min) + AssertSQL("min(\"double\")", double.min) + AssertSQL("min(\"doubleOptional\")", doubleOptional.min) + AssertSQL("min(\"string\")", string.min) + AssertSQL("min(\"stringOptional\")", stringOptional.min) + AssertSQL("min(\"date\")", date.min) + AssertSQL("min(\"dateOptional\")", dateOptional.min) + } + + func test_average_wrapsNumericExpressionsWithAvgFunction() { + AssertSQL("avg(\"int\")", int.average) + AssertSQL("avg(\"intOptional\")", intOptional.average) + AssertSQL("avg(\"double\")", double.average) + AssertSQL("avg(\"doubleOptional\")", doubleOptional.average) + } + + func test_sum_wrapsNumericExpressionsWithSumFunction() { + AssertSQL("sum(\"int\")", int.sum) + AssertSQL("sum(\"intOptional\")", intOptional.sum) + AssertSQL("sum(\"double\")", double.sum) + AssertSQL("sum(\"doubleOptional\")", doubleOptional.sum) + } + + func test_total_wrapsNumericExpressionsWithTotalFunction() { + AssertSQL("total(\"int\")", int.total) + AssertSQL("total(\"intOptional\")", intOptional.total) + AssertSQL("total(\"double\")", double.total) + AssertSQL("total(\"doubleOptional\")", doubleOptional.total) + } + + func test_count_withStar_wrapsStarWithCountFunction() { + AssertSQL("count(*)", count(*)) + } + +} diff --git a/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/BlobTests.swift b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/BlobTests.swift new file mode 100644 index 0000000..fbcca9b --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/BlobTests.swift @@ -0,0 +1,23 @@ +import XCTest +import SQLite + +class BlobTests : XCTestCase { + + func test_toHex() { + let blob = Blob(bytes: [0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100, 150, 250, 255]) + + XCTAssertEqual(blob.toHex(), "000a141e28323c46505a6496faff") + } + + func test_init_array() { + let blob = Blob(bytes: [42, 42, 42]) + XCTAssertEqual(blob.bytes, [42, 42, 42]) + } + + func test_init_unsafeRawPointer() { + let pointer = UnsafeMutablePointer.allocate(capacity: 3) + pointer.initialize(to: 42, count: 3) + let blob = Blob(bytes: pointer, length: 3) + XCTAssertEqual(blob.bytes, [42, 42, 42]) + } +} diff --git a/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/CipherTests.swift b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/CipherTests.swift new file mode 100644 index 0000000..3ee0b13 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/CipherTests.swift @@ -0,0 +1,98 @@ +#if SQLITE_SWIFT_SQLCIPHER +import XCTest +import SQLite +import SQLCipher + +class CipherTests: XCTestCase { + + let db1 = try! Connection() + let db2 = try! Connection() + + override func setUp() { + // db + + try! db1.key("hello") + + try! db1.run("CREATE TABLE foo (bar TEXT)") + try! db1.run("INSERT INTO foo (bar) VALUES ('world')") + + // db2 + let key2 = keyData() + try! db2.key(Blob(bytes: key2.bytes, length: key2.length)) + + try! db2.run("CREATE TABLE foo (bar TEXT)") + try! db2.run("INSERT INTO foo (bar) VALUES ('world')") + + super.setUp() + } + + func test_key() { + XCTAssertEqual(1, try! db1.scalar("SELECT count(*) FROM foo") as? Int64) + } + + func test_key_blob_literal() { + let db = try! Connection() + try! db.key("x'2DD29CA851E7B56E4697B0E1F08507293D761A05CE4D1B628663F411A8086D99'") + } + + func test_rekey() { + try! db1.rekey("goodbye") + XCTAssertEqual(1, try! db1.scalar("SELECT count(*) FROM foo") as? Int64) + } + + func test_data_key() { + XCTAssertEqual(1, try! db2.scalar("SELECT count(*) FROM foo") as? Int64) + } + + func test_data_rekey() { + let newKey = keyData() + try! db2.rekey(Blob(bytes: newKey.bytes, length: newKey.length)) + XCTAssertEqual(1, try! db2.scalar("SELECT count(*) FROM foo") as? Int64) + } + + func test_keyFailure() { + let path = "\(NSTemporaryDirectory())/db.sqlite3" + _ = try? FileManager.default.removeItem(atPath: path) + + let connA = try! Connection(path) + defer { try! FileManager.default.removeItem(atPath: path) } + + try! connA.key("hello") + try! connA.run("CREATE TABLE foo (bar TEXT)") + + let connB = try! Connection(path, readonly: true) + + do { + try connB.key("world") + XCTFail("expected exception") + } catch Result.error(_, let code, _) { + XCTAssertEqual(SQLITE_NOTADB, code) + } catch { + XCTFail("unexpected error: \(error)") + } + } + + func test_open_db_encrypted_with_sqlcipher() { + // $ sqlcipher SQLiteTests/fixtures/encrypted.sqlite + // sqlite> pragma key = 'sqlcipher-test'; + // sqlite> CREATE TABLE foo (bar TEXT); + // sqlite> INSERT INTO foo (bar) VALUES ('world'); + let encryptedFile = fixture("encrypted", withExtension: "sqlite") + + try! FileManager.default.setAttributes([FileAttributeKey.immutable : 1], ofItemAtPath: encryptedFile) + XCTAssertFalse(FileManager.default.isWritableFile(atPath: encryptedFile)) + + let conn = try! Connection(encryptedFile) + try! conn.key("sqlcipher-test") + XCTAssertEqual(1, try! conn.scalar("SELECT count(*) FROM foo") as? Int64) + } + + private func keyData(length: Int = 64) -> NSMutableData { + let keyData = NSMutableData(length: length)! + let result = SecRandomCopyBytes(kSecRandomDefault, length, + keyData.mutableBytes.assumingMemoryBound(to: UInt8.self)) + XCTAssertEqual(0, result) + return keyData + } +} +#endif diff --git a/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/ConnectionTests.swift b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/ConnectionTests.swift new file mode 100644 index 0000000..03f0071 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/ConnectionTests.swift @@ -0,0 +1,447 @@ +import XCTest +import Foundation +import Dispatch +@testable import SQLite + +#if SQLITE_SWIFT_STANDALONE +import sqlite3 +#elseif SQLITE_SWIFT_SQLCIPHER +import SQLCipher +#elseif os(Linux) +import CSQLite +#else +import SQLite3 +#endif + +class ConnectionTests : SQLiteTestCase { + + override func setUp() { + super.setUp() + + CreateUsersTable() + } + + func test_init_withInMemory_returnsInMemoryConnection() { + let db = try! Connection(.inMemory) + XCTAssertEqual("", db.description) + } + + func test_init_returnsInMemoryByDefault() { + let db = try! Connection() + XCTAssertEqual("", db.description) + } + + func test_init_withTemporary_returnsTemporaryConnection() { + let db = try! Connection(.temporary) + XCTAssertEqual("", db.description) + } + + func test_init_withURI_returnsURIConnection() { + let db = try! Connection(.uri("\(NSTemporaryDirectory())/SQLite.swift Tests.sqlite3")) + XCTAssertEqual("\(NSTemporaryDirectory())/SQLite.swift Tests.sqlite3", db.description) + } + + func test_init_withString_returnsURIConnection() { + let db = try! Connection("\(NSTemporaryDirectory())/SQLite.swift Tests.sqlite3") + XCTAssertEqual("\(NSTemporaryDirectory())/SQLite.swift Tests.sqlite3", db.description) + } + + func test_readonly_returnsFalseOnReadWriteConnections() { + XCTAssertFalse(db.readonly) + } + + func test_readonly_returnsTrueOnReadOnlyConnections() { + let db = try! Connection(readonly: true) + XCTAssertTrue(db.readonly) + } + + func test_changes_returnsZeroOnNewConnections() { + XCTAssertEqual(0, db.changes) + } + + func test_lastInsertRowid_returnsLastIdAfterInserts() { + try! InsertUser("alice") + XCTAssertEqual(1, db.lastInsertRowid) + } + + func test_lastInsertRowid_doesNotResetAfterError() { + XCTAssert(db.lastInsertRowid == 0) + try! InsertUser("alice") + XCTAssertEqual(1, db.lastInsertRowid) + XCTAssertThrowsError( + try db.run("INSERT INTO \"users\" (email, age, admin) values ('invalid@example.com', 12, 'invalid')") + ) { error in + if case SQLite.Result.error(_, let code, _) = error { + XCTAssertEqual(SQLITE_CONSTRAINT, code) + } else { + XCTFail("expected error") + } + } + XCTAssertEqual(1, db.lastInsertRowid) + } + + func test_changes_returnsNumberOfChanges() { + try! InsertUser("alice") + XCTAssertEqual(1, db.changes) + try! InsertUser("betsy") + XCTAssertEqual(1, db.changes) + } + + func test_totalChanges_returnsTotalNumberOfChanges() { + XCTAssertEqual(0, db.totalChanges) + try! InsertUser("alice") + XCTAssertEqual(1, db.totalChanges) + try! InsertUser("betsy") + XCTAssertEqual(2, db.totalChanges) + } + + func test_prepare_preparesAndReturnsStatements() { + _ = try! db.prepare("SELECT * FROM users WHERE admin = 0") + _ = try! db.prepare("SELECT * FROM users WHERE admin = ?", 0) + _ = try! db.prepare("SELECT * FROM users WHERE admin = ?", [0]) + _ = try! db.prepare("SELECT * FROM users WHERE admin = $admin", ["$admin": 0]) + } + + func test_run_preparesRunsAndReturnsStatements() { + try! db.run("SELECT * FROM users WHERE admin = 0") + try! db.run("SELECT * FROM users WHERE admin = ?", 0) + try! db.run("SELECT * FROM users WHERE admin = ?", [0]) + try! db.run("SELECT * FROM users WHERE admin = $admin", ["$admin": 0]) + AssertSQL("SELECT * FROM users WHERE admin = 0", 4) + } + + func test_scalar_preparesRunsAndReturnsScalarValues() { + XCTAssertEqual(0, try! db.scalar("SELECT count(*) FROM users WHERE admin = 0") as? Int64) + XCTAssertEqual(0, try! db.scalar("SELECT count(*) FROM users WHERE admin = ?", 0) as? Int64) + XCTAssertEqual(0, try! db.scalar("SELECT count(*) FROM users WHERE admin = ?", [0]) as? Int64) + XCTAssertEqual(0, try! db.scalar("SELECT count(*) FROM users WHERE admin = $admin", ["$admin": 0]) as? Int64) + AssertSQL("SELECT count(*) FROM users WHERE admin = 0", 4) + } + + func test_execute_comment() { + try! db.run("-- this is a comment\nSELECT 1") + AssertSQL("-- this is a comment", 0) + AssertSQL("SELECT 1", 0) + } + + func test_transaction_executesBeginDeferred() { + try! db.transaction(.deferred) {} + + AssertSQL("BEGIN DEFERRED TRANSACTION") + } + + func test_transaction_executesBeginImmediate() { + try! db.transaction(.immediate) {} + + AssertSQL("BEGIN IMMEDIATE TRANSACTION") + } + + func test_transaction_executesBeginExclusive() { + try! db.transaction(.exclusive) {} + + AssertSQL("BEGIN EXCLUSIVE TRANSACTION") + } + + func test_transaction_beginsAndCommitsTransactions() { + let stmt = try! db.prepare("INSERT INTO users (email) VALUES (?)", "alice@example.com") + + try! db.transaction { + try stmt.run() + } + + AssertSQL("BEGIN DEFERRED TRANSACTION") + AssertSQL("INSERT INTO users (email) VALUES ('alice@example.com')") + AssertSQL("COMMIT TRANSACTION") + AssertSQL("ROLLBACK TRANSACTION", 0) + } + + func test_transaction_rollsBackTransactionsIfCommitsFail() { + let sqliteVersion = String(describing: try! db.scalar("SELECT sqlite_version()")!) + .split(separator: ".").flatMap { Int($0) } + // PRAGMA defer_foreign_keys only supported in SQLite >= 3.8.0 + guard sqliteVersion[0] == 3 && sqliteVersion[1] >= 8 else { + NSLog("skipping test for SQLite version \(sqliteVersion)") + return + } + // This test case needs to emulate an environment where the individual statements succeed, but committing the + // transaction fails. Using deferred foreign keys is one option to achieve this. + try! db.execute("PRAGMA foreign_keys = ON;") + try! db.execute("PRAGMA defer_foreign_keys = ON;") + let stmt = try! db.prepare("INSERT INTO users (email, manager_id) VALUES (?, ?)", "alice@example.com", 100) + + do { + try db.transaction { + try stmt.run() + } + XCTFail("expected error") + } catch let Result.error(_, code, _) { + XCTAssertEqual(SQLITE_CONSTRAINT, code) + } catch let error { + XCTFail("unexpected error: \(error)") + } + + AssertSQL("BEGIN DEFERRED TRANSACTION") + AssertSQL("INSERT INTO users (email, manager_id) VALUES ('alice@example.com', 100)") + AssertSQL("COMMIT TRANSACTION") + AssertSQL("ROLLBACK TRANSACTION") + + // Run another transaction to ensure that a subsequent transaction does not fail with an "cannot start a + // transaction within a transaction" error. + let stmt2 = try! db.prepare("INSERT INTO users (email) VALUES (?)", "alice@example.com") + try! db.transaction { + try stmt2.run() + } + } + + func test_transaction_beginsAndRollsTransactionsBack() { + let stmt = try! db.prepare("INSERT INTO users (email) VALUES (?)", "alice@example.com") + + do { + try db.transaction { + try stmt.run() + try stmt.run() + } + } catch { + } + + AssertSQL("BEGIN DEFERRED TRANSACTION") + AssertSQL("INSERT INTO users (email) VALUES ('alice@example.com')", 2) + AssertSQL("ROLLBACK TRANSACTION") + AssertSQL("COMMIT TRANSACTION", 0) + } + + func test_savepoint_beginsAndCommitsSavepoints() { + let db:Connection = self.db + + try! db.savepoint("1") { + try db.savepoint("2") { + try db.run("INSERT INTO users (email) VALUES (?)", "alice@example.com") + } + } + + AssertSQL("SAVEPOINT '1'") + AssertSQL("SAVEPOINT '2'") + AssertSQL("INSERT INTO users (email) VALUES ('alice@example.com')") + AssertSQL("RELEASE SAVEPOINT '2'") + AssertSQL("RELEASE SAVEPOINT '1'") + AssertSQL("ROLLBACK TO SAVEPOINT '2'", 0) + AssertSQL("ROLLBACK TO SAVEPOINT '1'", 0) + } + + func test_savepoint_beginsAndRollsSavepointsBack() { + let db:Connection = self.db + let stmt = try! db.prepare("INSERT INTO users (email) VALUES (?)", "alice@example.com") + + do { + try db.savepoint("1") { + try db.savepoint("2") { + try stmt.run() + try stmt.run() + try stmt.run() + } + try db.savepoint("2") { + try stmt.run() + try stmt.run() + try stmt.run() + } + } + } catch { + } + + AssertSQL("SAVEPOINT '1'") + AssertSQL("SAVEPOINT '2'") + AssertSQL("INSERT INTO users (email) VALUES ('alice@example.com')", 2) + AssertSQL("ROLLBACK TO SAVEPOINT '2'") + AssertSQL("ROLLBACK TO SAVEPOINT '1'") + AssertSQL("RELEASE SAVEPOINT '2'", 0) + AssertSQL("RELEASE SAVEPOINT '1'", 0) + } + + func test_updateHook_setsUpdateHook_withInsert() { + async { done in + db.updateHook { operation, db, table, rowid in + XCTAssertEqual(Connection.Operation.insert, operation) + XCTAssertEqual("main", db) + XCTAssertEqual("users", table) + XCTAssertEqual(1, rowid) + done() + } + try! InsertUser("alice") + } + } + + func test_updateHook_setsUpdateHook_withUpdate() { + try! InsertUser("alice") + async { done in + db.updateHook { operation, db, table, rowid in + XCTAssertEqual(Connection.Operation.update, operation) + XCTAssertEqual("main", db) + XCTAssertEqual("users", table) + XCTAssertEqual(1, rowid) + done() + } + try! db.run("UPDATE users SET email = 'alice@example.com'") + } + } + + func test_updateHook_setsUpdateHook_withDelete() { + try! InsertUser("alice") + async { done in + db.updateHook { operation, db, table, rowid in + XCTAssertEqual(Connection.Operation.delete, operation) + XCTAssertEqual("main", db) + XCTAssertEqual("users", table) + XCTAssertEqual(1, rowid) + done() + } + try! db.run("DELETE FROM users WHERE id = 1") + } + } + + func test_commitHook_setsCommitHook() { + async { done in + db.commitHook { + done() + } + try! db.transaction { + try self.InsertUser("alice") + } + XCTAssertEqual(1, try! db.scalar("SELECT count(*) FROM users") as? Int64) + } + } + + func test_rollbackHook_setsRollbackHook() { + async { done in + db.rollbackHook(done) + do { + try db.transaction { + try self.InsertUser("alice") + try self.InsertUser("alice") // throw + } + } catch { + } + XCTAssertEqual(0, try! db.scalar("SELECT count(*) FROM users") as? Int64) + } + } + + func test_commitHook_withRollback_rollsBack() { + async { done in + db.commitHook { + throw NSError(domain: "com.stephencelis.SQLiteTests", code: 1, userInfo: nil) + } + db.rollbackHook(done) + do { + try db.transaction { + try self.InsertUser("alice") + } + } catch { + } + XCTAssertEqual(0, try! db.scalar("SELECT count(*) FROM users") as? Int64) + } + } + + func test_createFunction_withArrayArguments() { + db.createFunction("hello") { $0[0].map { "Hello, \($0)!" } } + + XCTAssertEqual("Hello, world!", try! db.scalar("SELECT hello('world')") as? String) + XCTAssert(try! db.scalar("SELECT hello(NULL)") == nil) + } + + func test_createFunction_createsQuotableFunction() { + db.createFunction("hello world") { $0[0].map { "Hello, \($0)!" } } + + XCTAssertEqual("Hello, world!", try! db.scalar("SELECT \"hello world\"('world')") as? String) + XCTAssert(try! db.scalar("SELECT \"hello world\"(NULL)") == nil) + } + + func test_createCollation_createsCollation() { + try! db.createCollation("NODIACRITIC") { lhs, rhs in + return lhs.compare(rhs, options: .diacriticInsensitive) + } + XCTAssertEqual(1, try! db.scalar("SELECT ? = ? COLLATE NODIACRITIC", "cafe", "café") as? Int64) + } + + func test_createCollation_createsQuotableCollation() { + try! db.createCollation("NO DIACRITIC") { lhs, rhs in + return lhs.compare(rhs, options: .diacriticInsensitive) + } + XCTAssertEqual(1, try! db.scalar("SELECT ? = ? COLLATE \"NO DIACRITIC\"", "cafe", "café") as? Int64) + } + + func test_interrupt_interruptsLongRunningQuery() { + try! InsertUsers("abcdefghijklmnopqrstuvwxyz".characters.map { String($0) }) + db.createFunction("sleep") { args in + usleep(UInt32((args[0] as? Double ?? Double(args[0] as? Int64 ?? 1)) * 1_000_000)) + return nil + } + + let stmt = try! db.prepare("SELECT *, sleep(?) FROM users", 0.1) + try! stmt.run() + + let deadline = DispatchTime.now() + 0.01 + _ = DispatchQueue(label: "queue", qos: .background).asyncAfter(deadline: deadline, execute: db.interrupt) + AssertThrows(try stmt.run()) + } + + func test_concurrent_access_single_connection() { + let conn = try! Connection("\(NSTemporaryDirectory())/\(UUID().uuidString)") + try! conn.execute("DROP TABLE IF EXISTS test; CREATE TABLE test(value);") + try! conn.run("INSERT INTO test(value) VALUES(?)", 0) + let queue = DispatchQueue(label: "Readers", attributes: [.concurrent]) + let nReaders = 5 + var reads = Array(repeating: 0, count: nReaders) + var finished = false + for index in 0.. 500) } + } + } +} + + +class ResultTests : XCTestCase { + let connection = try! Connection(.inMemory) + + func test_init_with_ok_code_returns_nil() { + XCTAssertNil(Result(errorCode: SQLITE_OK, connection: connection, statement: nil) as Result?) + } + + func test_init_with_row_code_returns_nil() { + XCTAssertNil(Result(errorCode: SQLITE_ROW, connection: connection, statement: nil) as Result?) + } + + func test_init_with_done_code_returns_nil() { + XCTAssertNil(Result(errorCode: SQLITE_DONE, connection: connection, statement: nil) as Result?) + } + + func test_init_with_other_code_returns_error() { + if case .some(.error(let message, let code, let statement)) = + Result(errorCode: SQLITE_MISUSE, connection: connection, statement: nil) { + XCTAssertEqual("not an error", message) + XCTAssertEqual(SQLITE_MISUSE, code) + XCTAssertNil(statement) + XCTAssert(self.connection === connection) + } else { + XCTFail() + } + } + + func test_description_contains_error_code() { + XCTAssertEqual("not an error (code: 21)", + Result(errorCode: SQLITE_MISUSE, connection: connection, statement: nil)?.description) + } + + func test_description_contains_statement_and_error_code() { + let statement = try! Statement(connection, "SELECT 1") + XCTAssertEqual("not an error (SELECT 1) (code: 21)", + Result(errorCode: SQLITE_MISUSE, connection: connection, statement: statement)?.description) + } +} diff --git a/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/CoreFunctionsTests.swift b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/CoreFunctionsTests.swift new file mode 100644 index 0000000..e7402de --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/CoreFunctionsTests.swift @@ -0,0 +1,145 @@ +import XCTest +@testable import SQLite + +class CoreFunctionsTests : XCTestCase { + + func test_round_wrapsDoubleExpressionsWithRoundFunction() { + AssertSQL("round(\"double\")", double.round()) + AssertSQL("round(\"doubleOptional\")", doubleOptional.round()) + + AssertSQL("round(\"double\", 1)", double.round(1)) + AssertSQL("round(\"doubleOptional\", 2)", doubleOptional.round(2)) + } + + func test_random_generatesExpressionWithRandomFunction() { + AssertSQL("random()", Expression.random()) + AssertSQL("random()", Expression.random()) + } + + func test_length_wrapsStringExpressionWithLengthFunction() { + AssertSQL("length(\"string\")", string.length) + AssertSQL("length(\"stringOptional\")", stringOptional.length) + } + + func test_lowercaseString_wrapsStringExpressionWithLowerFunction() { + AssertSQL("lower(\"string\")", string.lowercaseString) + AssertSQL("lower(\"stringOptional\")", stringOptional.lowercaseString) + } + + func test_uppercaseString_wrapsStringExpressionWithUpperFunction() { + AssertSQL("upper(\"string\")", string.uppercaseString) + AssertSQL("upper(\"stringOptional\")", stringOptional.uppercaseString) + } + + func test_like_buildsExpressionWithLikeOperator() { + AssertSQL("(\"string\" LIKE 'a%')", string.like("a%")) + AssertSQL("(\"stringOptional\" LIKE 'b%')", stringOptional.like("b%")) + + AssertSQL("(\"string\" LIKE '%\\%' ESCAPE '\\')", string.like("%\\%", escape: "\\")) + AssertSQL("(\"stringOptional\" LIKE '_\\_' ESCAPE '\\')", stringOptional.like("_\\_", escape: "\\")) + + AssertSQL("(\"string\" LIKE \"a\")", string.like(Expression("a"))) + AssertSQL("(\"stringOptional\" LIKE \"a\")", stringOptional.like(Expression("a"))) + + AssertSQL("(\"string\" LIKE \"a\" ESCAPE '\\')", string.like(Expression("a"), escape: "\\")) + AssertSQL("(\"stringOptional\" LIKE \"a\" ESCAPE '\\')", stringOptional.like(Expression("a"), escape: "\\")) + + AssertSQL("('string' LIKE \"a\")", "string".like(Expression("a"))) + AssertSQL("('string' LIKE \"a\" ESCAPE '\\')", "string".like(Expression("a"), escape: "\\")) + } + + func test_glob_buildsExpressionWithGlobOperator() { + AssertSQL("(\"string\" GLOB 'a*')", string.glob("a*")) + AssertSQL("(\"stringOptional\" GLOB 'b*')", stringOptional.glob("b*")) + } + + func test_match_buildsExpressionWithMatchOperator() { + AssertSQL("(\"string\" MATCH 'a*')", string.match("a*")) + AssertSQL("(\"stringOptional\" MATCH 'b*')", stringOptional.match("b*")) + } + + func test_regexp_buildsExpressionWithRegexpOperator() { + AssertSQL("(\"string\" REGEXP '^.+@.+\\.com$')", string.regexp("^.+@.+\\.com$")) + AssertSQL("(\"stringOptional\" REGEXP '^.+@.+\\.net$')", stringOptional.regexp("^.+@.+\\.net$")) + } + + func test_collate_buildsExpressionWithCollateOperator() { + AssertSQL("(\"string\" COLLATE BINARY)", string.collate(.binary)) + AssertSQL("(\"string\" COLLATE NOCASE)", string.collate(.nocase)) + AssertSQL("(\"string\" COLLATE RTRIM)", string.collate(.rtrim)) + AssertSQL("(\"string\" COLLATE \"CUSTOM\")", string.collate(.custom("CUSTOM"))) + + AssertSQL("(\"stringOptional\" COLLATE BINARY)", stringOptional.collate(.binary)) + AssertSQL("(\"stringOptional\" COLLATE NOCASE)", stringOptional.collate(.nocase)) + AssertSQL("(\"stringOptional\" COLLATE RTRIM)", stringOptional.collate(.rtrim)) + AssertSQL("(\"stringOptional\" COLLATE \"CUSTOM\")", stringOptional.collate(.custom("CUSTOM"))) + } + + func test_ltrim_wrapsStringWithLtrimFunction() { + AssertSQL("ltrim(\"string\")", string.ltrim()) + AssertSQL("ltrim(\"stringOptional\")", stringOptional.ltrim()) + + AssertSQL("ltrim(\"string\", ' ')", string.ltrim([" "])) + AssertSQL("ltrim(\"stringOptional\", ' ')", stringOptional.ltrim([" "])) + } + + func test_ltrim_wrapsStringWithRtrimFunction() { + AssertSQL("rtrim(\"string\")", string.rtrim()) + AssertSQL("rtrim(\"stringOptional\")", stringOptional.rtrim()) + + AssertSQL("rtrim(\"string\", ' ')", string.rtrim([" "])) + AssertSQL("rtrim(\"stringOptional\", ' ')", stringOptional.rtrim([" "])) + } + + func test_ltrim_wrapsStringWithTrimFunction() { + AssertSQL("trim(\"string\")", string.trim()) + AssertSQL("trim(\"stringOptional\")", stringOptional.trim()) + + AssertSQL("trim(\"string\", ' ')", string.trim([" "])) + AssertSQL("trim(\"stringOptional\", ' ')", stringOptional.trim([" "])) + } + + func test_replace_wrapsStringWithReplaceFunction() { + AssertSQL("replace(\"string\", '@example.com', '@example.net')", string.replace("@example.com", with: "@example.net")) + AssertSQL("replace(\"stringOptional\", '@example.net', '@example.com')", stringOptional.replace("@example.net", with: "@example.com")) + } + + func test_substring_wrapsStringWithSubstrFunction() { + AssertSQL("substr(\"string\", 1, 2)", string.substring(1, length: 2)) + AssertSQL("substr(\"stringOptional\", 2, 1)", stringOptional.substring(2, length: 1)) + } + + func test_subscriptWithRange_wrapsStringWithSubstrFunction() { + AssertSQL("substr(\"string\", 1, 2)", string[1..<3]) + AssertSQL("substr(\"stringOptional\", 2, 1)", stringOptional[2..<3]) + } + + func test_nilCoalescingOperator_wrapsOptionalsWithIfnullFunction() { + AssertSQL("ifnull(\"intOptional\", 1)", intOptional ?? 1) + // AssertSQL("ifnull(\"doubleOptional\", 1.0)", doubleOptional ?? 1) // rdar://problem/21677256 + XCTAssertEqual("ifnull(\"doubleOptional\", 1.0)", (doubleOptional ?? 1).asSQL()) + AssertSQL("ifnull(\"stringOptional\", 'literal')", stringOptional ?? "literal") + + AssertSQL("ifnull(\"intOptional\", \"int\")", intOptional ?? int) + AssertSQL("ifnull(\"doubleOptional\", \"double\")", doubleOptional ?? double) + AssertSQL("ifnull(\"stringOptional\", \"string\")", stringOptional ?? string) + + AssertSQL("ifnull(\"intOptional\", \"intOptional\")", intOptional ?? intOptional) + AssertSQL("ifnull(\"doubleOptional\", \"doubleOptional\")", doubleOptional ?? doubleOptional) + AssertSQL("ifnull(\"stringOptional\", \"stringOptional\")", stringOptional ?? stringOptional) + } + + func test_absoluteValue_wrapsNumberWithAbsFucntion() { + AssertSQL("abs(\"int\")", int.absoluteValue) + AssertSQL("abs(\"intOptional\")", intOptional.absoluteValue) + + AssertSQL("abs(\"double\")", double.absoluteValue) + AssertSQL("abs(\"doubleOptional\")", doubleOptional.absoluteValue) + } + + func test_contains_buildsExpressionWithInOperator() { + AssertSQL("(\"string\" IN ('hello', 'world'))", ["hello", "world"].contains(string)) + AssertSQL("(\"stringOptional\" IN ('hello', 'world'))", ["hello", "world"].contains(stringOptional)) + } + +} diff --git a/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/CustomFunctionsTests.swift b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/CustomFunctionsTests.swift new file mode 100644 index 0000000..919986b --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/CustomFunctionsTests.swift @@ -0,0 +1,137 @@ +import XCTest +import SQLite + +class CustomFunctionNoArgsTests : SQLiteTestCase { + typealias FunctionNoOptional = () -> Expression + typealias FunctionResultOptional = () -> Expression + + func testFunctionNoOptional() { + let _: FunctionNoOptional = try! db.createFunction("test", deterministic: true) { + return "a" + } + let result = try! db.prepare("SELECT test()").scalar() as! String + XCTAssertEqual("a", result) + } + + func testFunctionResultOptional() { + let _: FunctionResultOptional = try! db.createFunction("test", deterministic: true) { + return "a" + } + let result = try! db.prepare("SELECT test()").scalar() as! String? + XCTAssertEqual("a", result) + } +} + +class CustomFunctionWithOneArgTests : SQLiteTestCase { + typealias FunctionNoOptional = (Expression) -> Expression + typealias FunctionLeftOptional = (Expression) -> Expression + typealias FunctionResultOptional = (Expression) -> Expression + typealias FunctionLeftResultOptional = (Expression) -> Expression + + func testFunctionNoOptional() { + let _: FunctionNoOptional = try! db.createFunction("test", deterministic: true) { a in + return "b"+a + } + let result = try! db.prepare("SELECT test(?)").scalar("a") as! String + XCTAssertEqual("ba", result) + } + + func testFunctionLeftOptional() { + let _: FunctionLeftOptional = try! db.createFunction("test", deterministic: true) { a in + return "b"+a! + } + let result = try! db.prepare("SELECT test(?)").scalar("a") as! String + XCTAssertEqual("ba", result) + } + + func testFunctionResultOptional() { + let _: FunctionResultOptional = try! db.createFunction("test", deterministic: true) { a in + return "b"+a + } + let result = try! db.prepare("SELECT test(?)").scalar("a") as! String + XCTAssertEqual("ba", result) + } + + func testFunctionLeftResultOptional() { + let _: FunctionLeftResultOptional = try! db.createFunction("test", deterministic: true) { (a:String?) -> String? in + return "b"+a! + } + let result = try! db.prepare("SELECT test(?)").scalar("a") as! String + XCTAssertEqual("ba", result) + } +} + +class CustomFunctionWithTwoArgsTests : SQLiteTestCase { + typealias FunctionNoOptional = (Expression, Expression) -> Expression + typealias FunctionLeftOptional = (Expression, Expression) -> Expression + typealias FunctionRightOptional = (Expression, Expression) -> Expression + typealias FunctionResultOptional = (Expression, Expression) -> Expression + typealias FunctionLeftRightOptional = (Expression, Expression) -> Expression + typealias FunctionLeftResultOptional = (Expression, Expression) -> Expression + typealias FunctionRightResultOptional = (Expression, Expression) -> Expression + typealias FunctionLeftRightResultOptional = (Expression, Expression) -> Expression + + func testNoOptional() { + let _: FunctionNoOptional = try! db.createFunction("test", deterministic: true) { a, b in + return a+b + } + let result = try! db.prepare("SELECT test(?, ?)").scalar("a", "b") as! String + XCTAssertEqual("ab", result) + } + + func testLeftOptional() { + let _: FunctionLeftOptional = try! db.createFunction("test", deterministic: true) { a, b in + return a!+b + } + let result = try! db.prepare("SELECT test(?, ?)").scalar("a", "b") as! String + XCTAssertEqual("ab", result) + } + + func testRightOptional() { + let _: FunctionRightOptional = try! db.createFunction("test", deterministic: true) { a, b in + return a+b! + } + let result = try! db.prepare("SELECT test(?, ?)").scalar("a", "b") as! String + XCTAssertEqual("ab", result) + } + + func testResultOptional() { + let _: FunctionResultOptional = try! db.createFunction("test", deterministic: true) { a, b in + return a+b + } + let result = try! db.prepare("SELECT test(?, ?)").scalar("a", "b") as! String? + XCTAssertEqual("ab", result) + } + + func testFunctionLeftRightOptional() { + let _: FunctionLeftRightOptional = try! db.createFunction("test", deterministic: true) { a, b in + return a!+b! + } + let result = try! db.prepare("SELECT test(?, ?)").scalar("a", "b") as! String + XCTAssertEqual("ab", result) + } + + func testFunctionLeftResultOptional() { + let _: FunctionLeftResultOptional = try! db.createFunction("test", deterministic: true) { a, b in + return a!+b + } + let result = try! db.prepare("SELECT test(?, ?)").scalar("a", "b") as! String? + XCTAssertEqual("ab", result) + } + + func testFunctionRightResultOptional() { + let _: FunctionRightResultOptional = try! db.createFunction("test", deterministic: true) { a, b in + return a+b! + } + let result = try! db.prepare("SELECT test(?, ?)").scalar("a", "b") as! String? + XCTAssertEqual("ab", result) + } + + func testFunctionLeftRightResultOptional() { + let _: FunctionLeftRightResultOptional = try! db.createFunction("test", deterministic: true) { a, b in + return a!+b! + } + let result = try! db.prepare("SELECT test(?, ?)").scalar("a", "b") as! String? + XCTAssertEqual("ab", result) + } +} diff --git a/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/DateAndTimeFunctionTests.swift b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/DateAndTimeFunctionTests.swift new file mode 100644 index 0000000..628b591 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/DateAndTimeFunctionTests.swift @@ -0,0 +1,66 @@ +import XCTest +@testable import SQLite + +class DateAndTimeFunctionsTests : XCTestCase { + + func test_date() { + AssertSQL("date('now')", DateFunctions.date("now")) + AssertSQL("date('now', 'localtime')", DateFunctions.date("now", "localtime")) + } + + func test_time() { + AssertSQL("time('now')", DateFunctions.time("now")) + AssertSQL("time('now', 'localtime')", DateFunctions.time("now", "localtime")) + } + + func test_datetime() { + AssertSQL("datetime('now')", DateFunctions.datetime("now")) + AssertSQL("datetime('now', 'localtime')", DateFunctions.datetime("now", "localtime")) + } + + func test_julianday() { + AssertSQL("julianday('now')", DateFunctions.julianday("now")) + AssertSQL("julianday('now', 'localtime')", DateFunctions.julianday("now", "localtime")) + } + + func test_strftime() { + AssertSQL("strftime('%Y-%m-%d', 'now')", DateFunctions.strftime("%Y-%m-%d", "now")) + AssertSQL("strftime('%Y-%m-%d', 'now', 'localtime')", DateFunctions.strftime("%Y-%m-%d", "now", "localtime")) + } +} + +class DateExtensionTests : XCTestCase { + func test_time() { + AssertSQL("time('1970-01-01T00:00:00.000')", Date(timeIntervalSince1970: 0).time) + } + + func test_date() { + AssertSQL("date('1970-01-01T00:00:00.000')", Date(timeIntervalSince1970: 0).date) + } + + func test_datetime() { + AssertSQL("datetime('1970-01-01T00:00:00.000')", Date(timeIntervalSince1970: 0).datetime) + } + + func test_julianday() { + AssertSQL("julianday('1970-01-01T00:00:00.000')", Date(timeIntervalSince1970: 0).julianday) + } +} + +class DateExpressionTests : XCTestCase { + func test_date() { + AssertSQL("date(\"date\")", date.date) + } + + func test_time() { + AssertSQL("time(\"date\")", date.time) + } + + func test_datetime() { + AssertSQL("datetime(\"date\")", date.datetime) + } + + func test_julianday() { + AssertSQL("julianday(\"date\")", date.julianday) + } +} diff --git a/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/ExpressionTests.swift b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/ExpressionTests.swift new file mode 100644 index 0000000..036e10c --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/ExpressionTests.swift @@ -0,0 +1,6 @@ +import XCTest +import SQLite + +class ExpressionTests : XCTestCase { + +} diff --git a/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/FTS4Tests.swift b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/FTS4Tests.swift new file mode 100644 index 0000000..4373bf8 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/FTS4Tests.swift @@ -0,0 +1,208 @@ +import XCTest +import SQLite + +class FTS4Tests : XCTestCase { + + func test_create_onVirtualTable_withFTS4_compilesCreateVirtualTableExpression() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts4()", + virtualTable.create(.FTS4()) + ) + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts4(\"string\")", + virtualTable.create(.FTS4(string)) + ) + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts4(tokenize=simple)", + virtualTable.create(.FTS4(tokenize: .Simple)) + ) + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts4(\"string\", tokenize=porter)", + virtualTable.create(.FTS4([string], tokenize: .Porter)) + ) + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts4(tokenize=unicode61 \"removeDiacritics=0\")", + virtualTable.create(.FTS4(tokenize: .Unicode61(removeDiacritics: false))) + ) + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts4(tokenize=unicode61 \"removeDiacritics=1\" \"tokenchars=.\" \"separators=X\")", + virtualTable.create(.FTS4(tokenize: .Unicode61(removeDiacritics: true, tokenchars: ["."], separators: ["X"]))) + ) + } + + func test_match_onVirtualTableAsExpression_compilesMatchExpression() { + AssertSQL("(\"virtual_table\" MATCH 'string')", virtualTable.match("string") as Expression) + AssertSQL("(\"virtual_table\" MATCH \"string\")", virtualTable.match(string) as Expression) + AssertSQL("(\"virtual_table\" MATCH \"stringOptional\")", virtualTable.match(stringOptional) as Expression) + } + + func test_match_onVirtualTableAsQueryType_compilesMatchExpression() { + AssertSQL("SELECT * FROM \"virtual_table\" WHERE (\"virtual_table\" MATCH 'string')", virtualTable.match("string") as QueryType) + AssertSQL("SELECT * FROM \"virtual_table\" WHERE (\"virtual_table\" MATCH \"string\")", virtualTable.match(string) as QueryType) + AssertSQL("SELECT * FROM \"virtual_table\" WHERE (\"virtual_table\" MATCH \"stringOptional\")", virtualTable.match(stringOptional) as QueryType) + } + +} + +class FTS4ConfigTests : XCTestCase { + var config: FTS4Config! + + override func setUp() { + super.setUp() + config = FTS4Config() + } + + func test_empty_config() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts4()", + sql(config)) + } + + func test_config_column() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts4(\"string\")", + sql(config.column(string))) + } + + func test_config_columns() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts4(\"string\", \"int\")", + sql(config.columns([string, int]))) + } + + func test_config_unindexed_column() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts4(\"string\", notindexed=\"string\")", + sql(config.column(string, [.unindexed]))) + } + + func test_external_content_view() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts4(content=\"view\")", + sql(config.externalContent(_view ))) + } + + func test_external_content_virtual_table() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts4(content=\"virtual_table\")", + sql(config.externalContent(virtualTable))) + } + + func test_tokenizer_simple() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts4(tokenize=simple)", + sql(config.tokenizer(.Simple))) + } + + func test_tokenizer_porter() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts4(tokenize=porter)", + sql(config.tokenizer(.Porter))) + } + + func test_tokenizer_unicode61() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts4(tokenize=unicode61)", + sql(config.tokenizer(.Unicode61()))) + } + + func test_tokenizer_unicode61_with_options() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts4(tokenize=unicode61 \"removeDiacritics=1\" \"tokenchars=.\" \"separators=X\")", + sql(config.tokenizer(.Unicode61(removeDiacritics: true, tokenchars: ["."], separators: ["X"])))) + } + + func test_content_less() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts4(content=\"\")", + sql(config.contentless())) + } + + func test_config_matchinfo() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts4(matchinfo=\"fts3\")", + sql(config.matchInfo(.fts3))) + } + + func test_config_order_asc() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts4(order=\"asc\")", + sql(config.order(.asc))) + } + + func test_config_order_desc() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts4(order=\"desc\")", + sql(config.order(.desc))) + } + + func test_config_compress() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts4(compress=\"compress_foo\")", + sql(config.compress("compress_foo"))) + } + + func test_config_uncompress() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts4(uncompress=\"uncompress_foo\")", + sql(config.uncompress("uncompress_foo"))) + } + + func test_config_languageId() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts4(languageid=\"lid\")", + sql(config.languageId("lid"))) + } + + func test_config_all() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts4(\"int\", \"string\", \"date\", tokenize=porter, prefix=\"2,4\", content=\"table\", notindexed=\"string\", notindexed=\"date\", languageid=\"lid\", matchinfo=\"fts3\", order=\"desc\")", + sql(config + .tokenizer(.Porter) + .column(int) + .column(string, [.unindexed]) + .column(date, [.unindexed]) + .externalContent(table) + .matchInfo(.fts3) + .languageId("lid") + .order(.desc) + .prefix([2, 4])) + ) + } + + func sql(_ config: FTS4Config) -> String { + return virtualTable.create(.FTS4(config)) + } +} + +class FTS4IntegrationTests : SQLiteTestCase { +#if !SQLITE_SWIFT_STANDALONE && !SQLITE_SWIFT_SQLCIPHER + func test_registerTokenizer_registersTokenizer() { + let emails = VirtualTable("emails") + let subject = Expression("subject") + let body = Expression("body") + + let locale = CFLocaleCopyCurrent() + let tokenizerName = "tokenizer" + let tokenizer = CFStringTokenizerCreate(nil, "" as CFString!, CFRangeMake(0, 0), UInt(kCFStringTokenizerUnitWord), locale) + try! db.registerTokenizer(tokenizerName) { string in + CFStringTokenizerSetString(tokenizer, string as CFString, CFRangeMake(0, CFStringGetLength(string as CFString))) + if CFStringTokenizerAdvanceToNextToken(tokenizer).isEmpty { + return nil + } + let range = CFStringTokenizerGetCurrentTokenRange(tokenizer) + let input = CFStringCreateWithSubstring(kCFAllocatorDefault, string as CFString, range)! + let token = CFStringCreateMutableCopy(nil, range.length, input)! + CFStringLowercase(token, locale) + CFStringTransform(token, nil, kCFStringTransformStripDiacritics, false) + return (token as String, string.range(of: input as String)!) + } + + try! db.run(emails.create(.FTS4([subject, body], tokenize: .Custom(tokenizerName)))) + AssertSQL("CREATE VIRTUAL TABLE \"emails\" USING fts4(\"subject\", \"body\", tokenize=\"SQLite.swift\" \"tokenizer\")") + + try! _ = db.run(emails.insert(subject <- "Aún más cáfe!")) + XCTAssertEqual(1, try! db.scalar(emails.filter(emails.match("aun")).count)) + } +#endif +} diff --git a/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/FTS5Tests.swift b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/FTS5Tests.swift new file mode 100644 index 0000000..63d8dc4 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/FTS5Tests.swift @@ -0,0 +1,124 @@ +import XCTest +import SQLite + +class FTS5Tests: XCTestCase { + var config: FTS5Config! + + override func setUp() { + super.setUp() + config = FTS5Config() + } + + func test_empty_config() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts5()", + sql(config)) + } + + func test_config_column() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts5(\"string\")", + sql(config.column(string))) + } + + func test_config_columns() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts5(\"string\", \"int\")", + sql(config.columns([string, int]))) + } + + func test_config_unindexed_column() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts5(\"string\" UNINDEXED)", + sql(config.column(string, [.unindexed]))) + } + + func test_external_content_table() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts5(content=\"table\")", + sql(config.externalContent(table))) + } + + func test_external_content_view() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts5(content=\"view\")", + sql(config.externalContent(_view))) + } + + func test_external_content_virtual_table() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts5(content=\"virtual_table\")", + sql(config.externalContent(virtualTable))) + } + + func test_content_less() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts5(content=\"\")", + sql(config.contentless())) + } + + func test_content_rowid() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts5(content_rowid=\"string\")", + sql(config.contentRowId(string))) + } + + func test_tokenizer_porter() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts5(tokenize=porter)", + sql(config.tokenizer(.Porter))) + } + + func test_tokenizer_unicode61() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts5(tokenize=unicode61)", + sql(config.tokenizer(.Unicode61()))) + } + + func test_tokenizer_unicode61_with_options() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts5(tokenize=unicode61 \"removeDiacritics=1\" \"tokenchars=.\" \"separators=X\")", + sql(config.tokenizer(.Unicode61(removeDiacritics: true, tokenchars: ["."], separators: ["X"])))) + } + + func test_column_size() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts5(columnsize=1)", + sql(config.columnSize(1))) + } + + func test_detail_full() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts5(detail=\"full\")", + sql(config.detail(.full))) + } + + func test_detail_column() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts5(detail=\"column\")", + sql(config.detail(.column))) + } + + func test_detail_none() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts5(detail=\"none\")", + sql(config.detail(.none))) + } + + func test_fts5_config_all() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING fts5(\"int\", \"string\" UNINDEXED, \"date\" UNINDEXED, tokenize=porter, prefix=\"2,4\", content=\"table\")", + sql(config + .tokenizer(.Porter) + .column(int) + .column(string, [.unindexed]) + .column(date, [.unindexed]) + .externalContent(table) + .prefix([2, 4])) + ) + } + + func sql(_ config: FTS5Config) -> String { + return virtualTable.create(.FTS5(config)) + } +} diff --git a/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/Fixtures.swift b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/Fixtures.swift new file mode 100644 index 0000000..d068313 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/Fixtures.swift @@ -0,0 +1,8 @@ +import Foundation + +func fixture(_ name: String, withExtension: String?) -> String { + let testBundle = Bundle(for: SQLiteTestCase.self) + return testBundle.url( + forResource: name, + withExtension: withExtension)!.path +} diff --git a/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/FoundationTests.swift b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/FoundationTests.swift new file mode 100644 index 0000000..0df746d --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/FoundationTests.swift @@ -0,0 +1,16 @@ +import XCTest +import SQLite + +class FoundationTests : XCTestCase { + func testDataFromBlob() { + let data = Data(bytes: [1, 2, 3]) + let blob = data.datatypeValue + XCTAssertEqual([1, 2, 3], blob.bytes) + } + + func testBlobToData() { + let blob = Blob(bytes: [1, 2, 3]) + let data = Data.fromDatatypeValue(blob) + XCTAssertEqual(Data(bytes: [1, 2, 3]), data) + } +} diff --git a/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/Info.plist b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/Info.plist new file mode 100644 index 0000000..ba72822 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + en + CFBundleExecutable + $(EXECUTABLE_NAME) + CFBundleIdentifier + $(PRODUCT_BUNDLE_IDENTIFIER) + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + $(PRODUCT_NAME) + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.0 + CFBundleSignature + ???? + CFBundleVersion + 1 + + diff --git a/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/OperatorsTests.swift b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/OperatorsTests.swift new file mode 100644 index 0000000..948eb0a --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/OperatorsTests.swift @@ -0,0 +1,342 @@ +import XCTest +import SQLite + +class OperatorsTests : XCTestCase { + + func test_stringExpressionPlusStringExpression_buildsConcatenatingStringExpression() { + AssertSQL("(\"string\" || \"string\")", string + string) + AssertSQL("(\"string\" || \"stringOptional\")", string + stringOptional) + AssertSQL("(\"stringOptional\" || \"string\")", stringOptional + string) + AssertSQL("(\"stringOptional\" || \"stringOptional\")", stringOptional + stringOptional) + AssertSQL("(\"string\" || 'literal')", string + "literal") + AssertSQL("(\"stringOptional\" || 'literal')", stringOptional + "literal") + AssertSQL("('literal' || \"string\")", "literal" + string) + AssertSQL("('literal' || \"stringOptional\")", "literal" + stringOptional) + } + + func test_numberExpression_plusNumberExpression_buildsAdditiveNumberExpression() { + AssertSQL("(\"int\" + \"int\")", int + int) + AssertSQL("(\"int\" + \"intOptional\")", int + intOptional) + AssertSQL("(\"intOptional\" + \"int\")", intOptional + int) + AssertSQL("(\"intOptional\" + \"intOptional\")", intOptional + intOptional) + AssertSQL("(\"int\" + 1)", int + 1) + AssertSQL("(\"intOptional\" + 1)", intOptional + 1) + AssertSQL("(1 + \"int\")", 1 + int) + AssertSQL("(1 + \"intOptional\")", 1 + intOptional) + + AssertSQL("(\"double\" + \"double\")", double + double) + AssertSQL("(\"double\" + \"doubleOptional\")", double + doubleOptional) + AssertSQL("(\"doubleOptional\" + \"double\")", doubleOptional + double) + AssertSQL("(\"doubleOptional\" + \"doubleOptional\")", doubleOptional + doubleOptional) + AssertSQL("(\"double\" + 1.0)", double + 1) + AssertSQL("(\"doubleOptional\" + 1.0)", doubleOptional + 1) + AssertSQL("(1.0 + \"double\")", 1 + double) + AssertSQL("(1.0 + \"doubleOptional\")", 1 + doubleOptional) + } + + func test_numberExpression_minusNumberExpression_buildsSubtractiveNumberExpression() { + AssertSQL("(\"int\" - \"int\")", int - int) + AssertSQL("(\"int\" - \"intOptional\")", int - intOptional) + AssertSQL("(\"intOptional\" - \"int\")", intOptional - int) + AssertSQL("(\"intOptional\" - \"intOptional\")", intOptional - intOptional) + AssertSQL("(\"int\" - 1)", int - 1) + AssertSQL("(\"intOptional\" - 1)", intOptional - 1) + AssertSQL("(1 - \"int\")", 1 - int) + AssertSQL("(1 - \"intOptional\")", 1 - intOptional) + + AssertSQL("(\"double\" - \"double\")", double - double) + AssertSQL("(\"double\" - \"doubleOptional\")", double - doubleOptional) + AssertSQL("(\"doubleOptional\" - \"double\")", doubleOptional - double) + AssertSQL("(\"doubleOptional\" - \"doubleOptional\")", doubleOptional - doubleOptional) + AssertSQL("(\"double\" - 1.0)", double - 1) + AssertSQL("(\"doubleOptional\" - 1.0)", doubleOptional - 1) + AssertSQL("(1.0 - \"double\")", 1 - double) + AssertSQL("(1.0 - \"doubleOptional\")", 1 - doubleOptional) + } + + func test_numberExpression_timesNumberExpression_buildsMultiplicativeNumberExpression() { + AssertSQL("(\"int\" * \"int\")", int * int) + AssertSQL("(\"int\" * \"intOptional\")", int * intOptional) + AssertSQL("(\"intOptional\" * \"int\")", intOptional * int) + AssertSQL("(\"intOptional\" * \"intOptional\")", intOptional * intOptional) + AssertSQL("(\"int\" * 1)", int * 1) + AssertSQL("(\"intOptional\" * 1)", intOptional * 1) + AssertSQL("(1 * \"int\")", 1 * int) + AssertSQL("(1 * \"intOptional\")", 1 * intOptional) + + AssertSQL("(\"double\" * \"double\")", double * double) + AssertSQL("(\"double\" * \"doubleOptional\")", double * doubleOptional) + AssertSQL("(\"doubleOptional\" * \"double\")", doubleOptional * double) + AssertSQL("(\"doubleOptional\" * \"doubleOptional\")", doubleOptional * doubleOptional) + AssertSQL("(\"double\" * 1.0)", double * 1) + AssertSQL("(\"doubleOptional\" * 1.0)", doubleOptional * 1) + AssertSQL("(1.0 * \"double\")", 1 * double) + AssertSQL("(1.0 * \"doubleOptional\")", 1 * doubleOptional) + } + + func test_numberExpression_dividedByNumberExpression_buildsDivisiveNumberExpression() { + AssertSQL("(\"int\" / \"int\")", int / int) + AssertSQL("(\"int\" / \"intOptional\")", int / intOptional) + AssertSQL("(\"intOptional\" / \"int\")", intOptional / int) + AssertSQL("(\"intOptional\" / \"intOptional\")", intOptional / intOptional) + AssertSQL("(\"int\" / 1)", int / 1) + AssertSQL("(\"intOptional\" / 1)", intOptional / 1) + AssertSQL("(1 / \"int\")", 1 / int) + AssertSQL("(1 / \"intOptional\")", 1 / intOptional) + + AssertSQL("(\"double\" / \"double\")", double / double) + AssertSQL("(\"double\" / \"doubleOptional\")", double / doubleOptional) + AssertSQL("(\"doubleOptional\" / \"double\")", doubleOptional / double) + AssertSQL("(\"doubleOptional\" / \"doubleOptional\")", doubleOptional / doubleOptional) + AssertSQL("(\"double\" / 1.0)", double / 1) + AssertSQL("(\"doubleOptional\" / 1.0)", doubleOptional / 1) + AssertSQL("(1.0 / \"double\")", 1 / double) + AssertSQL("(1.0 / \"doubleOptional\")", 1 / doubleOptional) + } + + func test_numberExpression_prefixedWithMinus_buildsInvertedNumberExpression() { + AssertSQL("-(\"int\")", -int) + AssertSQL("-(\"intOptional\")", -intOptional) + + AssertSQL("-(\"double\")", -double) + AssertSQL("-(\"doubleOptional\")", -doubleOptional) + } + + func test_integerExpression_moduloIntegerExpression_buildsModuloIntegerExpression() { + AssertSQL("(\"int\" % \"int\")", int % int) + AssertSQL("(\"int\" % \"intOptional\")", int % intOptional) + AssertSQL("(\"intOptional\" % \"int\")", intOptional % int) + AssertSQL("(\"intOptional\" % \"intOptional\")", intOptional % intOptional) + AssertSQL("(\"int\" % 1)", int % 1) + AssertSQL("(\"intOptional\" % 1)", intOptional % 1) + AssertSQL("(1 % \"int\")", 1 % int) + AssertSQL("(1 % \"intOptional\")", 1 % intOptional) + } + + func test_integerExpression_bitShiftLeftIntegerExpression_buildsLeftShiftedIntegerExpression() { + AssertSQL("(\"int\" << \"int\")", int << int) + AssertSQL("(\"int\" << \"intOptional\")", int << intOptional) + AssertSQL("(\"intOptional\" << \"int\")", intOptional << int) + AssertSQL("(\"intOptional\" << \"intOptional\")", intOptional << intOptional) + AssertSQL("(\"int\" << 1)", int << 1) + AssertSQL("(\"intOptional\" << 1)", intOptional << 1) + AssertSQL("(1 << \"int\")", 1 << int) + AssertSQL("(1 << \"intOptional\")", 1 << intOptional) + } + + func test_integerExpression_bitShiftRightIntegerExpression_buildsRightShiftedIntegerExpression() { + AssertSQL("(\"int\" >> \"int\")", int >> int) + AssertSQL("(\"int\" >> \"intOptional\")", int >> intOptional) + AssertSQL("(\"intOptional\" >> \"int\")", intOptional >> int) + AssertSQL("(\"intOptional\" >> \"intOptional\")", intOptional >> intOptional) + AssertSQL("(\"int\" >> 1)", int >> 1) + AssertSQL("(\"intOptional\" >> 1)", intOptional >> 1) + AssertSQL("(1 >> \"int\")", 1 >> int) + AssertSQL("(1 >> \"intOptional\")", 1 >> intOptional) + } + + func test_integerExpression_bitwiseAndIntegerExpression_buildsAndedIntegerExpression() { + AssertSQL("(\"int\" & \"int\")", int & int) + AssertSQL("(\"int\" & \"intOptional\")", int & intOptional) + AssertSQL("(\"intOptional\" & \"int\")", intOptional & int) + AssertSQL("(\"intOptional\" & \"intOptional\")", intOptional & intOptional) + AssertSQL("(\"int\" & 1)", int & 1) + AssertSQL("(\"intOptional\" & 1)", intOptional & 1) + AssertSQL("(1 & \"int\")", 1 & int) + AssertSQL("(1 & \"intOptional\")", 1 & intOptional) + } + + func test_integerExpression_bitwiseOrIntegerExpression_buildsOredIntegerExpression() { + AssertSQL("(\"int\" | \"int\")", int | int) + AssertSQL("(\"int\" | \"intOptional\")", int | intOptional) + AssertSQL("(\"intOptional\" | \"int\")", intOptional | int) + AssertSQL("(\"intOptional\" | \"intOptional\")", intOptional | intOptional) + AssertSQL("(\"int\" | 1)", int | 1) + AssertSQL("(\"intOptional\" | 1)", intOptional | 1) + AssertSQL("(1 | \"int\")", 1 | int) + AssertSQL("(1 | \"intOptional\")", 1 | intOptional) + } + + func test_integerExpression_bitwiseExclusiveOrIntegerExpression_buildsOredIntegerExpression() { + AssertSQL("(~((\"int\" & \"int\")) & (\"int\" | \"int\"))", int ^ int) + AssertSQL("(~((\"int\" & \"intOptional\")) & (\"int\" | \"intOptional\"))", int ^ intOptional) + AssertSQL("(~((\"intOptional\" & \"int\")) & (\"intOptional\" | \"int\"))", intOptional ^ int) + AssertSQL("(~((\"intOptional\" & \"intOptional\")) & (\"intOptional\" | \"intOptional\"))", intOptional ^ intOptional) + AssertSQL("(~((\"int\" & 1)) & (\"int\" | 1))", int ^ 1) + AssertSQL("(~((\"intOptional\" & 1)) & (\"intOptional\" | 1))", intOptional ^ 1) + AssertSQL("(~((1 & \"int\")) & (1 | \"int\"))", 1 ^ int) + AssertSQL("(~((1 & \"intOptional\")) & (1 | \"intOptional\"))", 1 ^ intOptional) + } + + func test_bitwiseNot_integerExpression_buildsComplementIntegerExpression() { + AssertSQL("~(\"int\")", ~int) + AssertSQL("~(\"intOptional\")", ~intOptional) + } + + func test_equalityOperator_withEquatableExpressions_buildsBooleanExpression() { + AssertSQL("(\"bool\" = \"bool\")", bool == bool) + AssertSQL("(\"bool\" = \"boolOptional\")", bool == boolOptional) + AssertSQL("(\"boolOptional\" = \"bool\")", boolOptional == bool) + AssertSQL("(\"boolOptional\" = \"boolOptional\")", boolOptional == boolOptional) + AssertSQL("(\"bool\" = 1)", bool == true) + AssertSQL("(\"boolOptional\" = 1)", boolOptional == true) + AssertSQL("(1 = \"bool\")", true == bool) + AssertSQL("(1 = \"boolOptional\")", true == boolOptional) + + AssertSQL("(\"boolOptional\" IS NULL)", boolOptional == nil) + AssertSQL("(NULL IS \"boolOptional\")", nil == boolOptional) + } + + func test_inequalityOperator_withEquatableExpressions_buildsBooleanExpression() { + AssertSQL("(\"bool\" != \"bool\")", bool != bool) + AssertSQL("(\"bool\" != \"boolOptional\")", bool != boolOptional) + AssertSQL("(\"boolOptional\" != \"bool\")", boolOptional != bool) + AssertSQL("(\"boolOptional\" != \"boolOptional\")", boolOptional != boolOptional) + AssertSQL("(\"bool\" != 1)", bool != true) + AssertSQL("(\"boolOptional\" != 1)", boolOptional != true) + AssertSQL("(1 != \"bool\")", true != bool) + AssertSQL("(1 != \"boolOptional\")", true != boolOptional) + + AssertSQL("(\"boolOptional\" IS NOT NULL)", boolOptional != nil) + AssertSQL("(NULL IS NOT \"boolOptional\")", nil != boolOptional) + } + + func test_greaterThanOperator_withComparableExpressions_buildsBooleanExpression() { + AssertSQL("(\"bool\" > \"bool\")", bool > bool) + AssertSQL("(\"bool\" > \"boolOptional\")", bool > boolOptional) + AssertSQL("(\"boolOptional\" > \"bool\")", boolOptional > bool) + AssertSQL("(\"boolOptional\" > \"boolOptional\")", boolOptional > boolOptional) + AssertSQL("(\"bool\" > 1)", bool > true) + AssertSQL("(\"boolOptional\" > 1)", boolOptional > true) + AssertSQL("(1 > \"bool\")", true > bool) + AssertSQL("(1 > \"boolOptional\")", true > boolOptional) + } + + func test_greaterThanOrEqualToOperator_withComparableExpressions_buildsBooleanExpression() { + AssertSQL("(\"bool\" >= \"bool\")", bool >= bool) + AssertSQL("(\"bool\" >= \"boolOptional\")", bool >= boolOptional) + AssertSQL("(\"boolOptional\" >= \"bool\")", boolOptional >= bool) + AssertSQL("(\"boolOptional\" >= \"boolOptional\")", boolOptional >= boolOptional) + AssertSQL("(\"bool\" >= 1)", bool >= true) + AssertSQL("(\"boolOptional\" >= 1)", boolOptional >= true) + AssertSQL("(1 >= \"bool\")", true >= bool) + AssertSQL("(1 >= \"boolOptional\")", true >= boolOptional) + } + + func test_lessThanOperator_withComparableExpressions_buildsBooleanExpression() { + AssertSQL("(\"bool\" < \"bool\")", bool < bool) + AssertSQL("(\"bool\" < \"boolOptional\")", bool < boolOptional) + AssertSQL("(\"boolOptional\" < \"bool\")", boolOptional < bool) + AssertSQL("(\"boolOptional\" < \"boolOptional\")", boolOptional < boolOptional) + AssertSQL("(\"bool\" < 1)", bool < true) + AssertSQL("(\"boolOptional\" < 1)", boolOptional < true) + AssertSQL("(1 < \"bool\")", true < bool) + AssertSQL("(1 < \"boolOptional\")", true < boolOptional) + } + + func test_lessThanOrEqualToOperator_withComparableExpressions_buildsBooleanExpression() { + AssertSQL("(\"bool\" <= \"bool\")", bool <= bool) + AssertSQL("(\"bool\" <= \"boolOptional\")", bool <= boolOptional) + AssertSQL("(\"boolOptional\" <= \"bool\")", boolOptional <= bool) + AssertSQL("(\"boolOptional\" <= \"boolOptional\")", boolOptional <= boolOptional) + AssertSQL("(\"bool\" <= 1)", bool <= true) + AssertSQL("(\"boolOptional\" <= 1)", boolOptional <= true) + AssertSQL("(1 <= \"bool\")", true <= bool) + AssertSQL("(1 <= \"boolOptional\")", true <= boolOptional) + } + + func test_patternMatchingOperator_withComparableCountableClosedRange_buildsBetweenBooleanExpression() { + AssertSQL("\"int\" BETWEEN 0 AND 5", 0...5 ~= int) + AssertSQL("\"intOptional\" BETWEEN 0 AND 5", 0...5 ~= intOptional) + } + + func test_patternMatchingOperator_withComparableClosedRange_buildsBetweenBooleanExpression() { + AssertSQL("\"double\" BETWEEN 1.2 AND 4.5", 1.2...4.5 ~= double) + AssertSQL("\"doubleOptional\" BETWEEN 1.2 AND 4.5", 1.2...4.5 ~= doubleOptional) + } + + func test_patternMatchingOperator_withComparableRange_buildsBooleanExpression() { + AssertSQL("\"double\" >= 1.2 AND \"double\" < 4.5", 1.2..<4.5 ~= double) + AssertSQL("\"doubleOptional\" >= 1.2 AND \"doubleOptional\" < 4.5", 1.2..<4.5 ~= doubleOptional) + } + + func test_patternMatchingOperator_withComparablePartialRangeThrough_buildsBooleanExpression() { + AssertSQL("\"double\" <= 4.5", ...4.5 ~= double) + AssertSQL("\"doubleOptional\" <= 4.5", ...4.5 ~= doubleOptional) + } + + func test_patternMatchingOperator_withComparablePartialRangeUpTo_buildsBooleanExpression() { + AssertSQL("\"double\" < 4.5", ..<4.5 ~= double) + AssertSQL("\"doubleOptional\" < 4.5", ..<4.5 ~= doubleOptional) + } + + func test_patternMatchingOperator_withComparablePartialRangeFrom_buildsBooleanExpression() { + AssertSQL("\"double\" >= 4.5", 4.5... ~= double) + AssertSQL("\"doubleOptional\" >= 4.5", 4.5... ~= doubleOptional) + } + + func test_patternMatchingOperator_withComparableClosedRangeString_buildsBetweenBooleanExpression() { + AssertSQL("\"string\" BETWEEN 'a' AND 'b'", "a"..."b" ~= string) + AssertSQL("\"stringOptional\" BETWEEN 'a' AND 'b'", "a"..."b" ~= stringOptional) + } + + func test_doubleAndOperator_withBooleanExpressions_buildsCompoundExpression() { + AssertSQL("(\"bool\" AND \"bool\")", bool && bool) + AssertSQL("(\"bool\" AND \"boolOptional\")", bool && boolOptional) + AssertSQL("(\"boolOptional\" AND \"bool\")", boolOptional && bool) + AssertSQL("(\"boolOptional\" AND \"boolOptional\")", boolOptional && boolOptional) + AssertSQL("(\"bool\" AND 1)", bool && true) + AssertSQL("(\"boolOptional\" AND 1)", boolOptional && true) + AssertSQL("(1 AND \"bool\")", true && bool) + AssertSQL("(1 AND \"boolOptional\")", true && boolOptional) + } + + func test_doubleOrOperator_withBooleanExpressions_buildsCompoundExpression() { + AssertSQL("(\"bool\" OR \"bool\")", bool || bool) + AssertSQL("(\"bool\" OR \"boolOptional\")", bool || boolOptional) + AssertSQL("(\"boolOptional\" OR \"bool\")", boolOptional || bool) + AssertSQL("(\"boolOptional\" OR \"boolOptional\")", boolOptional || boolOptional) + AssertSQL("(\"bool\" OR 1)", bool || true) + AssertSQL("(\"boolOptional\" OR 1)", boolOptional || true) + AssertSQL("(1 OR \"bool\")", true || bool) + AssertSQL("(1 OR \"boolOptional\")", true || boolOptional) + } + + func test_unaryNotOperator_withBooleanExpressions_buildsNotExpression() { + AssertSQL("NOT (\"bool\")", !bool) + AssertSQL("NOT (\"boolOptional\")", !boolOptional) + } + + func test_precedencePreserved() { + let n = Expression(value: 1) + AssertSQL("(((1 = 1) AND (1 = 1)) OR (1 = 1))", (n == n && n == n) || n == n) + AssertSQL("((1 = 1) AND ((1 = 1) OR (1 = 1)))", n == n && (n == n || n == n)) + } + + func test_dateExpressionLessGreater() { + let begin = Date(timeIntervalSince1970: 0) + AssertSQL("(\"date\" < '1970-01-01T00:00:00.000')", date < begin) + AssertSQL("(\"date\" > '1970-01-01T00:00:00.000')", date > begin) + AssertSQL("(\"date\" >= '1970-01-01T00:00:00.000')", date >= begin) + AssertSQL("(\"date\" <= '1970-01-01T00:00:00.000')", date <= begin) + } + + func test_dateExpressionRange() { + let begin = Date(timeIntervalSince1970: 0) + let end = Date(timeIntervalSince1970: 5000) + AssertSQL( + "\"date\" >= '1970-01-01T00:00:00.000' AND \"date\" < '1970-01-01T01:23:20.000'", + (begin..("id") + let email = Expression("email") + let age = Expression("age") + let admin = Expression("admin") + let optionalAdmin = Expression("admin") + + let posts = Table("posts") + let userId = Expression("user_id") + let categoryId = Expression("category_id") + let published = Expression("published") + + let categories = Table("categories") + let tag = Expression("tag") + + func test_select_withExpression_compilesSelectClause() { + AssertSQL("SELECT \"email\" FROM \"users\"", users.select(email)) + } + + func test_select_withStarExpression_compilesSelectClause() { + AssertSQL("SELECT * FROM \"users\"", users.select(*)) + } + + func test_select_withNamespacedStarExpression_compilesSelectClause() { + AssertSQL("SELECT \"users\".* FROM \"users\"", users.select(users[*])) + } + + func test_select_withVariadicExpressions_compilesSelectClause() { + AssertSQL("SELECT \"email\", count(*) FROM \"users\"", users.select(email, count(*))) + } + + func test_select_withExpressions_compilesSelectClause() { + AssertSQL("SELECT \"email\", count(*) FROM \"users\"", users.select([email, count(*)])) + } + + func test_selectDistinct_withExpression_compilesSelectClause() { + AssertSQL("SELECT DISTINCT \"age\" FROM \"users\"", users.select(distinct: age)) + } + + func test_selectDistinct_withExpressions_compilesSelectClause() { + AssertSQL("SELECT DISTINCT \"age\", \"admin\" FROM \"users\"", users.select(distinct: [age, admin])) + } + + func test_selectDistinct_withStar_compilesSelectClause() { + AssertSQL("SELECT DISTINCT * FROM \"users\"", users.select(distinct: *)) + } + + func test_join_compilesJoinClause() { + AssertSQL( + "SELECT * FROM \"users\" INNER JOIN \"posts\" ON (\"posts\".\"user_id\" = \"users\".\"id\")", + users.join(posts, on: posts[userId] == users[id]) + ) + } + + func test_join_withExplicitType_compilesJoinClauseWithType() { + AssertSQL( + "SELECT * FROM \"users\" LEFT OUTER JOIN \"posts\" ON (\"posts\".\"user_id\" = \"users\".\"id\")", + users.join(.leftOuter, posts, on: posts[userId] == users[id]) + ) + + AssertSQL( + "SELECT * FROM \"users\" CROSS JOIN \"posts\" ON (\"posts\".\"user_id\" = \"users\".\"id\")", + users.join(.cross, posts, on: posts[userId] == users[id]) + ) + } + + func test_join_withTableCondition_compilesJoinClauseWithTableCondition() { + AssertSQL( + "SELECT * FROM \"users\" INNER JOIN \"posts\" ON ((\"posts\".\"user_id\" = \"users\".\"id\") AND \"published\")", + users.join(posts.filter(published), on: posts[userId] == users[id]) + ) + } + + func test_join_whenChained_compilesAggregateJoinClause() { + AssertSQL( + "SELECT * FROM \"users\" " + + "INNER JOIN \"posts\" ON (\"posts\".\"user_id\" = \"users\".\"id\") " + + "INNER JOIN \"categories\" ON (\"categories\".\"id\" = \"posts\".\"category_id\")", + users.join(posts, on: posts[userId] == users[id]).join(categories, on: categories[id] == posts[categoryId]) + ) + } + + func test_filter_compilesWhereClause() { + AssertSQL("SELECT * FROM \"users\" WHERE (\"admin\" = 1)", users.filter(admin == true)) + } + + func test_filter_compilesWhereClause_false() { + AssertSQL("SELECT * FROM \"users\" WHERE (\"admin\" = 0)", users.filter(admin == false)) + } + + func test_filter_compilesWhereClause_optional() { + AssertSQL("SELECT * FROM \"users\" WHERE (\"admin\" = 1)", users.filter(optionalAdmin == true)) + } + + func test_filter_compilesWhereClause_optional_false() { + AssertSQL("SELECT * FROM \"users\" WHERE (\"admin\" = 0)", users.filter(optionalAdmin == false)) + } + + func test_where_compilesWhereClause() { + AssertSQL("SELECT * FROM \"users\" WHERE (\"admin\" = 1)", users.where(admin == true)) + } + + func test_where_compilesWhereClause_false() { + AssertSQL("SELECT * FROM \"users\" WHERE (\"admin\" = 0)", users.where(admin == false)) + } + + func test_where_compilesWhereClause_optional() { + AssertSQL("SELECT * FROM \"users\" WHERE (\"admin\" = 1)", users.where(optionalAdmin == true)) + } + + func test_where_compilesWhereClause_optional_false() { + AssertSQL("SELECT * FROM \"users\" WHERE (\"admin\" = 0)", users.where(optionalAdmin == false)) + } + + func test_filter_whenChained_compilesAggregateWhereClause() { + AssertSQL( + "SELECT * FROM \"users\" WHERE ((\"age\" >= 35) AND \"admin\")", + users.filter(age >= 35).filter(admin) + ) + } + + func test_group_withSingleExpressionName_compilesGroupClause() { + AssertSQL("SELECT * FROM \"users\" GROUP BY \"age\"", + users.group(age)) + } + + func test_group_withVariadicExpressionNames_compilesGroupClause() { + AssertSQL("SELECT * FROM \"users\" GROUP BY \"age\", \"admin\"", users.group(age, admin)) + } + + func test_group_withExpressionNameAndHavingBindings_compilesGroupClause() { + AssertSQL("SELECT * FROM \"users\" GROUP BY \"age\" HAVING \"admin\"", users.group(age, having: admin)) + AssertSQL("SELECT * FROM \"users\" GROUP BY \"age\" HAVING (\"age\" >= 30)", users.group(age, having: age >= 30)) + } + + func test_group_withExpressionNamesAndHavingBindings_compilesGroupClause() { + AssertSQL( + "SELECT * FROM \"users\" GROUP BY \"age\", \"admin\" HAVING \"admin\"", + users.group([age, admin], having: admin) + ) + AssertSQL( + "SELECT * FROM \"users\" GROUP BY \"age\", \"admin\" HAVING (\"age\" >= 30)", + users.group([age, admin], having: age >= 30) + ) + } + + func test_order_withSingleExpressionName_compilesOrderClause() { + AssertSQL("SELECT * FROM \"users\" ORDER BY \"age\"", users.order(age)) + } + + func test_order_withVariadicExpressionNames_compilesOrderClause() { + AssertSQL("SELECT * FROM \"users\" ORDER BY \"age\", \"email\"", users.order(age, email)) + } + + func test_order_withArrayExpressionNames_compilesOrderClause() { + AssertSQL("SELECT * FROM \"users\" ORDER BY \"age\", \"email\"", users.order([age, email])) + } + + func test_order_withExpressionAndSortDirection_compilesOrderClause() { +// AssertSQL("SELECT * FROM \"users\" ORDER BY \"age\" DESC, \"email\" ASC", users.order(age.desc, email.asc)) + } + + func test_order_whenChained_resetsOrderClause() { + AssertSQL("SELECT * FROM \"users\" ORDER BY \"age\"", users.order(email).order(age)) + } + + func test_reverse_withoutOrder_ordersByRowIdDescending() { +// AssertSQL("SELECT * FROM \"users\" ORDER BY \"ROWID\" DESC", users.reverse()) + } + + func test_reverse_withOrder_reversesOrder() { +// AssertSQL("SELECT * FROM \"users\" ORDER BY \"age\" DESC, \"email\" ASC", users.order(age, email.desc).reverse()) + } + + func test_limit_compilesLimitClause() { + AssertSQL("SELECT * FROM \"users\" LIMIT 5", users.limit(5)) + } + + func test_limit_withOffset_compilesOffsetClause() { + AssertSQL("SELECT * FROM \"users\" LIMIT 5 OFFSET 5", users.limit(5, offset: 5)) + } + + func test_limit_whenChained_overridesLimit() { + let query = users.limit(5) + + AssertSQL("SELECT * FROM \"users\" LIMIT 10", query.limit(10)) + AssertSQL("SELECT * FROM \"users\"", query.limit(nil)) + } + + func test_limit_whenChained_withOffset_overridesOffset() { + let query = users.limit(5, offset: 5) + + AssertSQL("SELECT * FROM \"users\" LIMIT 10 OFFSET 20", query.limit(10, offset: 20)) + AssertSQL("SELECT * FROM \"users\"", query.limit(nil)) + } + + func test_alias_aliasesTable() { + let managerId = Expression("manager_id") + + let managers = users.alias("managers") + + AssertSQL( + "SELECT * FROM \"users\" " + + "INNER JOIN \"users\" AS \"managers\" ON (\"managers\".\"id\" = \"users\".\"manager_id\")", + users.join(managers, on: managers[id] == users[managerId]) + ) + } + + func test_insert_compilesInsertExpression() { + AssertSQL( + "INSERT INTO \"users\" (\"email\", \"age\") VALUES ('alice@example.com', 30)", + users.insert(email <- "alice@example.com", age <- 30) + ) + } + + func test_insert_withOnConflict_compilesInsertOrOnConflictExpression() { + AssertSQL( + "INSERT OR REPLACE INTO \"users\" (\"email\", \"age\") VALUES ('alice@example.com', 30)", + users.insert(or: .replace, email <- "alice@example.com", age <- 30) + ) + } + + func test_insert_compilesInsertExpressionWithDefaultValues() { + AssertSQL("INSERT INTO \"users\" DEFAULT VALUES", users.insert()) + } + + func test_insert_withQuery_compilesInsertExpressionWithSelectStatement() { + let emails = Table("emails") + + AssertSQL( + "INSERT INTO \"emails\" SELECT \"email\" FROM \"users\" WHERE \"admin\"", + emails.insert(users.select(email).filter(admin)) + ) + } + + func test_insert_encodable() throws { + let emails = Table("emails") + let value = TestCodable(int: 1, string: "2", bool: true, float: 3, double: 4, optional: nil, sub: nil) + let insert = try emails.insert(value) + AssertSQL( + "INSERT INTO \"emails\" (\"int\", \"string\", \"bool\", \"float\", \"double\") VALUES (1, '2', 1, 3.0, 4.0)", + insert + ) + } + + func test_insert_encodable_with_nested_encodable() throws { + let emails = Table("emails") + let value1 = TestCodable(int: 1, string: "2", bool: true, float: 3, double: 4, optional: nil, sub: nil) + let value = TestCodable(int: 1, string: "2", bool: true, float: 3, double: 4, optional: "optional", sub: value1) + let insert = try emails.insert(value) + let encodedJSON = try JSONEncoder().encode(value1) + let encodedJSONString = String(data: encodedJSON, encoding: .utf8)! + AssertSQL( + "INSERT INTO \"emails\" (\"int\", \"string\", \"bool\", \"float\", \"double\", \"optional\", \"sub\") VALUES (1, '2', 1, 3.0, 4.0, 'optional', '\(encodedJSONString)')", + insert + ) + } + + func test_update_compilesUpdateExpression() { + AssertSQL( + "UPDATE \"users\" SET \"age\" = 30, \"admin\" = 1 WHERE (\"id\" = 1)", + users.filter(id == 1).update(age <- 30, admin <- true) + ) + } + + func test_update_compilesUpdateLimitOrderExpression() { + AssertSQL( + "UPDATE \"users\" SET \"age\" = 30 ORDER BY \"id\" LIMIT 1", + users.order(id).limit(1).update(age <- 30) + ) + } + + func test_update_encodable() throws { + let emails = Table("emails") + let value = TestCodable(int: 1, string: "2", bool: true, float: 3, double: 4, optional: nil, sub: nil) + let update = try emails.update(value) + AssertSQL( + "UPDATE \"emails\" SET \"int\" = 1, \"string\" = '2', \"bool\" = 1, \"float\" = 3.0, \"double\" = 4.0", + update + ) + } + + func test_update_encodable_with_nested_encodable() throws { + let emails = Table("emails") + let value1 = TestCodable(int: 1, string: "2", bool: true, float: 3, double: 4, optional: nil, sub: nil) + let value = TestCodable(int: 1, string: "2", bool: true, float: 3, double: 4, optional: nil, sub: value1) + let update = try emails.update(value) + let encodedJSON = try JSONEncoder().encode(value1) + let encodedJSONString = String(data: encodedJSON, encoding: .utf8)! + AssertSQL( + "UPDATE \"emails\" SET \"int\" = 1, \"string\" = '2', \"bool\" = 1, \"float\" = 3.0, \"double\" = 4.0, \"sub\" = '\(encodedJSONString)'", + update + ) + } + + func test_delete_compilesDeleteExpression() { + AssertSQL( + "DELETE FROM \"users\" WHERE (\"id\" = 1)", + users.filter(id == 1).delete() + ) + } + + func test_delete_compilesDeleteLimitOrderExpression() { + AssertSQL( + "DELETE FROM \"users\" ORDER BY \"id\" LIMIT 1", + users.order(id).limit(1).delete() + ) + } + + func test_delete_compilesExistsExpression() { + AssertSQL( + "SELECT EXISTS (SELECT * FROM \"users\")", + users.exists + ) + } + + func test_count_returnsCountExpression() { + AssertSQL("SELECT count(*) FROM \"users\"", users.count) + } + + func test_scalar_returnsScalarExpression() { + AssertSQL("SELECT \"int\" FROM \"table\"", table.select(int) as ScalarQuery) + AssertSQL("SELECT \"intOptional\" FROM \"table\"", table.select(intOptional) as ScalarQuery) + AssertSQL("SELECT DISTINCT \"int\" FROM \"table\"", table.select(distinct: int) as ScalarQuery) + AssertSQL("SELECT DISTINCT \"intOptional\" FROM \"table\"", table.select(distinct: intOptional) as ScalarQuery) + } + + func test_subscript_withExpression_returnsNamespacedExpression() { + let query = Table("query") + + AssertSQL("\"query\".\"blob\"", query[data]) + AssertSQL("\"query\".\"blobOptional\"", query[dataOptional]) + + AssertSQL("\"query\".\"bool\"", query[bool]) + AssertSQL("\"query\".\"boolOptional\"", query[boolOptional]) + + AssertSQL("\"query\".\"date\"", query[date]) + AssertSQL("\"query\".\"dateOptional\"", query[dateOptional]) + + AssertSQL("\"query\".\"double\"", query[double]) + AssertSQL("\"query\".\"doubleOptional\"", query[doubleOptional]) + + AssertSQL("\"query\".\"int\"", query[int]) + AssertSQL("\"query\".\"intOptional\"", query[intOptional]) + + AssertSQL("\"query\".\"int64\"", query[int64]) + AssertSQL("\"query\".\"int64Optional\"", query[int64Optional]) + + AssertSQL("\"query\".\"string\"", query[string]) + AssertSQL("\"query\".\"stringOptional\"", query[stringOptional]) + + AssertSQL("\"query\".*", query[*]) + } + + func test_tableNamespacedByDatabase() { + let table = Table("table", database: "attached") + + AssertSQL("SELECT * FROM \"attached\".\"table\"", table) + } + +} + +class QueryIntegrationTests : SQLiteTestCase { + + let id = Expression("id") + let email = Expression("email") + + override func setUp() { + super.setUp() + + CreateUsersTable() + } + + // MARK: - + + func test_select() { + let managerId = Expression("manager_id") + let managers = users.alias("managers") + + let alice = try! db.run(users.insert(email <- "alice@example.com")) + _ = try! db.run(users.insert(email <- "betsy@example.com", managerId <- alice)) + + for user in try! db.prepare(users.join(managers, on: managers[id] == users[managerId])) { + _ = user[users[managerId]] + } + } + + func test_prepareRowIterator() { + let names = ["a", "b", "c"] + try! InsertUsers(names) + + let emailColumn = Expression("email") + let emails = try! db.prepareRowIterator(users).map { $0[emailColumn] } + + XCTAssertEqual(names.map({ "\($0)@example.com" }), emails.sorted()) + } + + func test_ambiguousMap() { + let names = ["a", "b", "c"] + try! InsertUsers(names) + + let emails = try! db.prepare("select email from users", []).map { $0[0] as! String } + + XCTAssertEqual(names.map({ "\($0)@example.com" }), emails.sorted()) + } + + func test_select_optional() { + let managerId = Expression("manager_id") + let managers = users.alias("managers") + + let alice = try! db.run(users.insert(email <- "alice@example.com")) + _ = try! db.run(users.insert(email <- "betsy@example.com", managerId <- alice)) + + for user in try! db.prepare(users.join(managers, on: managers[id] == users[managerId])) { + _ = user[users[managerId]] + } + } + + func test_select_codable() throws { + let table = Table("codable") + try db.run(table.create { builder in + builder.column(Expression("int")) + builder.column(Expression("string")) + builder.column(Expression("bool")) + builder.column(Expression("float")) + builder.column(Expression("double")) + builder.column(Expression("optional")) + builder.column(Expression("sub")) + }) + + let value1 = TestCodable(int: 1, string: "2", bool: true, float: 3, double: 4, optional: nil, sub: nil) + let value = TestCodable(int: 5, string: "6", bool: true, float: 7, double: 8, optional: "optional", sub: value1) + + try db.run(table.insert(value)) + + let rows = try db.prepare(table) + let values: [TestCodable] = try rows.map({ try $0.decode() }) + XCTAssertEqual(values.count, 1) + XCTAssertEqual(values[0].int, 5) + XCTAssertEqual(values[0].string, "6") + XCTAssertEqual(values[0].bool, true) + XCTAssertEqual(values[0].float, 7) + XCTAssertEqual(values[0].double, 8) + XCTAssertEqual(values[0].optional, "optional") + XCTAssertEqual(values[0].sub?.int, 1) + XCTAssertEqual(values[0].sub?.string, "2") + XCTAssertEqual(values[0].sub?.bool, true) + XCTAssertEqual(values[0].sub?.float, 3) + XCTAssertEqual(values[0].sub?.double, 4) + XCTAssertNil(values[0].sub?.optional) + XCTAssertNil(values[0].sub?.sub) + } + + func test_scalar() { + XCTAssertEqual(0, try! db.scalar(users.count)) + XCTAssertEqual(false, try! db.scalar(users.exists)) + + try! InsertUsers("alice") + XCTAssertEqual(1, try! db.scalar(users.select(id.average))) + } + + func test_pluck() { + let rowid = try! db.run(users.insert(email <- "alice@example.com")) + XCTAssertEqual(rowid, try! db.pluck(users)![id]) + } + + func test_insert() { + let id = try! db.run(users.insert(email <- "alice@example.com")) + XCTAssertEqual(1, id) + } + + func test_update() { + let changes = try! db.run(users.update(email <- "alice@example.com")) + XCTAssertEqual(0, changes) + } + + func test_delete() { + let changes = try! db.run(users.delete()) + XCTAssertEqual(0, changes) + } + + func test_union() throws { + let expectedIDs = [ + try db.run(users.insert(email <- "alice@example.com")), + try db.run(users.insert(email <- "sally@example.com")) + ] + + let query1 = users.filter(email == "alice@example.com") + let query2 = users.filter(email == "sally@example.com") + + let actualIDs = try db.prepare(query1.union(query2)).map { $0[id] } + XCTAssertEqual(expectedIDs, actualIDs) + + let query3 = users.select(users[*], Expression(literal: "1 AS weight")).filter(email == "sally@example.com") + let query4 = users.select(users[*], Expression(literal: "2 AS weight")).filter(email == "alice@example.com") + + print(query3.union(query4).order(Expression(literal: "weight")).asSQL()) + + let orderedIDs = try db.prepare(query3.union(query4).order(Expression(literal: "weight"), email)).map { $0[id] } + XCTAssertEqual(Array(expectedIDs.reversed()), orderedIDs) + } + + func test_no_such_column() throws { + let doesNotExist = Expression("doesNotExist") + try! InsertUser("alice") + let row = try! db.pluck(users.filter(email == "alice@example.com"))! + + XCTAssertThrowsError(try row.get(doesNotExist)) { error in + if case QueryError.noSuchColumn(let name, _) = error { + XCTAssertEqual("\"doesNotExist\"", name) + } else { + XCTFail("unexpected error: \(error)") + } + } + } + + func test_catchConstraintError() { + try! db.run(users.insert(email <- "alice@example.com")) + do { + try db.run(users.insert(email <- "alice@example.com")) + XCTFail("expected error") + } catch let Result.error(_, code, _) where code == SQLITE_CONSTRAINT { + // expected + } catch let error { + XCTFail("unexpected error: \(error)") + } + } +} diff --git a/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/RTreeTests.swift b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/RTreeTests.swift new file mode 100644 index 0000000..7147533 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/RTreeTests.swift @@ -0,0 +1,17 @@ +import XCTest +import SQLite + +class RTreeTests : XCTestCase { + + func test_create_onVirtualTable_withRTree_createVirtualTableExpression() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING rtree(\"int64\", \"double\", \"double\")", + virtualTable.create(.RTree(int64, (double, double))) + ) + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING rtree(\"int64\", \"double\", \"double\", \"double\", \"double\")", + virtualTable.create(.RTree(int64, (double, double), (double, double))) + ) + } + +} \ No newline at end of file diff --git a/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/RowTests.swift b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/RowTests.swift new file mode 100644 index 0000000..17873e7 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/RowTests.swift @@ -0,0 +1,88 @@ +import XCTest +@testable import SQLite + +class RowTests : XCTestCase { + + public func test_get_value() { + let row = Row(["\"foo\"": 0], ["value"]) + let result = try! row.get(Expression("foo")) + + XCTAssertEqual("value", result) + } + + public func test_get_value_subscript() { + let row = Row(["\"foo\"": 0], ["value"]) + let result = row[Expression("foo")] + + XCTAssertEqual("value", result) + } + + public func test_get_value_optional() { + let row = Row(["\"foo\"": 0], ["value"]) + let result = try! row.get(Expression("foo")) + + XCTAssertEqual("value", result) + } + + public func test_get_value_optional_subscript() { + let row = Row(["\"foo\"": 0], ["value"]) + let result = row[Expression("foo")] + + XCTAssertEqual("value", result) + } + + public func test_get_value_optional_nil() { + let row = Row(["\"foo\"": 0], [nil]) + let result = try! row.get(Expression("foo")) + + XCTAssertNil(result) + } + + public func test_get_value_optional_nil_subscript() { + let row = Row(["\"foo\"": 0], [nil]) + let result = row[Expression("foo")] + + XCTAssertNil(result) + } + + public func test_get_type_mismatch_throws_unexpected_null_value() { + let row = Row(["\"foo\"": 0], ["value"]) + XCTAssertThrowsError(try row.get(Expression("foo"))) { error in + if case QueryError.unexpectedNullValue(let name) = error { + XCTAssertEqual("\"foo\"", name) + } else { + XCTFail("unexpected error: \(error)") + } + } + } + + public func test_get_type_mismatch_optional_returns_nil() { + let row = Row(["\"foo\"": 0], ["value"]) + let result = try! row.get(Expression("foo")) + XCTAssertNil(result) + } + + public func test_get_non_existent_column_throws_no_such_column() { + let row = Row(["\"foo\"": 0], ["value"]) + XCTAssertThrowsError(try row.get(Expression("bar"))) { error in + if case QueryError.noSuchColumn(let name, let columns) = error { + XCTAssertEqual("\"bar\"", name) + XCTAssertEqual(["\"foo\""], columns) + } else { + XCTFail("unexpected error: \(error)") + } + } + } + + public func test_get_ambiguous_column_throws() { + let row = Row(["table1.\"foo\"": 0, "table2.\"foo\"": 1], ["value"]) + XCTAssertThrowsError(try row.get(Expression("foo"))) { error in + if case QueryError.ambiguousColumn(let name, let columns) = error { + XCTAssertEqual("\"foo\"", name) + XCTAssertEqual(["table1.\"foo\"", "table2.\"foo\""], columns.sorted()) + } else { + XCTFail("unexpected error: \(error)") + } + } + } +} diff --git a/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/SchemaTests.swift b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/SchemaTests.swift new file mode 100644 index 0000000..b9a0888 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/SchemaTests.swift @@ -0,0 +1,784 @@ +import XCTest +import SQLite + +class SchemaTests : XCTestCase { + + func test_drop_compilesDropTableExpression() { + XCTAssertEqual("DROP TABLE \"table\"", table.drop()) + XCTAssertEqual("DROP TABLE IF EXISTS \"table\"", table.drop(ifExists: true)) + } + + func test_drop_compilesDropVirtualTableExpression() { + XCTAssertEqual("DROP TABLE \"virtual_table\"", virtualTable.drop()) + XCTAssertEqual("DROP TABLE IF EXISTS \"virtual_table\"", virtualTable.drop(ifExists: true)) + } + + func test_drop_compilesDropViewExpression() { + XCTAssertEqual("DROP VIEW \"view\"", _view.drop()) + XCTAssertEqual("DROP VIEW IF EXISTS \"view\"", _view.drop(ifExists: true)) + } + + func test_create_withBuilder_compilesCreateTableExpression() { + XCTAssertEqual( + "CREATE TABLE \"table\" (" + + "\"blob\" BLOB NOT NULL, " + + "\"blobOptional\" BLOB, " + + "\"double\" REAL NOT NULL, " + + "\"doubleOptional\" REAL, " + + "\"int64\" INTEGER NOT NULL, " + + "\"int64Optional\" INTEGER, " + + "\"string\" TEXT NOT NULL, " + + "\"stringOptional\" TEXT" + + ")", + table.create { t in + t.column(data) + t.column(dataOptional) + t.column(double) + t.column(doubleOptional) + t.column(int64) + t.column(int64Optional) + t.column(string) + t.column(stringOptional) + } + ) + XCTAssertEqual( + "CREATE TEMPORARY TABLE \"table\" (\"int64\" INTEGER NOT NULL)", + table.create(temporary: true) { $0.column(int64) } + ) + XCTAssertEqual( + "CREATE TABLE IF NOT EXISTS \"table\" (\"int64\" INTEGER NOT NULL)", + table.create(ifNotExists: true) { $0.column(int64) } + ) + XCTAssertEqual( + "CREATE TEMPORARY TABLE IF NOT EXISTS \"table\" (\"int64\" INTEGER NOT NULL)", + table.create(temporary: true, ifNotExists: true) { $0.column(int64) } + ) + + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER NOT NULL) WITHOUT ROWID", + table.create(withoutRowid: true) { $0.column(int64) } + ) + XCTAssertEqual( + "CREATE TEMPORARY TABLE IF NOT EXISTS \"table\" (\"int64\" INTEGER NOT NULL) WITHOUT ROWID", + table.create(temporary: true, ifNotExists: true, withoutRowid: true) { $0.column(int64) } + ) + } + + func test_create_withQuery_compilesCreateTableExpression() { + XCTAssertEqual( + "CREATE TABLE \"table\" AS SELECT \"int64\" FROM \"view\"", + table.create(_view.select(int64)) + ) + } + + // thoroughness test for ambiguity + func test_column_compilesColumnDefinitionExpression() { + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER NOT NULL)", + table.create { t in t.column(int64) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER NOT NULL UNIQUE)", + table.create { t in t.column(int64, unique: true) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER NOT NULL CHECK (\"int64\" > 0))", + table.create { t in t.column(int64, check: int64 > 0) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER NOT NULL CHECK (\"int64Optional\" > 0))", + table.create { t in t.column(int64, check: int64Optional > 0) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER NOT NULL DEFAULT (\"int64\"))", + table.create { t in t.column(int64, defaultValue: int64) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER NOT NULL DEFAULT (0))", + table.create { t in t.column(int64, defaultValue: 0) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER NOT NULL UNIQUE CHECK (\"int64\" > 0))", + table.create { t in t.column(int64, unique: true, check: int64 > 0) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER NOT NULL UNIQUE CHECK (\"int64Optional\" > 0))", + table.create { t in t.column(int64, unique: true, check: int64Optional > 0) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER NOT NULL UNIQUE DEFAULT (\"int64\"))", + table.create { t in t.column(int64, unique: true, defaultValue: int64) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER NOT NULL UNIQUE DEFAULT (0))", + table.create { t in t.column(int64, unique: true, defaultValue: 0) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER NOT NULL UNIQUE CHECK (\"int64\" > 0))", + table.create { t in t.column(int64, unique: true, check: int64 > 0) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER NOT NULL UNIQUE CHECK (\"int64Optional\" > 0))", + table.create { t in t.column(int64, unique: true, check: int64Optional > 0) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER NOT NULL UNIQUE CHECK (\"int64\" > 0) DEFAULT (\"int64\"))", + table.create { t in t.column(int64, unique: true, check: int64 > 0, defaultValue: int64) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER NOT NULL UNIQUE CHECK (\"int64Optional\" > 0) DEFAULT (\"int64\"))", + table.create { t in t.column(int64, unique: true, check: int64Optional > 0, defaultValue: int64) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER NOT NULL UNIQUE CHECK (\"int64\" > 0) DEFAULT (0))", + table.create { t in t.column(int64, unique: true, check: int64 > 0, defaultValue: 0) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER NOT NULL UNIQUE CHECK (\"int64Optional\" > 0) DEFAULT (0))", + table.create { t in t.column(int64, unique: true, check: int64Optional > 0, defaultValue: 0) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER NOT NULL CHECK (\"int64\" > 0) DEFAULT (\"int64\"))", + table.create { t in t.column(int64, check: int64 > 0, defaultValue: int64) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER NOT NULL CHECK (\"int64Optional\" > 0) DEFAULT (\"int64\"))", + table.create { t in t.column(int64, check: int64Optional > 0, defaultValue: int64) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER NOT NULL CHECK (\"int64\" > 0) DEFAULT (0))", + table.create { t in t.column(int64, check: int64 > 0, defaultValue: 0) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER NOT NULL CHECK (\"int64Optional\" > 0) DEFAULT (0))", + table.create { t in t.column(int64, check: int64Optional > 0, defaultValue: 0) } + ) + + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER PRIMARY KEY NOT NULL CHECK (\"int64\" > 0))", + table.create { t in t.column(int64, primaryKey: true, check: int64 > 0) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER PRIMARY KEY NOT NULL CHECK (\"int64Optional\" > 0))", + table.create { t in t.column(int64, primaryKey: true, check: int64Optional > 0) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER PRIMARY KEY NOT NULL DEFAULT (\"int64\"))", + table.create { t in t.column(int64, primaryKey: true, defaultValue: int64) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER PRIMARY KEY NOT NULL CHECK (\"int64\" > 0))", + table.create { t in t.column(int64, primaryKey: true, check: int64 > 0) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER PRIMARY KEY NOT NULL CHECK (\"int64Optional\" > 0))", + table.create { t in t.column(int64, primaryKey: true, check: int64Optional > 0) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER PRIMARY KEY NOT NULL CHECK (\"int64\" > 0) DEFAULT (\"int64\"))", + table.create { t in t.column(int64, primaryKey: true, check: int64 > 0, defaultValue: int64) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER PRIMARY KEY NOT NULL CHECK (\"int64Optional\" > 0) DEFAULT (\"int64\"))", + table.create { t in t.column(int64, primaryKey: true, check: int64Optional > 0, defaultValue: int64) } + ) + + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER)", + table.create { t in t.column(int64Optional) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER UNIQUE)", + table.create { t in t.column(int64Optional, unique: true) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER CHECK (\"int64\" > 0))", + table.create { t in t.column(int64Optional, check: int64 > 0) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER CHECK (\"int64Optional\" > 0))", + table.create { t in t.column(int64Optional, check: int64Optional > 0) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER DEFAULT (\"int64\"))", + table.create { t in t.column(int64Optional, defaultValue: int64) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER DEFAULT (\"int64Optional\"))", + table.create { t in t.column(int64Optional, defaultValue: int64Optional) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER DEFAULT (0))", + table.create { t in t.column(int64Optional, defaultValue: 0) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER UNIQUE CHECK (\"int64\" > 0))", + table.create { t in t.column(int64Optional, unique: true, check: int64 > 0) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER UNIQUE CHECK (\"int64Optional\" > 0))", + table.create { t in t.column(int64Optional, unique: true, check: int64Optional > 0) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER UNIQUE DEFAULT (\"int64\"))", + table.create { t in t.column(int64Optional, unique: true, defaultValue: int64) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER UNIQUE DEFAULT (\"int64Optional\"))", + table.create { t in t.column(int64Optional, unique: true, defaultValue: int64Optional) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER UNIQUE DEFAULT (0))", + table.create { t in t.column(int64Optional, unique: true, defaultValue: 0) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER UNIQUE CHECK (\"int64\" > 0))", + table.create { t in t.column(int64Optional, unique: true, check: int64 > 0) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER UNIQUE CHECK (\"int64Optional\" > 0))", + table.create { t in t.column(int64Optional, unique: true, check: int64Optional > 0) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER UNIQUE CHECK (\"int64\" > 0) DEFAULT (\"int64\"))", + table.create { t in t.column(int64Optional, unique: true, check: int64 > 0, defaultValue: int64) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER UNIQUE CHECK (\"int64\" > 0) DEFAULT (\"int64Optional\"))", + table.create { t in t.column(int64Optional, unique: true, check: int64 > 0, defaultValue: int64Optional) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER UNIQUE CHECK (\"int64Optional\" > 0) DEFAULT (\"int64\"))", + table.create { t in t.column(int64Optional, unique: true, check: int64Optional > 0, defaultValue: int64) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER UNIQUE CHECK (\"int64Optional\" > 0) DEFAULT (\"int64Optional\"))", + table.create { t in t.column(int64Optional, unique: true, check: int64Optional > 0, defaultValue: int64Optional) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER UNIQUE CHECK (\"int64\" > 0) DEFAULT (0))", + table.create { t in t.column(int64Optional, unique: true, check: int64 > 0, defaultValue: 0) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER UNIQUE CHECK (\"int64Optional\" > 0) DEFAULT (0))", + table.create { t in t.column(int64Optional, unique: true, check: int64Optional > 0, defaultValue: 0) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER CHECK (\"int64\" > 0) DEFAULT (\"int64\"))", + table.create { t in t.column(int64Optional, check: int64 > 0, defaultValue: int64) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER CHECK (\"int64Optional\" > 0) DEFAULT (\"int64\"))", + table.create { t in t.column(int64Optional, check: int64Optional > 0, defaultValue: int64) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER CHECK (\"int64\" > 0) DEFAULT (\"int64Optional\"))", + table.create { t in t.column(int64Optional, check: int64 > 0, defaultValue: int64Optional) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER CHECK (\"int64Optional\" > 0) DEFAULT (\"int64Optional\"))", + table.create { t in t.column(int64Optional, check: int64Optional > 0, defaultValue: int64Optional) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER CHECK (\"int64\" > 0) DEFAULT (0))", + table.create { t in t.column(int64Optional, check: int64 > 0, defaultValue: 0) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER CHECK (\"int64Optional\" > 0) DEFAULT (0))", + table.create { t in t.column(int64Optional, check: int64Optional > 0, defaultValue: 0) } + ) + } + + func test_column_withIntegerExpression_compilesPrimaryKeyAutoincrementColumnDefinitionExpression() { + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL)", + table.create { t in t.column(int64, primaryKey: .autoincrement) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL CHECK (\"int64\" > 0))", + table.create { t in t.column(int64, primaryKey: .autoincrement, check: int64 > 0) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER PRIMARY KEY AUTOINCREMENT NOT NULL CHECK (\"int64Optional\" > 0))", + table.create { t in t.column(int64, primaryKey: .autoincrement, check: int64Optional > 0) } + ) + } + + func test_column_withIntegerExpression_compilesReferentialColumnDefinitionExpression() { + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER NOT NULL REFERENCES \"table\" (\"int64\"))", + table.create { t in t.column(int64, references: table, int64) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER NOT NULL REFERENCES \"table\" (\"int64\"))", + table.create { t in t.column(int64, references: qualifiedTable, int64) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER NOT NULL UNIQUE REFERENCES \"table\" (\"int64\"))", + table.create { t in t.column(int64, unique: true, references: table, int64) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER NOT NULL CHECK (\"int64\" > 0) REFERENCES \"table\" (\"int64\"))", + table.create { t in t.column(int64, check: int64 > 0, references: table, int64) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER NOT NULL CHECK (\"int64Optional\" > 0) REFERENCES \"table\" (\"int64\"))", + table.create { t in t.column(int64, check: int64Optional > 0, references: table, int64) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER NOT NULL UNIQUE CHECK (\"int64\" > 0) REFERENCES \"table\" (\"int64\"))", + table.create { t in t.column(int64, unique: true, check: int64 > 0, references: table, int64) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64\" INTEGER NOT NULL UNIQUE CHECK (\"int64Optional\" > 0) REFERENCES \"table\" (\"int64\"))", + table.create { t in t.column(int64, unique: true, check: int64Optional > 0, references: table, int64) } + ) + + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER REFERENCES \"table\" (\"int64\"))", + table.create { t in t.column(int64Optional, references: table, int64) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER UNIQUE REFERENCES \"table\" (\"int64\"))", + table.create { t in t.column(int64Optional, unique: true, references: table, int64) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER CHECK (\"int64\" > 0) REFERENCES \"table\" (\"int64\"))", + table.create { t in t.column(int64Optional, check: int64 > 0, references: table, int64) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER CHECK (\"int64Optional\" > 0) REFERENCES \"table\" (\"int64\"))", + table.create { t in t.column(int64Optional, check: int64Optional > 0, references: table, int64) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER UNIQUE CHECK (\"int64\" > 0) REFERENCES \"table\" (\"int64\"))", + table.create { t in t.column(int64Optional, unique: true, check: int64 > 0, references: table, int64) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"int64Optional\" INTEGER UNIQUE CHECK (\"int64Optional\" > 0) REFERENCES \"table\" (\"int64\"))", + table.create { t in t.column(int64Optional, unique: true, check: int64Optional > 0, references: table, int64) } + ) + } + + func test_column_withStringExpression_compilesCollatedColumnDefinitionExpression() { + XCTAssertEqual( + "CREATE TABLE \"table\" (\"string\" TEXT NOT NULL COLLATE RTRIM)", + table.create { t in t.column(string, collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"string\" TEXT NOT NULL UNIQUE COLLATE RTRIM)", + table.create { t in t.column(string, unique: true, collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"string\" TEXT NOT NULL CHECK (\"string\" != '') COLLATE RTRIM)", + table.create { t in t.column(string, check: string != "", collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"string\" TEXT NOT NULL CHECK (\"stringOptional\" != '') COLLATE RTRIM)", + table.create { t in t.column(string, check: stringOptional != "", collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"string\" TEXT NOT NULL DEFAULT (\"string\") COLLATE RTRIM)", + table.create { t in t.column(string, defaultValue: string, collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"string\" TEXT NOT NULL DEFAULT ('string') COLLATE RTRIM)", + table.create { t in t.column(string, defaultValue: "string", collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"string\" TEXT NOT NULL UNIQUE CHECK (\"string\" != '') COLLATE RTRIM)", + table.create { t in t.column(string, unique: true, check: string != "", collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"string\" TEXT NOT NULL UNIQUE CHECK (\"stringOptional\" != '') COLLATE RTRIM)", + table.create { t in t.column(string, unique: true, check: stringOptional != "", collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"string\" TEXT NOT NULL UNIQUE DEFAULT (\"string\") COLLATE RTRIM)", + table.create { t in t.column(string, unique: true, defaultValue: string, collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"string\" TEXT NOT NULL UNIQUE DEFAULT ('string') COLLATE RTRIM)", + table.create { t in t.column(string, unique: true, defaultValue: "string", collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"string\" TEXT NOT NULL UNIQUE CHECK (\"string\" != '') DEFAULT (\"string\") COLLATE RTRIM)", + table.create { t in t.column(string, unique: true, check: string != "", defaultValue: string, collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"string\" TEXT NOT NULL UNIQUE CHECK (\"stringOptional\" != '') DEFAULT (\"string\") COLLATE RTRIM)", + table.create { t in t.column(string, unique: true, check: stringOptional != "", defaultValue: string, collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"string\" TEXT NOT NULL UNIQUE CHECK (\"string\" != '') DEFAULT ('string') COLLATE RTRIM)", + table.create { t in t.column(string, unique: true, check: string != "", defaultValue: "string", collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"string\" TEXT NOT NULL UNIQUE CHECK (\"stringOptional\" != '') DEFAULT ('string') COLLATE RTRIM)", + table.create { t in t.column(string, unique: true, check: stringOptional != "", defaultValue: "string", collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"string\" TEXT NOT NULL CHECK (\"string\" != '') DEFAULT (\"string\") COLLATE RTRIM)", + table.create { t in t.column(string, check: string != "", defaultValue: string, collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"string\" TEXT NOT NULL CHECK (\"stringOptional\" != '') DEFAULT (\"string\") COLLATE RTRIM)", + table.create { t in t.column(string, check: stringOptional != "", defaultValue: string, collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"string\" TEXT NOT NULL CHECK (\"string\" != '') DEFAULT ('string') COLLATE RTRIM)", + table.create { t in t.column(string, check: string != "", defaultValue: "string", collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"string\" TEXT NOT NULL CHECK (\"stringOptional\" != '') DEFAULT ('string') COLLATE RTRIM)", + table.create { t in t.column(string, check: stringOptional != "", defaultValue: "string", collate: .rtrim) } + ) + + XCTAssertEqual( + "CREATE TABLE \"table\" (\"stringOptional\" TEXT COLLATE RTRIM)", + table.create { t in t.column(stringOptional, collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"stringOptional\" TEXT UNIQUE COLLATE RTRIM)", + table.create { t in t.column(stringOptional, unique: true, collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"stringOptional\" TEXT CHECK (\"string\" != '') COLLATE RTRIM)", + table.create { t in t.column(stringOptional, check: string != "", collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"stringOptional\" TEXT CHECK (\"stringOptional\" != '') COLLATE RTRIM)", + table.create { t in t.column(stringOptional, check: stringOptional != "", collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"stringOptional\" TEXT DEFAULT (\"string\") COLLATE RTRIM)", + table.create { t in t.column(stringOptional, defaultValue: string, collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"stringOptional\" TEXT DEFAULT (\"stringOptional\") COLLATE RTRIM)", + table.create { t in t.column(stringOptional, defaultValue: stringOptional, collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"stringOptional\" TEXT DEFAULT ('string') COLLATE RTRIM)", + table.create { t in t.column(stringOptional, defaultValue: "string", collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"stringOptional\" TEXT UNIQUE CHECK (\"string\" != '') COLLATE RTRIM)", + table.create { t in t.column(stringOptional, unique: true, check: string != "", collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"stringOptional\" TEXT UNIQUE CHECK (\"stringOptional\" != '') COLLATE RTRIM)", + table.create { t in t.column(stringOptional, unique: true, check: stringOptional != "", collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"stringOptional\" TEXT UNIQUE DEFAULT (\"string\") COLLATE RTRIM)", + table.create { t in t.column(stringOptional, unique: true, defaultValue: string, collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"stringOptional\" TEXT UNIQUE DEFAULT (\"stringOptional\") COLLATE RTRIM)", + table.create { t in t.column(stringOptional, unique: true, defaultValue: stringOptional, collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"stringOptional\" TEXT UNIQUE DEFAULT ('string') COLLATE RTRIM)", + table.create { t in t.column(stringOptional, unique: true, defaultValue: "string", collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"stringOptional\" TEXT UNIQUE CHECK (\"string\" != '') DEFAULT (\"string\") COLLATE RTRIM)", + table.create { t in t.column(stringOptional, unique: true, check: string != "", defaultValue: string, collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"stringOptional\" TEXT UNIQUE CHECK (\"string\" != '') DEFAULT (\"stringOptional\") COLLATE RTRIM)", + table.create { t in t.column(stringOptional, unique: true, check: string != "", defaultValue: stringOptional, collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"stringOptional\" TEXT UNIQUE CHECK (\"stringOptional\" != '') DEFAULT (\"string\") COLLATE RTRIM)", + table.create { t in t.column(stringOptional, unique: true, check: stringOptional != "", defaultValue: string, collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"stringOptional\" TEXT UNIQUE CHECK (\"stringOptional\" != '') DEFAULT (\"stringOptional\") COLLATE RTRIM)", + table.create { t in t.column(stringOptional, unique: true, check: stringOptional != "", defaultValue: stringOptional, collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"stringOptional\" TEXT UNIQUE CHECK (\"string\" != '') DEFAULT ('string') COLLATE RTRIM)", + table.create { t in t.column(stringOptional, unique: true, check: string != "", defaultValue: "string", collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"stringOptional\" TEXT UNIQUE CHECK (\"stringOptional\" != '') DEFAULT ('string') COLLATE RTRIM)", + table.create { t in t.column(stringOptional, unique: true, check: stringOptional != "", defaultValue: "string", collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"stringOptional\" TEXT CHECK (\"string\" != '') DEFAULT (\"string\") COLLATE RTRIM)", + table.create { t in t.column(stringOptional, check: string != "", defaultValue: string, collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"stringOptional\" TEXT CHECK (\"stringOptional\" != '') DEFAULT (\"string\") COLLATE RTRIM)", + table.create { t in t.column(stringOptional, check: stringOptional != "", defaultValue: string, collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"stringOptional\" TEXT CHECK (\"string\" != '') DEFAULT (\"stringOptional\") COLLATE RTRIM)", + table.create { t in t.column(stringOptional, check: string != "", defaultValue: stringOptional, collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"stringOptional\" TEXT CHECK (\"stringOptional\" != '') DEFAULT (\"stringOptional\") COLLATE RTRIM)", + table.create { t in t.column(stringOptional, check: stringOptional != "", defaultValue: stringOptional, collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"stringOptional\" TEXT CHECK (\"string\" != '') DEFAULT ('string') COLLATE RTRIM)", + table.create { t in t.column(stringOptional, check: string != "", defaultValue: "string", collate: .rtrim) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (\"stringOptional\" TEXT CHECK (\"stringOptional\" != '') DEFAULT ('string') COLLATE RTRIM)", + table.create { t in t.column(stringOptional, check: stringOptional != "", defaultValue: "string", collate: .rtrim) } + ) + } + + func test_primaryKey_compilesPrimaryKeyExpression() { + XCTAssertEqual( + "CREATE TABLE \"table\" (PRIMARY KEY (\"int64\"))", + table.create { t in t.primaryKey(int64) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (PRIMARY KEY (\"int64\", \"string\"))", + table.create { t in t.primaryKey(int64, string) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (PRIMARY KEY (\"int64\", \"string\", \"double\"))", + table.create { t in t.primaryKey(int64, string, double) } + ) + } + + func test_unique_compilesUniqueExpression() { + XCTAssertEqual( + "CREATE TABLE \"table\" (UNIQUE (\"int64\"))", + table.create { t in t.unique(int64) } + ) + } + + func test_check_compilesCheckExpression() { + XCTAssertEqual( + "CREATE TABLE \"table\" (CHECK ((\"int64\" > 0)))", + table.create { t in t.check(int64 > 0) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (CHECK ((\"int64Optional\" > 0)))", + table.create { t in t.check(int64Optional > 0) } + ) + } + + func test_foreignKey_compilesForeignKeyExpression() { + XCTAssertEqual( + "CREATE TABLE \"table\" (FOREIGN KEY (\"string\") REFERENCES \"table\" (\"string\"))", + table.create { t in t.foreignKey(string, references: table, string) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (FOREIGN KEY (\"stringOptional\") REFERENCES \"table\" (\"string\"))", + table.create { t in t.foreignKey(stringOptional, references: table, string) } + ) + + XCTAssertEqual( + "CREATE TABLE \"table\" (FOREIGN KEY (\"string\") REFERENCES \"table\" (\"string\") ON UPDATE CASCADE ON DELETE SET NULL)", + table.create { t in t.foreignKey(string, references: table, string, update: .cascade, delete: .setNull) } + ) + + XCTAssertEqual( + "CREATE TABLE \"table\" (FOREIGN KEY (\"string\", \"string\") REFERENCES \"table\" (\"string\", \"string\"))", + table.create { t in t.foreignKey((string, string), references: table, (string, string)) } + ) + XCTAssertEqual( + "CREATE TABLE \"table\" (FOREIGN KEY (\"string\", \"string\", \"string\") REFERENCES \"table\" (\"string\", \"string\", \"string\"))", + table.create { t in t.foreignKey((string, string, string), references: table, (string, string, string)) } + ) + } + + func test_addColumn_compilesAlterTableExpression() { + XCTAssertEqual( + "ALTER TABLE \"table\" ADD COLUMN \"int64\" INTEGER NOT NULL DEFAULT (1)", + table.addColumn(int64, defaultValue: 1) + ) + XCTAssertEqual( + "ALTER TABLE \"table\" ADD COLUMN \"int64\" INTEGER NOT NULL CHECK (\"int64\" > 0) DEFAULT (1)", + table.addColumn(int64, check: int64 > 0, defaultValue: 1) + ) + XCTAssertEqual( + "ALTER TABLE \"table\" ADD COLUMN \"int64\" INTEGER NOT NULL CHECK (\"int64Optional\" > 0) DEFAULT (1)", + table.addColumn(int64, check: int64Optional > 0, defaultValue: 1) + ) + + XCTAssertEqual( + "ALTER TABLE \"table\" ADD COLUMN \"int64Optional\" INTEGER", + table.addColumn(int64Optional) + ) + XCTAssertEqual( + "ALTER TABLE \"table\" ADD COLUMN \"int64Optional\" INTEGER CHECK (\"int64\" > 0)", + table.addColumn(int64Optional, check: int64 > 0) + ) + XCTAssertEqual( + "ALTER TABLE \"table\" ADD COLUMN \"int64Optional\" INTEGER CHECK (\"int64Optional\" > 0)", + table.addColumn(int64Optional, check: int64Optional > 0) + ) + XCTAssertEqual( + "ALTER TABLE \"table\" ADD COLUMN \"int64Optional\" INTEGER DEFAULT (1)", + table.addColumn(int64Optional, defaultValue: 1) + ) + XCTAssertEqual( + "ALTER TABLE \"table\" ADD COLUMN \"int64Optional\" INTEGER CHECK (\"int64\" > 0) DEFAULT (1)", + table.addColumn(int64Optional, check: int64 > 0, defaultValue: 1) + ) + XCTAssertEqual( + "ALTER TABLE \"table\" ADD COLUMN \"int64Optional\" INTEGER CHECK (\"int64Optional\" > 0) DEFAULT (1)", + table.addColumn(int64Optional, check: int64Optional > 0, defaultValue: 1) + ) + } + + func test_addColumn_withIntegerExpression_compilesReferentialAlterTableExpression() { + XCTAssertEqual( + "ALTER TABLE \"table\" ADD COLUMN \"int64\" INTEGER NOT NULL REFERENCES \"table\" (\"int64\")", + table.addColumn(int64, references: table, int64) + ) + XCTAssertEqual( + "ALTER TABLE \"table\" ADD COLUMN \"int64\" INTEGER NOT NULL UNIQUE REFERENCES \"table\" (\"int64\")", + table.addColumn(int64, unique: true, references: table, int64) + ) + XCTAssertEqual( + "ALTER TABLE \"table\" ADD COLUMN \"int64\" INTEGER NOT NULL CHECK (\"int64\" > 0) REFERENCES \"table\" (\"int64\")", + table.addColumn(int64, check: int64 > 0, references: table, int64) + ) + XCTAssertEqual( + "ALTER TABLE \"table\" ADD COLUMN \"int64\" INTEGER NOT NULL CHECK (\"int64Optional\" > 0) REFERENCES \"table\" (\"int64\")", + table.addColumn(int64, check: int64Optional > 0, references: table, int64) + ) + XCTAssertEqual( + "ALTER TABLE \"table\" ADD COLUMN \"int64\" INTEGER NOT NULL UNIQUE CHECK (\"int64\" > 0) REFERENCES \"table\" (\"int64\")", + table.addColumn(int64, unique: true, check: int64 > 0, references: table, int64) + ) + XCTAssertEqual( + "ALTER TABLE \"table\" ADD COLUMN \"int64\" INTEGER NOT NULL UNIQUE CHECK (\"int64Optional\" > 0) REFERENCES \"table\" (\"int64\")", + table.addColumn(int64, unique: true, check: int64Optional > 0, references: table, int64) + ) + + XCTAssertEqual( + "ALTER TABLE \"table\" ADD COLUMN \"int64Optional\" INTEGER REFERENCES \"table\" (\"int64\")", + table.addColumn(int64Optional, references: table, int64) + ) + XCTAssertEqual( + "ALTER TABLE \"table\" ADD COLUMN \"int64Optional\" INTEGER UNIQUE REFERENCES \"table\" (\"int64\")", + table.addColumn(int64Optional, unique: true, references: table, int64) + ) + XCTAssertEqual( + "ALTER TABLE \"table\" ADD COLUMN \"int64Optional\" INTEGER CHECK (\"int64\" > 0) REFERENCES \"table\" (\"int64\")", + table.addColumn(int64Optional, check: int64 > 0, references: table, int64) + ) + XCTAssertEqual( + "ALTER TABLE \"table\" ADD COLUMN \"int64Optional\" INTEGER CHECK (\"int64Optional\" > 0) REFERENCES \"table\" (\"int64\")", + table.addColumn(int64Optional, check: int64Optional > 0, references: table, int64) + ) + XCTAssertEqual( + "ALTER TABLE \"table\" ADD COLUMN \"int64Optional\" INTEGER UNIQUE CHECK (\"int64\" > 0) REFERENCES \"table\" (\"int64\")", + table.addColumn(int64Optional, unique: true, check: int64 > 0, references: table, int64) + ) + XCTAssertEqual( + "ALTER TABLE \"table\" ADD COLUMN \"int64Optional\" INTEGER UNIQUE CHECK (\"int64Optional\" > 0) REFERENCES \"table\" (\"int64\")", + table.addColumn(int64Optional, unique: true, check: int64Optional > 0, references: table, int64) + ) + } + + func test_addColumn_withStringExpression_compilesCollatedAlterTableExpression() { + XCTAssertEqual( + "ALTER TABLE \"table\" ADD COLUMN \"string\" TEXT NOT NULL DEFAULT ('string') COLLATE RTRIM", + table.addColumn(string, defaultValue: "string", collate: .rtrim) + ) + XCTAssertEqual( + "ALTER TABLE \"table\" ADD COLUMN \"string\" TEXT NOT NULL CHECK (\"string\" != '') DEFAULT ('string') COLLATE RTRIM", + table.addColumn(string, check: string != "", defaultValue: "string", collate: .rtrim) + ) + XCTAssertEqual( + "ALTER TABLE \"table\" ADD COLUMN \"string\" TEXT NOT NULL CHECK (\"stringOptional\" != '') DEFAULT ('string') COLLATE RTRIM", + table.addColumn(string, check: stringOptional != "", defaultValue: "string", collate: .rtrim) + ) + + XCTAssertEqual( + "ALTER TABLE \"table\" ADD COLUMN \"stringOptional\" TEXT COLLATE RTRIM", + table.addColumn(stringOptional, collate: .rtrim) + ) + XCTAssertEqual( + "ALTER TABLE \"table\" ADD COLUMN \"stringOptional\" TEXT CHECK (\"string\" != '') COLLATE RTRIM", + table.addColumn(stringOptional, check: string != "", collate: .rtrim) + ) + XCTAssertEqual( + "ALTER TABLE \"table\" ADD COLUMN \"stringOptional\" TEXT CHECK (\"stringOptional\" != '') COLLATE RTRIM", + table.addColumn(stringOptional, check: stringOptional != "", collate: .rtrim) + ) + XCTAssertEqual( + "ALTER TABLE \"table\" ADD COLUMN \"stringOptional\" TEXT CHECK (\"string\" != '') DEFAULT ('string') COLLATE RTRIM", + table.addColumn(stringOptional, check: string != "", defaultValue: "string", collate: .rtrim) + ) + XCTAssertEqual( + "ALTER TABLE \"table\" ADD COLUMN \"stringOptional\" TEXT CHECK (\"stringOptional\" != '') DEFAULT ('string') COLLATE RTRIM", + table.addColumn(stringOptional, check: stringOptional != "", defaultValue: "string", collate: .rtrim) + ) + } + + func test_rename_compilesAlterTableRenameToExpression() { + XCTAssertEqual("ALTER TABLE \"old\" RENAME TO \"table\"", Table("old").rename(table)) + } + + func test_createIndex_compilesCreateIndexExpression() { + XCTAssertEqual("CREATE INDEX \"index_table_on_int64\" ON \"table\" (\"int64\")", table.createIndex(int64)) + + XCTAssertEqual( + "CREATE UNIQUE INDEX \"index_table_on_int64\" ON \"table\" (\"int64\")", + table.createIndex(int64, unique: true) + ) + XCTAssertEqual( + "CREATE INDEX IF NOT EXISTS \"index_table_on_int64\" ON \"table\" (\"int64\")", + table.createIndex(int64, ifNotExists: true) + ) + XCTAssertEqual( + "CREATE UNIQUE INDEX IF NOT EXISTS \"index_table_on_int64\" ON \"table\" (\"int64\")", + table.createIndex(int64, unique: true, ifNotExists: true) + ) + XCTAssertEqual( + "CREATE UNIQUE INDEX IF NOT EXISTS \"main\".\"index_table_on_int64\" ON \"table\" (\"int64\")", + qualifiedTable.createIndex(int64, unique: true, ifNotExists: true) + ) + } + + func test_dropIndex_compilesCreateIndexExpression() { + XCTAssertEqual("DROP INDEX \"index_table_on_int64\"", table.dropIndex(int64)) + XCTAssertEqual("DROP INDEX IF EXISTS \"index_table_on_int64\"", table.dropIndex(int64, ifExists: true)) + } + + func test_create_onView_compilesCreateViewExpression() { + XCTAssertEqual( + "CREATE VIEW \"view\" AS SELECT \"int64\" FROM \"table\"", + _view.create(table.select(int64)) + ) + XCTAssertEqual( + "CREATE TEMPORARY VIEW \"view\" AS SELECT \"int64\" FROM \"table\"", + _view.create(table.select(int64), temporary: true) + ) + XCTAssertEqual( + "CREATE VIEW IF NOT EXISTS \"view\" AS SELECT \"int64\" FROM \"table\"", + _view.create(table.select(int64), ifNotExists: true) + ) + XCTAssertEqual( + "CREATE TEMPORARY VIEW IF NOT EXISTS \"view\" AS SELECT \"int64\" FROM \"table\"", + _view.create(table.select(int64), temporary: true, ifNotExists: true) + ) + } + + func test_create_onVirtualTable_compilesCreateVirtualTableExpression() { + XCTAssertEqual( + "CREATE VIRTUAL TABLE \"virtual_table\" USING \"custom\"('foo', 'bar')", + virtualTable.create(Module("custom", ["foo", "bar"])) + ) + } + + func test_rename_onVirtualTable_compilesAlterTableRenameToExpression() { + XCTAssertEqual( + "ALTER TABLE \"old\" RENAME TO \"virtual_table\"", + VirtualTable("old").rename(virtualTable) + ) + } + +} diff --git a/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/SetterTests.swift b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/SetterTests.swift new file mode 100644 index 0000000..d4f189d --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/SetterTests.swift @@ -0,0 +1,137 @@ +import XCTest +import SQLite + +class SetterTests : XCTestCase { + + func test_setterAssignmentOperator_buildsSetter() { + AssertSQL("\"int\" = \"int\"", int <- int) + AssertSQL("\"int\" = 1", int <- 1) + AssertSQL("\"intOptional\" = \"int\"", intOptional <- int) + AssertSQL("\"intOptional\" = \"intOptional\"", intOptional <- intOptional) + AssertSQL("\"intOptional\" = 1", intOptional <- 1) + AssertSQL("\"intOptional\" = NULL", intOptional <- nil) + } + + func test_plusEquals_withStringExpression_buildsSetter() { + AssertSQL("\"string\" = (\"string\" || \"string\")", string += string) + AssertSQL("\"string\" = (\"string\" || 'literal')", string += "literal") + AssertSQL("\"stringOptional\" = (\"stringOptional\" || \"string\")", stringOptional += string) + AssertSQL("\"stringOptional\" = (\"stringOptional\" || \"stringOptional\")", stringOptional += stringOptional) + AssertSQL("\"stringOptional\" = (\"stringOptional\" || 'literal')", stringOptional += "literal") + } + + func test_plusEquals_withNumberExpression_buildsSetter() { + AssertSQL("\"int\" = (\"int\" + \"int\")", int += int) + AssertSQL("\"int\" = (\"int\" + 1)", int += 1) + AssertSQL("\"intOptional\" = (\"intOptional\" + \"int\")", intOptional += int) + AssertSQL("\"intOptional\" = (\"intOptional\" + \"intOptional\")", intOptional += intOptional) + AssertSQL("\"intOptional\" = (\"intOptional\" + 1)", intOptional += 1) + + AssertSQL("\"double\" = (\"double\" + \"double\")", double += double) + AssertSQL("\"double\" = (\"double\" + 1.0)", double += 1) + AssertSQL("\"doubleOptional\" = (\"doubleOptional\" + \"double\")", doubleOptional += double) + AssertSQL("\"doubleOptional\" = (\"doubleOptional\" + \"doubleOptional\")", doubleOptional += doubleOptional) + AssertSQL("\"doubleOptional\" = (\"doubleOptional\" + 1.0)", doubleOptional += 1) + } + + func test_minusEquals_withNumberExpression_buildsSetter() { + AssertSQL("\"int\" = (\"int\" - \"int\")", int -= int) + AssertSQL("\"int\" = (\"int\" - 1)", int -= 1) + AssertSQL("\"intOptional\" = (\"intOptional\" - \"int\")", intOptional -= int) + AssertSQL("\"intOptional\" = (\"intOptional\" - \"intOptional\")", intOptional -= intOptional) + AssertSQL("\"intOptional\" = (\"intOptional\" - 1)", intOptional -= 1) + + AssertSQL("\"double\" = (\"double\" - \"double\")", double -= double) + AssertSQL("\"double\" = (\"double\" - 1.0)", double -= 1) + AssertSQL("\"doubleOptional\" = (\"doubleOptional\" - \"double\")", doubleOptional -= double) + AssertSQL("\"doubleOptional\" = (\"doubleOptional\" - \"doubleOptional\")", doubleOptional -= doubleOptional) + AssertSQL("\"doubleOptional\" = (\"doubleOptional\" - 1.0)", doubleOptional -= 1) + } + + func test_timesEquals_withNumberExpression_buildsSetter() { + AssertSQL("\"int\" = (\"int\" * \"int\")", int *= int) + AssertSQL("\"int\" = (\"int\" * 1)", int *= 1) + AssertSQL("\"intOptional\" = (\"intOptional\" * \"int\")", intOptional *= int) + AssertSQL("\"intOptional\" = (\"intOptional\" * \"intOptional\")", intOptional *= intOptional) + AssertSQL("\"intOptional\" = (\"intOptional\" * 1)", intOptional *= 1) + + AssertSQL("\"double\" = (\"double\" * \"double\")", double *= double) + AssertSQL("\"double\" = (\"double\" * 1.0)", double *= 1) + AssertSQL("\"doubleOptional\" = (\"doubleOptional\" * \"double\")", doubleOptional *= double) + AssertSQL("\"doubleOptional\" = (\"doubleOptional\" * \"doubleOptional\")", doubleOptional *= doubleOptional) + AssertSQL("\"doubleOptional\" = (\"doubleOptional\" * 1.0)", doubleOptional *= 1) + } + + func test_dividedByEquals_withNumberExpression_buildsSetter() { + AssertSQL("\"int\" = (\"int\" / \"int\")", int /= int) + AssertSQL("\"int\" = (\"int\" / 1)", int /= 1) + AssertSQL("\"intOptional\" = (\"intOptional\" / \"int\")", intOptional /= int) + AssertSQL("\"intOptional\" = (\"intOptional\" / \"intOptional\")", intOptional /= intOptional) + AssertSQL("\"intOptional\" = (\"intOptional\" / 1)", intOptional /= 1) + + AssertSQL("\"double\" = (\"double\" / \"double\")", double /= double) + AssertSQL("\"double\" = (\"double\" / 1.0)", double /= 1) + AssertSQL("\"doubleOptional\" = (\"doubleOptional\" / \"double\")", doubleOptional /= double) + AssertSQL("\"doubleOptional\" = (\"doubleOptional\" / \"doubleOptional\")", doubleOptional /= doubleOptional) + AssertSQL("\"doubleOptional\" = (\"doubleOptional\" / 1.0)", doubleOptional /= 1) + } + + func test_moduloEquals_withIntegerExpression_buildsSetter() { + AssertSQL("\"int\" = (\"int\" % \"int\")", int %= int) + AssertSQL("\"int\" = (\"int\" % 1)", int %= 1) + AssertSQL("\"intOptional\" = (\"intOptional\" % \"int\")", intOptional %= int) + AssertSQL("\"intOptional\" = (\"intOptional\" % \"intOptional\")", intOptional %= intOptional) + AssertSQL("\"intOptional\" = (\"intOptional\" % 1)", intOptional %= 1) + } + + func test_leftShiftEquals_withIntegerExpression_buildsSetter() { + AssertSQL("\"int\" = (\"int\" << \"int\")", int <<= int) + AssertSQL("\"int\" = (\"int\" << 1)", int <<= 1) + AssertSQL("\"intOptional\" = (\"intOptional\" << \"int\")", intOptional <<= int) + AssertSQL("\"intOptional\" = (\"intOptional\" << \"intOptional\")", intOptional <<= intOptional) + AssertSQL("\"intOptional\" = (\"intOptional\" << 1)", intOptional <<= 1) + } + + func test_rightShiftEquals_withIntegerExpression_buildsSetter() { + AssertSQL("\"int\" = (\"int\" >> \"int\")", int >>= int) + AssertSQL("\"int\" = (\"int\" >> 1)", int >>= 1) + AssertSQL("\"intOptional\" = (\"intOptional\" >> \"int\")", intOptional >>= int) + AssertSQL("\"intOptional\" = (\"intOptional\" >> \"intOptional\")", intOptional >>= intOptional) + AssertSQL("\"intOptional\" = (\"intOptional\" >> 1)", intOptional >>= 1) + } + + func test_bitwiseAndEquals_withIntegerExpression_buildsSetter() { + AssertSQL("\"int\" = (\"int\" & \"int\")", int &= int) + AssertSQL("\"int\" = (\"int\" & 1)", int &= 1) + AssertSQL("\"intOptional\" = (\"intOptional\" & \"int\")", intOptional &= int) + AssertSQL("\"intOptional\" = (\"intOptional\" & \"intOptional\")", intOptional &= intOptional) + AssertSQL("\"intOptional\" = (\"intOptional\" & 1)", intOptional &= 1) + } + + func test_bitwiseOrEquals_withIntegerExpression_buildsSetter() { + AssertSQL("\"int\" = (\"int\" | \"int\")", int |= int) + AssertSQL("\"int\" = (\"int\" | 1)", int |= 1) + AssertSQL("\"intOptional\" = (\"intOptional\" | \"int\")", intOptional |= int) + AssertSQL("\"intOptional\" = (\"intOptional\" | \"intOptional\")", intOptional |= intOptional) + AssertSQL("\"intOptional\" = (\"intOptional\" | 1)", intOptional |= 1) + } + + func test_bitwiseExclusiveOrEquals_withIntegerExpression_buildsSetter() { + AssertSQL("\"int\" = (~((\"int\" & \"int\")) & (\"int\" | \"int\"))", int ^= int) + AssertSQL("\"int\" = (~((\"int\" & 1)) & (\"int\" | 1))", int ^= 1) + AssertSQL("\"intOptional\" = (~((\"intOptional\" & \"int\")) & (\"intOptional\" | \"int\"))", intOptional ^= int) + AssertSQL("\"intOptional\" = (~((\"intOptional\" & \"intOptional\")) & (\"intOptional\" | \"intOptional\"))", intOptional ^= intOptional) + AssertSQL("\"intOptional\" = (~((\"intOptional\" & 1)) & (\"intOptional\" | 1))", intOptional ^= 1) + } + + func test_postfixPlus_withIntegerValue_buildsSetter() { + AssertSQL("\"int\" = (\"int\" + 1)", int++) + AssertSQL("\"intOptional\" = (\"intOptional\" + 1)", intOptional++) + } + + func test_postfixMinus_withIntegerValue_buildsSetter() { + AssertSQL("\"int\" = (\"int\" - 1)", int--) + AssertSQL("\"intOptional\" = (\"intOptional\" - 1)", intOptional--) + } + +} diff --git a/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/StatementTests.swift b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/StatementTests.swift new file mode 100644 index 0000000..326259b --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/StatementTests.swift @@ -0,0 +1,26 @@ +import XCTest +import SQLite + +class StatementTests : SQLiteTestCase { + override func setUp() { + super.setUp() + CreateUsersTable() + } + + func test_cursor_to_blob() { + try! InsertUsers("alice") + let statement = try! db.prepare("SELECT email FROM users") + XCTAssert(try! statement.step()) + let blob = statement.row[0] as Blob + XCTAssertEqual("alice@example.com", String(bytes: blob.bytes, encoding: .utf8)!) + } + + func test_zero_sized_blob_returns_null() { + let blobs = Table("blobs") + let blobColumn = Expression("blob_column") + try! db.run(blobs.create { $0.column(blobColumn) }) + try! db.run(blobs.insert(blobColumn <- Blob(bytes: []))) + let blobValue = try! db.scalar(blobs.select(blobColumn).limit(1, offset: 0)) + XCTAssertEqual([], blobValue.bytes) + } +} diff --git a/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/TestHelpers.swift b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/TestHelpers.swift new file mode 100644 index 0000000..8d60362 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/TestHelpers.swift @@ -0,0 +1,135 @@ +import XCTest +@testable import SQLite + +class SQLiteTestCase : XCTestCase { + private var trace:[String: Int]! + var db:Connection! + let users = Table("users") + + override func setUp() { + super.setUp() + db = try! Connection() + trace = [String:Int]() + + db.trace { SQL in + print(SQL) + self.trace[SQL, default: 0] += 1 + } + } + + func CreateUsersTable() { + try! db.execute(""" + CREATE TABLE users ( + id INTEGER PRIMARY KEY, + email TEXT NOT NULL UNIQUE, + age INTEGER, + salary REAL, + admin BOOLEAN NOT NULL DEFAULT 0 CHECK (admin IN (0, 1)), + manager_id INTEGER, + FOREIGN KEY(manager_id) REFERENCES users(id) + ) + """ + ) + } + + func InsertUsers(_ names: String...) throws { + try InsertUsers(names) + } + + func InsertUsers(_ names: [String]) throws { + for name in names { try InsertUser(name) } + } + + @discardableResult func InsertUser(_ name: String, age: Int? = nil, admin: Bool = false) throws -> Statement { + return try db.run( + "INSERT INTO \"users\" (email, age, admin) values (?, ?, ?)", + "\(name)@example.com", age?.datatypeValue, admin.datatypeValue + ) + } + + func AssertSQL(_ SQL: String, _ executions: Int = 1, _ message: String? = nil, file: StaticString = #file, line: UInt = #line) { + XCTAssertEqual( + executions, trace[SQL] ?? 0, + message ?? SQL, + file: file, line: line + ) + } + + func AssertSQL(_ SQL: String, _ statement: Statement, _ message: String? = nil, file: StaticString = #file, line: UInt = #line) { + try! statement.run() + AssertSQL(SQL, 1, message, file: file, line: line) + if let count = trace[SQL] { trace[SQL] = count - 1 } + } + +// func AssertSQL(SQL: String, _ query: Query, _ message: String? = nil, file: String = __FILE__, line: UInt = __LINE__) { +// for _ in query {} +// AssertSQL(SQL, 1, message, file: file, line: line) +// if let count = trace[SQL] { trace[SQL] = count - 1 } +// } + + func async(expect description: String = "async", timeout: Double = 5, block: (@escaping () -> Void) -> Void) { + let expectation = self.expectation(description: description) + block({ expectation.fulfill() }) + waitForExpectations(timeout: timeout, handler: nil) + } + +} + +let bool = Expression("bool") +let boolOptional = Expression("boolOptional") + +let data = Expression("blob") +let dataOptional = Expression("blobOptional") + +let date = Expression("date") +let dateOptional = Expression("dateOptional") + +let double = Expression("double") +let doubleOptional = Expression("doubleOptional") + +let int = Expression("int") +let intOptional = Expression("intOptional") + +let int64 = Expression("int64") +let int64Optional = Expression("int64Optional") + +let string = Expression("string") +let stringOptional = Expression("stringOptional") + +func AssertSQL(_ expression1: @autoclosure () -> String, _ expression2: @autoclosure () -> Expressible, file: StaticString = #file, line: UInt = #line) { + XCTAssertEqual(expression1(), expression2().asSQL(), file: file, line: line) +} + +func AssertThrows(_ expression: @autoclosure () throws -> T, file: StaticString = #file, line: UInt = #line) { + do { + _ = try expression() + XCTFail("expression expected to throw", file: file, line: line) + } catch { + XCTAssert(true, file: file, line: line) + } +} + +let table = Table("table") +let qualifiedTable = Table("table", database: "main") +let virtualTable = VirtualTable("virtual_table") +let _view = View("view") // avoid Mac XCTestCase collision + +class TestCodable: Codable { + let int: Int + let string: String + let bool: Bool + let float: Float + let double: Double + let optional: String? + let sub: TestCodable? + + init(int: Int, string: String, bool: Bool, float: Float, double: Double, optional: String?, sub: TestCodable?) { + self.int = int + self.string = string + self.bool = bool + self.float = float + self.double = double + self.optional = optional + self.sub = sub + } +} diff --git a/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/ValueTests.swift b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/ValueTests.swift new file mode 100644 index 0000000..bda2b4b --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/ValueTests.swift @@ -0,0 +1,6 @@ +import XCTest +import SQLite + +class ValueTests : XCTestCase { + +} diff --git a/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/fixtures/encrypted.sqlite b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/fixtures/encrypted.sqlite new file mode 100644 index 0000000..4b3c4d0 Binary files /dev/null and b/Carthage/Checkouts/SQLite.swift/Tests/SQLiteTests/fixtures/encrypted.sqlite differ diff --git a/Carthage/Checkouts/SQLite.swift/run-tests.sh b/Carthage/Checkouts/SQLite.swift/run-tests.sh new file mode 100755 index 0000000..0a105c4 --- /dev/null +++ b/Carthage/Checkouts/SQLite.swift/run-tests.sh @@ -0,0 +1,15 @@ +#!/bin/bash +set -ev +if [ -n "$BUILD_SCHEME" ]; then + if [ -n "$IOS_SIMULATOR" ]; then + make test BUILD_SCHEME="$BUILD_SCHEME" IOS_SIMULATOR="$IOS_SIMULATOR" IOS_VERSION="$IOS_VERSION" + else + make test BUILD_SCHEME="$BUILD_SCHEME" + fi +elif [ -n "$VALIDATOR_SUBSPEC" ]; then + cd Tests/CocoaPods && make test +elif [ -n "$CARTHAGE_PLATFORM" ]; then + cd Tests/Carthage && make test CARTHAGE_PLATFORM="$CARTHAGE_PLATFORM" +elif [ -n "${PACKAGE_MANAGER_COMMAND}" ]; then + swift ${PACKAGE_MANAGER_COMMAND} +fi diff --git a/aePronunciation.xcodeproj/project.pbxproj b/aePronunciation.xcodeproj/project.pbxproj index 7d92d14..c7b35bb 100644 --- a/aePronunciation.xcodeproj/project.pbxproj +++ b/aePronunciation.xcodeproj/project.pbxproj @@ -7,11 +7,32 @@ objects = { /* Begin PBXBuildFile section */ - 505489151BBD672B00C4B141 /* raw in Resources */ = {isa = PBXBuildFile; fileRef = 505489141BBD672B00C4B141 /* raw */; }; + 50156A9D1FEB58C000311087 /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 50156A9F1FEB58C000311087 /* InfoPlist.strings */; }; + 5019E20D1FD820800021303D /* StudyTimer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5019E20C1FD8207F0021303D /* StudyTimer.swift */; }; + 504200D31FC2D3020026FBCA /* Ipa.swift in Sources */ = {isa = PBXBuildFile; fileRef = 504200D21FC2D3010026FBCA /* Ipa.swift */; }; + 50483C131FC295AB00B6E228 /* IpaKeyboard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50483C121FC295AB00B6E228 /* IpaKeyboard.swift */; }; + 50483C151FC2963F00B6E228 /* KeyboardTextKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50483C141FC2963F00B6E228 /* KeyboardTextKey.swift */; }; + 50483C171FC2966900B6E228 /* KeyboardKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50483C161FC2966900B6E228 /* KeyboardKey.swift */; }; + 50483C1F1FC29A3300B6E228 /* aePronunciationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50483C1E1FC29A3300B6E228 /* aePronunciationTests.swift */; }; + 50483C2D1FC29A5700B6E228 /* aePronunciationUITests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50483C2C1FC29A5700B6E228 /* aePronunciationUITests.swift */; }; + 50483C351FC29BAD00B6E228 /* KeyboardImageKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50483C341FC29BAD00B6E228 /* KeyboardImageKey.swift */; }; + 504FD6681FC51AF100622B50 /* raw in Resources */ = {isa = PBXBuildFile; fileRef = 504FD6671FC51AF100622B50 /* raw */; }; + 506480CE1FE48375006D7194 /* AllTestsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 506480CD1FE48375006D7194 /* AllTestsViewController.swift */; }; + 506480D01FE48C6C006D7194 /* AllTestsTableViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 506480CF1FE48C6C006D7194 /* AllTestsTableViewCell.swift */; }; + 506480D21FE4BDE4006D7194 /* AppLocale.swift in Sources */ = {isa = PBXBuildFile; fileRef = 506480D11FE4BDE4006D7194 /* AppLocale.swift */; }; + 506480D61FE51E5B006D7194 /* MoreTableViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 506480D51FE51E5B006D7194 /* MoreTableViewController.swift */; }; + 506480D81FE52594006D7194 /* TimeViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 506480D71FE52594006D7194 /* TimeViewController.swift */; }; + 506480DA1FE54D3A006D7194 /* AboutViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 506480D91FE54D3A006D7194 /* AboutViewController.swift */; }; 5074CC0A1BBCCDAF005B0871 /* LearnSingleSoundsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5074CC091BBCCDAF005B0871 /* LearnSingleSoundsViewController.swift */; }; 508360571BC29A0A00A225E6 /* PracticeSoundsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508360561BC29A0A00A225E6 /* PracticeSoundsViewController.swift */; }; 508360591BC29ABA00A225E6 /* Player.swift in Sources */ = {isa = PBXBuildFile; fileRef = 508360581BC29ABA00A225E6 /* Player.swift */; }; - 50D64FD31BBE5083003657A4 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 50D64FD21BBE5083003657A4 /* Localizable.strings */; }; + 5094F1841FCD08DD00F5EF29 /* Localizable.strings in Resources */ = {isa = PBXBuildFile; fileRef = 5094F1861FCD08DD00F5EF29 /* Localizable.strings */; }; + 5094F18B1FCF8BE600F5EF29 /* SoundMode.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5094F18A1FCF8BE500F5EF29 /* SoundMode.swift */; }; + 5094F18D1FCFACCE00F5EF29 /* MyUserDefaults.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5094F18C1FCFACCE00F5EF29 /* MyUserDefaults.swift */; }; + 50A7D9CE1FD96A7800671847 /* SQLiteDatabase.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50A7D9CD1FD96A7800671847 /* SQLiteDatabase.swift */; }; + 50A7D9D11FD9708000671847 /* SQLite.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 50A7D9D01FD9708000671847 /* SQLite.framework */; }; + 50A7D9D41FDA619300671847 /* Test.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50A7D9D31FDA619300671847 /* Test.swift */; }; + 50CB442C1FCC01BB0071FFFA /* SpecialSound.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50CB442B1FCC01BB0071FFFA /* SpecialSound.swift */; }; 50D64FD51BBE5D8B003657A4 /* String+localized.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50D64FD41BBE5D8B003657A4 /* String+localized.swift */; }; 50D64FD71BBE7E96003657A4 /* SingleSound.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50D64FD61BBE7E96003657A4 /* SingleSound.swift */; }; 50D64FD91BBE912C003657A4 /* LearnDoubleSoundsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50D64FD81BBE912C003657A4 /* LearnDoubleSoundsViewController.swift */; }; @@ -19,21 +40,73 @@ 50DC21761BB8FF65000075AE /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 50DC21741BB8FF65000075AE /* Main.storyboard */; }; 50DC21781BB8FF65000075AE /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 50DC21771BB8FF65000075AE /* Assets.xcassets */; }; 50DC217B1BB8FF65000075AE /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 50DC21791BB8FF65000075AE /* LaunchScreen.storyboard */; }; + 50DF5ABC1FD1043700DD7A04 /* SelectSoundsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50DF5ABB1FD1043600DD7A04 /* SelectSoundsViewController.swift */; }; + 50DF5AC01FD2607300DD7A04 /* IpaChooserKeyboard.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50DF5ABF1FD2607300DD7A04 /* IpaChooserKeyboard.swift */; }; + 50DF5AC21FD2C26500DD7A04 /* UIColor+custom.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50DF5AC11FD2C26500DD7A04 /* UIColor+custom.swift */; }; 50E2EAF41BD6182600842ED3 /* TestResultsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50E2EAF31BD6182600842ED3 /* TestResultsViewController.swift */; }; 50E420251BBF5DD40092F74B /* DoubleSoundsCollectionViewCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50E420241BBF5DD40092F74B /* DoubleSoundsCollectionViewCell.swift */; }; 50E420271BBF684C0092F74B /* DoubleSound.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50E420261BBF684C0092F74B /* DoubleSound.swift */; }; 50E9E6421BD4A577002CC689 /* TestSetupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50E9E6411BD4A577002CC689 /* TestSetupViewController.swift */; }; 50E9E6441BD4ABBB002CC689 /* Answer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50E9E6431BD4ABBB002CC689 /* Answer.swift */; }; - 50E9E64A1BD50717002CC689 /* Key.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50E9E6491BD50717002CC689 /* Key.swift */; }; 50E9E64C1BD50A50002CC689 /* TestViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50E9E64B1BD50A50002CC689 /* TestViewController.swift */; }; /* End PBXBuildFile section */ +/* Begin PBXContainerItemProxy section */ + 50483C211FC29A3300B6E228 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 50DC21631BB8FF65000075AE /* Project object */; + proxyType = 1; + remoteGlobalIDString = 50DC216A1BB8FF65000075AE; + remoteInfo = aePronunciation; + }; + 50483C2F1FC29A5700B6E228 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = 50DC21631BB8FF65000075AE /* Project object */; + proxyType = 1; + remoteGlobalIDString = 50DC216A1BB8FF65000075AE; + remoteInfo = aePronunciation; + }; +/* End PBXContainerItemProxy section */ + /* Begin PBXFileReference section */ - 505489141BBD672B00C4B141 /* raw */ = {isa = PBXFileReference; lastKnownFileType = folder; path = raw; sourceTree = ""; }; + 50156A9A1FEA937100311087 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/Localizable.strings; sourceTree = ""; }; + 50156AA21FEB878800311087 /* Base */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = Base; path = Base.lproj/InfoPlist.strings; sourceTree = ""; }; + 50156AA31FEBD1C100311087 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/InfoPlist.strings"; sourceTree = ""; }; + 50156AA41FEBD1CD00311087 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/InfoPlist.strings"; sourceTree = ""; }; + 5019E20C1FD8207F0021303D /* StudyTimer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = StudyTimer.swift; sourceTree = ""; }; + 503A9EEF1FEA4929001F69AA /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Main.strings"; sourceTree = ""; }; + 503A9EF11FEA49DA001F69AA /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/Main.strings"; sourceTree = ""; }; + 504200D21FC2D3010026FBCA /* Ipa.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Ipa.swift; sourceTree = ""; }; + 50483C121FC295AB00B6E228 /* IpaKeyboard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IpaKeyboard.swift; sourceTree = ""; }; + 50483C141FC2963F00B6E228 /* KeyboardTextKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyboardTextKey.swift; sourceTree = ""; }; + 50483C161FC2966900B6E228 /* KeyboardKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyboardKey.swift; sourceTree = ""; }; + 50483C1C1FC29A3200B6E228 /* aePronunciationTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = aePronunciationTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 50483C1E1FC29A3300B6E228 /* aePronunciationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = aePronunciationTests.swift; sourceTree = ""; }; + 50483C201FC29A3300B6E228 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 50483C2A1FC29A5700B6E228 /* aePronunciationUITests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = aePronunciationUITests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 50483C2C1FC29A5700B6E228 /* aePronunciationUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = aePronunciationUITests.swift; sourceTree = ""; }; + 50483C2E1FC29A5700B6E228 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 50483C341FC29BAD00B6E228 /* KeyboardImageKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyboardImageKey.swift; sourceTree = ""; }; + 504FD6671FC51AF100622B50 /* raw */ = {isa = PBXFileReference; lastKnownFileType = folder; path = raw; sourceTree = ""; }; + 506480CD1FE48375006D7194 /* AllTestsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AllTestsViewController.swift; sourceTree = ""; }; + 506480CF1FE48C6C006D7194 /* AllTestsTableViewCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AllTestsTableViewCell.swift; sourceTree = ""; }; + 506480D11FE4BDE4006D7194 /* AppLocale.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppLocale.swift; sourceTree = ""; }; + 506480D51FE51E5B006D7194 /* MoreTableViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MoreTableViewController.swift; sourceTree = ""; }; + 506480D71FE52594006D7194 /* TimeViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimeViewController.swift; sourceTree = ""; }; + 506480D91FE54D3A006D7194 /* AboutViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutViewController.swift; sourceTree = ""; }; 5074CC091BBCCDAF005B0871 /* LearnSingleSoundsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LearnSingleSoundsViewController.swift; sourceTree = ""; }; 508360561BC29A0A00A225E6 /* PracticeSoundsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = PracticeSoundsViewController.swift; sourceTree = ""; }; 508360581BC29ABA00A225E6 /* Player.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Player.swift; sourceTree = ""; }; - 50D64FD21BBE5083003657A4 /* Localizable.strings */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; path = Localizable.strings; sourceTree = ""; }; + 5094F1811FCD088800F5EF29 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/LaunchScreen.strings"; sourceTree = ""; }; + 5094F1831FCD089900F5EF29 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/LaunchScreen.strings"; sourceTree = ""; }; + 5094F1881FCD08F200F5EF29 /* zh-Hans */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hans"; path = "zh-Hans.lproj/Localizable.strings"; sourceTree = ""; }; + 5094F1891FCD08F700F5EF29 /* zh-Hant */ = {isa = PBXFileReference; lastKnownFileType = text.plist.strings; name = "zh-Hant"; path = "zh-Hant.lproj/Localizable.strings"; sourceTree = ""; }; + 5094F18A1FCF8BE500F5EF29 /* SoundMode.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SoundMode.swift; sourceTree = ""; }; + 5094F18C1FCFACCE00F5EF29 /* MyUserDefaults.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MyUserDefaults.swift; sourceTree = ""; }; + 50A7D9CD1FD96A7800671847 /* SQLiteDatabase.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SQLiteDatabase.swift; sourceTree = ""; }; + 50A7D9D01FD9708000671847 /* SQLite.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SQLite.framework; path = Carthage/Build/iOS/SQLite.framework; sourceTree = ""; }; + 50A7D9D31FDA619300671847 /* Test.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Test.swift; sourceTree = ""; }; + 50CB442B1FCC01BB0071FFFA /* SpecialSound.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SpecialSound.swift; sourceTree = ""; }; 50D64FD41BBE5D8B003657A4 /* String+localized.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = "String+localized.swift"; sourceTree = ""; }; 50D64FD61BBE7E96003657A4 /* SingleSound.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = SingleSound.swift; sourceTree = ""; }; 50D64FD81BBE912C003657A4 /* LearnDoubleSoundsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = LearnDoubleSoundsViewController.swift; sourceTree = ""; }; @@ -47,35 +120,75 @@ 50DC21871BB8FF65000075AE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; 50DC21901BB8FF65000075AE /* aePronunciationUITests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = aePronunciationUITests.swift; sourceTree = ""; }; 50DC21921BB8FF65000075AE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = ""; }; + 50DF5ABB1FD1043600DD7A04 /* SelectSoundsViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SelectSoundsViewController.swift; sourceTree = ""; }; + 50DF5ABF1FD2607300DD7A04 /* IpaChooserKeyboard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IpaChooserKeyboard.swift; sourceTree = ""; }; + 50DF5AC11FD2C26500DD7A04 /* UIColor+custom.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "UIColor+custom.swift"; sourceTree = ""; }; 50E2EAF31BD6182600842ED3 /* TestResultsViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestResultsViewController.swift; sourceTree = ""; }; 50E420241BBF5DD40092F74B /* DoubleSoundsCollectionViewCell.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DoubleSoundsCollectionViewCell.swift; sourceTree = ""; }; 50E420261BBF684C0092F74B /* DoubleSound.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = DoubleSound.swift; sourceTree = ""; }; 50E9E6411BD4A577002CC689 /* TestSetupViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestSetupViewController.swift; sourceTree = ""; }; 50E9E6431BD4ABBB002CC689 /* Answer.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Answer.swift; sourceTree = ""; }; - 50E9E6491BD50717002CC689 /* Key.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = Key.swift; sourceTree = ""; }; 50E9E64B1BD50A50002CC689 /* TestViewController.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; path = TestViewController.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 50483C191FC29A3200B6E228 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 50483C271FC29A5700B6E228 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 50DC21681BB8FF65000075AE /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 50A7D9D11FD9708000671847 /* SQLite.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 50483C1D1FC29A3200B6E228 /* aePronunciationTests */ = { + isa = PBXGroup; + children = ( + 50483C1E1FC29A3300B6E228 /* aePronunciationTests.swift */, + 50483C201FC29A3300B6E228 /* Info.plist */, + ); + path = aePronunciationTests; + sourceTree = ""; + }; + 50483C2B1FC29A5700B6E228 /* aePronunciationUITests */ = { + isa = PBXGroup; + children = ( + 50483C2C1FC29A5700B6E228 /* aePronunciationUITests.swift */, + 50483C2E1FC29A5700B6E228 /* Info.plist */, + ); + path = aePronunciationUITests; + sourceTree = ""; + }; 5074CC0B1BBCCDE2005B0871 /* Contollers */ = { isa = PBXGroup; children = ( 5074CC091BBCCDAF005B0871 /* LearnSingleSoundsViewController.swift */, 50D64FD81BBE912C003657A4 /* LearnDoubleSoundsViewController.swift */, 508360561BC29A0A00A225E6 /* PracticeSoundsViewController.swift */, + 50DF5ABB1FD1043600DD7A04 /* SelectSoundsViewController.swift */, 50E9E6411BD4A577002CC689 /* TestSetupViewController.swift */, 50E9E64B1BD50A50002CC689 /* TestViewController.swift */, 50E2EAF31BD6182600842ED3 /* TestResultsViewController.swift */, + 506480D51FE51E5B006D7194 /* MoreTableViewController.swift */, + 506480CD1FE48375006D7194 /* AllTestsViewController.swift */, + 506480D91FE54D3A006D7194 /* AboutViewController.swift */, + 506480D71FE52594006D7194 /* TimeViewController.swift */, ); name = Contollers; sourceTree = ""; @@ -84,19 +197,41 @@ isa = PBXGroup; children = ( 50DC21741BB8FF65000075AE /* Main.storyboard */, + 50DC21791BB8FF65000075AE /* LaunchScreen.storyboard */, + 50483C121FC295AB00B6E228 /* IpaKeyboard.swift */, + 50DF5ABF1FD2607300DD7A04 /* IpaChooserKeyboard.swift */, + 50483C341FC29BAD00B6E228 /* KeyboardImageKey.swift */, + 50483C141FC2963F00B6E228 /* KeyboardTextKey.swift */, + 50483C161FC2966900B6E228 /* KeyboardKey.swift */, + 506480CF1FE48C6C006D7194 /* AllTestsTableViewCell.swift */, 50E420241BBF5DD40092F74B /* DoubleSoundsCollectionViewCell.swift */, ); name = Views; sourceTree = ""; }; + 50A7D9CF1FD9707F00671847 /* Frameworks */ = { + isa = PBXGroup; + children = ( + 50A7D9D01FD9708000671847 /* SQLite.framework */, + ); + name = Frameworks; + sourceTree = ""; + }; 50D64F561BBE0129003657A4 /* Models */ = { isa = PBXGroup; children = ( 50D64FD61BBE7E96003657A4 /* SingleSound.swift */, 50E420261BBF684C0092F74B /* DoubleSound.swift */, + 50CB442B1FCC01BB0071FFFA /* SpecialSound.swift */, 508360581BC29ABA00A225E6 /* Player.swift */, 50E9E6431BD4ABBB002CC689 /* Answer.swift */, - 50E9E6491BD50717002CC689 /* Key.swift */, + 506480D11FE4BDE4006D7194 /* AppLocale.swift */, + 5094F18A1FCF8BE500F5EF29 /* SoundMode.swift */, + 5094F18C1FCFACCE00F5EF29 /* MyUserDefaults.swift */, + 50A7D9CD1FD96A7800671847 /* SQLiteDatabase.swift */, + 5019E20C1FD8207F0021303D /* StudyTimer.swift */, + 504200D21FC2D3010026FBCA /* Ipa.swift */, + 50A7D9D31FDA619300671847 /* Test.swift */, ); name = Models; sourceTree = ""; @@ -105,12 +240,13 @@ isa = PBXGroup; children = ( 50DC216E1BB8FF65000075AE /* AppDelegate.swift */, - 50DC21771BB8FF65000075AE /* Assets.xcassets */, - 505489141BBD672B00C4B141 /* raw */, + 504FD6671FC51AF100622B50 /* raw */, 50DC217C1BB8FF65000075AE /* Info.plist */, - 50D64FD21BBE5083003657A4 /* Localizable.strings */, + 50156A9F1FEB58C000311087 /* InfoPlist.strings */, + 50DC21771BB8FF65000075AE /* Assets.xcassets */, + 5094F1861FCD08DD00F5EF29 /* Localizable.strings */, 50D64FD41BBE5D8B003657A4 /* String+localized.swift */, - 50DC21791BB8FF65000075AE /* LaunchScreen.storyboard */, + 50DF5AC11FD2C26500DD7A04 /* UIColor+custom.swift */, ); name = Supplemental; sourceTree = ""; @@ -121,7 +257,10 @@ 50DC216D1BB8FF65000075AE /* aePronunciation */, 50DC21841BB8FF65000075AE /* aePronunciationTests */, 50DC218F1BB8FF65000075AE /* aePronunciationUITests */, + 50483C1D1FC29A3200B6E228 /* aePronunciationTests */, + 50483C2B1FC29A5700B6E228 /* aePronunciationUITests */, 50DC216C1BB8FF65000075AE /* Products */, + 50A7D9CF1FD9707F00671847 /* Frameworks */, ); sourceTree = ""; }; @@ -129,6 +268,8 @@ isa = PBXGroup; children = ( 50DC216B1BB8FF65000075AE /* aePronunciation.app */, + 50483C1C1FC29A3200B6E228 /* aePronunciationTests.xctest */, + 50483C2A1FC29A5700B6E228 /* aePronunciationUITests.xctest */, ); name = Products; sourceTree = ""; @@ -165,6 +306,42 @@ /* End PBXGroup section */ /* Begin PBXNativeTarget section */ + 50483C1B1FC29A3200B6E228 /* aePronunciationTests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 50483C231FC29A3300B6E228 /* Build configuration list for PBXNativeTarget "aePronunciationTests" */; + buildPhases = ( + 50483C181FC29A3200B6E228 /* Sources */, + 50483C191FC29A3200B6E228 /* Frameworks */, + 50483C1A1FC29A3200B6E228 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 50483C221FC29A3300B6E228 /* PBXTargetDependency */, + ); + name = aePronunciationTests; + productName = aePronunciationTests; + productReference = 50483C1C1FC29A3200B6E228 /* aePronunciationTests.xctest */; + productType = "com.apple.product-type.bundle.unit-test"; + }; + 50483C291FC29A5700B6E228 /* aePronunciationUITests */ = { + isa = PBXNativeTarget; + buildConfigurationList = 50483C311FC29A5700B6E228 /* Build configuration list for PBXNativeTarget "aePronunciationUITests" */; + buildPhases = ( + 50483C261FC29A5700B6E228 /* Sources */, + 50483C271FC29A5700B6E228 /* Frameworks */, + 50483C281FC29A5700B6E228 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 50483C301FC29A5700B6E228 /* PBXTargetDependency */, + ); + name = aePronunciationUITests; + productName = aePronunciationUITests; + productReference = 50483C2A1FC29A5700B6E228 /* aePronunciationUITests.xctest */; + productType = "com.apple.product-type.bundle.ui-testing"; + }; 50DC216A1BB8FF65000075AE /* aePronunciation */ = { isa = PBXNativeTarget; buildConfigurationList = 50DC21951BB8FF65000075AE /* Build configuration list for PBXNativeTarget "aePronunciation" */; @@ -172,6 +349,7 @@ 50DC21671BB8FF65000075AE /* Sources */, 50DC21681BB8FF65000075AE /* Frameworks */, 50DC21691BB8FF65000075AE /* Resources */, + 50A7D9D21FD970B700671847 /* ShellScript */, ); buildRules = ( ); @@ -188,9 +366,20 @@ 50DC21631BB8FF65000075AE /* Project object */ = { isa = PBXProject; attributes = { + LastSwiftUpdateCheck = 0900; LastUpgradeCheck = 0900; ORGANIZATIONNAME = Suragch; TargetAttributes = { + 50483C1B1FC29A3200B6E228 = { + CreatedOnToolsVersion = 9.0.1; + ProvisioningStyle = Automatic; + TestTargetID = 50DC216A1BB8FF65000075AE; + }; + 50483C291FC29A5700B6E228 = { + CreatedOnToolsVersion = 9.0.1; + ProvisioningStyle = Automatic; + TestTargetID = 50DC216A1BB8FF65000075AE; + }; 50DC216A1BB8FF65000075AE = { CreatedOnToolsVersion = 7.0; DevelopmentTeam = HSUZ2UJNHR; @@ -205,6 +394,8 @@ knownRegions = ( en, Base, + "zh-Hans", + "zh-Hant", ); mainGroup = 50DC21621BB8FF65000075AE; productRefGroup = 50DC216C1BB8FF65000075AE /* Products */; @@ -212,54 +403,158 @@ projectRoot = ""; targets = ( 50DC216A1BB8FF65000075AE /* aePronunciation */, + 50483C1B1FC29A3200B6E228 /* aePronunciationTests */, + 50483C291FC29A5700B6E228 /* aePronunciationUITests */, ); }; /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ + 50483C1A1FC29A3200B6E228 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 50483C281FC29A5700B6E228 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 50DC21691BB8FF65000075AE /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( 50DC217B1BB8FF65000075AE /* LaunchScreen.storyboard in Resources */, - 50D64FD31BBE5083003657A4 /* Localizable.strings in Resources */, + 50156A9D1FEB58C000311087 /* InfoPlist.strings in Resources */, + 5094F1841FCD08DD00F5EF29 /* Localizable.strings in Resources */, + 504FD6681FC51AF100622B50 /* raw in Resources */, 50DC21781BB8FF65000075AE /* Assets.xcassets in Resources */, - 505489151BBD672B00C4B141 /* raw in Resources */, 50DC21761BB8FF65000075AE /* Main.storyboard in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ +/* Begin PBXShellScriptBuildPhase section */ + 50A7D9D21FD970B700671847 /* ShellScript */ = { + isa = PBXShellScriptBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + inputPaths = ( + "$(SRCROOT)/Carthage/Build/iOS/SQLite.framework", + ); + outputPaths = ( + ); + runOnlyForDeploymentPostprocessing = 0; + shellPath = /bin/sh; + shellScript = "/usr/local/bin/carthage copy-frameworks"; + }; +/* End PBXShellScriptBuildPhase section */ + /* Begin PBXSourcesBuildPhase section */ + 50483C181FC29A3200B6E228 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 50483C1F1FC29A3300B6E228 /* aePronunciationTests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 50483C261FC29A5700B6E228 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 50483C2D1FC29A5700B6E228 /* aePronunciationUITests.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 50DC21671BB8FF65000075AE /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 506480CE1FE48375006D7194 /* AllTestsViewController.swift in Sources */, 50E9E64C1BD50A50002CC689 /* TestViewController.swift in Sources */, 50DC216F1BB8FF65000075AE /* AppDelegate.swift in Sources */, + 504200D31FC2D3020026FBCA /* Ipa.swift in Sources */, + 506480D21FE4BDE4006D7194 /* AppLocale.swift in Sources */, + 50483C131FC295AB00B6E228 /* IpaKeyboard.swift in Sources */, 50E420251BBF5DD40092F74B /* DoubleSoundsCollectionViewCell.swift in Sources */, 50D64FD91BBE912C003657A4 /* LearnDoubleSoundsViewController.swift in Sources */, + 5094F18D1FCFACCE00F5EF29 /* MyUserDefaults.swift in Sources */, + 5019E20D1FD820800021303D /* StudyTimer.swift in Sources */, + 5094F18B1FCF8BE600F5EF29 /* SoundMode.swift in Sources */, 50D64FD51BBE5D8B003657A4 /* String+localized.swift in Sources */, + 50DF5AC01FD2607300DD7A04 /* IpaChooserKeyboard.swift in Sources */, + 50DF5ABC1FD1043700DD7A04 /* SelectSoundsViewController.swift in Sources */, + 50CB442C1FCC01BB0071FFFA /* SpecialSound.swift in Sources */, + 506480D81FE52594006D7194 /* TimeViewController.swift in Sources */, 50E2EAF41BD6182600842ED3 /* TestResultsViewController.swift in Sources */, 5074CC0A1BBCCDAF005B0871 /* LearnSingleSoundsViewController.swift in Sources */, + 506480D61FE51E5B006D7194 /* MoreTableViewController.swift in Sources */, + 50483C171FC2966900B6E228 /* KeyboardKey.swift in Sources */, 50E9E6441BD4ABBB002CC689 /* Answer.swift in Sources */, + 50483C351FC29BAD00B6E228 /* KeyboardImageKey.swift in Sources */, 50E420271BBF684C0092F74B /* DoubleSound.swift in Sources */, - 50E9E64A1BD50717002CC689 /* Key.swift in Sources */, 50E9E6421BD4A577002CC689 /* TestSetupViewController.swift in Sources */, + 50A7D9D41FDA619300671847 /* Test.swift in Sources */, + 506480DA1FE54D3A006D7194 /* AboutViewController.swift in Sources */, 50D64FD71BBE7E96003657A4 /* SingleSound.swift in Sources */, 508360591BC29ABA00A225E6 /* Player.swift in Sources */, 508360571BC29A0A00A225E6 /* PracticeSoundsViewController.swift in Sources */, + 50483C151FC2963F00B6E228 /* KeyboardTextKey.swift in Sources */, + 50DF5AC21FD2C26500DD7A04 /* UIColor+custom.swift in Sources */, + 506480D01FE48C6C006D7194 /* AllTestsTableViewCell.swift in Sources */, + 50A7D9CE1FD96A7800671847 /* SQLiteDatabase.swift in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXSourcesBuildPhase section */ +/* Begin PBXTargetDependency section */ + 50483C221FC29A3300B6E228 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 50DC216A1BB8FF65000075AE /* aePronunciation */; + targetProxy = 50483C211FC29A3300B6E228 /* PBXContainerItemProxy */; + }; + 50483C301FC29A5700B6E228 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + target = 50DC216A1BB8FF65000075AE /* aePronunciation */; + targetProxy = 50483C2F1FC29A5700B6E228 /* PBXContainerItemProxy */; + }; +/* End PBXTargetDependency section */ + /* Begin PBXVariantGroup section */ + 50156A9F1FEB58C000311087 /* InfoPlist.strings */ = { + isa = PBXVariantGroup; + children = ( + 50156AA21FEB878800311087 /* Base */, + 50156AA31FEBD1C100311087 /* zh-Hans */, + 50156AA41FEBD1CD00311087 /* zh-Hant */, + ); + name = InfoPlist.strings; + sourceTree = ""; + }; + 5094F1861FCD08DD00F5EF29 /* Localizable.strings */ = { + isa = PBXVariantGroup; + children = ( + 5094F1881FCD08F200F5EF29 /* zh-Hans */, + 5094F1891FCD08F700F5EF29 /* zh-Hant */, + 50156A9A1FEA937100311087 /* Base */, + ); + name = Localizable.strings; + sourceTree = ""; + }; 50DC21741BB8FF65000075AE /* Main.storyboard */ = { isa = PBXVariantGroup; children = ( 50DC21751BB8FF65000075AE /* Base */, + 503A9EEF1FEA4929001F69AA /* zh-Hans */, + 503A9EF11FEA49DA001F69AA /* zh-Hant */, ); name = Main.storyboard; sourceTree = ""; @@ -268,6 +563,8 @@ isa = PBXVariantGroup; children = ( 50DC217A1BB8FF65000075AE /* Base */, + 5094F1811FCD088800F5EF29 /* zh-Hans */, + 5094F1831FCD089900F5EF29 /* zh-Hant */, ); name = LaunchScreen.storyboard; sourceTree = ""; @@ -275,10 +572,107 @@ /* End PBXVariantGroup section */ /* Begin XCBuildConfiguration section */ + 50483C241FC29A3300B6E228 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = HSUZ2UJNHR; + GCC_C_LANGUAGE_STANDARD = gnu11; + INFOPLIST_FILE = aePronunciationTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.aepronunciation.ipa.aePronunciationTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/aePronunciation.app/aePronunciation"; + }; + name = Debug; + }; + 50483C251FC29A3300B6E228 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + BUNDLE_LOADER = "$(TEST_HOST)"; + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = HSUZ2UJNHR; + GCC_C_LANGUAGE_STANDARD = gnu11; + INFOPLIST_FILE = aePronunciationTests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.aepronunciation.ipa.aePronunciationTests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_HOST = "$(BUILT_PRODUCTS_DIR)/aePronunciation.app/aePronunciation"; + }; + name = Release; + }; + 50483C321FC29A5700B6E228 /* Debug */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = HSUZ2UJNHR; + GCC_C_LANGUAGE_STANDARD = gnu11; + INFOPLIST_FILE = aePronunciationUITests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.aepronunciation.ipa.aePronunciationUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = aePronunciation; + }; + name = Debug; + }; + 50483C331FC29A5700B6E228 /* Release */ = { + isa = XCBuildConfiguration; + buildSettings = { + CLANG_ANALYZER_NONNULL = YES; + CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE; + CLANG_CXX_LANGUAGE_STANDARD = "gnu++14"; + CLANG_WARN_DOCUMENTATION_COMMENTS = YES; + CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE; + CODE_SIGN_IDENTITY = "iPhone Developer"; + CODE_SIGN_STYLE = Automatic; + DEVELOPMENT_TEAM = HSUZ2UJNHR; + GCC_C_LANGUAGE_STANDARD = gnu11; + INFOPLIST_FILE = aePronunciationUITests/Info.plist; + IPHONEOS_DEPLOYMENT_TARGET = 11.0; + LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks"; + PRODUCT_BUNDLE_IDENTIFIER = com.aepronunciation.ipa.aePronunciationUITests; + PRODUCT_NAME = "$(TARGET_NAME)"; + SWIFT_VERSION = 4.0; + TARGETED_DEVICE_FAMILY = "1,2"; + TEST_TARGET_NAME = aePronunciation; + }; + name = Release; + }; 50DC21931BB8FF65000075AE /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -332,6 +726,7 @@ isa = XCBuildConfiguration; buildSettings = { ALWAYS_SEARCH_USER_PATHS = NO; + CLANG_ANALYZER_LOCALIZABILITY_NONLOCALIZED = YES; CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x"; CLANG_CXX_LIBRARY = "libc++"; CLANG_ENABLE_MODULES = YES; @@ -380,6 +775,10 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/iOS", + ); INFOPLIST_FILE = aePronunciation/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; @@ -395,6 +794,10 @@ buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_IDENTITY = "iPhone Developer"; + FRAMEWORK_SEARCH_PATHS = ( + "$(inherited)", + "$(PROJECT_DIR)/Carthage/Build/iOS", + ); INFOPLIST_FILE = aePronunciation/Info.plist; IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks"; @@ -408,6 +811,24 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 50483C231FC29A3300B6E228 /* Build configuration list for PBXNativeTarget "aePronunciationTests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 50483C241FC29A3300B6E228 /* Debug */, + 50483C251FC29A3300B6E228 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 50483C311FC29A5700B6E228 /* Build configuration list for PBXNativeTarget "aePronunciationUITests" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 50483C321FC29A5700B6E228 /* Debug */, + 50483C331FC29A5700B6E228 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 50DC21661BB8FF65000075AE /* Build configuration list for PBXProject "aePronunciation" */ = { isa = XCConfigurationList; buildConfigurations = ( diff --git a/aePronunciation.xcodeproj/project.xcworkspace/xcuserdata/mongolsuragch.xcuserdatad/xcdebugger/Expressions.xcexplist b/aePronunciation.xcodeproj/project.xcworkspace/xcuserdata/mongolsuragch.xcuserdatad/xcdebugger/Expressions.xcexplist index 00857f3..ee034ab 100644 --- a/aePronunciation.xcodeproj/project.xcworkspace/xcuserdata/mongolsuragch.xcuserdatad/xcdebugger/Expressions.xcexplist +++ b/aePronunciation.xcodeproj/project.xcworkspace/xcuserdata/mongolsuragch.xcuserdatad/xcdebugger/Expressions.xcexplist @@ -2,6 +2,9 @@ + + @@ -13,6 +16,14 @@ + + + + + + @@ -21,5 +32,62 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/aePronunciation.xcodeproj/xcuserdata/mongolsuragch.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist b/aePronunciation.xcodeproj/xcuserdata/mongolsuragch.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist index c5f90ed..e5d268e 100644 --- a/aePronunciation.xcodeproj/xcuserdata/mongolsuragch.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist +++ b/aePronunciation.xcodeproj/xcuserdata/mongolsuragch.xcuserdatad/xcdebugger/Breakpoints_v2.xcbkptlist @@ -9,13 +9,13 @@ shouldBeEnabled = "No" ignoreCount = "0" continueAfterRunningActions = "No" - filePath = "aePronunciation/PracticeSoundsViewController.swift" - timestampString = "467647447.479584" + filePath = "aePronunciation/TestSetupViewController.swift" + timestampString = "535298871.110937" startingColumnNumber = "9223372036854775807" endingColumnNumber = "9223372036854775807" - startingLineNumber = "218" - endingLineNumber = "218" - landmarkName = "getRandomIpa()" + startingLineNumber = "45" + endingLineNumber = "45" + landmarkName = "prepare(for:sender:)" landmarkType = "7"> diff --git a/aePronunciation/AboutViewController.swift b/aePronunciation/AboutViewController.swift new file mode 100644 index 0000000..8dfc82f --- /dev/null +++ b/aePronunciation/AboutViewController.swift @@ -0,0 +1,18 @@ +import UIKit + +class AboutViewController: UIViewController { + + @IBOutlet weak var appTitleLabel: UILabel! + @IBOutlet weak var appVersionLabel: UILabel! + + override func viewDidLoad() { + super.viewDidLoad() + + self.title = "title_activity_about".localized + appTitleLabel.text = "about_app_name".localized + + if let version = Bundle.main.infoDictionary?["CFBundleShortVersionString"] as? String { + appVersionLabel.text = String.localizedStringWithFormat("about_app_version".localized, version) + } + } +} diff --git a/aePronunciation/AllTestsTableViewCell.swift b/aePronunciation/AllTestsTableViewCell.swift new file mode 100644 index 0000000..40d1dd5 --- /dev/null +++ b/aePronunciation/AllTestsTableViewCell.swift @@ -0,0 +1,8 @@ +import UIKit +class AllTestsTableViewCell: UITableViewCell { + @IBOutlet weak var testNumber: UILabel! + @IBOutlet weak var userName: UILabel! + @IBOutlet weak var date: UILabel! + @IBOutlet weak var score: UILabel! + @IBOutlet weak var testType: UILabel! +} diff --git a/aePronunciation/Answer.swift b/aePronunciation/Answer.swift index ea54681..baea7d9 100644 --- a/aePronunciation/Answer.swift +++ b/aePronunciation/Answer.swift @@ -1,19 +1,86 @@ -import Foundation -//enum AnswerType { -// case Single -// case Double -//} +import UIKit class Answer { - //var type = AnswerType.Single var correctAnswer = "" var userAnswer = "" init(correctAnswer: String, userAnswer: String) { self.correctAnswer = correctAnswer self.userAnswer = userAnswer - //self.type = type } -} \ No newline at end of file + + static func showErrorMessageFor(_ ipa: String, in viewController: UIViewController) { + + let errorMessage = Answer.getErrorMessage(doubleIpa: ipa) + let ok = "error_dialog_ok_button".localized + + // create the alert + let alert = UIAlertController(title: nil, message: errorMessage, preferredStyle: UIAlertControllerStyle.alert) + + // add an action (button) + alert.addAction(UIAlertAction(title: ok, style: UIAlertActionStyle.default, handler: nil)) + + // show the alert + viewController.present(alert, animated: true, completion: nil) + } + + private static func getErrorMessage(doubleIpa: String) -> String { + + // Types of errors: + // + // can't begin with ŋ + // can't end with w j h + // r was used as the second sound + // two vowels + // two consonants + + var errorMessage = "" + + let checkParced = DoubleSound.parse(ipaDouble: doubleIpa) + guard let parsedIpa = checkParced else { + // TODO return a more intelligent error message (but this situation shouldn't ever happen) + return errorMessage; + } + + // starts with a consonant + if "ptkʧfθsʃbdgʤvðzʒmnŋlwjhr".contains(parsedIpa.0) { + + // ends with a consonant + if "ptkʧfθsʃbdgʤvðzʒmnŋlwjhr".contains(parsedIpa.1) { + + errorMessage = String.localizedStringWithFormat("error_two_consonants".localized, parsedIpa.0, parsedIpa.1) + + } else if (parsedIpa.0 == "ŋ") { + + // starts with ŋ + errorMessage = String.localizedStringWithFormat("error_initial_ng".localized, parsedIpa.0, parsedIpa.1) + + } + + } else { // starts with a vowel + + + if parsedIpa.1 == "r" { + + // ends in r + errorMessage = "error_final_r".localized + + } else if "iɪɛæɑɔʊuʌəeɪaɪaʊɔɪoʊɝɚɑrɛrɪrɔr".contains(parsedIpa.1) { + + // ends with vowel + errorMessage = String.localizedStringWithFormat("error_two_vowels".localized, parsedIpa.0, parsedIpa.1) + + } else if "wjh".contains(parsedIpa.1) { + + // ends with wjh + errorMessage = String.localizedStringWithFormat("error_final_wjh".localized, parsedIpa.0, parsedIpa.1) + } + } + + return errorMessage; + } + + +} diff --git a/aePronunciation/AppDelegate.swift b/aePronunciation/AppDelegate.swift index 3cc2d40..3eb7b6e 100644 --- a/aePronunciation/AppDelegate.swift +++ b/aePronunciation/AppDelegate.swift @@ -5,15 +5,10 @@ import UIKit class AppDelegate: UIResponder, UIApplicationDelegate { var window: UIWindow? - + override init() { - let defaults = UserDefaults.standard - let defaultValues : [String : Any] = [ - Key.name : "", - Key.numberOfQuestions : 50, - Key.contentType : ExamType.doubles.rawValue - ] - defaults.register(defaults: defaultValues) + // set all the default values + MyUserDefaults.registerDefaults() super.init() } diff --git a/aePronunciation/AppLocale.swift b/aePronunciation/AppLocale.swift new file mode 100644 index 0000000..d27eb44 --- /dev/null +++ b/aePronunciation/AppLocale.swift @@ -0,0 +1,30 @@ + +import Foundation + +class AppLocale { + class func getLocale() -> Locale { + // This allows the date to only be formatted for the translated + // languages. All others will use the US English format. + let currentTranslationLocale = "locale".localized + switch currentTranslationLocale { + case "zh_Hans": + return Locale(identifier: "zh_Hans") // Simplified Chinese + case "zh_Hant": + return Locale(identifier: "zh_Hant") // Traditional Chinese + default: + return Locale(identifier: "en_US_POSIX") // US English + } + } + + class func getFormattedDate(date: Date) -> String { + //let formatter = DateFormatter() + //formatter.locale = getLocale() + //formatter.dateStyle = DateFormatter.Style.long + //return formatter.string(from: date) + + let formatter = DateFormatter() + formatter.dateFormat = "yyyy/M/d H:mm" + return formatter.string(from: date) + } + +} diff --git a/aePronunciation/Assets.xcassets/AppIcon.appiconset/Contents.json b/aePronunciation/Assets.xcassets/AppIcon.appiconset/Contents.json index a5ce1ca..4af0e33 100644 --- a/aePronunciation/Assets.xcassets/AppIcon.appiconset/Contents.json +++ b/aePronunciation/Assets.xcassets/AppIcon.appiconset/Contents.json @@ -1,5 +1,15 @@ { "images" : [ + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "2x" + }, + { + "idiom" : "iphone", + "size" : "20x20", + "scale" : "3x" + }, { "size" : "29x29", "idiom" : "iphone", @@ -36,6 +46,16 @@ "filename" : "AppIcon60@3.png", "scale" : "3x" }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "1x" + }, + { + "idiom" : "ipad", + "size" : "20x20", + "scale" : "2x" + }, { "size" : "29x29", "idiom" : "ipad", @@ -76,6 +96,11 @@ "idiom" : "ipad", "size" : "83.5x83.5", "scale" : "2x" + }, + { + "idiom" : "ios-marketing", + "size" : "1024x1024", + "scale" : "1x" } ], "info" : { diff --git a/aePronunciation/Assets.xcassets/a_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/a_placeholder.imageset/Contents.json new file mode 100644 index 0000000..6153343 --- /dev/null +++ b/aePronunciation/Assets.xcassets/a_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "a_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/a_placeholder.imageset/a_placeholder.jpg b/aePronunciation/Assets.xcassets/a_placeholder.imageset/a_placeholder.jpg new file mode 100644 index 0000000..7ab30d7 Binary files /dev/null and b/aePronunciation/Assets.xcassets/a_placeholder.imageset/a_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/ae_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/ae_placeholder.imageset/Contents.json new file mode 100644 index 0000000..14bca7b --- /dev/null +++ b/aePronunciation/Assets.xcassets/ae_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "ae_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/ae_placeholder.imageset/ae_placeholder.jpg b/aePronunciation/Assets.xcassets/ae_placeholder.imageset/ae_placeholder.jpg new file mode 100644 index 0000000..0f09e8c Binary files /dev/null and b/aePronunciation/Assets.xcassets/ae_placeholder.imageset/ae_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/ai_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/ai_placeholder.imageset/Contents.json new file mode 100644 index 0000000..c8595ae --- /dev/null +++ b/aePronunciation/Assets.xcassets/ai_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "ai_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/ai_placeholder.imageset/ai_placeholder.jpg b/aePronunciation/Assets.xcassets/ai_placeholder.imageset/ai_placeholder.jpg new file mode 100644 index 0000000..755fe44 Binary files /dev/null and b/aePronunciation/Assets.xcassets/ai_placeholder.imageset/ai_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/ar_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/ar_placeholder.imageset/Contents.json new file mode 100644 index 0000000..fa28a9a --- /dev/null +++ b/aePronunciation/Assets.xcassets/ar_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "ar_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/ar_placeholder.imageset/ar_placeholder.jpg b/aePronunciation/Assets.xcassets/ar_placeholder.imageset/ar_placeholder.jpg new file mode 100644 index 0000000..634b08e Binary files /dev/null and b/aePronunciation/Assets.xcassets/ar_placeholder.imageset/ar_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/au_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/au_placeholder.imageset/Contents.json new file mode 100644 index 0000000..edfb0f6 --- /dev/null +++ b/aePronunciation/Assets.xcassets/au_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "au_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/au_placeholder.imageset/au_placeholder.jpg b/aePronunciation/Assets.xcassets/au_placeholder.imageset/au_placeholder.jpg new file mode 100644 index 0000000..43f6799 Binary files /dev/null and b/aePronunciation/Assets.xcassets/au_placeholder.imageset/au_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/b_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/b_placeholder.imageset/Contents.json new file mode 100644 index 0000000..448dd79 --- /dev/null +++ b/aePronunciation/Assets.xcassets/b_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "b_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/b_placeholder.imageset/b_placeholder.jpg b/aePronunciation/Assets.xcassets/b_placeholder.imageset/b_placeholder.jpg new file mode 100644 index 0000000..7fe75dc Binary files /dev/null and b/aePronunciation/Assets.xcassets/b_placeholder.imageset/b_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/c_backwards_placeholder-1.imageset/Contents.json b/aePronunciation/Assets.xcassets/c_backwards_placeholder-1.imageset/Contents.json new file mode 100644 index 0000000..e5c7e6d --- /dev/null +++ b/aePronunciation/Assets.xcassets/c_backwards_placeholder-1.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "c_backwards_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/c_backwards_placeholder-1.imageset/c_backwards_placeholder.jpg b/aePronunciation/Assets.xcassets/c_backwards_placeholder-1.imageset/c_backwards_placeholder.jpg new file mode 100644 index 0000000..c67190f Binary files /dev/null and b/aePronunciation/Assets.xcassets/c_backwards_placeholder-1.imageset/c_backwards_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/c_backwards_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/c_backwards_placeholder.imageset/Contents.json new file mode 100644 index 0000000..e5c7e6d --- /dev/null +++ b/aePronunciation/Assets.xcassets/c_backwards_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "c_backwards_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/c_backwards_placeholder.imageset/c_backwards_placeholder.jpg b/aePronunciation/Assets.xcassets/c_backwards_placeholder.imageset/c_backwards_placeholder.jpg new file mode 100644 index 0000000..c67190f Binary files /dev/null and b/aePronunciation/Assets.xcassets/c_backwards_placeholder.imageset/c_backwards_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/ch_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/ch_placeholder.imageset/Contents.json new file mode 100644 index 0000000..2a92f58 --- /dev/null +++ b/aePronunciation/Assets.xcassets/ch_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "ch_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/ch_placeholder.imageset/ch_placeholder.jpg b/aePronunciation/Assets.xcassets/ch_placeholder.imageset/ch_placeholder.jpg new file mode 100644 index 0000000..472b182 Binary files /dev/null and b/aePronunciation/Assets.xcassets/ch_placeholder.imageset/ch_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/circle.imageset/Contents.json b/aePronunciation/Assets.xcassets/circle.imageset/Contents.json new file mode 100644 index 0000000..33a7451 --- /dev/null +++ b/aePronunciation/Assets.xcassets/circle.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "first.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/circle.imageset/first.pdf b/aePronunciation/Assets.xcassets/circle.imageset/first.pdf new file mode 100644 index 0000000..47d911d Binary files /dev/null and b/aePronunciation/Assets.xcassets/circle.imageset/first.pdf differ diff --git a/aePronunciation/Assets.xcassets/d_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/d_placeholder.imageset/Contents.json new file mode 100644 index 0000000..7294afc --- /dev/null +++ b/aePronunciation/Assets.xcassets/d_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "d_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/d_placeholder.imageset/d_placeholder.jpg b/aePronunciation/Assets.xcassets/d_placeholder.imageset/d_placeholder.jpg new file mode 100644 index 0000000..1731536 Binary files /dev/null and b/aePronunciation/Assets.xcassets/d_placeholder.imageset/d_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/dzh_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/dzh_placeholder.imageset/Contents.json new file mode 100644 index 0000000..a725941 --- /dev/null +++ b/aePronunciation/Assets.xcassets/dzh_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "dzh_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/dzh_placeholder.imageset/dzh_placeholder.jpg b/aePronunciation/Assets.xcassets/dzh_placeholder.imageset/dzh_placeholder.jpg new file mode 100644 index 0000000..eeb4ad9 Binary files /dev/null and b/aePronunciation/Assets.xcassets/dzh_placeholder.imageset/dzh_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/e_short_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/e_short_placeholder.imageset/Contents.json new file mode 100644 index 0000000..bdd1424 --- /dev/null +++ b/aePronunciation/Assets.xcassets/e_short_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "e_short_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/e_short_placeholder.imageset/e_short_placeholder.jpg b/aePronunciation/Assets.xcassets/e_short_placeholder.imageset/e_short_placeholder.jpg new file mode 100644 index 0000000..d4384df Binary files /dev/null and b/aePronunciation/Assets.xcassets/e_short_placeholder.imageset/e_short_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/ei_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/ei_placeholder.imageset/Contents.json new file mode 100644 index 0000000..d00cc60 --- /dev/null +++ b/aePronunciation/Assets.xcassets/ei_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "ei_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/ei_placeholder.imageset/ei_placeholder.jpg b/aePronunciation/Assets.xcassets/ei_placeholder.imageset/ei_placeholder.jpg new file mode 100644 index 0000000..2158615 Binary files /dev/null and b/aePronunciation/Assets.xcassets/ei_placeholder.imageset/ei_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/er_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/er_placeholder.imageset/Contents.json new file mode 100644 index 0000000..899d2eb --- /dev/null +++ b/aePronunciation/Assets.xcassets/er_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "er_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/er_placeholder.imageset/er_placeholder.jpg b/aePronunciation/Assets.xcassets/er_placeholder.imageset/er_placeholder.jpg new file mode 100644 index 0000000..ab0c29e Binary files /dev/null and b/aePronunciation/Assets.xcassets/er_placeholder.imageset/er_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/er_stressed_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/er_stressed_placeholder.imageset/Contents.json new file mode 100644 index 0000000..0beecf0 --- /dev/null +++ b/aePronunciation/Assets.xcassets/er_stressed_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "er_stressed_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/er_stressed_placeholder.imageset/er_stressed_placeholder.jpg b/aePronunciation/Assets.xcassets/er_stressed_placeholder.imageset/er_stressed_placeholder.jpg new file mode 100644 index 0000000..a5be5ce Binary files /dev/null and b/aePronunciation/Assets.xcassets/er_stressed_placeholder.imageset/er_stressed_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/er_unstressed_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/er_unstressed_placeholder.imageset/Contents.json new file mode 100644 index 0000000..c64b94b --- /dev/null +++ b/aePronunciation/Assets.xcassets/er_unstressed_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "er_unstressed_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/er_unstressed_placeholder.imageset/er_unstressed_placeholder.jpg b/aePronunciation/Assets.xcassets/er_unstressed_placeholder.imageset/er_unstressed_placeholder.jpg new file mode 100644 index 0000000..dcbda76 Binary files /dev/null and b/aePronunciation/Assets.xcassets/er_unstressed_placeholder.imageset/er_unstressed_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/f_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/f_placeholder.imageset/Contents.json new file mode 100644 index 0000000..92dcaed --- /dev/null +++ b/aePronunciation/Assets.xcassets/f_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "f_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/f_placeholder.imageset/f_placeholder.jpg b/aePronunciation/Assets.xcassets/f_placeholder.imageset/f_placeholder.jpg new file mode 100644 index 0000000..29d51bb Binary files /dev/null and b/aePronunciation/Assets.xcassets/f_placeholder.imageset/f_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/flap_t_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/flap_t_placeholder.imageset/Contents.json new file mode 100644 index 0000000..8c41078 --- /dev/null +++ b/aePronunciation/Assets.xcassets/flap_t_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "flap_t_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/flap_t_placeholder.imageset/flap_t_placeholder.jpg b/aePronunciation/Assets.xcassets/flap_t_placeholder.imageset/flap_t_placeholder.jpg new file mode 100644 index 0000000..db05a0d Binary files /dev/null and b/aePronunciation/Assets.xcassets/flap_t_placeholder.imageset/flap_t_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/g_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/g_placeholder.imageset/Contents.json new file mode 100644 index 0000000..7f7ee44 --- /dev/null +++ b/aePronunciation/Assets.xcassets/g_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "g_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/g_placeholder.imageset/g_placeholder.jpg b/aePronunciation/Assets.xcassets/g_placeholder.imageset/g_placeholder.jpg new file mode 100644 index 0000000..054c0a8 Binary files /dev/null and b/aePronunciation/Assets.xcassets/g_placeholder.imageset/g_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/glottal_stop_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/glottal_stop_placeholder.imageset/Contents.json new file mode 100644 index 0000000..462fd90 --- /dev/null +++ b/aePronunciation/Assets.xcassets/glottal_stop_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "glottal_stop_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/glottal_stop_placeholder.imageset/glottal_stop_placeholder.jpg b/aePronunciation/Assets.xcassets/glottal_stop_placeholder.imageset/glottal_stop_placeholder.jpg new file mode 100644 index 0000000..d043ed2 Binary files /dev/null and b/aePronunciation/Assets.xcassets/glottal_stop_placeholder.imageset/glottal_stop_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/h_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/h_placeholder.imageset/Contents.json new file mode 100644 index 0000000..81ed8bb --- /dev/null +++ b/aePronunciation/Assets.xcassets/h_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "h_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/h_placeholder.imageset/h_placeholder.jpg b/aePronunciation/Assets.xcassets/h_placeholder.imageset/h_placeholder.jpg new file mode 100644 index 0000000..bd3b623 Binary files /dev/null and b/aePronunciation/Assets.xcassets/h_placeholder.imageset/h_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/help.imageset/Contents.json b/aePronunciation/Assets.xcassets/help.imageset/Contents.json new file mode 100644 index 0000000..d1f9135 --- /dev/null +++ b/aePronunciation/Assets.xcassets/help.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "help.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/help.imageset/help.pdf b/aePronunciation/Assets.xcassets/help.imageset/help.pdf new file mode 100644 index 0000000..4c87aa2 Binary files /dev/null and b/aePronunciation/Assets.xcassets/help.imageset/help.pdf differ diff --git a/aePronunciation/Assets.xcassets/i_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/i_placeholder.imageset/Contents.json new file mode 100644 index 0000000..6eb6467 --- /dev/null +++ b/aePronunciation/Assets.xcassets/i_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "i_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/i_placeholder.imageset/i_placeholder.jpg b/aePronunciation/Assets.xcassets/i_placeholder.imageset/i_placeholder.jpg new file mode 100644 index 0000000..b5e6bac Binary files /dev/null and b/aePronunciation/Assets.xcassets/i_placeholder.imageset/i_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/i_short_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/i_short_placeholder.imageset/Contents.json new file mode 100644 index 0000000..d4455ff --- /dev/null +++ b/aePronunciation/Assets.xcassets/i_short_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "i_short_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/i_short_placeholder.imageset/i_short_placeholder.jpg b/aePronunciation/Assets.xcassets/i_short_placeholder.imageset/i_short_placeholder.jpg new file mode 100644 index 0000000..acf495f Binary files /dev/null and b/aePronunciation/Assets.xcassets/i_short_placeholder.imageset/i_short_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/ir_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/ir_placeholder.imageset/Contents.json new file mode 100644 index 0000000..0869d26 --- /dev/null +++ b/aePronunciation/Assets.xcassets/ir_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "ir_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/ir_placeholder.imageset/ir_placeholder.jpg b/aePronunciation/Assets.xcassets/ir_placeholder.imageset/ir_placeholder.jpg new file mode 100644 index 0000000..da3e44a Binary files /dev/null and b/aePronunciation/Assets.xcassets/ir_placeholder.imageset/ir_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/j_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/j_placeholder.imageset/Contents.json new file mode 100644 index 0000000..b115e71 --- /dev/null +++ b/aePronunciation/Assets.xcassets/j_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "j_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/j_placeholder.imageset/j_placeholder.jpg b/aePronunciation/Assets.xcassets/j_placeholder.imageset/j_placeholder.jpg new file mode 100644 index 0000000..f3d0fd7 Binary files /dev/null and b/aePronunciation/Assets.xcassets/j_placeholder.imageset/j_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/k_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/k_placeholder.imageset/Contents.json new file mode 100644 index 0000000..426fc7f --- /dev/null +++ b/aePronunciation/Assets.xcassets/k_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "k_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/k_placeholder.imageset/k_placeholder.jpg b/aePronunciation/Assets.xcassets/k_placeholder.imageset/k_placeholder.jpg new file mode 100644 index 0000000..bcef87b Binary files /dev/null and b/aePronunciation/Assets.xcassets/k_placeholder.imageset/k_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/l_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/l_placeholder.imageset/Contents.json new file mode 100644 index 0000000..643bf98 --- /dev/null +++ b/aePronunciation/Assets.xcassets/l_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "l_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/l_placeholder.imageset/l_placeholder.jpg b/aePronunciation/Assets.xcassets/l_placeholder.imageset/l_placeholder.jpg new file mode 100644 index 0000000..1f5ca54 Binary files /dev/null and b/aePronunciation/Assets.xcassets/l_placeholder.imageset/l_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/learn.imageset/Contents.json b/aePronunciation/Assets.xcassets/learn.imageset/Contents.json new file mode 100644 index 0000000..c63f8d7 --- /dev/null +++ b/aePronunciation/Assets.xcassets/learn.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "study.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/learn.imageset/study.pdf b/aePronunciation/Assets.xcassets/learn.imageset/study.pdf new file mode 100644 index 0000000..736a26c Binary files /dev/null and b/aePronunciation/Assets.xcassets/learn.imageset/study.pdf differ diff --git a/aePronunciation/Assets.xcassets/m_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/m_placeholder.imageset/Contents.json new file mode 100644 index 0000000..4fca618 --- /dev/null +++ b/aePronunciation/Assets.xcassets/m_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "m_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/m_placeholder.imageset/m_placeholder.jpg b/aePronunciation/Assets.xcassets/m_placeholder.imageset/m_placeholder.jpg new file mode 100644 index 0000000..52e2e3c Binary files /dev/null and b/aePronunciation/Assets.xcassets/m_placeholder.imageset/m_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/menu.imageset/Contents.json b/aePronunciation/Assets.xcassets/menu.imageset/Contents.json new file mode 100644 index 0000000..f0bc39f --- /dev/null +++ b/aePronunciation/Assets.xcassets/menu.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "menu.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/menu.imageset/menu.pdf b/aePronunciation/Assets.xcassets/menu.imageset/menu.pdf new file mode 100644 index 0000000..19a84d6 Binary files /dev/null and b/aePronunciation/Assets.xcassets/menu.imageset/menu.pdf differ diff --git a/aePronunciation/Assets.xcassets/n_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/n_placeholder.imageset/Contents.json new file mode 100644 index 0000000..acae455 --- /dev/null +++ b/aePronunciation/Assets.xcassets/n_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "n_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/n_placeholder.imageset/n_placeholder.jpg b/aePronunciation/Assets.xcassets/n_placeholder.imageset/n_placeholder.jpg new file mode 100644 index 0000000..94369f6 Binary files /dev/null and b/aePronunciation/Assets.xcassets/n_placeholder.imageset/n_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/ng_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/ng_placeholder.imageset/Contents.json new file mode 100644 index 0000000..bdea231 --- /dev/null +++ b/aePronunciation/Assets.xcassets/ng_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "ng_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/ng_placeholder.imageset/ng_placeholder.jpg b/aePronunciation/Assets.xcassets/ng_placeholder.imageset/ng_placeholder.jpg new file mode 100644 index 0000000..4f84837 Binary files /dev/null and b/aePronunciation/Assets.xcassets/ng_placeholder.imageset/ng_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/oi_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/oi_placeholder.imageset/Contents.json new file mode 100644 index 0000000..4b27cf9 --- /dev/null +++ b/aePronunciation/Assets.xcassets/oi_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "oi_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/oi_placeholder.imageset/oi_placeholder.jpg b/aePronunciation/Assets.xcassets/oi_placeholder.imageset/oi_placeholder.jpg new file mode 100644 index 0000000..66bd134 Binary files /dev/null and b/aePronunciation/Assets.xcassets/oi_placeholder.imageset/oi_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/or_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/or_placeholder.imageset/Contents.json new file mode 100644 index 0000000..1022d11 --- /dev/null +++ b/aePronunciation/Assets.xcassets/or_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "or_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/or_placeholder.imageset/or_placeholder.jpg b/aePronunciation/Assets.xcassets/or_placeholder.imageset/or_placeholder.jpg new file mode 100644 index 0000000..696ca90 Binary files /dev/null and b/aePronunciation/Assets.xcassets/or_placeholder.imageset/or_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/ou_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/ou_placeholder.imageset/Contents.json new file mode 100644 index 0000000..cf0ab60 --- /dev/null +++ b/aePronunciation/Assets.xcassets/ou_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "ou_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/ou_placeholder.imageset/ou_placeholder.jpg b/aePronunciation/Assets.xcassets/ou_placeholder.imageset/ou_placeholder.jpg new file mode 100644 index 0000000..5304cb5 Binary files /dev/null and b/aePronunciation/Assets.xcassets/ou_placeholder.imageset/ou_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/p_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/p_placeholder.imageset/Contents.json new file mode 100644 index 0000000..8b4fbf4 --- /dev/null +++ b/aePronunciation/Assets.xcassets/p_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "p_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/p_placeholder.imageset/p_placeholder.jpg b/aePronunciation/Assets.xcassets/p_placeholder.imageset/p_placeholder.jpg new file mode 100644 index 0000000..5f24683 Binary files /dev/null and b/aePronunciation/Assets.xcassets/p_placeholder.imageset/p_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/practice.imageset/Contents.json b/aePronunciation/Assets.xcassets/practice.imageset/Contents.json new file mode 100644 index 0000000..487ad96 --- /dev/null +++ b/aePronunciation/Assets.xcassets/practice.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "practice.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/practice.imageset/practice.pdf b/aePronunciation/Assets.xcassets/practice.imageset/practice.pdf new file mode 100644 index 0000000..7255ac8 Binary files /dev/null and b/aePronunciation/Assets.xcassets/practice.imageset/practice.pdf differ diff --git a/aePronunciation/Assets.xcassets/r_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/r_placeholder.imageset/Contents.json new file mode 100644 index 0000000..6130125 --- /dev/null +++ b/aePronunciation/Assets.xcassets/r_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "r_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/r_placeholder.imageset/r_placeholder.jpg b/aePronunciation/Assets.xcassets/r_placeholder.imageset/r_placeholder.jpg new file mode 100644 index 0000000..2eef297 Binary files /dev/null and b/aePronunciation/Assets.xcassets/r_placeholder.imageset/r_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/s_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/s_placeholder.imageset/Contents.json new file mode 100644 index 0000000..ae87d8d --- /dev/null +++ b/aePronunciation/Assets.xcassets/s_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "s_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/s_placeholder.imageset/s_placeholder.jpg b/aePronunciation/Assets.xcassets/s_placeholder.imageset/s_placeholder.jpg new file mode 100644 index 0000000..acfea4b Binary files /dev/null and b/aePronunciation/Assets.xcassets/s_placeholder.imageset/s_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/schwa_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/schwa_placeholder.imageset/Contents.json new file mode 100644 index 0000000..6f64b72 --- /dev/null +++ b/aePronunciation/Assets.xcassets/schwa_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "schwa_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/schwa_placeholder.imageset/schwa_placeholder.jpg b/aePronunciation/Assets.xcassets/schwa_placeholder.imageset/schwa_placeholder.jpg new file mode 100644 index 0000000..e61b1a1 Binary files /dev/null and b/aePronunciation/Assets.xcassets/schwa_placeholder.imageset/schwa_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/sh_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/sh_placeholder.imageset/Contents.json new file mode 100644 index 0000000..3000fe9 --- /dev/null +++ b/aePronunciation/Assets.xcassets/sh_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "sh_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/sh_placeholder.imageset/sh_placeholder.jpg b/aePronunciation/Assets.xcassets/sh_placeholder.imageset/sh_placeholder.jpg new file mode 100644 index 0000000..276e06d Binary files /dev/null and b/aePronunciation/Assets.xcassets/sh_placeholder.imageset/sh_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/square.imageset/Contents.json b/aePronunciation/Assets.xcassets/square.imageset/Contents.json new file mode 100644 index 0000000..03bd9c9 --- /dev/null +++ b/aePronunciation/Assets.xcassets/square.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "second.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/square.imageset/second.pdf b/aePronunciation/Assets.xcassets/square.imageset/second.pdf new file mode 100644 index 0000000..401614e Binary files /dev/null and b/aePronunciation/Assets.xcassets/square.imageset/second.pdf differ diff --git a/aePronunciation/Assets.xcassets/t_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/t_placeholder.imageset/Contents.json new file mode 100644 index 0000000..be74efe --- /dev/null +++ b/aePronunciation/Assets.xcassets/t_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "t_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/t_placeholder.imageset/t_placeholder.jpg b/aePronunciation/Assets.xcassets/t_placeholder.imageset/t_placeholder.jpg new file mode 100644 index 0000000..9ffea79 Binary files /dev/null and b/aePronunciation/Assets.xcassets/t_placeholder.imageset/t_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/test.imageset/Contents.json b/aePronunciation/Assets.xcassets/test.imageset/Contents.json new file mode 100644 index 0000000..d35675c --- /dev/null +++ b/aePronunciation/Assets.xcassets/test.imageset/Contents.json @@ -0,0 +1,12 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "test.pdf" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/test.imageset/test.pdf b/aePronunciation/Assets.xcassets/test.imageset/test.pdf new file mode 100644 index 0000000..a7664be Binary files /dev/null and b/aePronunciation/Assets.xcassets/test.imageset/test.pdf differ diff --git a/aePronunciation/Assets.xcassets/th_voiced_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/th_voiced_placeholder.imageset/Contents.json new file mode 100644 index 0000000..e308fe7 --- /dev/null +++ b/aePronunciation/Assets.xcassets/th_voiced_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "th_voiced_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/th_voiced_placeholder.imageset/th_voiced_placeholder.jpg b/aePronunciation/Assets.xcassets/th_voiced_placeholder.imageset/th_voiced_placeholder.jpg new file mode 100644 index 0000000..b58b45c Binary files /dev/null and b/aePronunciation/Assets.xcassets/th_voiced_placeholder.imageset/th_voiced_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/th_voiceless_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/th_voiceless_placeholder.imageset/Contents.json new file mode 100644 index 0000000..ccb96de --- /dev/null +++ b/aePronunciation/Assets.xcassets/th_voiceless_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "th_voiceless_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/th_voiceless_placeholder.imageset/th_voiceless_placeholder.jpg b/aePronunciation/Assets.xcassets/th_voiceless_placeholder.imageset/th_voiceless_placeholder.jpg new file mode 100644 index 0000000..58fb5e0 Binary files /dev/null and b/aePronunciation/Assets.xcassets/th_voiceless_placeholder.imageset/th_voiceless_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/u_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/u_placeholder.imageset/Contents.json new file mode 100644 index 0000000..b7ef960 --- /dev/null +++ b/aePronunciation/Assets.xcassets/u_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "u_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/u_placeholder.imageset/u_placeholder.jpg b/aePronunciation/Assets.xcassets/u_placeholder.imageset/u_placeholder.jpg new file mode 100644 index 0000000..558936d Binary files /dev/null and b/aePronunciation/Assets.xcassets/u_placeholder.imageset/u_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/u_short_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/u_short_placeholder.imageset/Contents.json new file mode 100644 index 0000000..99c7673 --- /dev/null +++ b/aePronunciation/Assets.xcassets/u_short_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "u_short_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/u_short_placeholder.imageset/u_short_placeholder.jpg b/aePronunciation/Assets.xcassets/u_short_placeholder.imageset/u_short_placeholder.jpg new file mode 100644 index 0000000..2f48a28 Binary files /dev/null and b/aePronunciation/Assets.xcassets/u_short_placeholder.imageset/u_short_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/v_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/v_placeholder.imageset/Contents.json new file mode 100644 index 0000000..f902fd1 --- /dev/null +++ b/aePronunciation/Assets.xcassets/v_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "v_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/v_placeholder.imageset/v_placeholder.jpg b/aePronunciation/Assets.xcassets/v_placeholder.imageset/v_placeholder.jpg new file mode 100644 index 0000000..a7a81cb Binary files /dev/null and b/aePronunciation/Assets.xcassets/v_placeholder.imageset/v_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/v_upsidedown_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/v_upsidedown_placeholder.imageset/Contents.json new file mode 100644 index 0000000..a54df4e --- /dev/null +++ b/aePronunciation/Assets.xcassets/v_upsidedown_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "v_upsidedown_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/v_upsidedown_placeholder.imageset/v_upsidedown_placeholder.jpg b/aePronunciation/Assets.xcassets/v_upsidedown_placeholder.imageset/v_upsidedown_placeholder.jpg new file mode 100644 index 0000000..50cc024 Binary files /dev/null and b/aePronunciation/Assets.xcassets/v_upsidedown_placeholder.imageset/v_upsidedown_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/w_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/w_placeholder.imageset/Contents.json new file mode 100644 index 0000000..0076326 --- /dev/null +++ b/aePronunciation/Assets.xcassets/w_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "w_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/w_placeholder.imageset/w_placeholder.jpg b/aePronunciation/Assets.xcassets/w_placeholder.imageset/w_placeholder.jpg new file mode 100644 index 0000000..0b1e95a Binary files /dev/null and b/aePronunciation/Assets.xcassets/w_placeholder.imageset/w_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/z_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/z_placeholder.imageset/Contents.json new file mode 100644 index 0000000..38733f0 --- /dev/null +++ b/aePronunciation/Assets.xcassets/z_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "z_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/z_placeholder.imageset/z_placeholder.jpg b/aePronunciation/Assets.xcassets/z_placeholder.imageset/z_placeholder.jpg new file mode 100644 index 0000000..fbed18f Binary files /dev/null and b/aePronunciation/Assets.xcassets/z_placeholder.imageset/z_placeholder.jpg differ diff --git a/aePronunciation/Assets.xcassets/zh_placeholder.imageset/Contents.json b/aePronunciation/Assets.xcassets/zh_placeholder.imageset/Contents.json new file mode 100644 index 0000000..ff232c6 --- /dev/null +++ b/aePronunciation/Assets.xcassets/zh_placeholder.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "idiom" : "universal", + "filename" : "zh_placeholder.jpg", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "version" : 1, + "author" : "xcode" + } +} \ No newline at end of file diff --git a/aePronunciation/Assets.xcassets/zh_placeholder.imageset/zh_placeholder.jpg b/aePronunciation/Assets.xcassets/zh_placeholder.imageset/zh_placeholder.jpg new file mode 100644 index 0000000..93fc284 Binary files /dev/null and b/aePronunciation/Assets.xcassets/zh_placeholder.imageset/zh_placeholder.jpg differ diff --git a/aePronunciation/Base.lproj/LaunchScreen.storyboard b/aePronunciation/Base.lproj/LaunchScreen.storyboard index bbb080d..53138c4 100644 --- a/aePronunciation/Base.lproj/LaunchScreen.storyboard +++ b/aePronunciation/Base.lproj/LaunchScreen.storyboard @@ -1,9 +1,13 @@ - - + + + + + - + + @@ -15,12 +19,11 @@ - + - + - - + - - - + + @@ -816,13 +246,13 @@ The Line 2 - @@ -851,11 +281,14 @@ The Line 2 - + - + + + + @@ -874,715 +307,129 @@ The Line 2 - + - - - - - - - - + - - - - - + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + @@ -1591,11 +438,11 @@ The Line 2 - + - + - + @@ -1615,32 +462,115 @@ The Line 2 - - - - - - + - + + + - - - + - + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + @@ -1656,6 +586,7 @@ The Line 2 + @@ -1666,7 +597,7 @@ The Line 2 - + @@ -1678,13 +609,13 @@ The Line 2 - + - + @@ -1709,798 +640,122 @@ The Line 2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + + + + + + + + + + - - - - - - - - + + - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + + - + - - - - - - - - - - - - + + + + + + + + + + + - - - - - - - - + + + + + + + + + - - - - - - - - - - - - + + + + + + + + + + - - - - - - - - - - - - - - - - - - - - - - - - + + + + + + @@ -2508,12 +763,12 @@ The Line 2 - + - + - + @@ -2531,52 +786,65 @@ The Line 2 - + - - - - - - - - + - + + - + @@ -2633,85 +896,90 @@ The Line 2 - - + - - - - - - - - - - - - + + + + + + + + + + + - + - + - + + + + - + - + @@ -2725,15 +993,544 @@ The Line 2 + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + - + + + + + - - + + + + diff --git a/aePronunciation/DoubleSound.swift b/aePronunciation/DoubleSound.swift index ba1e004..4e8b083 100644 --- a/aePronunciation/DoubleSound.swift +++ b/aePronunciation/DoubleSound.swift @@ -2,930 +2,1121 @@ import Foundation class DoubleSound { - let ipaStringList = [ - "pi", "pɪ", "pe", "pɛ", "pæ", "pɑ", "pɔ", "po", "pʊ", "pu", "pʌ", "paɪ", "paʊ", "pɔɪ", "pɝ", "pɑr", "pɛr", "pɪr", "pɔr", - "bi", "bɪ", "be", "bɛ", "bæ", "bɑ", "bɔ", "bo", "bʊ", "bu", "bʌ", "baɪ", "baʊ", "bɔɪ", "bɝ", "bɑr", "bɛr", "bɪr", "bɔr", - "ti", "tɪ", "te", "tɛ", "tæ", "tɑ", "tɔ", "to", "tʊ", "tu", "tʌ", "taɪ", "taʊ", "tɔɪ", "tɝ", "tɑr", "tɛr", "tɪr", "tɔr", - "di", "dɪ", "de", "dɛ", "dæ", "dɑ", "dɔ", "do", "dʊ", "du", "dʌ", "daɪ", "daʊ", "dɔɪ", "dɝ", "dɑr", "dɛr", "dɪr", "dɔr", - "ki", "kɪ", "ke", "kɛ", "kæ", "kɑ", "kɔ", "ko", "kʊ", "ku", "kʌ", "kaɪ", "kaʊ", "kɔɪ", "kɝ", "kɑr", "kɛr", "kɪr", "kɔr", - "gi", "gɪ", "ge", "gɛ", "gæ", "gɑ", "gɔ", "go", "gʊ", "gu", "gʌ", "gaɪ", "gaʊ", "gɔɪ", "gɝ", "gɑr", "gɛr", "gɪr", "gɔr", - "ʧi", "ʧɪ", "ʧe", "ʧɛ", "ʧæ", "ʧɑ", "ʧɔ", "ʧo", "ʧʊ", "ʧu", "ʧʌ", "ʧaɪ", "ʧaʊ", "ʧɔɪ", "ʧɝ", "ʧɑr", "ʧɛr", "ʧɪr", "ʧɔr", - "ʤi", "ʤɪ", "ʤe", "ʤɛ", "ʤæ", "ʤɑ", "ʤɔ", "ʤo", "ʤʊ", "ʤu", "ʤʌ", "ʤaɪ", "ʤaʊ", "ʤɔɪ", "ʤɝ", "ʤɑr", "ʤɛr", "ʤɪr", "ʤɔr", - "fi", "fɪ", "fe", "fɛ", "fæ", "fɑ", "fɔ", "fo", "fʊ", "fu", "fʌ", "faɪ", "faʊ", "fɔɪ", "fɝ", "fɑr", "fɛr", "fɪr", "fɔr", - "vi", "vɪ", "ve", "vɛ", "væ", "vɑ", "vɔ", "vo", "vʊ", "vu", "vʌ", "vaɪ", "vaʊ", "vɔɪ", "vɝ", "vɑr", "vɛr", "vɪr", "vɔr", - "θi", "θɪ", "θe", "θɛ", "θæ", "θɑ", "θɔ", "θo", "θʊ", "θu", "θʌ", "θaɪ", "θaʊ", "θɔɪ", "θɝ", "θɑr", "θɛr", "θɪr", "θɔr", - "ði", "ðɪ", "ðe", "ðɛ", "ðæ", "ðɑ", "ðɔ", "ðo", "ðʊ", "ðu", "ðʌ", "ðaɪ", "ðaʊ", "ðɔɪ", "ðɝ", "ðɑr", "ðɛr", "ðɪr", "ðɔr", - "si", "sɪ", "se", "sɛ", "sæ", "sɑ", "sɔ", "so", "sʊ", "su", "sʌ", "saɪ", "saʊ", "sɔɪ", "sɝ", "sɑr", "sɛr", "sɪr", "sɔr", - "zi", "zɪ", "ze", "zɛ", "zæ", "zɑ", "zɔ", "zo", "zʊ", "zu", "zʌ", "zaɪ", "zaʊ", "zɔɪ", "zɝ", "zɑr", "zɛr", "zɪr", "zɔr", - "ʃi", "ʃɪ", "ʃe", "ʃɛ", "ʃæ", "ʃɑ", "ʃɔ", "ʃo", "ʃʊ", "ʃu", "ʃʌ", "ʃaɪ", "ʃaʊ", "ʃɔɪ", "ʃɝ", "ʃɑr", "ʃɛr", "ʃɪr", "ʃɔr", - "ʒi", "ʒɪ", "ʒe", "ʒɛ", "ʒæ", "ʒɑ", "ʒɔ", "ʒo", "ʒʊ", "ʒu", "ʒʌ", "ʒaɪ", "ʒaʊ", "ʒɔɪ", "ʒɝ", "ʒɑr", "ʒɛr", "ʒɪr", "ʒɔr", - "mi", "mɪ", "me", "mɛ", "mæ", "mɑ", "mɔ", "mo", "mʊ", "mu", "mʌ", "maɪ", "maʊ", "mɔɪ", "mɝ", "mɑr", "mɛr", "mɪr", "mɔr", - "ni", "nɪ", "ne", "nɛ", "næ", "nɑ", "nɔ", "no", "nʊ", "nu", "nʌ", "naɪ", "naʊ", "nɔɪ", "nɝ", "nɑr", "nɛr", "nɪr", "nɔr", - "li", "lɪ", "le", "lɛ", "læ", "lɑ", "lɔ", "lo", "lʊ", "lu", "lʌ", "laɪ", "laʊ", "lɔɪ", "lɝ", "lɑr", "lɛr", "lɪr", "lɔr", - "wi", "wɪ", "we", "wɛ", "wæ", "wɑ", "wɔ", "wo", "wʊ", "wu", "wʌ", "waɪ", "waʊ", "wɔɪ", "wɝ", "wɑr", "wɛr", "wɪr", "wɔr", - "ji", "jɪ", "je", "jɛ", "jæ", "jɑ", "jɔ", "jo", "jʊ", "ju", "jʌ", "jaɪ", "jaʊ", "jɔɪ", "jɝ", "jɑr", "jɛr", "jɪr", "jɔr", - "hi", "hɪ", "he", "hɛ", "hæ", "hɑ", "hɔ", "ho", "hʊ", "hu", "hʌ", "haɪ", "haʊ", "hɔɪ", "hɝ", "hɑr", "hɛr", "hɪr", "hɔr", - "ri", "rɪ", "re", "rɛ", "ræ", "rɑ", "rɔ", "ro", "rʊ", "ru", "rʌ", "raɪ", "raʊ", "rɔɪ", "rɝ", "rɑr", "rɛr", "rɪr", "rɔr", - "ip", "ɪp", "ep", "ɛp", "æp", "ɑp", "ɔp", "op", "ʊp", "up", "ʌp", "aɪp", "aʊp", "ɔɪp", "ɝp", "ɑrp", "ɛrp", "ɪrp", "ɔrp", - "ib", "ɪb", "eb", "ɛb", "æb", "ɑb", "ɔb", "ob", "ʊb", "ub", "ʌb", "aɪb", "aʊb", "ɔɪb", "ɝb", "ɑrb", "ɛrb", "ɪrb", "ɔrb", - "it", "ɪt", "et", "ɛt", "æt", "ɑt", "ɔt", "ot", "ʊt", "ut", "ʌt", "aɪt", "aʊt", "ɔɪt", "ɝt", "ɑrt", "ɛrt", "ɪrt", "ɔrt", - "id", "ɪd", "ed", "ɛd", "æd", "ɑd", "ɔd", "od", "ʊd", "ud", "ʌd", "aɪd", "aʊd", "ɔɪd", "ɝd", "ɑrd", "ɛrd", "ɪrd", "ɔrd", - "ik", "ɪk", "ek", "ɛk", "æk", "ɑk", "ɔk", "ok", "ʊk", "uk", "ʌk", "aɪk", "aʊk", "ɔɪk", "ɝk", "ɑrk", "ɛrk", "ɪrk", "ɔrk", - "ig", "ɪg", "eg", "ɛg", "æg", "ɑg", "ɔg", "og", "ʊg", "ug", "ʌg", "aɪg", "aʊg", "ɔɪg", "ɝg", "ɑrg", "ɛrg", "ɪrg", "ɔrg", - "iʧ", "ɪʧ", "eʧ", "ɛʧ", "æʧ", "ɑʧ", "ɔʧ", "oʧ", "ʊʧ", "uʧ", "ʌʧ", "aɪʧ", "aʊʧ", "ɔɪʧ", "ɝʧ", "ɑrʧ", "ɛrʧ", "ɪrʧ", "ɔrʧ", - "iʤ", "ɪʤ", "eʤ", "ɛʤ", "æʤ", "ɑʤ", "ɔʤ", "oʤ", "ʊʤ", "uʤ", "ʌʤ", "aɪʤ", "aʊʤ", "ɔɪʤ", "ɝʤ", "ɑrʤ", "ɛrʤ", "ɪrʤ", "ɔrʤ", - "if", "ɪf", "ef", "ɛf", "æf", "ɑf", "ɔf", "of", "ʊf", "uf", "ʌf", "aɪf", "aʊf", "ɔɪf", "ɝf", "ɑrf", "ɛrf", "ɪrf", "ɔrf", - "iv", "ɪv", "ev", "ɛv", "æv", "ɑv", "ɔv", "ov", "ʊv", "uv", "ʌv", "aɪv", "aʊv", "ɔɪv", "ɝv", "ɑrv", "ɛrv", "ɪrv", "ɔrv", - "iθ", "ɪθ", "eθ", "ɛθ", "æθ", "ɑθ", "ɔθ", "oθ", "ʊθ", "uθ", "ʌθ", "aɪθ", "aʊθ", "ɔɪθ", "ɝθ", "ɑrθ", "ɛrθ", "ɪrθ", "ɔrθ", - "ið", "ɪð", "eð", "ɛð", "æð", "ɑð", "ɔð", "oð", "ʊð", "uð", "ʌð", "aɪð", "aʊð", "ɔɪð", "ɝð", "ɑrð", "ɛrð", "ɪrð", "ɔrð", - "is", "ɪs", "es", "ɛs", "æs", "ɑs", "ɔs", "os", "ʊs", "us", "ʌs", "aɪs", "aʊs", "ɔɪs", "ɝs", "ɑrs", "ɛrs", "ɪrs", "ɔrs", - "iz", "ɪz", "ez", "ɛz", "æz", "ɑz", "ɔz", "oz", "ʊz", "uz", "ʌz", "aɪz", "aʊz", "ɔɪz", "ɝz", "ɑrz", "ɛrz", "ɪrz", "ɔrz", - "iʃ", "ɪʃ", "eʃ", "ɛʃ", "æʃ", "ɑʃ", "ɔʃ", "oʃ", "ʊʃ", "uʃ", "ʌʃ", "aɪʃ", "aʊʃ", "ɔɪʃ", "ɝʃ", "ɑrʃ", "ɛrʃ", "ɪrʃ", "ɔrʃ", - "iʒ", "ɪʒ", "eʒ", "ɛʒ", "æʒ", "ɑʒ", "ɔʒ", "oʒ", "ʊʒ", "uʒ", "ʌʒ", "aɪʒ", "aʊʒ", "ɔɪʒ", "ɝʒ", "ɑrʒ", "ɛrʒ", "ɪrʒ", "ɔrʒ", - "im", "ɪm", "em", "ɛm", "æm", "ɑm", "ɔm", "om", "ʊm", "um", "ʌm", "aɪm", "aʊm", "ɔɪm", "ɝm", "ɑrm", "ɛrm", "ɪrm", "ɔrm", - "in", "ɪn", "en", "ɛn", "æn", "ɑn", "ɔn", "on", "ʊn", "un", "ʌn", "aɪn", "aʊn", "ɔɪn", "ɝn", "ɑrn", "ɛrn", "ɪrn", "ɔrn", - "iŋ", "ɪŋ", "eŋ", "ɛŋ", "æŋ", "ɑŋ", "ɔŋ", "oŋ", "ʊŋ", "uŋ", "ʌŋ", "aɪŋ", "aʊŋ", "ɔɪŋ", "ɝŋ", "ɑrŋ", "ɛrŋ", "ɪrŋ", "ɔrŋ", - "il", "ɪl", "el", "ɛl", "æl", "ɑl", "ɔl", "ol", "ʊl", "ul", "ʌl", "aɪl", "aʊl", "ɔɪl", "ɝl", "ɑrl", "ɛrl", "ɪrl", "ɔrl" - ] - - fileprivate let fileNameDictionary = [ - "pi": "pairs01_01", - "pɪ": "pairs01_02", - "pe": "pairs01_03", - "pɛ": "pairs01_04", - "pæ": "pairs01_05", - "pɑ": "pairs01_06", - "pɔ": "pairs01_07", - "po": "pairs01_08", - "pʊ": "pairs01_09", - "pu": "pairs01_10", - "pʌ": "pairs01_11", - "paɪ": "pairs01_12", - "paʊ": "pairs01_13", - "pɔɪ": "pairs01_14", - "pɝ": "pairs01_15", - "pɑr": "pairs01_16", - "pɛr": "pairs01_17", - "pɪr": "pairs01_18", - "pɔr": "pairs01_19", - "bi": "pairs09_01", - "bɪ": "pairs09_02", - "be": "pairs09_03", - "bɛ": "pairs09_04", - "bæ": "pairs09_05", - "bɑ": "pairs09_06", - "bɔ": "pairs09_07", - "bo": "pairs09_08", - "bʊ": "pairs09_09", - "bu": "pairs09_10", - "bʌ": "pairs09_11", - "baɪ": "pairs09_12", - "baʊ": "pairs09_13", - "bɔɪ": "pairs09_14", - "bɝ": "pairs09_15", - "bɑr": "pairs09_16", - "bɛr": "pairs09_17", - "bɪr": "pairs09_18", - "bɔr": "pairs09_19", - "ti": "pairs02_01", - "tɪ": "pairs02_02", - "te": "pairs02_03", - "tɛ": "pairs02_04", - "tæ": "pairs02_05", - "tɑ": "pairs02_06", - "tɔ": "pairs02_07", - "to": "pairs02_08", - "tʊ": "pairs02_09", - "tu": "pairs02_10", - "tʌ": "pairs02_11", - "taɪ": "pairs02_12", - "taʊ": "pairs02_13", - "tɔɪ": "pairs02_14", - "tɝ": "pairs02_15", - "tɑr": "pairs02_16", - "tɛr": "pairs02_17", - "tɪr": "pairs02_18", - "tɔr": "pairs02_19", - "di": "pairs10_01", - "dɪ": "pairs10_02", - "de": "pairs10_03", - "dɛ": "pairs10_04", - "dæ": "pairs10_05", - "dɑ": "pairs10_06", - "dɔ": "pairs10_07", - "do": "pairs10_08", - "dʊ": "pairs10_09", - "du": "pairs10_10", - "dʌ": "pairs10_11", - "daɪ": "pairs10_12", - "daʊ": "pairs10_13", - "dɔɪ": "pairs10_14", - "dɝ": "pairs10_15", - "dɑr": "pairs10_16", - "dɛr": "pairs10_17", - "dɪr": "pairs10_18", - "dɔr": "pairs10_19", - "ki": "pairs04_01", - "kɪ": "pairs04_02", - "ke": "pairs04_03", - "kɛ": "pairs04_04", - "kæ": "pairs04_05", - "kɑ": "pairs04_06", - "kɔ": "pairs04_07", - "ko": "pairs04_08", - "kʊ": "pairs04_09", - "ku": "pairs04_10", - "kʌ": "pairs04_11", - "kaɪ": "pairs04_12", - "kaʊ": "pairs04_13", - "kɔɪ": "pairs04_14", - "kɝ": "pairs04_15", - "kɑr": "pairs04_16", - "kɛr": "pairs04_17", - "kɪr": "pairs04_18", - "kɔr": "pairs04_19", - "gi": "pairs12_01", - "gɪ": "pairs12_02", - "ge": "pairs12_03", - "gɛ": "pairs12_04", - "gæ": "pairs12_05", - "gɑ": "pairs12_06", - "gɔ": "pairs12_07", - "go": "pairs12_08", - "gʊ": "pairs12_09", - "gu": "pairs12_10", - "gʌ": "pairs12_11", - "gaɪ": "pairs12_12", - "gaʊ": "pairs12_13", - "gɔɪ": "pairs12_14", - "gɝ": "pairs12_15", - "gɑr": "pairs12_16", - "gɛr": "pairs12_17", - "gɪr": "pairs12_18", - "gɔr": "pairs12_19", - "ʧi": "pairs03_01", - "ʧɪ": "pairs03_02", - "ʧe": "pairs03_03", - "ʧɛ": "pairs03_04", - "ʧæ": "pairs03_05", - "ʧɑ": "pairs03_06", - "ʧɔ": "pairs03_07", - "ʧo": "pairs03_08", - "ʧʊ": "pairs03_09", - "ʧu": "pairs03_10", - "ʧʌ": "pairs03_11", - "ʧaɪ": "pairs03_12", - "ʧaʊ": "pairs03_13", - "ʧɔɪ": "pairs03_14", - "ʧɝ": "pairs03_15", - "ʧɑr": "pairs03_16", - "ʧɛr": "pairs03_17", - "ʧɪr": "pairs03_18", - "ʧɔr": "pairs03_19", - "ʤi": "pairs11_01", - "ʤɪ": "pairs11_02", - "ʤe": "pairs11_03", - "ʤɛ": "pairs11_04", - "ʤæ": "pairs11_05", - "ʤɑ": "pairs11_06", - "ʤɔ": "pairs11_07", - "ʤo": "pairs11_08", - "ʤʊ": "pairs11_09", - "ʤu": "pairs11_10", - "ʤʌ": "pairs11_11", - "ʤaɪ": "pairs11_12", - "ʤaʊ": "pairs11_13", - "ʤɔɪ": "pairs11_14", - "ʤɝ": "pairs11_15", - "ʤɑr": "pairs11_16", - "ʤɛr": "pairs11_17", - "ʤɪr": "pairs11_18", - "ʤɔr": "pairs11_19", - "fi": "pairs05_01", - "fɪ": "pairs05_02", - "fe": "pairs05_03", - "fɛ": "pairs05_04", - "fæ": "pairs05_05", - "fɑ": "pairs05_06", - "fɔ": "pairs05_07", - "fo": "pairs05_08", - "fʊ": "pairs05_09", - "fu": "pairs05_10", - "fʌ": "pairs05_11", - "faɪ": "pairs05_12", - "faʊ": "pairs05_13", - "fɔɪ": "pairs05_14", - "fɝ": "pairs05_15", - "fɑr": "pairs05_16", - "fɛr": "pairs05_17", - "fɪr": "pairs05_18", - "fɔr": "pairs05_19", - "vi": "pairs13_01", - "vɪ": "pairs13_02", - "ve": "pairs13_03", - "vɛ": "pairs13_04", - "væ": "pairs13_05", - "vɑ": "pairs13_06", - "vɔ": "pairs13_07", - "vo": "pairs13_08", - "vʊ": "pairs13_09", - "vu": "pairs13_10", - "vʌ": "pairs13_11", - "vaɪ": "pairs13_12", - "vaʊ": "pairs13_13", - "vɔɪ": "pairs13_14", - "vɝ": "pairs13_15", - "vɑr": "pairs13_16", - "vɛr": "pairs13_17", - "vɪr": "pairs13_18", - "vɔr": "pairs13_19", - "θi": "pairs06_01", - "θɪ": "pairs06_02", - "θe": "pairs06_03", - "θɛ": "pairs06_04", - "θæ": "pairs06_05", - "θɑ": "pairs06_06", - "θɔ": "pairs06_07", - "θo": "pairs06_08", - "θʊ": "pairs06_09", - "θu": "pairs06_10", - "θʌ": "pairs06_11", - "θaɪ": "pairs06_12", - "θaʊ": "pairs06_13", - "θɔɪ": "pairs06_14", - "θɝ": "pairs06_15", - "θɑr": "pairs06_16", - "θɛr": "pairs06_17", - "θɪr": "pairs06_18", - "θɔr": "pairs06_19", - "ði": "pairs14_01", - "ðɪ": "pairs14_02", - "ðe": "pairs14_03", - "ðɛ": "pairs14_04", - "ðæ": "pairs14_05", - "ðɑ": "pairs14_06", - "ðɔ": "pairs14_07", - "ðo": "pairs14_08", - "ðʊ": "pairs14_09", - "ðu": "pairs14_10", - "ðʌ": "pairs14_11", - "ðaɪ": "pairs14_12", - "ðaʊ": "pairs14_13", - "ðɔɪ": "pairs14_14", - "ðɝ": "pairs14_15", - "ðɑr": "pairs14_16", - "ðɛr": "pairs14_17", - "ðɪr": "pairs14_18", - "ðɔr": "pairs14_19", - "si": "pairs07_01", - "sɪ": "pairs07_02", - "se": "pairs07_03", - "sɛ": "pairs07_04", - "sæ": "pairs07_05", - "sɑ": "pairs07_06", - "sɔ": "pairs07_07", - "so": "pairs07_08", - "sʊ": "pairs07_09", - "su": "pairs07_10", - "sʌ": "pairs07_11", - "saɪ": "pairs07_12", - "saʊ": "pairs07_13", - "sɔɪ": "pairs07_14", - "sɝ": "pairs07_15", - "sɑr": "pairs07_16", - "sɛr": "pairs07_17", - "sɪr": "pairs07_18", - "sɔr": "pairs07_19", - "zi": "pairs15_01", - "zɪ": "pairs15_02", - "ze": "pairs15_03", - "zɛ": "pairs15_04", - "zæ": "pairs15_05", - "zɑ": "pairs15_06", - "zɔ": "pairs15_07", - "zo": "pairs15_08", - "zʊ": "pairs15_09", - "zu": "pairs15_10", - "zʌ": "pairs15_11", - "zaɪ": "pairs15_12", - "zaʊ": "pairs15_13", - "zɔɪ": "pairs15_14", - "zɝ": "pairs15_15", - "zɑr": "pairs15_16", - "zɛr": "pairs15_17", - "zɪr": "pairs15_18", - "zɔr": "pairs15_19", - "ʃi": "pairs08_01", - "ʃɪ": "pairs08_02", - "ʃe": "pairs08_03", - "ʃɛ": "pairs08_04", - "ʃæ": "pairs08_05", - "ʃɑ": "pairs08_06", - "ʃɔ": "pairs08_07", - "ʃo": "pairs08_08", - "ʃʊ": "pairs08_09", - "ʃu": "pairs08_10", - "ʃʌ": "pairs08_11", - "ʃaɪ": "pairs08_12", - "ʃaʊ": "pairs08_13", - "ʃɔɪ": "pairs08_14", - "ʃɝ": "pairs08_15", - "ʃɑr": "pairs08_16", - "ʃɛr": "pairs08_17", - "ʃɪr": "pairs08_18", - "ʃɔr": "pairs08_19", - "ʒi": "pairs16_01", - "ʒɪ": "pairs16_02", - "ʒe": "pairs16_03", - "ʒɛ": "pairs16_04", - "ʒæ": "pairs16_05", - "ʒɑ": "pairs16_06", - "ʒɔ": "pairs16_07", - "ʒo": "pairs16_08", - "ʒʊ": "pairs16_09", - "ʒu": "pairs16_10", - "ʒʌ": "pairs16_11", - "ʒaɪ": "pairs16_12", - "ʒaʊ": "pairs16_13", - "ʒɔɪ": "pairs16_14", - "ʒɝ": "pairs16_15", - "ʒɑr": "pairs16_16", - "ʒɛr": "pairs16_17", - "ʒɪr": "pairs16_18", - "ʒɔr": "pairs16_19", - "mi": "pairs17_01", - "mɪ": "pairs17_02", - "me": "pairs17_03", - "mɛ": "pairs17_04", - "mæ": "pairs17_05", - "mɑ": "pairs17_06", - "mɔ": "pairs17_07", - "mo": "pairs17_08", - "mʊ": "pairs17_09", - "mu": "pairs17_10", - "mʌ": "pairs17_11", - "maɪ": "pairs17_12", - "maʊ": "pairs17_13", - "mɔɪ": "pairs17_14", - "mɝ": "pairs17_15", - "mɑr": "pairs17_16", - "mɛr": "pairs17_17", - "mɪr": "pairs17_18", - "mɔr": "pairs17_19", - "ni": "pairs18_01", - "nɪ": "pairs18_02", - "ne": "pairs18_03", - "nɛ": "pairs18_04", - "næ": "pairs18_05", - "nɑ": "pairs18_06", - "nɔ": "pairs18_07", - "no": "pairs18_08", - "nʊ": "pairs18_09", - "nu": "pairs18_10", - "nʌ": "pairs18_11", - "naɪ": "pairs18_12", - "naʊ": "pairs18_13", - "nɔɪ": "pairs18_14", - "nɝ": "pairs18_15", - "nɑr": "pairs18_16", - "nɛr": "pairs18_17", - "nɪr": "pairs18_18", - "nɔr": "pairs18_19", - "li": "pairs20_01", - "lɪ": "pairs20_02", - "le": "pairs20_03", - "lɛ": "pairs20_04", - "læ": "pairs20_05", - "lɑ": "pairs20_06", - "lɔ": "pairs20_07", - "lo": "pairs20_08", - "lʊ": "pairs20_09", - "lu": "pairs20_10", - "lʌ": "pairs20_11", - "laɪ": "pairs20_12", - "laʊ": "pairs20_13", - "lɔɪ": "pairs20_14", - "lɝ": "pairs20_15", - "lɑr": "pairs20_16", - "lɛr": "pairs20_17", - "lɪr": "pairs20_18", - "lɔr": "pairs20_19", - "wi": "pairs22_01", - "wɪ": "pairs22_02", - "we": "pairs22_03", - "wɛ": "pairs22_04", - "wæ": "pairs22_05", - "wɑ": "pairs22_06", - "wɔ": "pairs22_07", - "wo": "pairs22_08", - "wʊ": "pairs22_09", - "wu": "pairs22_10", - "wʌ": "pairs22_11", - "waɪ": "pairs22_12", - "waʊ": "pairs22_13", - "wɔɪ": "pairs22_14", - "wɝ": "pairs22_15", - "wɑr": "pairs22_16", - "wɛr": "pairs22_17", - "wɪr": "pairs22_18", - "wɔr": "pairs22_19", - "ji": "pairs23_01", - "jɪ": "pairs23_02", - "je": "pairs23_03", - "jɛ": "pairs23_04", - "jæ": "pairs23_05", - "jɑ": "pairs23_06", - "jɔ": "pairs23_07", - "jo": "pairs23_08", - "jʊ": "pairs23_09", - "ju": "pairs23_10", - "jʌ": "pairs23_11", - "jaɪ": "pairs23_12", - "jaʊ": "pairs23_13", - "jɔɪ": "pairs23_14", - "jɝ": "pairs23_15", - "jɑr": "pairs23_16", - "jɛr": "pairs23_17", - "jɪr": "pairs23_18", - "jɔr": "pairs23_19", - "hi": "pairs19_01", - "hɪ": "pairs19_02", - "he": "pairs19_03", - "hɛ": "pairs19_04", - "hæ": "pairs19_05", - "hɑ": "pairs19_06", - "hɔ": "pairs19_07", - "ho": "pairs19_08", - "hʊ": "pairs19_09", - "hu": "pairs19_10", - "hʌ": "pairs19_11", - "haɪ": "pairs19_12", - "haʊ": "pairs19_13", - "hɔɪ": "pairs19_14", - "hɝ": "pairs19_15", - "hɑr": "pairs19_16", - "hɛr": "pairs19_17", - "hɪr": "pairs19_18", - "hɔr": "pairs19_19", - "ri": "pairs21_01", - "rɪ": "pairs21_02", - "re": "pairs21_03", - "rɛ": "pairs21_04", - "ræ": "pairs21_05", - "rɑ": "pairs21_06", - "rɔ": "pairs21_07", - "ro": "pairs21_08", - "rʊ": "pairs21_09", - "ru": "pairs21_10", - "rʌ": "pairs21_11", - "raɪ": "pairs21_12", - "raʊ": "pairs21_13", - "rɔɪ": "pairs21_14", - "rɝ": "pairs21_15", - "rɑr": "pairs21_16", - "rɛr": "pairs21_17", - "rɪr": "pairs21_18", - "rɔr": "pairs21_19", - "ip": "pairs24_01", - "ɪp": "pairs24_02", - "ep": "pairs24_03", - "ɛp": "pairs24_04", - "æp": "pairs24_05", - "ɑp": "pairs24_06", - "ɔp": "pairs24_07", - "op": "pairs24_08", - "ʊp": "pairs24_09", - "up": "pairs24_10", - "ʌp": "pairs24_11", - "aɪp": "pairs24_12", - "aʊp": "pairs24_13", - "ɔɪp": "pairs24_14", - "ɝp": "pairs24_15", - "ɑrp": "pairs24_16", - "ɛrp": "pairs24_17", - "ɪrp": "pairs24_18", - "ɔrp": "pairs24_19", - "ib": "pairs32_01", - "ɪb": "pairs32_02", - "eb": "pairs32_03", - "ɛb": "pairs32_04", - "æb": "pairs32_05", - "ɑb": "pairs32_06", - "ɔb": "pairs32_07", - "ob": "pairs32_08", - "ʊb": "pairs32_09", - "ub": "pairs32_10", - "ʌb": "pairs32_11", - "aɪb": "pairs32_12", - "aʊb": "pairs32_13", - "ɔɪb": "pairs32_14", - "ɝb": "pairs32_15", - "ɑrb": "pairs32_16", - "ɛrb": "pairs32_17", - "ɪrb": "pairs32_18", - "ɔrb": "pairs32_19", - "it": "pairs25_01", - "ɪt": "pairs25_02", - "et": "pairs25_03", - "ɛt": "pairs25_04", - "æt": "pairs25_05", - "ɑt": "pairs25_06", - "ɔt": "pairs25_07", - "ot": "pairs25_08", - "ʊt": "pairs25_09", - "ut": "pairs25_10", - "ʌt": "pairs25_11", - "aɪt": "pairs25_12", - "aʊt": "pairs25_13", - "ɔɪt": "pairs25_14", - "ɝt": "pairs25_15", - "ɑrt": "pairs25_16", - "ɛrt": "pairs25_17", - "ɪrt": "pairs25_18", - "ɔrt": "pairs25_19", - "id": "pairs33_01", - "ɪd": "pairs33_02", - "ed": "pairs33_03", - "ɛd": "pairs33_04", - "æd": "pairs33_05", - "ɑd": "pairs33_06", - "ɔd": "pairs33_07", - "od": "pairs33_08", - "ʊd": "pairs33_09", - "ud": "pairs33_10", - "ʌd": "pairs33_11", - "aɪd": "pairs33_12", - "aʊd": "pairs33_13", - "ɔɪd": "pairs33_14", - "ɝd": "pairs33_15", - "ɑrd": "pairs33_16", - "ɛrd": "pairs33_17", - "ɪrd": "pairs33_18", - "ɔrd": "pairs33_19", - "ik": "pairs27_01", - "ɪk": "pairs27_02", - "ek": "pairs27_03", - "ɛk": "pairs27_04", - "æk": "pairs27_05", - "ɑk": "pairs27_06", - "ɔk": "pairs27_07", - "ok": "pairs27_08", - "ʊk": "pairs27_09", - "uk": "pairs27_10", - "ʌk": "pairs27_11", - "aɪk": "pairs27_12", - "aʊk": "pairs27_13", - "ɔɪk": "pairs27_14", - "ɝk": "pairs27_15", - "ɑrk": "pairs27_16", - "ɛrk": "pairs27_17", - "ɪrk": "pairs27_18", - "ɔrk": "pairs27_19", - "ig": "pairs35_01", - "ɪg": "pairs35_02", - "eg": "pairs35_03", - "ɛg": "pairs35_04", - "æg": "pairs35_05", - "ɑg": "pairs35_06", - "ɔg": "pairs35_07", - "og": "pairs35_08", - "ʊg": "pairs35_09", - "ug": "pairs35_10", - "ʌg": "pairs35_11", - "aɪg": "pairs35_12", - "aʊg": "pairs35_13", - "ɔɪg": "pairs35_14", - "ɝg": "pairs35_15", - "ɑrg": "pairs35_16", - "ɛrg": "pairs35_17", - "ɪrg": "pairs35_18", - "ɔrg": "pairs35_19", - "iʧ": "pairs26_01", - "ɪʧ": "pairs26_02", - "eʧ": "pairs26_03", - "ɛʧ": "pairs26_04", - "æʧ": "pairs26_05", - "ɑʧ": "pairs26_06", - "ɔʧ": "pairs26_07", - "oʧ": "pairs26_08", - "ʊʧ": "pairs26_09", - "uʧ": "pairs26_10", - "ʌʧ": "pairs26_11", - "aɪʧ": "pairs26_12", - "aʊʧ": "pairs26_13", - "ɔɪʧ": "pairs26_14", - "ɝʧ": "pairs26_15", - "ɑrʧ": "pairs26_16", - "ɛrʧ": "pairs26_17", - "ɪrʧ": "pairs26_18", - "ɔrʧ": "pairs26_19", - "iʤ": "pairs34_01", - "ɪʤ": "pairs34_02", - "eʤ": "pairs34_03", - "ɛʤ": "pairs34_04", - "æʤ": "pairs34_05", - "ɑʤ": "pairs34_06", - "ɔʤ": "pairs34_07", - "oʤ": "pairs34_08", - "ʊʤ": "pairs34_09", - "uʤ": "pairs34_10", - "ʌʤ": "pairs34_11", - "aɪʤ": "pairs34_12", - "aʊʤ": "pairs34_13", - "ɔɪʤ": "pairs34_14", - "ɝʤ": "pairs34_15", - "ɑrʤ": "pairs34_16", - "ɛrʤ": "pairs34_17", - "ɪrʤ": "pairs34_18", - "ɔrʤ": "pairs34_19", - "if": "pairs28_01", - "ɪf": "pairs28_02", - "ef": "pairs28_03", - "ɛf": "pairs28_04", - "æf": "pairs28_05", - "ɑf": "pairs28_06", - "ɔf": "pairs28_07", - "of": "pairs28_08", - "ʊf": "pairs28_09", - "uf": "pairs28_10", - "ʌf": "pairs28_11", - "aɪf": "pairs28_12", - "aʊf": "pairs28_13", - "ɔɪf": "pairs28_14", - "ɝf": "pairs28_15", - "ɑrf": "pairs28_16", - "ɛrf": "pairs28_17", - "ɪrf": "pairs28_18", - "ɔrf": "pairs28_19", - "iv": "pairs36_01", - "ɪv": "pairs36_02", - "ev": "pairs36_03", - "ɛv": "pairs36_04", - "æv": "pairs36_05", - "ɑv": "pairs36_06", - "ɔv": "pairs36_07", - "ov": "pairs36_08", - "ʊv": "pairs36_09", - "uv": "pairs36_10", - "ʌv": "pairs36_11", - "aɪv": "pairs36_12", - "aʊv": "pairs36_13", - "ɔɪv": "pairs36_14", - "ɝv": "pairs36_15", - "ɑrv": "pairs36_16", - "ɛrv": "pairs36_17", - "ɪrv": "pairs36_18", - "ɔrv": "pairs36_19", - "iθ": "pairs29_01", - "ɪθ": "pairs29_02", - "eθ": "pairs29_03", - "ɛθ": "pairs29_04", - "æθ": "pairs29_05", - "ɑθ": "pairs29_06", - "ɔθ": "pairs29_07", - "oθ": "pairs29_08", - "ʊθ": "pairs29_09", - "uθ": "pairs29_10", - "ʌθ": "pairs29_11", - "aɪθ": "pairs29_12", - "aʊθ": "pairs29_13", - "ɔɪθ": "pairs29_14", - "ɝθ": "pairs29_15", - "ɑrθ": "pairs29_16", - "ɛrθ": "pairs29_17", - "ɪrθ": "pairs29_18", - "ɔrθ": "pairs29_19", - "ið": "pairs37_01", - "ɪð": "pairs37_02", - "eð": "pairs37_03", - "ɛð": "pairs37_04", - "æð": "pairs37_05", - "ɑð": "pairs37_06", - "ɔð": "pairs37_07", - "oð": "pairs37_08", - "ʊð": "pairs37_09", - "uð": "pairs37_10", - "ʌð": "pairs37_11", - "aɪð": "pairs37_12", - "aʊð": "pairs37_13", - "ɔɪð": "pairs37_14", - "ɝð": "pairs37_15", - "ɑrð": "pairs37_16", - "ɛrð": "pairs37_17", - "ɪrð": "pairs37_18", - "ɔrð": "pairs37_19", - "is": "pairs30_01", - "ɪs": "pairs30_02", - "es": "pairs30_03", - "ɛs": "pairs30_04", - "æs": "pairs30_05", - "ɑs": "pairs30_06", - "ɔs": "pairs30_07", - "os": "pairs30_08", - "ʊs": "pairs30_09", - "us": "pairs30_10", - "ʌs": "pairs30_11", - "aɪs": "pairs30_12", - "aʊs": "pairs30_13", - "ɔɪs": "pairs30_14", - "ɝs": "pairs30_15", - "ɑrs": "pairs30_16", - "ɛrs": "pairs30_17", - "ɪrs": "pairs30_18", - "ɔrs": "pairs30_19", - "iz": "pairs38_01", - "ɪz": "pairs38_02", - "ez": "pairs38_03", - "ɛz": "pairs38_04", - "æz": "pairs38_05", - "ɑz": "pairs38_06", - "ɔz": "pairs38_07", - "oz": "pairs38_08", - "ʊz": "pairs38_09", - "uz": "pairs38_10", - "ʌz": "pairs38_11", - "aɪz": "pairs38_12", - "aʊz": "pairs38_13", - "ɔɪz": "pairs38_14", - "ɝz": "pairs38_15", - "ɑrz": "pairs38_16", - "ɛrz": "pairs38_17", - "ɪrz": "pairs38_18", - "ɔrz": "pairs38_19", - "iʃ": "pairs31_01", - "ɪʃ": "pairs31_02", - "eʃ": "pairs31_03", - "ɛʃ": "pairs31_04", - "æʃ": "pairs31_05", - "ɑʃ": "pairs31_06", - "ɔʃ": "pairs31_07", - "oʃ": "pairs31_08", - "ʊʃ": "pairs31_09", - "uʃ": "pairs31_10", - "ʌʃ": "pairs31_11", - "aɪʃ": "pairs31_12", - "aʊʃ": "pairs31_13", - "ɔɪʃ": "pairs31_14", - "ɝʃ": "pairs31_15", - "ɑrʃ": "pairs31_16", - "ɛrʃ": "pairs31_17", - "ɪrʃ": "pairs31_18", - "ɔrʃ": "pairs31_19", - "iʒ": "pairs39_01", - "ɪʒ": "pairs39_02", - "eʒ": "pairs39_03", - "ɛʒ": "pairs39_04", - "æʒ": "pairs39_05", - "ɑʒ": "pairs39_06", - "ɔʒ": "pairs39_07", - "oʒ": "pairs39_08", - "ʊʒ": "pairs39_09", - "uʒ": "pairs39_10", - "ʌʒ": "pairs39_11", - "aɪʒ": "pairs39_12", - "aʊʒ": "pairs39_13", - "ɔɪʒ": "pairs39_14", - "ɝʒ": "pairs39_15", - "ɑrʒ": "pairs39_16", - "ɛrʒ": "pairs39_17", - "ɪrʒ": "pairs39_18", - "ɔrʒ": "pairs39_19", - "im": "pairs40_01", - "ɪm": "pairs40_02", - "em": "pairs40_03", - "ɛm": "pairs40_04", - "æm": "pairs40_05", - "ɑm": "pairs40_06", - "ɔm": "pairs40_07", - "om": "pairs40_08", - "ʊm": "pairs40_09", - "um": "pairs40_10", - "ʌm": "pairs40_11", - "aɪm": "pairs40_12", - "aʊm": "pairs40_13", - "ɔɪm": "pairs40_14", - "ɝm": "pairs40_15", - "ɑrm": "pairs40_16", - "ɛrm": "pairs40_17", - "ɪrm": "pairs40_18", - "ɔrm": "pairs40_19", - "in": "pairs41_01", - "ɪn": "pairs41_02", - "en": "pairs41_03", - "ɛn": "pairs41_04", - "æn": "pairs41_05", - "ɑn": "pairs41_06", - "ɔn": "pairs41_07", - "on": "pairs41_08", - "ʊn": "pairs41_09", - "un": "pairs41_10", - "ʌn": "pairs41_11", - "aɪn": "pairs41_12", - "aʊn": "pairs41_13", - "ɔɪn": "pairs41_14", - "ɝn": "pairs41_15", - "ɑrn": "pairs41_16", - "ɛrn": "pairs41_17", - "ɪrn": "pairs41_18", - "ɔrn": "pairs41_19", - "iŋ": "pairs42_01", - "ɪŋ": "pairs42_02", - "eŋ": "pairs42_03", - "ɛŋ": "pairs42_04", - "æŋ": "pairs42_05", - "ɑŋ": "pairs42_06", - "ɔŋ": "pairs42_07", - "oŋ": "pairs42_08", - "ʊŋ": "pairs42_09", - "uŋ": "pairs42_10", - "ʌŋ": "pairs42_11", - "aɪŋ": "pairs42_12", - "aʊŋ": "pairs42_13", - "ɔɪŋ": "pairs42_14", - "ɝŋ": "pairs42_15", - "ɑrŋ": "pairs42_16", - "ɛrŋ": "pairs42_17", - "ɪrŋ": "pairs42_18", - "ɔrŋ": "pairs42_19", - "il": "pairs43_01", - "ɪl": "pairs43_02", - "el": "pairs43_03", - "ɛl": "pairs43_04", - "æl": "pairs43_05", - "ɑl": "pairs43_06", - "ɔl": "pairs43_07", - "ol": "pairs43_08", - "ʊl": "pairs43_09", - "ul": "pairs43_10", - "ʌl": "pairs43_11", - "aɪl": "pairs43_12", - "aʊl": "pairs43_13", - "ɔɪl": "pairs43_14", - "ɝl": "pairs43_15", - "ɑrl": "pairs43_16", - "ɛrl": "pairs43_17", - "ɪrl": "pairs43_18", - "ɔrl": "pairs43_19" - ] + private var doubleSounds: [String]? // MARK: - Methods - func fileNameForIpa(_ ipa: String) -> String? { - - return fileNameDictionary[ipa] + func getSoundCount() -> Int { + guard let sounds = doubleSounds else {return 0} + return sounds.count } - func getRandomIpa() -> String { + func restrictListToPairsContainingAtLeastOneSoundFrom( + consonants: [String], + vowels: [String]) { - // get random sound index number - let index = arc4random_uniform(UInt32(ipaStringList.count)) + if consonants.isEmpty && vowels.isEmpty {return} - // translate integer to ipa string - return ipaStringList[Int(index)] + // loop through all pairs and add any for which both consonant and vowel are in allowedSounds + doubleSounds = [String]() + for key in DoubleSound.soundMap.keys { + let (c, v) = Ipa.splitDoubleSound(str: key) + if stringContainsItemFromList(str: c, list: consonants) || + stringContainsItemFromList(str: v, list: vowels) { + doubleSounds!.append(key) + } + } } - func parse(_ ipaDouble: String) -> (String, String)? { - let length = ipaDouble.characters.count + // This has the danger of getting out of sink with the dictionary + // of sounds, but it was easier than sorting the dictionary + func restrictListToAllOrderedPairsContaining(ipa: String) { + if ipa.isEmpty {return} - if length < 2 { - return nil + if Ipa.isSpecial(ipa: ipa) { + restrictListToOrderedSpecialSounds(specialIpa: ipa) + return } - var firstSound = "" - var secondSound = "" + doubleSounds = [String]() + if Ipa.isConsonant(ipa: ipa) { + let vowels = ["i", "ɪ", "ɛ", "æ", "ɑ", "ɔ", "ʊ", "u", "ʌ", "eɪ", "aɪ", "aʊ", "ɔɪ", "oʊ", "ɝ", "ɑr", "ɛr", "ɪr", "ɔr"] + if ipa != "ŋ" { + for vowel in vowels { + doubleSounds?.append(ipa + vowel) + } + } + if !"wjhr".contains(ipa) { + for vowel in vowels { + doubleSounds?.append(vowel + ipa) + } + } + } else { // vowel + let initialConsonants = ["p", "b", "t", "d", "k", "g", "ʧ", "ʤ", "f", "v", "θ", "ð", "s", "z", "ʃ", "ʒ", "m", "n", "l", "w", "j", "h", "r"] + let finalConsonants = ["p", "b", "t", "d", "k", "g", "ʧ", "ʤ", "f", "v", "θ", "ð", "s", "z", "ʃ", "ʒ", "m", "n", "ŋ", "l"] + for consonant in initialConsonants { + doubleSounds?.append(consonant + ipa) + } + for consonant in finalConsonants { + doubleSounds?.append(ipa + consonant) + } + } + } - // get first two chars of ipaDouble + func restrictListToPairsContainingBothSoundsFrom( + consonants: [String], + vowels: [String]) { - var prefixLength = 1 + // Since every pair contains both a vowel and a consonant, + // an exact match requires both to be present. + if vowels.isEmpty || consonants.isEmpty {return} - if (ipaDouble.hasPrefix("aɪ") || ipaDouble.hasPrefix("aʊ") - || ipaDouble.hasPrefix("ɔɪ") || ipaDouble.hasPrefix("ɑr") - || ipaDouble.hasPrefix("ɛr") || ipaDouble.hasPrefix("ɪr") - || ipaDouble.hasPrefix("ɔr")) { - - if length == 2 { - return nil - } - - prefixLength = 2 + // loop through all pairs and add any for with both consonant and vowel are in allowedSounds + doubleSounds = [String]() + for key in DoubleSound.soundMap.keys { + let (c, v) = Ipa.splitDoubleSound(str: key) + if (stringContainsItemFromList(str: c, list: consonants) && stringContainsItemFromList(str: v, list: vowels)) { + doubleSounds!.append(key) + } + } + } + + // This has the danger of getting out of sink with the dictionary + // of sounds, but it was easier than sorting the dictionary + private func restrictListToOrderedSpecialSounds(specialIpa: String) { + switch specialIpa { + case Ipa.er_unstressed: + doubleSounds = ["pɚ", "bɚ", "tɚ", "dɚ", "kɚ", "gɚ", "ʧɚ", "ʤɚ", "fɚ", "vɚ", "θɚ", "ðɚ", "sɚ", "zɚ", "ʃɚ", "ʒɚ", "mɚ", "nɚ", "lɚ", "wɚ", "jɚ", "hɚ", "rɚ", "ɚp", "ɚb", "ɚt", "ɚd", "ɚk", "ɚg", "ɚʧ", "ɚʤ", "ɚf", "ɚv", "ɚθ", "ɚð", "ɚs", "ɚz", "ɚʃ", "ɚʒ", "ɚm", "ɚn", "ɚŋ", "ɚl"] + case Ipa.schwa: + doubleSounds = ["pə", "bə", "tə", "də", "kə", "gə", "ʧə", "ʤə", "fə", "və", "θə", "ðə", "sə", "zə", "ʃə", "ʒə", "mə", "nə", "lə", "wə", "jə", "hə", "rə", "əp", "əb", "ət", "əd", "ək", "əg", "əʧ", "əʤ", "əf", "əv", "əθ", "əð", "əs", "əz", "əʃ", "əʒ", "əm", "ən", "əŋ", "əl"] + case Ipa.glottal_stop: + doubleSounds = ["iʔ", "ɪʔ", "ɛʔ", "æʔ", "ɑʔ", "ɔʔ", "ʊʔ", "uʔ", "ʌʔ", "eɪʔ", "aɪʔ", "aʊʔ", "ɔɪʔ", "oʊʔ", "ɝʔ", "ɑrʔ", "ɛrʔ", "ɪrʔ", "ɔrʔ"] + case Ipa.flap_t: + doubleSounds = ["ˈiɾə", "ˈɪɾə", "ˈɛɾə", "ˈæɾə", "ˈɑɾə", "ˈɔɾə", "ˈʊɾə", "ˈuɾə", "ˈʌɾə", "ˈeɪɾə", "ˈaɪɾə", "ˈaʊɾə", "ˈɔɪɾə", "ˈoʊɾə", "ˈɝɾə", "ˈɑrɾə", "ˈɛrɾə", "ˈɪrɾə", "ˈɔrɾə"] + default: + break + } + } + + func includeAllSounds() { + doubleSounds = Array(DoubleSound.soundMap.keys) + } + + private func stringContainsItemFromList(str: String, list: [String]) -> Bool { + for item in list { + if item == str {return true} + } + return false + } + + + + // MARK: - Methods + + func getRandomIpa() -> String { + + if doubleSounds == nil || doubleSounds?.count == 0 { + includeAllSounds() } - firstSound = String(ipaDouble.characters.prefix(prefixLength)) - secondSound = String(ipaDouble.characters.suffix(length - prefixLength)) + // get random integer (0 <= x < numberOfSounds) + let index = Int(arc4random_uniform(UInt32(doubleSounds!.count))) - return (firstSound, secondSound) + // translate integer to ipa string + return doubleSounds![index] + } + + class func getSoundFileName(doubleSoundIpa: String) -> String? { + if let value = DoubleSound.specialSoundMap[doubleSoundIpa] { + return value + } + return DoubleSound.soundMap[doubleSoundIpa] + } + + func getSounds() -> [String] { + if doubleSounds == nil { + includeAllSounds() + } + return doubleSounds! } - func isValidIpaDouble(_ ipa: String) -> Bool { + static func parse(ipaDouble: String) -> (String, String)? { + let count = ipaDouble.count + if count < 2 {return nil} - if fileNameDictionary[ipa] == nil { - return false + if !startsWithTwoCharVowel(ipaDouble: ipaDouble) { + let index = ipaDouble.index(ipaDouble.startIndex, offsetBy: 1) + let first = ipaDouble[.. Bool { + return ipaDouble.hasPrefix(Ipa.ai) || ipaDouble.hasPrefix(Ipa.au) + || ipaDouble.hasPrefix(Ipa.ei) || ipaDouble.hasPrefix(Ipa.ou) + || ipaDouble.hasPrefix(Ipa.oi) || ipaDouble.hasPrefix(Ipa.ar) + || ipaDouble.hasPrefix(Ipa.er) || ipaDouble.hasPrefix(Ipa.ir) + || ipaDouble.hasPrefix(Ipa.or) + } + + private static let soundMap = [ + "pi": "double_p_i", + "pɪ": "double_p_is", + "peɪ": "double_p_ei", + "pɛ": "double_p_e", + "pæ": "double_p_ae", + "pɑ": "double_p_a", + "pɔ": "double_p_c", + "poʊ": "double_p_ou", + "pʊ": "double_p_us", + "pu": "double_p_u", + "pʌ": "double_p_vu", + "paɪ": "double_p_ai", + "paʊ": "double_p_au", + "pɔɪ": "double_p_oi", + "pɝ": "double_p_ers", + "pɑr": "double_p_ar", + "pɛr": "double_p_er", + "pɪr": "double_p_ir", + "pɔr": "double_p_or", + "bi": "double_b_i", + "bɪ": "double_b_is", + "beɪ": "double_b_ei", + "bɛ": "double_b_e", + "bæ": "double_b_ae", + "bɑ": "double_b_a", + "bɔ": "double_b_c", + "boʊ": "double_b_ou", + "bʊ": "double_b_us", + "bu": "double_b_u", + "bʌ": "double_b_vu", + "baɪ": "double_b_ai", + "baʊ": "double_b_au", + "bɔɪ": "double_b_oi", + "bɝ": "double_b_ers", + "bɑr": "double_b_ar", + "bɛr": "double_b_er", + "bɪr": "double_b_ir", + "bɔr": "double_b_or", + "ti": "double_t_i", + "tɪ": "double_t_is", + "teɪ": "double_t_ei", + "tɛ": "double_t_e", + "tæ": "double_t_ae", + "tɑ": "double_t_a", + "tɔ": "double_t_c", + "toʊ": "double_t_ou", + "tʊ": "double_t_us", + "tu": "double_t_u", + "tʌ": "double_t_vu", + "taɪ": "double_t_ai", + "taʊ": "double_t_au", + "tɔɪ": "double_t_oi", + "tɝ": "double_t_ers", + "tɑr": "double_t_ar", + "tɛr": "double_t_er", + "tɪr": "double_t_ir", + "tɔr": "double_t_or", + "di": "double_d_i", + "dɪ": "double_d_is", + "deɪ": "double_d_ei", + "dɛ": "double_d_e", + "dæ": "double_d_ae", + "dɑ": "double_d_a", + "dɔ": "double_d_c", + "doʊ": "double_d_ou", + "dʊ": "double_d_us", + "du": "double_d_u", + "dʌ": "double_d_vu", + "daɪ": "double_d_ai", + "daʊ": "double_d_au", + "dɔɪ": "double_d_oi", + "dɝ": "double_d_ers", + "dɑr": "double_d_ar", + "dɛr": "double_d_er", + "dɪr": "double_d_ir", + "dɔr": "double_d_or", + "ki": "double_k_i", + "kɪ": "double_k_is", + "keɪ": "double_k_ei", + "kɛ": "double_k_e", + "kæ": "double_k_ae", + "kɑ": "double_k_a", + "kɔ": "double_k_c", + "koʊ": "double_k_ou", + "kʊ": "double_k_us", + "ku": "double_k_u", + "kʌ": "double_k_vu", + "kaɪ": "double_k_ai", + "kaʊ": "double_k_au", + "kɔɪ": "double_k_oi", + "kɝ": "double_k_ers", + "kɑr": "double_k_ar", + "kɛr": "double_k_er", + "kɪr": "double_k_ir", + "kɔr": "double_k_or", + "gi": "double_g_i", + "gɪ": "double_g_is", + "geɪ": "double_g_ei", + "gɛ": "double_g_e", + "gæ": "double_g_ae", + "gɑ": "double_g_a", + "gɔ": "double_g_c", + "goʊ": "double_g_ou", + "gʊ": "double_g_us", + "gu": "double_g_u", + "gʌ": "double_g_vu", + "gaɪ": "double_g_ai", + "gaʊ": "double_g_au", + "gɔɪ": "double_g_oi", + "gɝ": "double_g_ers", + "gɑr": "double_g_ar", + "gɛr": "double_g_er", + "gɪr": "double_g_ir", + "gɔr": "double_g_or", + "ʧi": "double_ch_i", + "ʧɪ": "double_ch_is", + "ʧeɪ": "double_ch_ei", + "ʧɛ": "double_ch_e", + "ʧæ": "double_ch_ae", + "ʧɑ": "double_ch_a", + "ʧɔ": "double_ch_c", + "ʧoʊ": "double_ch_ou", + "ʧʊ": "double_ch_us", + "ʧu": "double_ch_u", + "ʧʌ": "double_ch_vu", + "ʧaɪ": "double_ch_ai", + "ʧaʊ": "double_ch_au", + "ʧɔɪ": "double_ch_oi", + "ʧɝ": "double_ch_ers", + "ʧɑr": "double_ch_ar", + "ʧɛr": "double_ch_er", + "ʧɪr": "double_ch_ir", + "ʧɔr": "double_ch_or", + "ʤi": "double_dzh_i", + "ʤɪ": "double_dzh_is", + "ʤeɪ": "double_dzh_ei", + "ʤɛ": "double_dzh_e", + "ʤæ": "double_dzh_ae", + "ʤɑ": "double_dzh_a", + "ʤɔ": "double_dzh_c", + "ʤoʊ": "double_dzh_ou", + "ʤʊ": "double_dzh_us", + "ʤu": "double_dzh_u", + "ʤʌ": "double_dzh_vu", + "ʤaɪ": "double_dzh_ai", + "ʤaʊ": "double_dzh_au", + "ʤɔɪ": "double_dzh_oi", + "ʤɝ": "double_dzh_ers", + "ʤɑr": "double_dzh_ar", + "ʤɛr": "double_dzh_er", + "ʤɪr": "double_dzh_ir", + "ʤɔr": "double_dzh_or", + "fi": "double_f_i", + "fɪ": "double_f_is", + "feɪ": "double_f_ei", + "fɛ": "double_f_e", + "fæ": "double_f_ae", + "fɑ": "double_f_a", + "fɔ": "double_f_c", + "foʊ": "double_f_ou", + "fʊ": "double_f_us", + "fu": "double_f_u", + "fʌ": "double_f_vu", + "faɪ": "double_f_ai", + "faʊ": "double_f_au", + "fɔɪ": "double_f_oi", + "fɝ": "double_f_ers", + "fɑr": "double_f_ar", + "fɛr": "double_f_er", + "fɪr": "double_f_ir", + "fɔr": "double_f_or", + "vi": "double_v_i", + "vɪ": "double_v_is", + "veɪ": "double_v_ei", + "vɛ": "double_v_e", + "væ": "double_v_ae", + "vɑ": "double_v_a", + "vɔ": "double_v_c", + "voʊ": "double_v_ou", + "vʊ": "double_v_us", + "vu": "double_v_u", + "vʌ": "double_v_vu", + "vaɪ": "double_v_ai", + "vaʊ": "double_v_au", + "vɔɪ": "double_v_oi", + "vɝ": "double_v_ers", + "vɑr": "double_v_ar", + "vɛr": "double_v_er", + "vɪr": "double_v_ir", + "vɔr": "double_v_or", + "θi": "double_th_i", + "θɪ": "double_th_is", + "θeɪ": "double_th_ei", + "θɛ": "double_th_e", + "θæ": "double_th_ae", + "θɑ": "double_th_a", + "θɔ": "double_th_c", + "θoʊ": "double_th_ou", + "θʊ": "double_th_us", + "θu": "double_th_u", + "θʌ": "double_th_vu", + "θaɪ": "double_th_ai", + "θaʊ": "double_th_au", + "θɔɪ": "double_th_oi", + "θɝ": "double_th_ers", + "θɑr": "double_th_ar", + "θɛr": "double_th_er", + "θɪr": "double_th_ir", + "θɔr": "double_th_or", + "ði": "double_thv_i", + "ðɪ": "double_thv_is", + "ðeɪ": "double_thv_ei", + "ðɛ": "double_thv_e", + "ðæ": "double_thv_ae", + "ðɑ": "double_thv_a", + "ðɔ": "double_thv_c", + "ðoʊ": "double_thv_ou", + "ðʊ": "double_thv_us", + "ðu": "double_thv_u", + "ðʌ": "double_thv_vu", + "ðaɪ": "double_thv_ai", + "ðaʊ": "double_thv_au", + "ðɔɪ": "double_thv_oi", + "ðɝ": "double_thv_ers", + "ðɑr": "double_thv_ar", + "ðɛr": "double_thv_er", + "ðɪr": "double_thv_ir", + "ðɔr": "double_thv_or", + "si": "double_s_i", + "sɪ": "double_s_is", + "seɪ": "double_s_ei", + "sɛ": "double_s_e", + "sæ": "double_s_ae", + "sɑ": "double_s_a", + "sɔ": "double_s_c", + "soʊ": "double_s_ou", + "sʊ": "double_s_us", + "su": "double_s_u", + "sʌ": "double_s_vu", + "saɪ": "double_s_ai", + "saʊ": "double_s_au", + "sɔɪ": "double_s_oi", + "sɝ": "double_s_ers", + "sɑr": "double_s_ar", + "sɛr": "double_s_er", + "sɪr": "double_s_ir", + "sɔr": "double_s_or", + "zi": "double_z_i", + "zɪ": "double_z_is", + "zeɪ": "double_z_ei", + "zɛ": "double_z_e", + "zæ": "double_z_ae", + "zɑ": "double_z_a", + "zɔ": "double_z_c", + "zoʊ": "double_z_ou", + "zʊ": "double_z_us", + "zu": "double_z_u", + "zʌ": "double_z_vu", + "zaɪ": "double_z_ai", + "zaʊ": "double_z_au", + "zɔɪ": "double_z_oi", + "zɝ": "double_z_ers", + "zɑr": "double_z_ar", + "zɛr": "double_z_er", + "zɪr": "double_z_ir", + "zɔr": "double_z_or", + "ʃi": "double_sh_i", + "ʃɪ": "double_sh_is", + "ʃeɪ": "double_sh_ei", + "ʃɛ": "double_sh_e", + "ʃæ": "double_sh_ae", + "ʃɑ": "double_sh_a", + "ʃɔ": "double_sh_c", + "ʃoʊ": "double_sh_ou", + "ʃʊ": "double_sh_us", + "ʃu": "double_sh_u", + "ʃʌ": "double_sh_vu", + "ʃaɪ": "double_sh_ai", + "ʃaʊ": "double_sh_au", + "ʃɔɪ": "double_sh_oi", + "ʃɝ": "double_sh_ers", + "ʃɑr": "double_sh_ar", + "ʃɛr": "double_sh_er", + "ʃɪr": "double_sh_ir", + "ʃɔr": "double_sh_or", + "ʒi": "double_zh_i", + "ʒɪ": "double_zh_is", + "ʒeɪ": "double_zh_ei", + "ʒɛ": "double_zh_e", + "ʒæ": "double_zh_ae", + "ʒɑ": "double_zh_a", + "ʒɔ": "double_zh_c", + "ʒoʊ": "double_zh_ou", + "ʒʊ": "double_zh_us", + "ʒu": "double_zh_u", + "ʒʌ": "double_zh_vu", + "ʒaɪ": "double_zh_ai", + "ʒaʊ": "double_zh_au", + "ʒɔɪ": "double_zh_oi", + "ʒɝ": "double_zh_ers", + "ʒɑr": "double_zh_ar", + "ʒɛr": "double_zh_er", + "ʒɪr": "double_zh_ir", + "ʒɔr": "double_zh_or", + "mi": "double_m_i", + "mɪ": "double_m_is", + "meɪ": "double_m_ei", + "mɛ": "double_m_e", + "mæ": "double_m_ae", + "mɑ": "double_m_a", + "mɔ": "double_m_c", + "moʊ": "double_m_ou", + "mʊ": "double_m_us", + "mu": "double_m_u", + "mʌ": "double_m_vu", + "maɪ": "double_m_ai", + "maʊ": "double_m_au", + "mɔɪ": "double_m_oi", + "mɝ": "double_m_ers", + "mɑr": "double_m_ar", + "mɛr": "double_m_er", + "mɪr": "double_m_ir", + "mɔr": "double_m_or", + "ni": "double_n_i", + "nɪ": "double_n_is", + "neɪ": "double_n_ei", + "nɛ": "double_n_e", + "næ": "double_n_ae", + "nɑ": "double_n_a", + "nɔ": "double_n_c", + "noʊ": "double_n_ou", + "nʊ": "double_n_us", + "nu": "double_n_u", + "nʌ": "double_n_vu", + "naɪ": "double_n_ai", + "naʊ": "double_n_au", + "nɔɪ": "double_n_oi", + "nɝ": "double_n_ers", + "nɑr": "double_n_ar", + "nɛr": "double_n_er", + "nɪr": "double_n_ir", + "nɔr": "double_n_or", + "li": "double_l_i", + "lɪ": "double_l_is", + "leɪ": "double_l_ei", + "lɛ": "double_l_e", + "læ": "double_l_ae", + "lɑ": "double_l_a", + "lɔ": "double_l_c", + "loʊ": "double_l_ou", + "lʊ": "double_l_us", + "lu": "double_l_u", + "lʌ": "double_l_vu", + "laɪ": "double_l_ai", + "laʊ": "double_l_au", + "lɔɪ": "double_l_oi", + "lɝ": "double_l_ers", + "lɑr": "double_l_ar", + "lɛr": "double_l_er", + "lɪr": "double_l_ir", + "lɔr": "double_l_or", + "wi": "double_w_i", + "wɪ": "double_w_is", + "weɪ": "double_w_ei", + "wɛ": "double_w_e", + "wæ": "double_w_ae", + "wɑ": "double_w_a", + "wɔ": "double_w_c", + "woʊ": "double_w_ou", + "wʊ": "double_w_us", + "wu": "double_w_u", + "wʌ": "double_w_vu", + "waɪ": "double_w_ai", + "waʊ": "double_w_au", + "wɔɪ": "double_w_oi", + "wɝ": "double_w_ers", + "wɑr": "double_w_ar", + "wɛr": "double_w_er", + "wɪr": "double_w_ir", + "wɔr": "double_w_or", + "ji": "double_j_i", + "jɪ": "double_j_is", + "jeɪ": "double_j_ei", + "jɛ": "double_j_e", + "jæ": "double_j_ae", + "jɑ": "double_j_a", + "jɔ": "double_j_c", + "joʊ": "double_j_ou", + "jʊ": "double_j_us", + "ju": "double_j_u", + "jʌ": "double_j_vu", + "jaɪ": "double_j_ai", + "jaʊ": "double_j_au", + "jɔɪ": "double_j_oi", + "jɝ": "double_j_ers", + "jɑr": "double_j_ar", + "jɛr": "double_j_er", + "jɪr": "double_j_ir", + "jɔr": "double_j_or", + "hi": "double_h_i", + "hɪ": "double_h_is", + "heɪ": "double_h_ei", + "hɛ": "double_h_e", + "hæ": "double_h_ae", + "hɑ": "double_h_a", + "hɔ": "double_h_c", + "hoʊ": "double_h_ou", + "hʊ": "double_h_us", + "hu": "double_h_u", + "hʌ": "double_h_vu", + "haɪ": "double_h_ai", + "haʊ": "double_h_au", + "hɔɪ": "double_h_oi", + "hɝ": "double_h_ers", + "hɑr": "double_h_ar", + "hɛr": "double_h_er", + "hɪr": "double_h_ir", + "hɔr": "double_h_or", + "ri": "double_r_i", + "rɪ": "double_r_is", + "reɪ": "double_r_ei", + "rɛ": "double_r_e", + "ræ": "double_r_ae", + "rɑ": "double_r_a", + "rɔ": "double_r_c", + "roʊ": "double_r_ou", + "rʊ": "double_r_us", + "ru": "double_r_u", + "rʌ": "double_r_vu", + "raɪ": "double_r_ai", + "raʊ": "double_r_au", + "rɔɪ": "double_r_oi", + "rɝ": "double_r_ers", + "rɑr": "double_r_ar", + "rɛr": "double_r_er", + "rɪr": "double_r_ir", + "rɔr": "double_r_or", + "ip": "double_i_p", + "ɪp": "double_is_p", + "eɪp": "double_ei_p", + "ɛp": "double_e_p", + "æp": "double_ae_p", + "ɑp": "double_a_p", + "ɔp": "double_c_p", + "oʊp": "double_ou_p", + "ʊp": "double_us_p", + "up": "double_u_p", + "ʌp": "double_vu_p", + "aɪp": "double_ai_p", + "aʊp": "double_au_p", + "ɔɪp": "double_oi_p", + "ɝp": "double_ers_p", + "ɑrp": "double_ar_p", + "ɛrp": "double_er_p", + "ɪrp": "double_ir_p", + "ɔrp": "double_or_p", + "ib": "double_i_b", + "ɪb": "double_is_b", + "eɪb": "double_ei_b", + "ɛb": "double_e_b", + "æb": "double_ae_b", + "ɑb": "double_a_b", + "ɔb": "double_c_b", + "oʊb": "double_ou_b", + "ʊb": "double_us_b", + "ub": "double_u_b", + "ʌb": "double_vu_b", + "aɪb": "double_ai_b", + "aʊb": "double_au_b", + "ɔɪb": "double_oi_b", + "ɝb": "double_ers_b", + "ɑrb": "double_ar_b", + "ɛrb": "double_er_b", + "ɪrb": "double_ir_b", + "ɔrb": "double_or_b", + "it": "double_i_t", + "ɪt": "double_is_t", + "eɪt": "double_ei_t", + "ɛt": "double_e_t", + "æt": "double_ae_t", + "ɑt": "double_a_t", + "ɔt": "double_c_t", + "oʊt": "double_ou_t", + "ʊt": "double_us_t", + "ut": "double_u_t", + "ʌt": "double_vu_t", + "aɪt": "double_ai_t", + "aʊt": "double_au_t", + "ɔɪt": "double_oi_t", + "ɝt": "double_ers_t", + "ɑrt": "double_ar_t", + "ɛrt": "double_er_t", + "ɪrt": "double_ir_t", + "ɔrt": "double_or_t", + "id": "double_i_d", + "ɪd": "double_is_d", + "eɪd": "double_ei_d", + "ɛd": "double_e_d", + "æd": "double_ae_d", + "ɑd": "double_a_d", + "ɔd": "double_c_d", + "oʊd": "double_ou_d", + "ʊd": "double_us_d", + "ud": "double_u_d", + "ʌd": "double_vu_d", + "aɪd": "double_ai_d", + "aʊd": "double_au_d", + "ɔɪd": "double_oi_d", + "ɝd": "double_ers_d", + "ɑrd": "double_ar_d", + "ɛrd": "double_er_d", + "ɪrd": "double_ir_d", + "ɔrd": "double_or_d", + "ik": "double_i_k", + "ɪk": "double_is_k", + "eɪk": "double_ei_k", + "ɛk": "double_e_k", + "æk": "double_ae_k", + "ɑk": "double_a_k", + "ɔk": "double_c_k", + "oʊk": "double_ou_k", + "ʊk": "double_us_k", + "uk": "double_u_k", + "ʌk": "double_vu_k", + "aɪk": "double_ai_k", + "aʊk": "double_au_k", + "ɔɪk": "double_oi_k", + "ɝk": "double_ers_k", + "ɑrk": "double_ar_k", + "ɛrk": "double_er_k", + "ɪrk": "double_ir_k", + "ɔrk": "double_or_k", + "ig": "double_i_g", + "ɪg": "double_is_g", + "eɪg": "double_ei_g", + "ɛg": "double_e_g", + "æg": "double_ae_g", + "ɑg": "double_a_g", + "ɔg": "double_c_g", + "oʊg": "double_ou_g", + "ʊg": "double_us_g", + "ug": "double_u_g", + "ʌg": "double_vu_g", + "aɪg": "double_ai_g", + "aʊg": "double_au_g", + "ɔɪg": "double_oi_g", + "ɝg": "double_ers_g", + "ɑrg": "double_ar_g", + "ɛrg": "double_er_g", + "ɪrg": "double_ir_g", + "ɔrg": "double_or_g", + "iʧ": "double_i_ch", + "ɪʧ": "double_is_ch", + "eɪʧ": "double_ei_ch", + "ɛʧ": "double_e_ch", + "æʧ": "double_ae_ch", + "ɑʧ": "double_a_ch", + "ɔʧ": "double_c_ch", + "oʊʧ": "double_ou_ch", + "ʊʧ": "double_us_ch", + "uʧ": "double_u_ch", + "ʌʧ": "double_vu_ch", + "aɪʧ": "double_ai_ch", + "aʊʧ": "double_au_ch", + "ɔɪʧ": "double_oi_ch", + "ɝʧ": "double_ers_ch", + "ɑrʧ": "double_ar_ch", + "ɛrʧ": "double_er_ch", + "ɪrʧ": "double_ir_ch", + "ɔrʧ": "double_or_ch", + "iʤ": "double_i_dzh", + "ɪʤ": "double_is_dzh", + "eɪʤ": "double_ei_dzh", + "ɛʤ": "double_e_dzh", + "æʤ": "double_ae_dzh", + "ɑʤ": "double_a_dzh", + "ɔʤ": "double_c_dzh", + "oʊʤ": "double_ou_dzh", + "ʊʤ": "double_us_dzh", + "uʤ": "double_u_dzh", + "ʌʤ": "double_vu_dzh", + "aɪʤ": "double_ai_dzh", + "aʊʤ": "double_au_dzh", + "ɔɪʤ": "double_oi_dzh", + "ɝʤ": "double_ers_dzh", + "ɑrʤ": "double_ar_dzh", + "ɛrʤ": "double_er_dzh", + "ɪrʤ": "double_ir_dzh", + "ɔrʤ": "double_or_dzh", + "if": "double_i_f", + "ɪf": "double_is_f", + "eɪf": "double_ei_f", + "ɛf": "double_e_f", + "æf": "double_ae_f", + "ɑf": "double_a_f", + "ɔf": "double_c_f", + "oʊf": "double_ou_f", + "ʊf": "double_us_f", + "uf": "double_u_f", + "ʌf": "double_vu_f", + "aɪf": "double_ai_f", + "aʊf": "double_au_f", + "ɔɪf": "double_oi_f", + "ɝf": "double_ers_f", + "ɑrf": "double_ar_f", + "ɛrf": "double_er_f", + "ɪrf": "double_ir_f", + "ɔrf": "double_or_f", + "iv": "double_i_v", + "ɪv": "double_is_v", + "eɪv": "double_ei_v", + "ɛv": "double_e_v", + "æv": "double_ae_v", + "ɑv": "double_a_v", + "ɔv": "double_c_v", + "oʊv": "double_ou_v", + "ʊv": "double_us_v", + "uv": "double_u_v", + "ʌv": "double_vu_v", + "aɪv": "double_ai_v", + "aʊv": "double_au_v", + "ɔɪv": "double_oi_v", + "ɝv": "double_ers_v", + "ɑrv": "double_ar_v", + "ɛrv": "double_er_v", + "ɪrv": "double_ir_v", + "ɔrv": "double_or_v", + "iθ": "double_i_th", + "ɪθ": "double_is_th", + "eɪθ": "double_ei_th", + "ɛθ": "double_e_th", + "æθ": "double_ae_th", + "ɑθ": "double_a_th", + "ɔθ": "double_c_th", + "oʊθ": "double_ou_th", + "ʊθ": "double_us_th", + "uθ": "double_u_th", + "ʌθ": "double_vu_th", + "aɪθ": "double_ai_th", + "aʊθ": "double_au_th", + "ɔɪθ": "double_oi_th", + "ɝθ": "double_ers_th", + "ɑrθ": "double_ar_th", + "ɛrθ": "double_er_th", + "ɪrθ": "double_ir_th", + "ɔrθ": "double_or_th", + "ið": "double_i_thv", + "ɪð": "double_is_thv", + "eɪð": "double_ei_thv", + "ɛð": "double_e_thv", + "æð": "double_ae_thv", + "ɑð": "double_a_thv", + "ɔð": "double_c_thv", + "oʊð": "double_ou_thv", + "ʊð": "double_us_thv", + "uð": "double_u_thv", + "ʌð": "double_vu_thv", + "aɪð": "double_ai_thv", + "aʊð": "double_au_thv", + "ɔɪð": "double_oi_thv", + "ɝð": "double_ers_thv", + "ɑrð": "double_ar_thv", + "ɛrð": "double_er_thv", + "ɪrð": "double_ir_thv", + "ɔrð": "double_or_thv", + "is": "double_i_s", + "ɪs": "double_is_s", + "eɪs": "double_ei_s", + "ɛs": "double_e_s", + "æs": "double_ae_s", + "ɑs": "double_a_s", + "ɔs": "double_c_s", + "oʊs": "double_ou_s", + "ʊs": "double_us_s", + "us": "double_u_s", + "ʌs": "double_vu_s", + "aɪs": "double_ai_s", + "aʊs": "double_au_s", + "ɔɪs": "double_oi_s", + "ɝs": "double_ers_s", + "ɑrs": "double_ar_s", + "ɛrs": "double_er_s", + "ɪrs": "double_ir_s", + "ɔrs": "double_or_s", + "iz": "double_i_z", + "ɪz": "double_is_z", + "eɪz": "double_ei_z", + "ɛz": "double_e_z", + "æz": "double_ae_z", + "ɑz": "double_a_z", + "ɔz": "double_c_z", + "oʊz": "double_ou_z", + "ʊz": "double_us_z", + "uz": "double_u_z", + "ʌz": "double_vu_z", + "aɪz": "double_ai_z", + "aʊz": "double_au_z", + "ɔɪz": "double_oi_z", + "ɝz": "double_ers_z", + "ɑrz": "double_ar_z", + "ɛrz": "double_er_z", + "ɪrz": "double_ir_z", + "ɔrz": "double_or_z", + "iʃ": "double_i_sh", + "ɪʃ": "double_is_sh", + "eɪʃ": "double_ei_sh", + "ɛʃ": "double_e_sh", + "æʃ": "double_ae_sh", + "ɑʃ": "double_a_sh", + "ɔʃ": "double_c_sh", + "oʊʃ": "double_ou_sh", + "ʊʃ": "double_us_sh", + "uʃ": "double_u_sh", + "ʌʃ": "double_vu_sh", + "aɪʃ": "double_ai_sh", + "aʊʃ": "double_au_sh", + "ɔɪʃ": "double_oi_sh", + "ɝʃ": "double_ers_sh", + "ɑrʃ": "double_ar_sh", + "ɛrʃ": "double_er_sh", + "ɪrʃ": "double_ir_sh", + "ɔrʃ": "double_or_sh", + "iʒ": "double_i_zh", + "ɪʒ": "double_is_zh", + "eɪʒ": "double_ei_zh", + "ɛʒ": "double_e_zh", + "æʒ": "double_ae_zh", + "ɑʒ": "double_a_zh", + "ɔʒ": "double_c_zh", + "oʊʒ": "double_ou_zh", + "ʊʒ": "double_us_zh", + "uʒ": "double_u_zh", + "ʌʒ": "double_vu_zh", + "aɪʒ": "double_ai_zh", + "aʊʒ": "double_au_zh", + "ɔɪʒ": "double_oi_zh", + "ɝʒ": "double_ers_zh", + "ɑrʒ": "double_ar_zh", + "ɛrʒ": "double_er_zh", + "ɪrʒ": "double_ir_zh", + "ɔrʒ": "double_or_zh", + "im": "double_i_m", + "ɪm": "double_is_m", + "eɪm": "double_ei_m", + "ɛm": "double_e_m", + "æm": "double_ae_m", + "ɑm": "double_a_m", + "ɔm": "double_c_m", + "oʊm": "double_ou_m", + "ʊm": "double_us_m", + "um": "double_u_m", + "ʌm": "double_vu_m", + "aɪm": "double_ai_m", + "aʊm": "double_au_m", + "ɔɪm": "double_oi_m", + "ɝm": "double_ers_m", + "ɑrm": "double_ar_m", + "ɛrm": "double_er_m", + "ɪrm": "double_ir_m", + "ɔrm": "double_or_m", + "in": "double_i_n", + "ɪn": "double_is_n", + "eɪn": "double_ei_n", + "ɛn": "double_e_n", + "æn": "double_ae_n", + "ɑn": "double_a_n", + "ɔn": "double_c_n", + "oʊn": "double_ou_n", + "ʊn": "double_us_n", + "un": "double_u_n", + "ʌn": "double_vu_n", + "aɪn": "double_ai_n", + "aʊn": "double_au_n", + "ɔɪn": "double_oi_n", + "ɝn": "double_ers_n", + "ɑrn": "double_ar_n", + "ɛrn": "double_er_n", + "ɪrn": "double_ir_n", + "ɔrn": "double_or_n", + "iŋ": "double_i_ng", + "ɪŋ": "double_is_ng", + "eɪŋ": "double_ei_ng", + "ɛŋ": "double_e_ng", + "æŋ": "double_ae_ng", + "ɑŋ": "double_a_ng", + "ɔŋ": "double_c_ng", + "oʊŋ": "double_ou_ng", + "ʊŋ": "double_us_ng", + "uŋ": "double_u_ng", + "ʌŋ": "double_vu_ng", + "aɪŋ": "double_ai_ng", + "aʊŋ": "double_au_ng", + "ɔɪŋ": "double_oi_ng", + "ɝŋ": "double_ers_ng", + "ɑrŋ": "double_ar_ng", + "ɛrŋ": "double_er_ng", + "ɪrŋ": "double_ir_ng", + "ɔrŋ": "double_or_ng", + "il": "double_i_l", + "ɪl": "double_is_l", + "eɪl": "double_ei_l", + "ɛl": "double_e_l", + "æl": "double_ae_l", + "ɑl": "double_a_l", + "ɔl": "double_c_l", + "oʊl": "double_ou_l", + "ʊl": "double_us_l", + "ul": "double_u_l", + "ʌl": "double_vu_l", + "aɪl": "double_ai_l", + "aʊl": "double_au_l", + "ɔɪl": "double_oi_l", + "ɝl": "double_ers_l", + "ɑrl": "double_ar_l", + "ɛrl": "double_er_l", + "ɪrl": "double_ir_l", + "ɔrl": "double_or_l" + ] + private static let specialSoundMap = [ + "iʔ": "double_i_glottal", + "ɪʔ": "double_is_glottal", + "eɪʔ": "double_ei_glottal", + "ɛʔ": "double_e_glottal", + "æʔ": "double_ae_glottal", + "ɑʔ": "double_a_glottal", + "ɔʔ": "double_c_glottal", + "oʊʔ": "double_ou_glottal", + "ʊʔ": "double_us_glottal", + "uʔ": "double_u_glottal", + "ʌʔ": "double_vu_glottal", + "aɪʔ": "double_ai_glottal", + "aʊʔ": "double_au_glottal", + "ɔɪʔ": "double_oi_glottal", + "ɝʔ": "double_ers_glottal", + "ɑrʔ": "double_ar_glottal", + "ɛrʔ": "double_er_glottal", + "ɪrʔ": "double_ir_glottal", + "ɔrʔ": "double_or_glottal", + "ˈiɾə": "double_i_flap_shwua", + "ˈɪɾə": "double_is_flap_shwua", + "ˈeɪɾə": "double_ei_flap_shwua", + "ˈɛɾə": "double_e_flap_shwua", + "ˈæɾə": "double_ae_flap_shwua", + "ˈɑɾə": "double_a_flap_shwua", + "ˈɔɾə": "double_c_flap_shwua", + "ˈoʊɾə": "double_ou_flap_shwua", + "ˈʊɾə": "double_us_flap_shwua", + "ˈuɾə": "double_u_flap_shwua", + "ˈʌɾə": "double_vu_flap_shwua", + "ˈaɪɾə": "double_ai_flap_shwua", + "ˈaʊɾə": "double_au_flap_shwua", + "ˈɔɪɾə": "double_oi_flap_shwua", + "ˈɝɾə": "double_ers_flap_shwua", + "ˈɑrɾə": "double_ar_flap_shwua", + "ˈɛrɾə": "double_er_flap_shwua", + "ˈɪrɾə": "double_ir_flap_shwua", + "ˈɔrɾə": "double_or_flap_shwua", + "pə": "double_p_shwua", + "tə": "double_t_shwua", + "kə": "double_k_shwua", + "ʧə": "double_ch_shwua", + "fə": "double_f_shwua", + "θə": "double_th_shwua", + "sə": "double_s_shwua", + "ʃə": "double_sh_shwua", + "bə": "double_b_shwua", + "də": "double_d_shwua", + "gə": "double_g_shwua", + "ʤə": "double_dzh_shwua", + "və": "double_v_shwua", + "ðə": "double_thv_shwua", + "zə": "double_z_shwua", + "ʒə": "double_zh_shwua", + "mə": "double_m_shwua", + "nə": "double_n_shwua", + "lə": "double_l_shwua", + "wə": "double_w_shwua", + "jə": "double_j_shwua", + "hə": "double_h_shwua", + "rə": "double_r_shwua", + "əp": "double_shwua_p", + "ət": "double_shwua_t", + "ək": "double_shwua_k", + "əʧ": "double_shwua_ch", + "əf": "double_shwua_f", + "əθ": "double_shwua_th", + "əs": "double_shwua_s", + "əʃ": "double_shwua_sh", + "əb": "double_shwua_b", + "əd": "double_shwua_d", + "əg": "double_shwua_g", + "əʤ": "double_shwua_dzh", + "əv": "double_shwua_v", + "əð": "double_shwua_thv", + "əz": "double_shwua_z", + "əʒ": "double_shwua_zh", + "əm": "double_shwua_m", + "ən": "double_shwua_n", + "əŋ": "double_shwua_ng", + "əl": "double_shwua_l", + "pɚ": "double_p_eru", + "tɚ": "double_t_eru", + "kɚ": "double_k_eru", + "ʧɚ": "double_ch_eru", + "fɚ": "double_f_eru", + "θɚ": "double_th_eru", + "sɚ": "double_s_eru", + "ʃɚ": "double_sh_eru", + "bɚ": "double_b_eru", + "dɚ": "double_d_eru", + "gɚ": "double_g_eru", + "ʤɚ": "double_dzh_eru", + "vɚ": "double_v_eru", + "ðɚ": "double_thv_eru", + "zɚ": "double_z_eru", + "ʒɚ": "double_zh_eru", + "mɚ": "double_m_eru", + "nɚ": "double_n_eru", + "lɚ": "double_l_eru", + "wɚ": "double_w_eru", + "jɚ": "double_j_eru", + "hɚ": "double_h_eru", + "rɚ": "double_r_eru", + "ɚp": "double_eru_p", + "ɚt": "double_eru_t", + "ɚk": "double_eru_k", + "ɚʧ": "double_eru_ch", + "ɚf": "double_eru_f", + "ɚθ": "double_eru_th", + "ɚs": "double_eru_s", + "ɚʃ": "double_eru_sh", + "ɚb": "double_eru_b", + "ɚd": "double_eru_d", + "ɚg": "double_eru_g", + "ɚʤ": "double_eru_dzh", + "ɚv": "double_eru_v", + "ɚð": "double_eru_thv", + "ɚz": "double_eru_z", + "ɚʒ": "double_eru_zh", + "ɚm": "double_eru_m", + "ɚn": "double_eru_n", + "ɚŋ": "double_eru_ng", + "ɚl": "double_eru_l", + ] } diff --git a/aePronunciation/Info.plist b/aePronunciation/Info.plist index 81ef35d..f2fed7f 100644 --- a/aePronunciation/Info.plist +++ b/aePronunciation/Info.plist @@ -2,10 +2,12 @@ - CFBundleDevelopmentRegion - en CFBundleDisplayName Pronunciation + LSHasLocalizedDisplayName + + CFBundleDevelopmentRegion + en CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -45,8 +47,6 @@ UISupportedInterfaceOrientations UIInterfaceOrientationPortrait - UIInterfaceOrientationLandscapeLeft - UIInterfaceOrientationLandscapeRight UISupportedInterfaceOrientations~ipad diff --git a/aePronunciation/Ipa.swift b/aePronunciation/Ipa.swift new file mode 100644 index 0000000..c279dde --- /dev/null +++ b/aePronunciation/Ipa.swift @@ -0,0 +1,166 @@ +import Swift + +struct Ipa { + + static let NUMBER_OF_VOWELS = 21 + static let NUMBER_OF_VOWELS_FOR_DOUBLES = 19 // not ə, ɚ + static let NUMBER_OF_CONSONANTS = 26 + static let NUMBER_OF_CONSONANTS_FOR_DOUBLES = 24 // not ʔ. ɾ + + static func splitDoubleSound(str: String) -> (String, String) { + //let firstChar = s.prefix(1) + var index = str.index(str.startIndex, offsetBy: 1) + let firstChar = str.prefix(upTo: index) + + if isConsonant(ipa: firstChar) { + return (String(firstChar), String(str[index...])) + } + index = str.index(str.endIndex, offsetBy: -1) + let lastChar = str.suffix(1) + return (String(lastChar), String(str[..(ipa: T) -> Bool where T: StringProtocol { + return "ptkʧfθsʃbdgʤvðzʒmnŋlwjhrʔɾ".contains(ipa) + } + + static func isVowel(ipa: T) -> Bool where T: StringProtocol { + return !isConsonant(ipa: ipa) + } + + static func isSpecial(ipa: T) -> Bool where T: StringProtocol { + return "ʔɾəɚ".contains(ipa) + } + + static func hasTwoPronunciations(ipa: T) -> Bool where T: StringProtocol { + return "fvθðmnl".contains(ipa) + } + + static func getAllVowels() -> [String] { + + return [ + Ipa.i, + Ipa.i_short, + Ipa.e_short, + Ipa.ae, + Ipa.a, + Ipa.c_backwards, + Ipa.u_short, + Ipa.u, + Ipa.v_upsidedown, + Ipa.schwa, + Ipa.ei, + Ipa.ai, + Ipa.au, + Ipa.oi, + Ipa.ou, + Ipa.er_stressed, + Ipa.er_unstressed, + Ipa.ar, + Ipa.er, + Ipa.ir, + Ipa.or + ] + } + + static func getAllConsonants() -> [String] { + return [ + Ipa.p, + Ipa.t, + Ipa.k, + Ipa.ch, + Ipa.f, + Ipa.th_voiceless, + Ipa.s, + Ipa.sh, + Ipa.b, + Ipa.d, + Ipa.g, + Ipa.dzh, + Ipa.v, + Ipa.th_voiced, + Ipa.z, + Ipa.zh, + Ipa.m, + Ipa.n, + Ipa.ng, + Ipa.l, + Ipa.w, + Ipa.j, + Ipa.h, + Ipa.r, + Ipa.glottal_stop, + Ipa.flap_t + ] + } + + static let p = "p" + static let t = "t" + static let k = "k" + static let ch = "ʧ" + static let f = "f" + static let th_voiceless = "θ" + static let s = "s" + static let sh = "ʃ" + static let b = "b" + static let d = "d" + static let g = "g" + static let dzh = "ʤ" + static let v = "v" + static let th_voiced = "ð" + static let z = "z" + static let zh = "ʒ" + static let m = "m" + static let n = "n" + static let ng = "ŋ" + static let l = "l" + static let w = "w" + static let j = "j" + static let h = "h" + static let r = "r" + static let i = "i" + static let i_short = "ɪ" + static let e_short = "ɛ" + static let ae = "æ" + static let a = "ɑ" + static let c_backwards = "ɔ" + static let u_short = "ʊ" + static let u = "u" + static let v_upsidedown = "ʌ" + static let schwa = "ə" + static let ei = "eɪ" + static let ai = "aɪ" + static let au = "aʊ" + static let oi = "ɔɪ" + static let ou = "oʊ" + static let flap_t = "ɾ" + static let er_stressed = "ɝ" + static let er_unstressed = "ɚ" + static let ar = "ɑr" + static let er = "ɛr" + static let ir = "ɪr" + static let or = "ɔr" + static let glottal_stop = "ʔ" + static let left_bracket = "[" + static let right_bracket = "]" + static let slash = "/" + static let undertie = "‿" + //static let space = "\u0020" + static let primary_stress = "ˈ" + static let secondary_stress = "ˌ" + static let long_vowel = "ː" + //static let return = "\n" + static let alt_e_short = "e" + static let alt_c_backwards = "ɒ" + static let alt_ou = "əʊ" + static let alt_er_stressed = "ɜː" + static let alt_er_unstressed = "ə" + static let alt_ar = "ɑː" + static let alt_er = "eə" + static let alt_ir = "ɪə" + static let alt_or = "ɔː" + static let alt_l = "ɫ" + static let alt_w = "ʍ" + static let alt_h = "ʰ" + static let alt_r = "ɹ" +} diff --git a/aePronunciation/IpaChooserKeyboard.swift b/aePronunciation/IpaChooserKeyboard.swift new file mode 100644 index 0000000..3d27ef9 --- /dev/null +++ b/aePronunciation/IpaChooserKeyboard.swift @@ -0,0 +1,78 @@ +import UIKit + +class IpaChooserKeyboard: IpaKeyboard { + + func getSelectedVowelsConsonants() -> ([String], [String]) { + var vowels = [String]() + var consonants = [String]() + for myView in subviews { + guard let key = myView as? KeyboardTextKey else {continue} + if key.isSelected { + if Ipa.isConsonant(ipa: key.primaryString) { + consonants.append(key.primaryString) + } else { + vowels.append(key.primaryString) + } + } + } + return (vowels, consonants) + } + + override func keyTextEntered(sender: KeyboardKey, keyText: String) { + super.keyTextEntered(sender: sender, keyText: keyText) + sender.isSelected = !sender.isSelected + } + + func hasSelectedVowels() -> Bool { + for myView in subviews { + guard let key = myView as? KeyboardTextKey else {continue} + if Ipa.isVowel(ipa: key.primaryString) && key.isSelected { + return true + } + } + return false + } + + func hasSelectedConsonants() -> Bool { + for myView in subviews { + guard let key = myView as? KeyboardTextKey else {continue} + if Ipa.isConsonant(ipa: key.primaryString) && key.isSelected { + return true + } + } + return false + } + + func setKeySelectedFor(selectedSounds: [String]?) { + guard let selected = selectedSounds else {return} + for myView in subviews { + guard let key = myView as? KeyboardTextKey else {continue} + var isSelected = false + innerLoop: for sound in selected { + if sound == key.primaryString { + isSelected = true + break innerLoop + } + } + key.isSelected = isSelected + } + } + + func setVowels(areSelected: Bool) { + for myView in subviews { + guard let key = myView as? KeyboardTextKey else {continue} + if Ipa.isVowel(ipa: key.primaryString) { + key.isSelected = areSelected + } + } + } + + func setConsonants(areSelected: Bool) { + for myView in subviews { + guard let key = myView as? KeyboardTextKey else {continue} + if Ipa.isConsonant(ipa: key.primaryString) { + key.isSelected = areSelected + } + } + } +} diff --git a/aePronunciation/IpaKeyboard.swift b/aePronunciation/IpaKeyboard.swift new file mode 100644 index 0000000..1851264 --- /dev/null +++ b/aePronunciation/IpaKeyboard.swift @@ -0,0 +1,423 @@ +import UIKit + +// View Controllers must adopt this protocol +protocol KeyboardDelegate: class { + func keyWasTapped(_ character: String) + func keyBackspace() +} + +class IpaKeyboard: UIView, KeyboardKeyDelegate { + + private let numberKeysDouble = 43 + private let numberKeysSingle = 47 + + var mode = SoundMode.single { + didSet { + if mode == SoundMode.single + && subviews.count == numberKeysDouble { + addSpecialKeysBackIn() + self.setNeedsLayout() + } else if mode == SoundMode.double + && subviews.count == numberKeysSingle { + removeSpecialKeys() + self.setNeedsLayout() + } + } + } + + weak var delegate: KeyboardDelegate? // probably the view controller + + // Keyboard Keys + + // Row 1 + private let key_i = KeyboardTextKey() + private let key_i_short = KeyboardTextKey() + private let key_e_short = KeyboardTextKey() + private let key_ae = KeyboardTextKey() + private let key_a = KeyboardTextKey() + private let key_c_backwards = KeyboardTextKey() + private let key_u_short = KeyboardTextKey() + private let key_u = KeyboardTextKey() + private let key_v_upsidedown = KeyboardTextKey() + private let key_shwua = KeyboardTextKey() + + // Row 2 + private let key_ei = KeyboardTextKey() + private let key_ai = KeyboardTextKey() + private let key_au = KeyboardTextKey() + private let key_oi = KeyboardTextKey() + private let key_ou = KeyboardTextKey() + + // Row 3 + private let key_er_stressed = KeyboardTextKey() + private let key_er_unstressed = KeyboardTextKey() + private let key_ar = KeyboardTextKey() + private let key_er = KeyboardTextKey() + private let key_ir = KeyboardTextKey() + private let key_or = KeyboardTextKey() + + // Row 4 + private let key_p = KeyboardTextKey() + private let key_t = KeyboardTextKey() + private let key_k = KeyboardTextKey() + private let key_ch = KeyboardTextKey() + private let key_f = KeyboardTextKey() + private let key_th_voiceless = KeyboardTextKey() + private let key_s = KeyboardTextKey() + private let key_sh = KeyboardTextKey() + + // Row 5 + private let key_b = KeyboardTextKey() + private let key_d = KeyboardTextKey() + private let key_g = KeyboardTextKey() + private let key_dzh = KeyboardTextKey() + private let key_v = KeyboardTextKey() + private let key_th_voiced = KeyboardTextKey() + private let key_z = KeyboardTextKey() + private let key_zh = KeyboardTextKey() + + // Row 6 + private let key_m = KeyboardTextKey() + private let key_n = KeyboardTextKey() + private let key_ng = KeyboardTextKey() + private let key_l = KeyboardTextKey() + private let key_w = KeyboardTextKey() + private let key_j = KeyboardTextKey() + private let key_h = KeyboardTextKey() + private let key_r = KeyboardTextKey() + private let key_glottal_stop = KeyboardTextKey() + private let key_flap_t = KeyboardTextKey() + + // MARK:- keyboard initialization + + required init?(coder aDecoder: NSCoder) { + super.init(coder: aDecoder) + setup() + } + + override init(frame: CGRect) { + super.init(frame: frame) + setup() + } + + private func setup() { + addSubviews() + setPrimaryKeyStrings() + assignDelegates() + } + + private func addSubviews() { + + // Row 1 + self.addSubview(key_i) + self.addSubview(key_i_short) + self.addSubview(key_e_short) + self.addSubview(key_ae) + self.addSubview(key_a) + self.addSubview(key_c_backwards) + self.addSubview(key_u_short) + self.addSubview(key_u) + self.addSubview(key_v_upsidedown) + self.addSubview(key_shwua) + + // Row 2 + self.addSubview(key_ei) + self.addSubview(key_ai) + self.addSubview(key_au) + self.addSubview(key_oi) + self.addSubview(key_ou) + + // Row 3 + self.addSubview(key_er_stressed) + self.addSubview(key_er_unstressed) + self.addSubview(key_ar) + self.addSubview(key_er) + self.addSubview(key_ir) + self.addSubview(key_or) + + // Row 4 + self.addSubview(key_p) + self.addSubview(key_t) + self.addSubview(key_k) + self.addSubview(key_ch) + self.addSubview(key_f) + self.addSubview(key_th_voiceless) + self.addSubview(key_s) + self.addSubview(key_sh) + + // Row 5 + self.addSubview(key_b) + self.addSubview(key_d) + self.addSubview(key_g) + self.addSubview(key_dzh) + self.addSubview(key_v) + self.addSubview(key_th_voiced) + self.addSubview(key_z) + self.addSubview(key_zh) + + // Row 6 + self.addSubview(key_m) + self.addSubview(key_n) + self.addSubview(key_ng) + self.addSubview(key_l) + self.addSubview(key_w) + self.addSubview(key_j) + self.addSubview(key_h) + self.addSubview(key_r) + self.addSubview(key_glottal_stop) + self.addSubview(key_flap_t) + } + + private func setPrimaryKeyStrings() { + + // Row 1 + key_i.primaryString = Ipa.i + key_i_short.primaryString = Ipa.i_short + key_e_short.primaryString = Ipa.e_short + key_ae.primaryString = Ipa.ae + key_a.primaryString = Ipa.a + key_c_backwards.primaryString = Ipa.c_backwards + key_u_short.primaryString = Ipa.u_short + key_u.primaryString = Ipa.u + key_v_upsidedown.primaryString = Ipa.v_upsidedown + key_shwua.primaryString = Ipa.schwa + + // Row 2 + key_ei.primaryString = Ipa.ei + key_ai.primaryString = Ipa.ai + key_au.primaryString = Ipa.au + key_oi.primaryString = Ipa.oi + key_ou.primaryString = Ipa.ou + + // Row 3 + key_er_stressed.primaryString = Ipa.er_stressed + key_er_unstressed.primaryString = Ipa.er_unstressed + key_ar.primaryString = Ipa.ar + key_er.primaryString = Ipa.er + key_ir.primaryString = Ipa.ir + key_or.primaryString = Ipa.or + + // Row 4 + key_p.primaryString = Ipa.p + key_t.primaryString = Ipa.t + key_k.primaryString = Ipa.k + key_ch.primaryString = Ipa.ch + key_f.primaryString = Ipa.f + key_th_voiceless.primaryString = Ipa.th_voiceless + key_s.primaryString = Ipa.s + key_sh.primaryString = Ipa.sh + + // Row 5 + key_b.primaryString = Ipa.b + key_d.primaryString = Ipa.d + key_g.primaryString = Ipa.g + key_dzh.primaryString = Ipa.dzh + key_v.primaryString = Ipa.v + key_th_voiced.primaryString = Ipa.th_voiced + key_z.primaryString = Ipa.z + key_zh.primaryString = Ipa.zh + + // Row 6 + key_m.primaryString = Ipa.m + key_n.primaryString = Ipa.n + key_ng.primaryString = Ipa.ng + key_l.primaryString = Ipa.l + key_w.primaryString = Ipa.w + key_j.primaryString = Ipa.j + key_h.primaryString = Ipa.h + key_r.primaryString = Ipa.r + key_glottal_stop.primaryString = Ipa.glottal_stop + key_flap_t.primaryString = Ipa.flap_t + } + + private func assignDelegates() { + + // Row 1 + key_i.delegate = self + key_i_short.delegate = self + key_e_short.delegate = self + key_ae.delegate = self + key_a.delegate = self + key_c_backwards.delegate = self + key_u_short.delegate = self + key_u.delegate = self + key_v_upsidedown.delegate = self + key_shwua.delegate = self + + // Row 2 + key_ei.delegate = self + key_ai.delegate = self + key_au.delegate = self + key_oi.delegate = self + key_ou.delegate = self + + // Row 3 + key_er_stressed.delegate = self + key_er_unstressed.delegate = self + key_ar.delegate = self + key_er.delegate = self + key_ir.delegate = self + key_or.delegate = self + + // Row 4 + key_p.delegate = self + key_t.delegate = self + key_k.delegate = self + key_ch.delegate = self + key_f.delegate = self + key_th_voiceless.delegate = self + key_s.delegate = self + key_sh.delegate = self + + // Row 5 + key_b.delegate = self + key_d.delegate = self + key_g.delegate = self + key_dzh.delegate = self + key_v.delegate = self + key_th_voiced.delegate = self + key_z.delegate = self + key_zh.delegate = self + + // Row 6 + key_m.delegate = self + key_n.delegate = self + key_ng.delegate = self + key_l.delegate = self + key_w.delegate = self + key_j.delegate = self + key_h.delegate = self + key_r.delegate = self + key_glottal_stop.delegate = self + key_flap_t.delegate = self + } + + override func layoutSubviews() { + + // | i | i | e | ae| a | c | u | u | v | e | Row 1 + // | ei | ai | au | oi | ou | Row 2 + // | er | er | ar | er | ir | or | Row 3 + // | p | t | k | ch | f | th | s | sh | Row 4 + // | b | d | g | dzh| v | th | z | zh | Row 5 + // | m | n | ng| l | w | j | h | r | ? | r | Row 6 + + let numberOfKeysPerRow = getNumberOfKeysPerRow() + // each row should sum to 1 + let keyWeights = getKeyWeights() + let numberOfRows = numberOfKeysPerRow.count + let totalWidth = self.bounds.width + let totalHeight = self.bounds.height + var x: CGFloat = 0 + var y: CGFloat = 0 + var keyIndex = 0 + for rowIndex in 0.. [Int] { + if mode == SoundMode.single { + return [10, 5, 6, 8, 8, 10] // 47 total + } else { // double + return [9, 5, 5, 8, 8, 8] // 43 total + } + } + + private func getKeyWeights() -> [CGFloat] { + // each row should sum to 1 + + let eighth: CGFloat = 1/8 + + if mode == SoundMode.single { + let sixth: CGFloat = 1/6 + return [ + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, + 0.2, 0.2, 0.2, 0.2, 0.2, + sixth, sixth, sixth, sixth, sixth, sixth, + eighth, eighth, eighth, eighth, eighth, eighth, eighth, eighth, + eighth, eighth, eighth, eighth, eighth, eighth, eighth, eighth, + 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1, 0.1] + } else { + // excluding special sounds for double keyboard + let ninth: CGFloat = 1/9 + return [ + ninth, ninth, ninth, ninth, ninth, ninth, ninth, ninth, ninth, + 0.2, 0.2, 0.2, 0.2, 0.2, + 0.2, 0.2, 0.2, 0.2, 0.2, + eighth, eighth, eighth, eighth, eighth, eighth, eighth, eighth, + eighth, eighth, eighth, eighth, eighth, eighth, eighth, eighth, + eighth, eighth, eighth, eighth, eighth, eighth, eighth, eighth] + } + } + + + private func addSpecialKeysBackIn() { + self.insertSubview(key_shwua, aboveSubview: key_v_upsidedown) + self.insertSubview(key_er_unstressed, aboveSubview: key_er_stressed) + self.addSubview(key_glottal_stop) + self.addSubview(key_flap_t) + } + + private func removeSpecialKeys() { + for myView in subviews { + guard let key = myView as? KeyboardTextKey else {continue} + if Ipa.isSpecial(ipa: key.primaryString) { + key.removeFromSuperview() + } + } + } + + // MARK: - KeyboardKeyDelegate protocol + + + func keyTextEntered(sender: KeyboardKey, keyText: String) { + // pass the input up to the Keyboard delegate + self.delegate?.keyWasTapped(keyText) + } + + func keyBackspaceTapped() { + self.delegate?.keyBackspace() + } + + // MARK: - Public update methods + + func updateKeyAppearanceFor(selectedSounds: [String]?) { + guard let selected = selectedSounds else {return} + for myView in subviews { + guard let key = myView as? KeyboardTextKey else {continue} + var isEnabled = false + innerLoop: for sound in selected { + if sound == key.primaryString { + isEnabled = true + break innerLoop + } + } + key.isEnabled = isEnabled + } + } + + func getEnabledKeys() -> [String] { + var enabledKeys = [String]() + for myView in subviews { + guard let key = myView as? KeyboardTextKey else {continue} + if key.isEnabled { + enabledKeys.append(key.primaryString) + } + } + return enabledKeys + } +} + diff --git a/aePronunciation/Key.swift b/aePronunciation/Key.swift deleted file mode 100644 index ed663f6..0000000 --- a/aePronunciation/Key.swift +++ /dev/null @@ -1,11 +0,0 @@ - -struct Key { - static let numberOfQuestions = "numberOfQuestions" - static let contentType = "contentType" - static let name = "name" - -} - -struct Segue { - static let testToResults = "testToResults" -} \ No newline at end of file diff --git a/aePronunciation/KeyboardImageKey.swift b/aePronunciation/KeyboardImageKey.swift new file mode 100644 index 0000000..c9daf75 --- /dev/null +++ b/aePronunciation/KeyboardImageKey.swift @@ -0,0 +1,130 @@ +import UIKit + +@IBDesignable +class KeyboardImageKey: KeyboardKey { + + fileprivate let imageLayer = CALayer() + fileprivate var oldFrame = CGRect.zero + fileprivate var timer = Timer() + + var primaryString: String = "" + var secondaryString: String = "" + var repeatOnLongPress = false + var repeatInterval = 0.1 // sec + var keyType = KeyType.other + + enum KeyType { + case backspace + case other + } + + + @IBInspectable var image: UIImage? + { + didSet { + imageLayer.contents = image?.cgImage + updateImageLayerFrame() + } + } + + + // MARK: - Initialization + + override init(frame: CGRect) { + super.init(frame: frame) + setup() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + setup() + } + + override var frame: CGRect { + didSet { + + // only update frames if non-zero and changed + if frame != CGRect.zero && frame != oldFrame { + updateImageLayerFrame() + oldFrame = frame + } + } + } + + func setup() { + + // image layer + imageLayer.contentsScale = UIScreen.main.scale + layer.addSublayer(imageLayer) + + } + + func updateImageLayerFrame() { + + if let unwrappedImage = image { + imageLayer.frame = bounds + + // shrink image if larger than bounds + if unwrappedImage.size.height > bounds.height || unwrappedImage.size.width > bounds.width { + imageLayer.contentsGravity = kCAGravityResizeAspect + } else { + imageLayer.contentsGravity = kCAGravityCenter + } + + } + + } + + // long press + override func longPressBegun(_ guesture: UILongPressGestureRecognizer) { + if self.secondaryString != "" { + delegate?.keyTextEntered(sender: self, keyText: self.secondaryString) + } else { + if keyType == KeyType.backspace { + delegate?.keyBackspaceTapped() + } else { + delegate?.keyTextEntered(sender: self, keyText: self.primaryString) + } + + if repeatOnLongPress { + timer = Timer.scheduledTimer(timeInterval: repeatInterval, target: self, selector: #selector(repeatAction), userInfo: nil, repeats: true) + } + } + } + + override func longPressEnded() { + timer.invalidate() + } + + override func longPressCancelled() { + timer.invalidate() + } + + // tap event (do when finger lifted) + override func endTracking(_ touch: UITouch?, with event: UIEvent?) { + super.endTracking(touch, with: event) + + timer.invalidate() + + if keyType == KeyType.backspace { + delegate?.keyBackspaceTapped() + } else { + delegate?.keyTextEntered(sender: self, keyText: self.primaryString) + } + + } + + + + // do if repeating on long press + @objc func repeatAction() { + + if keyType == KeyType.backspace { + delegate?.keyBackspaceTapped() + } else { + delegate?.keyTextEntered(sender: self, keyText: self.primaryString) + } + } + +} + diff --git a/aePronunciation/KeyboardKey.swift b/aePronunciation/KeyboardKey.swift new file mode 100644 index 0000000..6ad9dd2 --- /dev/null +++ b/aePronunciation/KeyboardKey.swift @@ -0,0 +1,195 @@ +// This is a generic Keyboard Key class for specific key classes to subclass. Its main purposes are to +// (1) provide a common background appearance for all keys +// (2) set the standard for how to communicate with the parent keyboard class + + +import UIKit + +// protocol for communication with keyboard +protocol KeyboardKeyDelegate: class { + func keyTextEntered(sender: KeyboardKey, keyText: String) + func keyBackspaceTapped() +} + + +@IBDesignable +class KeyboardKey: UIControl { + + weak var delegate: KeyboardKeyDelegate? // probably a keyboard class + + private let backgroundLayer = KeyboardKeyBackgroundLayer() + private var oldFrame = CGRect.zero + + // space between the frame edge of the visible border of the key + var padding: CGFloat { + get { + return backgroundLayer.padding + } + } + + var fillColor = UIColor.white { + didSet { + backgroundLayer.setNeedsDisplay() + } + } + + override var isSelected: Bool { + didSet { + backgroundLayer.setNeedsDisplay() + } + } + + var borderColor = UIColor.gray { + didSet { + backgroundLayer.setNeedsDisplay() + } + } + + @IBInspectable var cornerRadius: CGFloat = 8 { + didSet { + backgroundLayer.setNeedsDisplay() + } + } + + // MARK: - Initialization + + override init(frame: CGRect) { + super.init(frame: frame) + initializeBackgroundLayer() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + initializeBackgroundLayer() + } + + override var frame: CGRect { + didSet { + // only update frames if non-zero and changed + if frame != CGRect.zero && frame != oldFrame { + updateBackgroundFrame() + } + } + } + + func initializeBackgroundLayer() { + + // Background layer + backgroundLayer.keyboardKey = self + backgroundLayer.contentsScale = UIScreen.main.scale + layer.addSublayer(backgroundLayer) + + + // Long press guesture recognizer + addLongPressGestureRecognizer() + } + + // subclasses can override this method if they don't want the gesture recognizer + func addLongPressGestureRecognizer() { + + let longPress = UILongPressGestureRecognizer(target: self, action: #selector(longPress(_:))) + self.addGestureRecognizer(longPress) + + } + + func updateBackgroundFrame() { + + backgroundLayer.frame = bounds + backgroundLayer.setNeedsDisplay() + + } + + // MARK: - Other methods + + @objc func longPress(_ guesture: UILongPressGestureRecognizer) { + if guesture.state == UIGestureRecognizerState.began { + + backgroundLayer.highlighted = false + longPressBegun(guesture) + + } else if guesture.state == UIGestureRecognizerState.changed { + + longPressStateChanged(guesture) + } else if guesture.state == UIGestureRecognizerState.ended { + longPressEnded() + } else if guesture.state == UIGestureRecognizerState.cancelled { + longPressCancelled() + } + } + + func longPressBegun(_ guesture: UILongPressGestureRecognizer) { + // this method is for subclasses to override + } + + func longPressStateChanged(_ guesture: UILongPressGestureRecognizer) { + // this method is for subclasses to override + } + + func longPressEnded() { + // this method is for subclasses to override + } + + func longPressCancelled() { + // this method is for subclasses to override + } + + // MARK: - Overrides + + override func beginTracking(_ touch: UITouch, with event: UIEvent?) -> Bool { + + backgroundLayer.highlighted = true + return backgroundLayer.highlighted + } + + override func endTracking(_ touch: UITouch?, with event: UIEvent?) { + + backgroundLayer.highlighted = false + } + +} + +// MARK: - Key Background Layer Class + +class KeyboardKeyBackgroundLayer: CALayer { + var highlighted: Bool = false { + didSet { + setNeedsDisplay() + } + } + weak var keyboardKey: KeyboardKey? + let padding: CGFloat = 2.0 + + override func draw(in ctx: CGContext) { + if let key = keyboardKey { + + let keyFrame = bounds.insetBy(dx: padding, dy: padding) + let keyPath = UIBezierPath(roundedRect: keyFrame, cornerRadius: key.cornerRadius) + //let borderColor = key.borderColor.CGColor + + // Fill + if key.isSelected { + ctx.setFillColor(key.tintColor.cgColor) + } else { + ctx.setFillColor(key.fillColor.cgColor) + } + ctx.addPath(keyPath.cgPath) + ctx.fillPath() + + // Outline + ctx.setStrokeColor(key.borderColor.cgColor) + ctx.setLineWidth(0.5) + ctx.addPath(keyPath.cgPath) + ctx.strokePath() + + if highlighted { + ctx.setFillColor(UIColor(white: 0.0, alpha: 0.1).cgColor) + ctx.addPath(keyPath.cgPath) + ctx.fillPath() + } + + } + } +} + + + diff --git a/aePronunciation/KeyboardTextKey.swift b/aePronunciation/KeyboardTextKey.swift new file mode 100644 index 0000000..5820628 --- /dev/null +++ b/aePronunciation/KeyboardTextKey.swift @@ -0,0 +1,161 @@ +import UIKit + +@IBDesignable +class KeyboardTextKey: KeyboardKey { + + private let primaryLayer = CATextLayer() + private let secondaryLayer = CATextLayer() + let secondaryLayerMargin: CGFloat = 5.0 + private var oldFrame = CGRect.zero + private static let selectedTextColor = UIColor.white + private static let disabledTextColor = UIColor.lightGray + private static let normalTextColor = UIColor.black + + // MARK: Primary input value + + @IBInspectable var primaryString: String = "" { + didSet { + updatePrimaryLayerFrame() + } + } + @IBInspectable var primaryStringFontSize: CGFloat = 17 { + didSet { + updatePrimaryLayerFrame() + } + } + var primaryStringFontColor: UIColor = normalTextColor { + didSet { + updatePrimaryLayerFrame() + } + } + + override var isSelected: Bool { + didSet { + if isSelected { + primaryStringFontColor = KeyboardTextKey.selectedTextColor + } else { + primaryStringFontColor = KeyboardTextKey.normalTextColor + } + } + } + + override var isEnabled: Bool { + didSet { + if isEnabled { + primaryStringFontColor = KeyboardTextKey.normalTextColor + } else { + primaryStringFontColor = KeyboardTextKey.disabledTextColor + } + } + } + + // MARK: Secondary (long press) input value + + @IBInspectable var secondaryString: String = "" { + didSet { + //secondaryLayer.displayString = secondaryString + updateSecondaryLayerFrame() + } + } + @IBInspectable var secondaryStringFontSize: CGFloat = 12 { + didSet { + updateSecondaryLayerFrame() + } + } + + + // MARK: - Initialization + + override init(frame: CGRect) { + super.init(frame: frame) + setup() + } + + required init?(coder: NSCoder) { + super.init(coder: coder) + setup() + } + + override var frame: CGRect { + didSet { + // only update frames if non-zero and changed + if frame != CGRect.zero && frame != oldFrame { + updatePrimaryLayerFrame() + updateSecondaryLayerFrame() + oldFrame = frame + } + } + } + + func setup() { + // Primary text layer + primaryLayer.contentsScale = UIScreen.main.scale + layer.addSublayer(primaryLayer) + + // Secondary text layer + secondaryLayer.contentsScale = UIScreen.main.scale + layer.addSublayer(secondaryLayer) + } + + func updatePrimaryLayerFrame() { + + let myAttribute: [NSAttributedStringKey : Any] = [ + NSAttributedStringKey.font: UIFont.systemFont(ofSize: primaryStringFontSize), + NSAttributedStringKey.foregroundColor: primaryStringFontColor ] + let attrString = NSMutableAttributedString(string: primaryString, attributes: myAttribute ) + let size = dimensionsForAttributedString(attrString) + + let x = (layer.bounds.width - size.width) / 2 + let y = (layer.bounds.height - size.height) / 2 + primaryLayer.frame = CGRect(x: x, y: y, width: size.width, height: size.height) + primaryLayer.string = attrString + } + + func updateSecondaryLayerFrame() { + let myAttribute = [ NSAttributedStringKey.font: UIFont.systemFont(ofSize: secondaryStringFontSize) ] + let attrString = NSMutableAttributedString(string: secondaryString, attributes: myAttribute ) + let size = dimensionsForAttributedString(attrString) + + let x = layer.bounds.width - size.width - secondaryLayerMargin + let y = layer.bounds.height - size.height - secondaryLayerMargin + secondaryLayer.frame = CGRect(x: x, y: y, width: size.width, height: size.height) + secondaryLayer.string = attrString + } + + + override func longPressBegun(_ guesture: UILongPressGestureRecognizer) { + if self.secondaryString != "" { + delegate?.keyTextEntered(sender: self, keyText: self.secondaryString) + } else { + // enter primary string if this key has no seconary string + delegate?.keyTextEntered(sender: self, keyText: self.primaryString) + } + } + + // tap event (do when finger lifted) + override func endTracking(_ touch: UITouch?, with event: UIEvent?) { + super.endTracking(touch, with: event) + + delegate?.keyTextEntered(sender: self, keyText: self.primaryString) + + } + + func dimensionsForAttributedString(_ attrString: NSAttributedString) -> CGSize { + + var ascent: CGFloat = 0 + var descent: CGFloat = 0 + var width: CGFloat = 0 + let line: CTLine = CTLineCreateWithAttributedString(attrString) + width = CGFloat(CTLineGetTypographicBounds(line, &ascent, &descent, nil)) + + // make width an even integer for better graphics rendering + width = ceil(width) + if Int(width)%2 == 1 { + width += 1.0 + } + + return CGSize(width: width, height: ceil(ascent+descent)) + } +} + + diff --git a/aePronunciation/LearnDoubleSoundsViewController.swift b/aePronunciation/LearnDoubleSoundsViewController.swift index bf2a1cb..73a19b5 100644 --- a/aePronunciation/LearnDoubleSoundsViewController.swift +++ b/aePronunciation/LearnDoubleSoundsViewController.swift @@ -3,25 +3,64 @@ import AudioToolbox class LearnDoubleSoundsViewController: UIViewController, UICollectionViewDataSource, UICollectionViewDelegate { - + var ipa: String? fileprivate let player = Player() let reuseIdentifier = "cell" - let doubleSound = DoubleSound() + var doubleSound = DoubleSound() + private let timer = StudyTimer.sharedInstance + + @IBOutlet weak var titleNavBar: UINavigationItem! + + // MARK:- Overrides + + override func viewDidLoad() { + super.viewDidLoad() + + setLocalizedStrings() + + guard let singleSound = ipa else {return} + doubleSound.restrictListToAllOrderedPairsContaining(ipa: singleSound) + + // listen for if the user leaves the app + NotificationCenter.default.addObserver(self, selector: #selector(appDidEnterBackground), name: NSNotification.Name.UIApplicationDidEnterBackground, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(appWillEnterForeground), name: NSNotification.Name.UIApplicationWillEnterForeground, object: nil) + } + + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + timer.start(type: .learnDouble) + } + + override func viewWillDisappear(_ animated: Bool) { + super.viewWillDisappear(animated) + timer.stop() + } + + @objc func appWillEnterForeground() { + if self.viewIfLoaded?.window != nil { + timer.start(type: .learnDouble) + } + } + + @objc func appDidEnterBackground() { + if self.viewIfLoaded?.window != nil { + timer.stop() + } + } // MARK: - UICollectionViewDataSource protocol func collectionView(_ collectionView: UICollectionView, numberOfItemsInSection section: Int) -> Int { - return doubleSound.ipaStringList.count + return doubleSound.getSoundCount() } func collectionView(_ collectionView: UICollectionView, cellForItemAt indexPath: IndexPath) -> UICollectionViewCell { let cell = collectionView.dequeueReusableCell(withReuseIdentifier: reuseIdentifier, for: indexPath) as! DoubleSoundsCollectionViewCell - cell.cellLabel.text = doubleSound.ipaStringList[indexPath.item] + cell.cellLabel.text = doubleSound.getSounds()[indexPath.item] cell.cellLabel.textColor = self.view.tintColor - //cell.backgroundColor = UIColor.yellowColor() - cell.layer.borderColor = self.view.tintColor.cgColor // UIColor.blueColor().CGColor + cell.layer.borderColor = self.view.tintColor.cgColor cell.layer.borderWidth = 1 cell.layer.cornerRadius = 8 @@ -32,10 +71,20 @@ class LearnDoubleSoundsViewController: UIViewController, UICollectionViewDataSou func collectionView(_ collectionView: UICollectionView, didSelectItemAt indexPath: IndexPath) { - // play sound - let ipa = doubleSound.ipaStringList[indexPath.item] - if let soundFile = doubleSound.fileNameForIpa(ipa) { - player.playSoundFromFile(soundFile) + playSound(at: indexPath) + } + + // MARK:- Other + + private func setLocalizedStrings() { + guard let currentIpa = ipa else {return} + titleNavBar.title = String.localizedStringWithFormat("title_activity_learn_double".localized, currentIpa) + } + + private func playSound(at indexPath: IndexPath) { + let ipa = doubleSound.getSounds()[indexPath.item] + if let soundFile = DoubleSound.getSoundFileName(doubleSoundIpa: ipa) { + player.playSoundFrom(file: soundFile) } } } diff --git a/aePronunciation/LearnSingleSoundsViewController.swift b/aePronunciation/LearnSingleSoundsViewController.swift index fdb7b56..54c8d3d 100644 --- a/aePronunciation/LearnSingleSoundsViewController.swift +++ b/aePronunciation/LearnSingleSoundsViewController.swift @@ -1,12 +1,16 @@ import UIKit +import AVFoundation import AudioToolbox -class LearnSingleSoundsViewController: UIViewController { +class LearnSingleSoundsViewController: UIViewController, KeyboardDelegate { + + private var avPlayer: AVPlayer? + private let player = Player() + private let defaultIpaToShowFirst = "æ" + private let singleSound = SingleSound() + private let learnDoubleSegueId = "learnSingleToLearnDouble" + private let timer = StudyTimer.sharedInstance - fileprivate let player = Player() - fileprivate let defaultIpaToShowFirst = "æ" - fileprivate let singleSound = SingleSound() - // MARK: - Outlets @IBOutlet weak var ipaLabel: UILabel! @@ -14,49 +18,31 @@ class LearnSingleSoundsViewController: UIViewController { @IBOutlet weak var example1: UIButton! @IBOutlet weak var example2: UIButton! @IBOutlet weak var example3: UIButton! + @IBOutlet weak var keyboard: IpaKeyboard! + @IBOutlet weak var videoView: UIImageView! + @IBOutlet weak var moreButton: UIButton! // MARK: - Actions - @IBAction func keyTapped(_ sender: UIButton) { - - let buttonText = sender.titleLabel?.text ?? "" - - updateDisplayForIpa(buttonText) - - // play sound - if let fileName = singleSound.fileNameForIpa(buttonText) { - player.playSoundFromFile(fileName) - } - - } - @IBAction func example1(_ sender: UIButton) { - - - if let ipa = ipaLabel.text { - if let fileName = singleSound.exampleOneFileNameFromIpa(ipa) { - player.playSoundFromFile(fileName) - } - } - + guard let ipa = ipaLabel.text else {return} + guard let fileName = SingleSound.getExampleOneFileName(ipa: ipa) + else {return} + player.playSoundFrom(file: fileName) } @IBAction func example2(_ sender: UIButton) { - - if let ipa = ipaLabel.text { - if let fileName = singleSound.exampleTwoFileNameFromIpa(ipa) { - player.playSoundFromFile(fileName) - } - } + guard let ipa = ipaLabel.text else {return} + guard let fileName = SingleSound.getExampleTwoFileName(ipa: ipa) + else {return} + player.playSoundFrom(file: fileName) } @IBAction func example3(_ sender: UIButton) { - - if let ipa = ipaLabel.text { - if let fileName = singleSound.exampleThreeFileNameFromIpa(ipa) { - player.playSoundFromFile(fileName) - } - } + guard let ipa = ipaLabel.text else {return} + guard let fileName = SingleSound.getExampleThreeFileName(ipa: ipa) + else {return} + player.playSoundFrom(file: fileName) } // MARK: - Overrides @@ -64,29 +50,164 @@ class LearnSingleSoundsViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() - // Update display with default IPA - updateDisplayForIpa(defaultIpaToShowFirst) + setLocalizedStrings() + + keyboard.delegate = self // Center button text example1.titleLabel?.textAlignment = NSTextAlignment.center example2.titleLabel?.textAlignment = NSTextAlignment.center example3.titleLabel?.textAlignment = NSTextAlignment.center + + // set up video player + self.avPlayer = AVPlayer() + let playerLayer: AVPlayerLayer = AVPlayerLayer(player: avPlayer) + playerLayer.frame = videoView.bounds + playerLayer.videoGravity = AVLayerVideoGravity.resizeAspectFill + videoView.layer.addSublayer(playerLayer) + + updateDisplayForIpa(defaultIpaToShowFirst) + loadVideoFor(ipa: defaultIpaToShowFirst) + + // listen for if the user leaves the app + NotificationCenter.default.addObserver(self, selector: #selector(appDidEnterBackground), name: NSNotification.Name.UIApplicationDidEnterBackground, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(appWillEnterForeground), name: NSNotification.Name.UIApplicationWillEnterForeground, object: nil) } + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + timer.start(type: .learnSingle) + ipaDescription.scrollRangeToVisible(NSRange(location: 0, length: 0)) + } + override func viewWillDisappear(_ animated: Bool) { + super.viewWillDisappear(animated) + timer.stop() + } + + @objc func appWillEnterForeground() { + if self.viewIfLoaded?.window != nil { + timer.start(type: .learnSingle) + } + } + + @objc func appDidEnterBackground() { + if self.viewIfLoaded?.window != nil { + timer.stop() + } + } func updateDisplayForIpa(_ ipa: String) { + //guard ipaLabel.text != ipa else {return} + guard let prefix = ipaForNamePrefix[ipa] + else {return} + + ipaLabel.text = ipa + videoView.image = UIImage(named: "\(prefix)_placeholder") + ipaDescription.text = "\(prefix)_description".localized + ipaDescription.scrollRangeToVisible(NSRange(location: 0, length: 0)) + example1.setTitle("\(prefix)_example1".localized, for: UIControlState()) + example2.setTitle("\(prefix)_example2".localized, for: UIControlState()) + example3.setTitle("\(prefix)_example3".localized, for: UIControlState()) + } + + func loadVideoFor(ipa: String) { + // get the path string for the video from assets + guard let writtenName = ipaForNamePrefix[ipa] else {return} + let resourceName = "raw/v_" + writtenName + let videoString:String? = Bundle.main.path(forResource: resourceName, ofType: "mp4") + guard let unwrappedVideoPath = videoString else {return} + + // convert the path string to a url + let videoUrl = URL(fileURLWithPath: unwrappedVideoPath) - if let fileName = singleSound.fileNameForIpa(ipa) { - - ipaLabel.text = ipa - ipaDescription.text = "\(fileName)_description".localized - ipaDescription.scrollRangeToVisible(NSRange(location: 0, length: 0)) - example1.setTitle("\(fileName)_example1".localized, for: UIControlState()) - example2.setTitle("\(fileName)_example2".localized, for: UIControlState()) - example3.setTitle("\(fileName)_example3".localized, for: UIControlState()) - + let asset = AVAsset(url: videoUrl) + let playerItem = AVPlayerItem(asset: asset) + avPlayer?.replaceCurrentItem(with: playerItem) + } + + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + + if segue.identifier == learnDoubleSegueId { + let learnDoubleVC = segue.destination as! LearnDoubleSoundsViewController + learnDoubleVC.ipa = ipaLabel.text } + + } + + // MARK:- KeyboardDelegate methods + + func keyWasTapped(_ character: String) { + //startTimingIfStopped() + updateDisplayForIpa(character) + loadVideoFor(ipa: character) + avPlayer?.seek(to: kCMTimeZero) + avPlayer?.play() + } + + func keyBackspace() { + // only conforming to keyboard delegate + } + + // MARK:- Other + + private func setLocalizedStrings() { + self.title = "main_tab_learn".localized + moreButton.setTitle("learn_single_show_doubles".localized, for: .normal) + // initialize all tabs + self.tabBarController?.tabBar.items?[0].title = "main_tab_learn".localized + self.tabBarController?.tabBar.items?[1].title = "main_tab_practice".localized + self.tabBarController?.tabBar.items?[2].title = "main_tab_test".localized + self.tabBarController?.tabBar.items?[3].title = "main_tab_more".localized } + let ipaForNamePrefix = [ + "p":"p", + "t":"t", + "k":"k", + "ʧ":"ch", + "f":"f", + "θ":"th_voiceless", + "s":"s", + "ʃ":"sh", + "b":"b", + "d":"d", + "g":"g", + "ʤ":"dzh", + "v":"v", + "ð":"th_voiced", + "z":"z", + "ʒ":"zh", + "m":"m", + "n":"n", + "ŋ":"ng", + "l":"l", + "w":"w", + "j":"j", + "h":"h", + "r":"r", + "i":"i", + "ɪ":"i_short", + "ɛ":"e_short", + "æ":"ae", + "ɑ":"a", + "ɔ":"c_backwards", + "ʊ":"u_short", + "u":"u", + "ʌ":"v_upsidedown", + "ə":"schwa", + "eɪ":"ei", + "aɪ":"ai", + "aʊ":"au", + "ɔɪ":"oi", + "oʊ":"ou", + "ɾ":"flap_t", + "ɝ":"er_stressed", + "ɚ":"er_unstressed", + "ɑr":"ar", + "ɛr":"er", + "ɪr":"ir", + "ɔr":"or", + "ʔ":"glottal_stop" + ] } diff --git a/aePronunciation/Localizable.strings b/aePronunciation/Localizable.strings deleted file mode 100644 index 246c541..0000000 --- a/aePronunciation/Localizable.strings +++ /dev/null @@ -1,197 +0,0 @@ -/* - Localizable.strings - aePronunciation - - Created by MongolSuragch on 10/2/15. - Copyright © 2015 Suragch. All rights reserved. -*/ - - -"single_p_description" = "/p/ is aspirated [pʰ] at the beginning of words but it is unaspirated [p] after /s/ and at the end of a word. Be careful not to read the third example /stɑpə/."; -"single_p_example1" = "pass\n/pæs/"; -"single_p_example2" = "speak\n/spik/"; -"single_p_example3" = "stop\n/stɑp/"; -"single_t_description" = "/t/ is aspirated [tʰ] at the beginning of words but it is unaspirated [t] after /s/ and at the end of a word. Be careful not to read the third example [ɪtə] or [ɪtʰ] or [ɪts]. Also note that the letter \"t\" often changes its pronunciation in American English. See /ʔ/ and /ɾ/."; -"single_t_example1" = "toad\n/tod/"; -"single_t_example2" = "sting\n/stɪŋ/"; -"single_t_example3" = "it\n/ɪt/"; -"single_k_description" = "/k/ is aspirated [kʰ] at the beginning of words but it is unaspirated [k] after /s/ and at the end of a word. Be careful not to read the third example /wikə/."; -"single_k_example1" = "cool\n/kul/"; -"single_k_example2" = "skill\n/skɪl/"; -"single_k_example3" = "week\n/wik/"; -"single_ch_description" = "Make special note of the pronunciation at the end of words. Be careful not to read the third example /ʧɝʧə/."; -"single_ch_example1" = "chairs\n/ʧɛrz/"; -"single_ch_example2" = "each of\n/\'iʧəv/"; -"single_ch_example3" = "church\n/ʧɝʧ/"; -"single_f_description" = "Your top teeth should touch your bottom lip. Make special note of the pronunciation at the end of words. Be careful not to read the third example /ɪfə/."; -"single_f_example1" = "father\n/\'fɑðɚ/"; -"single_f_example2" = "gift\n/gɪft/"; -"single_f_example3" = "if\n/ɪf/"; -"single_th_voiceless_description" = "In this sound the tongue lightly touches the bottom of the top teeth. Do not say /s/."; -"single_th_voiceless_example1" = "think\n/θɪŋk/"; -"single_th_voiceless_example2" = "Jonathan\n/\'ʤɑnəθən/"; -"single_th_voiceless_example3" = "earth\n/ɝθ/"; -"single_s_description" = "Make special note of the pronunciation at the end of words. Be careful not to read the third example /pæsə/."; -"single_s_example1" = "set\n/sɛt/"; -"single_s_example2" = "raced\n/rest/"; -"single_s_example3" = "pass\n/pæs/"; -"single_sh_description" = "Make special note of the pronunciation at the end of words. Be careful not to read the third example /æʃə/."; -"single_sh_example1" = "shoot\n/ʃut/"; -"single_sh_example2" = "wished\n/wɪʃt/"; -"single_sh_example3" = "ash\n/æʃ/"; -"single_b_description" = "Make special note of the pronunciation at the end of words. Be careful not to read the third example /rɪbə/ or /rɪp/."; -"single_b_example1" = "bill\n/bɪl/"; -"single_b_example2" = "above\n/ə\'bʌv/"; -"single_b_example3" = "rib\n/rɪb/"; -"single_d_description" = "Make special note of the pronunciation at the end of words. Be careful not to read the third example /kɑrdə/ or /kɑrt/."; -"single_d_example1" = "delicious\n/də\'lɪʃəs/"; -"single_d_example2" = "cards\n/kɑrdz/"; -"single_d_example3" = "card\n/kɑrd/"; -"single_g_description" = "Make special note of the pronunciation at the end of words. Be careful not to read the third example /pɪgə/ or /pɪk/."; -"single_g_example1" = "good\n/gʊd/"; -"single_g_example2" = "again\n/ə\'gɛn/"; -"single_g_example3" = "pig\n/pɪg/"; -"single_dzh_description" = "Make special note of the pronunciation at the end of words. Be careful not to read the third example /ɛʤə/."; -"single_dzh_example1" = "jump\n/ʤʌmp/"; -"single_dzh_example2" = "agile\n/\'æʤəl/"; -"single_dzh_example3" = "edge\n/ɛʤ/"; -"single_v_description" = "Note the difference between /v/ and /w/. In the /v/ sound the top teeth touch the bottom lip. This is the same mouth position as /f/. The only differenced is that /v/ is voiced. Also be careful not to read the third example /hævə/."; -"single_v_example1" = "very\n/\'vɛri/"; -"single_v_example2" = "every\n/\'ɛvri/"; -"single_v_example3" = "have\n/hæv/"; -"single_th_voiced_description" = "In this sound the tongue lightly touches the bottom of the top teeth. This is the same mouth position as /θ/. The main differenced is that /ð/ is voiced."; -"single_th_voiced_example1" = "they\'re\n/ðɛr/"; -"single_th_voiced_example2" = "father\n/fɑðɚ/"; -"single_th_voiced_example3" = "bathe\n/beð/"; -"single_z_description" = "This sound uses the same mouth position as /s/. The only differenced is that /z/ is voiced. Do not say /dz/."; -"single_z_example1" = "zoo\n/zu/"; -"single_z_example2" = "raised\n/rezd/"; -"single_z_example3" = "cars\n/kɑrz/"; -"single_zh_description" = "This sound uses the same mouth position as /ʃ/. The only differenced is that /ʒ/ is voiced. Note the difference between /r/ and /ʒ/."; -"single_zh_example1" = "usually\n/\'juʒli/"; -"single_zh_example2" = "pleasure\n/\'plɛʒɚ/"; -"single_zh_example3" = "beige\n/beʒ/"; -"single_m_description" = "Make special note of the pronunciation at the end of words. Be careful not to read the third example /ɑrmə/."; -"single_m_example1" = "me\n/mi/"; -"single_m_example2" = "jump\n/ʤʌmp/"; -"single_m_example3" = "arm\n/ɑrm/"; -"single_n_description" = "Make special note of the pronunciation at the end of words. Be careful not to read the third example /sʌnə/."; -"single_n_example1" = "new\n/nu/"; -"single_n_example2" = "panda\n/\'pændə/"; -"single_n_example3" = "sun\n/sʌn/"; -"single_ng_description" = "This sound does not begin any words in English."; -"single_ng_example1" = "ringing\n/\'rɪŋɪŋ/"; -"single_ng_example2" = "think\n/θɪŋk/"; -"single_ng_example3" = "sung\n/sʌŋ/"; -"single_l_description" = "At the beginning of words, [l] is the proper IPA symbol. However, at the end of words it is pronounced differently. The IPA for this sound is written [ɫ] but we use the /l/ symbol for both [l] and [ɫ] in this app (as do many textbooks and dictionaries). Example 2 could also be written /kuəl/. Do not pronounce the last two examples /kuo/ or /bɪo/. Your lips should be relaxed and not move."; -"single_l_example1" = "loud\n/laʊd/"; -"single_l_example2" = "cool\n/kul/"; -"single_l_example3" = "bill\n/bɪl/"; -"single_w_description" = "Note the difference between /w/ and /v/. In the /w/ sound the lips make a small circle and do not touch the teeth. A minority of Americans pronounce \"wh\" as /hw/ (in IPA this is /ʍ/)."; -"single_w_example1" = "wary\n/\'wɛri/"; -"single_w_example2" = "twelve\n/twɛlv/"; -"single_w_example3" = "what\n/wʌt/"; -"single_j_description" = "This sound does not come at the end of any words in English. Note the difference between \"year\" and \"ear\"."; -"single_j_example1" = "year\n/jɪr/"; -"single_j_example2" = "cube\n/kjub/"; -"single_j_example3" = "yellow\n/\'jɛlo/"; -"single_h_description" = "This sound does not come at the end of any words in English. This is a very light sound, not much more than just the sound of breathing out."; -"single_h_example1" = "her\n/hɝ/"; -"single_h_example2" = "have\n/hæv/"; -"single_h_example3" = "ahead\n/ə\'hɛd/"; -"single_r_description" = "This sound should be written /ɹ/ according to IPA. (The IPA /r/ is actually trilled, as with the \"r\" in languages like Mongolian or Spanish.) However, in order to maintain consistency with many dictionaries and textbooks, the symbol /r/ is used here. Note the difference between /r/, /l/, and /ʒ/."; -"single_r_example1" = "real\n/ril/"; -"single_r_example2" = "rib\n/rɪb/"; -"single_r_example3" = "roar\n/rɔr/"; -"single_i_long_description" = "In British English pronunciation this sound is usually written as /iː/ where the two dots represent a long vowel sound. Long and short vowels are not differentiated as much in American English and so the two dots are not written. If a vowel is before a voiced consonant then it is long. If it is before a voiceless consonant then it is short."; -"single_i_long_example1" = "each\n/iʧ/"; -"single_i_long_example2" = "read\n/rid/"; -"single_i_long_example3" = "me\n/mi/"; -"single_i_short_description" = "This is a different sound than /i/. The difference is not so much one of long and short, but of a different position of the mouth and tongue."; -"single_i_short_example1" = "it\n/ɪt/"; -"single_i_short_example2" = "him\n/hɪm/"; -"single_i_short_example3" = "rib\n/rɪb/"; -"single_e_short_description" = "Many dictionaries and textbooks that describe British English use the symbol /e/ for this sound. According to IPA, though, it should be written /ɛ/."; -"single_e_short_example1" = "edge\n/ɛʤ/"; -"single_e_short_example2" = "set\n/sɛt/"; -"single_e_short_example3" = "said\n/sɛd/"; -"single_ae_description" = "Stretch your lips wide like /ɛ/ but open your mouth big like /ɑ/."; -"single_ae_example1" = "ash\n/æʃ/"; -"single_ae_example2" = "bad\n/bæd/"; -"single_ae_example3" = "bat\n/bæt/"; -"single_a_description" = "Also written as /ɑː/ in British English. Note that this is a very different sound than /ʌ/ in American English. Also note that /ɑ/ is different than the pinyin \"a\" of standard Chinese, which is written /a/ in IPA."; -"single_a_example1" = "on\n/ɑn/"; -"single_a_example2" = "father\n/\'fɑðɚ/"; -"single_a_example3" = "ma\n/mɑ/"; -"single_c_backwards_description" = "This sound should be written /ɒ/ according to IPA. However, to be consistent with most dictionaries, /ɔ/ is used here. Note, though, that it is not the same sound as when /ɔː/ is used to describe British pronunciation. About 40% of Americans do not pronounce the /ɔ/ sound. They replace it with the /ɑ/ sound. The above examples would be pronounced /ɑt/, /kɑl/, ɑnd /sɑ/. The words \"cot\" and \"caught\" would also be pronounced the same (/kɑt/)."; -"single_c_backwards_example1" = "ought\n/ɔt/"; -"single_c_backwards_example2" = "call\n/kɔl/"; -"single_c_backwards_example3" = "saw\n/sɔ/"; -"single_u_short_description" = "Sometimes it is written incorrectly as /u/, but it should be written /ʊ/ (without the \"tail\"). /u/ and /ʊ/ are two very different vowels."; -"single_u_short_example1" = "put\n/pʊt/"; -"single_u_short_example2" = "good\n/gʊd/"; -"single_u_short_example3" = "should\n/ʃʊd/"; -"single_u_description" = "Also written /uː/, but like /iː/, /ɑː/, ɑnd /ɔː/, the long vowel dots are not needed in American English."; -"single_u_example1" = "ooze\n/uz/"; -"single_u_example2" = "shoot\n/ʃut/"; -"single_u_example3" = "blue\n/blu/"; -"single_v_upsidedown_description" = "This is a different sound than /ɑ/. The difference is not so much one of long and short, but of a different position of the mouth and tongue. Note that it is also pronounced somewhat differently than the British sound that is also usually written /ʌ/. When this sound is in an unstressed syllable, it is written /ə/."; -"single_v_upsidedown_example1" = "up\n/ʌp/"; -"single_v_upsidedown_example2" = "sun\n/sʌn/"; -"single_v_upsidedown_example3" = "uh-huh\n/ə\'hʌ/"; -"single_schwa_description" = "The vowel /ə/ is the most common sound in American English because of its use in unstressed syllables and words. It is called a schwa. When this sound is in a stressed syllable, it is written /ʌ/."; -"single_schwa_example1" = "above\n/ə\'bʌv/"; -"single_schwa_example2" = "delicious\n/də\'lɪʃəs/"; -"single_schwa_example3" = "panda\n/\'pændə/"; -"single_e_description" = "This is also written /eɪ/ sometimes. Be careful, because many British English pronunciation guides use this symbol for the /ɛ/ sound."; -"single_e_example1" = "age\n/eʤ/"; -"single_e_example2" = "safe\n/sef/"; -"single_e_example3" = "may\n/me/"; -"single_ai_description" = "This is a diphthong, a combonation of the /a/ and /ɪ/ sounds. Note the difference from /æ/."; -"single_ai_example1" = "I\'m\n/aɪm/"; -"single_ai_example2" = "bite\n/baɪt/"; -"single_ai_example3" = "fly\n/flaɪ/"; -"single_au_description" = "This is a diphthong, a combonation of the /a/ and /ʊ/ sounds. Note the difference from /ɔ/."; -"single_au_example1" = "out\n/aʊt/"; -"single_au_example2" = "loud\n/laʊd/"; -"single_au_example3" = "cow\n/kaʊ/"; -"single_oi_description" = "The \"ɔ\" used in /ɔɪ/ is not the same sound as the /ɔ/ in this app. (This is because the /ɔ/ used to describe many American English words should be written /ɒ/.) The /ɔɪ/ sound begins with small rounded lips."; -"single_oi_example1" = "oil\n/ɔɪl/"; -"single_oi_example2" = "voice\n/vɔɪs/"; -"single_oi_example3" = "boy\n/bɔɪ/"; -"single_o_description" = "This is also written as the diphthong /oʊ/. Note that there is a slight difference from the British pronunciation of /əʊ/."; -"single_o_example1" = "oath\n/oθ/"; -"single_o_example2" = "cove\n/kov/"; -"single_o_example3" = "low\n/lo/"; -"single_er_stressed_description" = "The /ɝ/ sound is sometimes written /ər/ or /əɹ/. This is the sound in a stressed syllable or a one-sylable word. When /ɝ/ is unstressed it is written /ɚ/. In British English /ɝ/ is pronounced as /ɜː/."; -"single_er_stressed_example1" = "earth\n/ɝθ/"; -"single_er_stressed_example2" = "birthday\n/\'bɝθde/"; -"single_er_stressed_example3" = "her\n/hɝ/"; -"single_er_unstressed_description" = "The /ɚ/ sound is the same as /ɝ/ except that /ɚ/ is used for unstressed syllables. It is sometimes also written as /ər/ or /əɹ/. In British English /ɚ/ is pronounced as /ə/."; -"single_er_unstressed_example1" = "mother\n/\'mʌðɚ/"; -"single_er_unstressed_example2" = "perform\n/pɚ\'fɔrm/"; -"single_er_unstressed_example3" = "wonderful\n/\'wʌndɚfəl/"; -"single_ar_description" = "The /ɑr/ sound is more correctly written /ɑɹ/ according to IPA. It is pronounced as /ɑː/ in British English."; -"single_ar_example1" = "arm\n/ɑrm/"; -"single_ar_example2" = "part\n/pɑrt/"; -"single_ar_example3" = "car\n/kɑr/"; -"single_er_description" = "The /ɛr/ sound is more correctly written /ɛɹ/ according to IPA. It is pronounced and written as /eə/ in British English."; -"single_er_example1" = "aired\n/ɛrd/"; -"single_er_example2" = "chairs\n/ʧɛrz/"; -"single_er_example3" = "there\n/ðɛr/"; -"single_ir_description" = "The /ɪr/ sound is more correctly written /ɪɹ/ according to IPA. It is pronounced as /ɪə/ in British English."; -"single_ir_example1" = "ear\n/ɪr/"; -"single_ir_example2" = "weird\n/wɪrd/"; -"single_ir_example3" = "here\n/hɪr/"; -"single_or_description" = "The \"ɔ\" used in /ɔr/ is not the same sound as the /ɔ/ in this app. (This is because the /ɔ/ used to describe many American English words should be written /ɒ/.) The /ɔr/ sound begins with small rounded lips. It is more correctly written /ɔɹ/ according to IPA. It is pronounced as /ɔː/ in British English."; -"single_or_example1" = "oars\n/ɔrz/"; -"single_or_example2" = "north\n/nɔrθ/"; -"single_or_example3" = "roar\n/rɔr/"; -"single_glottal_stop_description" = "This sound is called a glottal stop. It is not usually taught in English textbooks, but it is an important part of American English pronunciation. Note the difference in the pronunciation of \"put\" here and in the example for the /ʊ/ sound. The /ʔ/ sound often replaces /t/, especially at the end of words and in middle of sentences."; -"single_glottal_stop_example1" = "put\n/pʊʔ/"; -"single_glottal_stop_example2" = "button\n/\'bʌʔn/"; -"single_glottal_stop_example3" = "uh-oh\n/\'ʌʔo/"; -"single_flap_t_description" = "The /ɾ/ sound (not /r/) is called a flap t or an alveolar tap. It is not usually taught in English textbooks, but it is an important part of American English pronunciation. The /ɾ/ sound often replaces /t/, especially when /t/ comes between vowels and begins an unstressed syllable. The /ɾ/ sound can also be written /d/, though this is not as accurate. In that case the above examples would be written /\'wɑdɚ/, /\'lɪdəl/, ɑnd /\'θɝdi/."; -"single_flap_t_example1" = "water\n/\'wɑɾɚ/"; -"single_flap_t_example2" = "little\n/\'lɪɾəl/"; -"single_flap_t_example3" = "thirty\n/\'θɝɾi/"; \ No newline at end of file diff --git a/aePronunciation/MoreTableViewController.swift b/aePronunciation/MoreTableViewController.swift new file mode 100644 index 0000000..9013d18 --- /dev/null +++ b/aePronunciation/MoreTableViewController.swift @@ -0,0 +1,52 @@ + +import UIKit + +class MoreTableViewController: UITableViewController { + + @IBOutlet weak var totalTimeLabel: UILabel! + @IBOutlet weak var testsLabel: UILabel! + @IBOutlet weak var appLabel: UILabel! + @IBOutlet weak var contactLabel: UILabel! + + + override func viewDidLoad() { + super.viewDidLoad() + + + setLocalizedStrings() + } + + override func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + // deselect row after user lifts finger + tableView.deselectRow(at: indexPath as IndexPath, animated: true) + + let ABOUT = 1 + let CONTACT = 1 + if indexPath.section == ABOUT && indexPath.row == CONTACT { + let urlString = "about_contact_url".localized + guard let url = URL(string: urlString) else {return} + UIApplication.shared.openURL(url) + } + } + + override func tableView(_ tableView: UITableView, titleForHeaderInSection section: Int) -> String? { + switch section + { + case 0: + return "main_tab_more_history_section_title".localized + case 1: + return "main_tab_more_about_section_title".localized + default: + return "" + } + } + + private func setLocalizedStrings() { + self.title = "main_tab_more".localized + totalTimeLabel.text = "main_tab_more_total_time".localized + testsLabel.text = "main_tab_more_tests".localized + appLabel.text = "main_tab_more_app".localized + contactLabel.text = "main_tab_more_contact".localized + } + +} diff --git a/aePronunciation/MyUserDefaults.swift b/aePronunciation/MyUserDefaults.swift new file mode 100644 index 0000000..dee4303 --- /dev/null +++ b/aePronunciation/MyUserDefaults.swift @@ -0,0 +1,113 @@ +import UIKit + +class MyUserDefaults { + + static let TEST_NAME_KEY = "testName" + static let NUMBER_OF_QUESTIONS_KEY = "numberOfQuestions" + static let TEST_MODE_KEY = "testMode" + static let VOWEL_ARRAY_KEY = "vowelArray" + static let CONSONANT_ARRAY_KEY = "consonantArray" + static let PRACTICE_MODE_IS_SINGLE_KEY = "practiceMode" + static let TIME_LEARN_SINGLE_KEY = "timeLearnSingle" + static let TIME_LEARN_DOUBLE_KEY = "timeLearnDouble" + static let TIME_PRACTICE_SINGLE_KEY = "timePracticeSingle" + static let TIME_PRACTICE_DOUBLE_KEY = "timePracticeDouble" + static let TIME_TEST_SINGLE_KEY = "timeTestSingle" + static let TIME_TEST_DOUBLE_KEY = "timeTestDouble" + + static let defaultNumberOfTestQuestions = 50; + static let defaultTestMode = SoundMode.single + private static let defaults = UserDefaults.standard + + static var storedPracticeMode: SoundMode { + get { + let isSingle = defaults.bool(forKey: PRACTICE_MODE_IS_SINGLE_KEY) + if isSingle {return SoundMode.single} + return SoundMode.double + } + } + + // just to be called one time in the AppDelegate + class func registerDefaults() { + //let defaults = UserDefaults.standard + let defaultValues : [String : Any] = [ + TEST_NAME_KEY : "", + NUMBER_OF_QUESTIONS_KEY : defaultNumberOfTestQuestions, + TEST_MODE_KEY : SoundMode.single.rawValue + ] + defaults.register(defaults: defaultValues) + } + + class func getTestSetupPreferences() + -> (name: String, number: Int, mode: SoundMode) { + + //let defaults = UserDefaults.standard + let name = defaults.string(forKey: TEST_NAME_KEY) ?? "" + let number = defaults.integer(forKey: NUMBER_OF_QUESTIONS_KEY) + let soundModeRaw = defaults.string(forKey: TEST_MODE_KEY) + var mode = SoundMode.single + if soundModeRaw == SoundMode.double.rawValue { + mode = SoundMode.double + } + return (name, number, mode) + } + + class func saveTestSetupPreferences(name: String, number: Int, mode: SoundMode) { + + //let defaults = UserDefaults.standard + defaults.set(name, forKey: TEST_NAME_KEY) + defaults.set(number, forKey: NUMBER_OF_QUESTIONS_KEY) + defaults.set(mode.rawValue, forKey: TEST_MODE_KEY) + } + + class func addTime(for currentType: StudyTimer.StudyType, time: TimeInterval) { + let key: String + switch currentType { + case .learnSingle: + key = TIME_LEARN_SINGLE_KEY + case .learnDouble: + key = TIME_LEARN_DOUBLE_KEY + case .practiceSingle: + key = TIME_PRACTICE_SINGLE_KEY + case .practiceDouble: + key = TIME_PRACTICE_DOUBLE_KEY + case .testSingle: + key = TIME_TEST_SINGLE_KEY + case .testDouble: + key = TIME_TEST_DOUBLE_KEY + } + + let formerTime = defaults.double(forKey: key) + let updatedTime = formerTime + time + defaults.set(updatedTime, forKey: key) + } + + class func getSecondsLearningSingles() -> Int { + return getTimeInSeconds(forKey: TIME_LEARN_SINGLE_KEY) + } + + class func getSecondsLearningDoubles() -> Int { + return getTimeInSeconds(forKey: TIME_LEARN_DOUBLE_KEY) + } + + class func getSecondsPracticingSingles() -> Int { + return getTimeInSeconds(forKey: TIME_PRACTICE_SINGLE_KEY) + } + + class func getSecondsPracticingDoubles() -> Int { + return getTimeInSeconds(forKey: TIME_PRACTICE_DOUBLE_KEY) + } + + class func getSecondsTestingSingles() -> Int { + return getTimeInSeconds(forKey: TIME_TEST_SINGLE_KEY) + } + + class func getSecondsTestingDoubles() -> Int { + return getTimeInSeconds(forKey: TIME_TEST_DOUBLE_KEY) + } + + private class func getTimeInSeconds(forKey key: String) -> Int { + return defaults.integer(forKey: key) + } + +} diff --git a/aePronunciation/Player.swift b/aePronunciation/Player.swift index 4ab8d8c..7401132 100644 --- a/aePronunciation/Player.swift +++ b/aePronunciation/Player.swift @@ -1,18 +1,22 @@ -import Foundation -import AudioToolbox +import AVFoundation class Player { - fileprivate let audioFolder = "raw" + private let audioPlayer = AVPlayer() + private let audioFolder = "raw" - func playSoundFromFile(_ file: String) { - var soundURL: URL? - var soundID: SystemSoundID = 0 - let filePath = Bundle.main.path(forResource: "\(audioFolder)/\(file)", ofType: "mp3") - soundURL = URL(fileURLWithPath: filePath!) - if let url = soundURL { - AudioServicesCreateSystemSoundID(url as CFURL, &soundID) - AudioServicesPlaySystemSound(soundID) - } + func playSoundFrom(file: String) { + // get the path string for the video from assets + let audioString:String? = Bundle.main.path(forResource: "\(audioFolder)/\(file)", ofType: "mp3") + guard let unwrappedAudioPath = audioString else {return} + + // convert the path string to a url + let audioUrl = URL(fileURLWithPath: unwrappedAudioPath) + + let asset = AVAsset(url: audioUrl) + let playerItem = AVPlayerItem(asset: asset) + audioPlayer.replaceCurrentItem(with: playerItem) + audioPlayer.play() } + } diff --git a/aePronunciation/PracticeSoundsViewController.swift b/aePronunciation/PracticeSoundsViewController.swift index f35be24..7795a4e 100644 --- a/aePronunciation/PracticeSoundsViewController.swift +++ b/aePronunciation/PracticeSoundsViewController.swift @@ -1,56 +1,74 @@ import UIKit -class PracticeSoundsViewController: UIViewController { - - fileprivate let player = Player() - fileprivate lazy var singleSound = SingleSound() - fileprivate lazy var doubleSound = DoubleSound() - fileprivate var numberCorrect = 0 - fileprivate var numberWrong = 0 - fileprivate var singleMode = true // false == double mode - fileprivate var currentIpa = "" - fileprivate var inputKeyCounter = 0 - fileprivate var readyForNewSound = true - fileprivate var alreadyMadeWrongAnswerForThisIpa = false - fileprivate enum SingleSoundType { - case vowelsAndConsonants - case vowelsOnly - case consonantsOnly - } - fileprivate var vowelsOrConsonants = SingleSoundType.vowelsAndConsonants - fileprivate let rightColor = UIColor(red: 0.031, green: 0.651, blue: 0, alpha: 1) // 08a600 green +class PracticeSoundsViewController: UIViewController, KeyboardDelegate { + + var practiceMode: SoundMode? + var selectedVowels = Ipa.getAllVowels() + var selectedConsonants = Ipa.getAllConsonants() + private let player = Player() + private let timer = StudyTimer.sharedInstance + private lazy var singleSound = SingleSound() + private lazy var doubleSound = DoubleSound() + private var numberCorrect = 0 + private var numberWrong = 0 + private var currentIpa = "" + private var inputKeyCounter = 0 + private var readyForNewSound = true + private var alreadyMadeWrongAnswerForThisIpa = false + private let MINIMUM_POPULATION_SIZE_FOR_WHICH_REPEATS_NOT_ALLOWED = 4 + + // MARK: - Outlets @IBOutlet weak var numberCorrectLabel: UILabel! @IBOutlet weak var numberWrongLabel: UILabel! @IBOutlet weak var percentLabel: UILabel! - @IBOutlet weak var inputWindow: UILabel! - @IBOutlet weak var singleDoubleSwitch: UIBarButtonItem! - @IBOutlet weak var vowelsAndConsonantsLabel: UILabel! - @IBOutlet weak var optionsButton: UIButton! + @IBOutlet weak var inputLabel: UILabel! + @IBOutlet weak var inputWindowBorderView: UIView! + @IBOutlet weak var practiceModeLabel: UILabel! + @IBOutlet weak var ipaKeyboard: IpaKeyboard! // MARK: - Actions @IBAction func playButtonTapped(_ sender: UIButton) { if readyForNewSound { + var ipa: String? + + repeat { + if practiceMode == SoundMode.single { + ipa = singleSound.getRandomIpa() + } else { + ipa = doubleSound.getRandomIpa() + } + + // allow repeated sounds for small population sizes + if practiceMode == SoundMode.single && + singleSound.getSoundCount() < MINIMUM_POPULATION_SIZE_FOR_WHICH_REPEATS_NOT_ALLOWED { + break + } else if practiceMode == SoundMode.double && + doubleSound.getSoundCount() < MINIMUM_POPULATION_SIZE_FOR_WHICH_REPEATS_NOT_ALLOWED { + break + } + } while ipa == currentIpa // don't allow repeat - // get random ipa - currentIpa = getRandomIpa() + + if let ipa = ipa { + currentIpa = ipa + } // reset things readyForNewSound = false alreadyMadeWrongAnswerForThisIpa = false - inputWindow.text = "" - inputWindow.layer.backgroundColor = UIColor.white.cgColor - + inputWindowBorderView.layer.backgroundColor = UIColor.white.cgColor + inputLabel.text = "" } - - // play sound + playIpa(currentIpa) } + @IBAction func tellMeButtonTapped(_ sender: UIButton) { if readyForNewSound { @@ -62,104 +80,121 @@ class PracticeSoundsViewController: UIViewController { updateStatLabels() } - inputWindow.text = currentIpa - animateAnswerThatIs(true) - //inputWindow.backgroundColor = UIColor.greenColor() + inputLabel.text = currentIpa + animateCorrectAnswer() playIpa(currentIpa) readyForNewSound = true - } - @IBAction func optionsButtonTapped(_ sender: AnyObject) { - - // start an action sheet to choose type - - // Create the action sheet - let myActionSheet = UIAlertController(title: "Content", message: "Which sounds do you want to practice?", preferredStyle: UIAlertControllerStyle.actionSheet) - - // Vowels and consonants - let vowelsAndConsonantsAction = UIAlertAction(title: "Vowels and Consonants", style: UIAlertActionStyle.default) { (action) in - - self.vowelsOrConsonants = SingleSoundType.vowelsAndConsonants - self.vowelsAndConsonantsLabel.text = "Vowels and Consonants" - self.resetToInitialValues() + + @IBAction func clearButtonTapped(_ sender: UIButton) { + inputLabel.text = "" + inputKeyCounter = 0 + inputWindowBorderView.layer.backgroundColor = UIColor.white.cgColor + } + + @IBAction func unwindFromTestResultsVC(segue:UIStoryboardSegue) { + if ipaKeyboard != nil { + updateUiForSelectedSounds() } - - // vowels only - let vowelsAction = UIAlertAction(title: "Vowels Only", style: UIAlertActionStyle.default) { (action) in - - self.vowelsOrConsonants = SingleSoundType.vowelsOnly - self.vowelsAndConsonantsLabel.text = "Vowels Only" - self.resetToInitialValues() + } + + // MARK: - Overrides + + override func viewDidLoad() { + super.viewDidLoad() + + self.title = "main_tab_practice".localized + + ipaKeyboard.delegate = self + addBorderToInputWindow() + if practiceMode == nil { + practiceMode = MyUserDefaults.storedPracticeMode } + updateUiForSelectedSounds() - // consonants only - let consonantsAction = UIAlertAction(title: "Consonants Only", style: UIAlertActionStyle.default) { (action) in - - self.vowelsOrConsonants = SingleSoundType.consonantsOnly - self.vowelsAndConsonantsLabel.text = "Consonants Only" - self.resetToInitialValues() + // listen for if the user leaves the app + NotificationCenter.default.addObserver(self, selector: #selector(appDidEnterBackground), name: NSNotification.Name.UIApplicationDidEnterBackground, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(appWillEnterForeground), name: NSNotification.Name.UIApplicationWillEnterForeground, object: nil) + } + + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + startTiming() + } + + override func viewWillDisappear(_ animated: Bool) { + super.viewWillDisappear(animated) + timer.stop() + } + + @objc func appWillEnterForeground() { + if self.viewIfLoaded?.window != nil { + startTiming() } - - // cancel - let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.cancel) { (action) in - // do nothing + } + + @objc func appDidEnterBackground() { + if self.viewIfLoaded?.window != nil { + timer.stop() } - - // add action buttons to action sheet - myActionSheet.addAction(vowelsAndConsonantsAction) - myActionSheet.addAction(vowelsAction) - myActionSheet.addAction(consonantsAction) - myActionSheet.addAction(cancelAction) - - // support iPads (popover) - myActionSheet.popoverPresentationController?.sourceView = self.optionsButton - myActionSheet.popoverPresentationController?.sourceRect = self.optionsButton.bounds - - // present the action sheet - self.present(myActionSheet, animated: true, completion: nil) } - @IBAction func keyTapped(_ sender: UIButton) { - - // User must listen to practice sound before pressing a key - if readyForNewSound { - return + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + + if let selectSoundsVC = segue.destination as? SelectSoundsViewController { + navigationItem.backBarButtonItem = UIBarButtonItem(title: "", style: .plain, target: nil, action: nil) + selectSoundsVC.previouslySelectedMode = practiceMode ?? SoundMode.single + selectSoundsVC.previouslySelectedKeys = ipaKeyboard.getEnabledKeys() + selectSoundsVC.callback = { soundMode, vowels, consonants in + self.practiceMode = soundMode + self.selectedVowels = vowels + self.selectedConsonants = consonants + self.updateUiForSelectedSounds() + } } + } + + // MARK: - KeyboardDelegate methods + + func keyWasTapped(_ character: String) { + // don't allow more clicks when green + if readyForNewSound {return} - if !singleMode && inputKeyCounter >= 2 { - inputWindow.text = "" + if practiceMode == SoundMode.double && inputKeyCounter >= 2 { + inputLabel.text = "" inputKeyCounter = 0 } inputKeyCounter += 1 - // get ipa String for key tapped - let ipaTap = sender.titleLabel?.text ?? "" + // add text to input window + if practiceMode == SoundMode.single { + inputLabel.text = character + } else { + guard let oldText = inputLabel.text, oldText != "" else { + inputLabel.text = character + return + } + inputLabel.text = oldText + character + } - // get answer - let answer = getAnswerFromInputWindow(ipaTap) - if answer == nil {return} + let userAnswer = inputLabel.text - // check if answer is correct - if answer! == currentIpa { - - // turn the input window green - animateAnswerThatIs(true) - //inputWindow.backgroundColor = UIColor.greenColor() + // check if right or not + if userAnswer == currentIpa { + // if right then animate backgound to green and back + animateCorrectAnswer() // update label if !alreadyMadeWrongAnswerForThisIpa { numberCorrect += 1 } - // reset values readyForNewSound = true - } else { // wrong answer - // turn the input window red - animateAnswerThatIs(false) - //inputWindow.backgroundColor = UIColor.redColor() + // if wrong then animate to red and back + animateWrongAnswer() // update label if !alreadyMadeWrongAnswerForThisIpa { @@ -167,98 +202,103 @@ class PracticeSoundsViewController: UIViewController { alreadyMadeWrongAnswerForThisIpa = true } - // play wrong sound - playIpa(answer!) + // play sound that was pressed + if let ipa = userAnswer { + playIpa(ipa) + } } updateStatLabels() - } - @IBAction func switchSingleDoubleTapped(_ sender: UIBarButtonItem) { - - singleMode = !singleMode - resetToInitialValues() - - if singleMode { - singleDoubleSwitch.title = "Double" - self.navigationController?.navigationBar.topItem?.title = "Practice Single Sounds" - self.optionsButton.isHidden = false - self.vowelsAndConsonantsLabel.isHidden = false + func keyBackspace() { + // only here to conform to delegate + } + + // MARK: - Other + + private func addBorderToInputWindow() { + inputWindowBorderView.layer.borderWidth = 2.0 + inputWindowBorderView.layer.cornerRadius = 8 + inputWindowBorderView.layer.masksToBounds = true + } + + private func startTiming() { + if practiceMode == SoundMode.single { + timer.start(type: .practiceSingle) } else { - - self.navigationController?.navigationBar.topItem?.title = "Practice Double Sounds" - singleDoubleSwitch.title = "Single" - self.optionsButton.isHidden = true - self.vowelsAndConsonantsLabel.isHidden = true + timer.start(type: .practiceDouble) } } - // MARK: - Overrides - - override func viewDidLoad() { - super.viewDidLoad() - - numberCorrectLabel.textColor = rightColor - + func updateUiForSelectedSounds() { resetToInitialValues() - - inputWindow.layer.borderWidth = 2.0 - inputWindow.layer.cornerRadius = 8 - inputWindow.layer.masksToBounds = true - //inputWindow.backgroundColor = UIColor.clearColor() - + updateKeyboard(selectedVowels: selectedVowels, selectedConsonants: selectedConsonants) + updatePracticeModeLabel() + updateAllowedSounds(vowels: selectedVowels, consonants: selectedConsonants) + } + + private func updateKeyboard(selectedVowels: [String], selectedConsonants: [String]) { + ipaKeyboard.mode = practiceMode ?? SoundMode.single + var allChosenSounds = [String]() + allChosenSounds.append(contentsOf: selectedVowels) + allChosenSounds.append(contentsOf: selectedConsonants) + if practiceMode == SoundMode.single { + if allChosenSounds.count == 0 { + allChosenSounds.append(contentsOf: Ipa.getAllVowels()) + allChosenSounds.append(contentsOf: Ipa.getAllConsonants()) + } + } else { // double + if selectedVowels.count == 0 { + allChosenSounds.append(contentsOf: Ipa.getAllVowels()) + } + if selectedConsonants.count == 0 { + allChosenSounds.append(contentsOf: Ipa.getAllConsonants()) + } + } + ipaKeyboard.updateKeyAppearanceFor(selectedSounds: allChosenSounds) } - - // MARK: - Other - - func getRandomIpa() -> String { - - var randomIpa = "" - // don't allow repeats - repeat { - - if singleMode { - - switch vowelsOrConsonants { - case SingleSoundType.vowelsAndConsonants: - - randomIpa = singleSound.getRandomIpa() - - case SingleSoundType.vowelsOnly: - - randomIpa = singleSound.getRandomVowelIpa() - - case SingleSoundType.consonantsOnly: - - randomIpa = singleSound.getRandomConsonantIpa() - } - - } else { // double mode + private func updatePracticeModeLabel() { + if practiceMode == SoundMode.single { + practiceModeLabel.text = "practice_mode_single".localized + } else { + practiceModeLabel.text = "practice_mode_double".localized + } + } + + private func updateAllowedSounds(vowels: [String], consonants: [String]) { + if practiceMode == SoundMode.single { + singleSound.restrictListTo(consonants: consonants, vowels: vowels) + } else { // double + if (vowels.count == 0 && consonants.count == 0) || + (vowels.count == Ipa.NUMBER_OF_VOWELS_FOR_DOUBLES && consonants.count == Ipa.NUMBER_OF_CONSONANTS_FOR_DOUBLES) { + // all or none selected + doubleSound.includeAllSounds() + } else if vowels.count == 0 || consonants.count == 0 { + // if none of one kind and a few of the other kind, + // then do inclusive match (any containing pair) + doubleSound.restrictListToPairsContainingAtLeastOneSoundFrom(consonants: consonants, vowels: vowels) - randomIpa = doubleSound.getRandomIpa() + } else { + // if a few of both kinds, then do exact match (both members must match) + doubleSound.restrictListToPairsContainingBothSoundsFrom(consonants: consonants, vowels: vowels) } - - } while randomIpa == currentIpa - - return randomIpa + } } func playIpa(_ ipa: String) { - - if singleMode { - - if let fileName = singleSound.fileNameForIpa(ipa) { - player.playSoundFromFile(fileName) - } - + var fileName: String? + if practiceMode == SoundMode.single { + fileName = SingleSound.getSoundFileName(ipa: ipa) } else { // double mode + fileName = DoubleSound.getSoundFileName(doubleSoundIpa: ipa) - if let fileName = doubleSound.fileNameForIpa(ipa) { - player.playSoundFromFile(fileName) - } + if fileName == nil {Answer.showErrorMessageFor(ipa, in: self)} + } + if let name = fileName { + player.playSoundFrom(file: name) } } @@ -266,17 +306,17 @@ class PracticeSoundsViewController: UIViewController { if newIpaGuess == "" { return nil } - let windowText = inputWindow.text ?? "" + let windowText = inputLabel.text ?? "" - if singleMode { + if practiceMode == SoundMode.single { - inputWindow.text = newIpaGuess + inputLabel.text = newIpaGuess return newIpaGuess } else { // double mode let text = windowText + newIpaGuess - inputWindow.text = windowText + newIpaGuess + inputLabel.text = windowText + newIpaGuess // check if this is the first input if windowText == "" { @@ -295,8 +335,14 @@ class PracticeSoundsViewController: UIViewController { numberWrong = 0 updateStatLabels() inputKeyCounter = 0 - inputWindow.text = "" - inputWindow.layer.backgroundColor = UIColor.white.cgColor + inputLabel.text = "" + inputWindowBorderView.layer.backgroundColor = UIColor.white.cgColor + ipaKeyboard.mode = practiceMode ?? SoundMode.single + if practiceMode == SoundMode.single { + practiceModeLabel.text = "practice_mode_single".localized + } else { + practiceModeLabel.text = "practice_mode_double".localized + } } func updateStatLabels() { @@ -311,26 +357,23 @@ class PracticeSoundsViewController: UIViewController { } - func animateAnswerThatIs(_ correct: Bool) { - - if correct { // (green) - - UIView.animate(withDuration: 0.3, animations: { - self.inputWindow.layer.backgroundColor = UIColor.green.cgColor - }) - - } else { // incorrect (red) - - // fade in - UIView.animate(withDuration: 0.3, animations: { - self.inputWindow.layer.backgroundColor = UIColor.red.cgColor - }) - // fade out - UIView.animate(withDuration: 0.7, delay: 0, options: [.curveEaseOut], animations: { () -> Void in - self.inputWindow.layer.backgroundColor = UIColor.white.cgColor - }, completion: { Void in - self.inputWindow.text = "" - }) - } + func animateCorrectAnswer() { // (green) + UIView.animate(withDuration: 0.3, animations: { + self.inputWindowBorderView.layer.backgroundColor = UIColor.rightGreen.cgColor + }) } + + func animateWrongAnswer() { // (red) + // fade in + UIView.animate(withDuration: 0.3, animations: { + self.inputWindowBorderView.layer.backgroundColor = UIColor.red.cgColor + }) + // fade out + UIView.animate(withDuration: 0.7, delay: 0, options: [.curveEaseOut], animations: { () -> Void in + self.inputWindowBorderView.layer.backgroundColor = UIColor.white.cgColor + }, completion: { Void in + self.inputLabel.text = "" + }) + } + } diff --git a/aePronunciation/SQLiteDatabase.swift b/aePronunciation/SQLiteDatabase.swift new file mode 100644 index 0000000..4d78852 --- /dev/null +++ b/aePronunciation/SQLiteDatabase.swift @@ -0,0 +1,145 @@ + +import Foundation +import SQLite + +class SQLiteDatabase { + + static let instance = SQLiteDatabase() + private let dbConnection: Connection? + + private let tests = Table("tests") + private let id = Expression("id") + private let username = Expression("name") + private let date = Expression("test_date") + private let timelength = Expression("time_length") + private let mode = Expression("mode") + private let score = Expression("score") + private let correctAnswers = Expression("correct") + private let userAnswers = Expression("user_answer") + + + private init() { + let filename = "db.sqlite" + + guard let path = NSSearchPathForDirectoriesInDomains( + .documentDirectory, .userDomainMask, true + ).first else { + dbConnection = nil + print ("Unable to access database path") + return + } + + do { + dbConnection = try Connection("\(path)/\(filename)") + } catch { + dbConnection = nil + print ("Unable to open database") + } + + createTable() + } + + func createTable() { + do { + try dbConnection!.run(tests.create(ifNotExists: true) { table in + table.column(id, primaryKey: true) + table.column(username) + table.column(date) + table.column(timelength) + table.column(mode) + table.column(score) + table.column(correctAnswers) + table.column(userAnswers) + }) + } catch { + print("Unable to create table") + } + } + + func getAllTests() -> [Test] { + + var allTests = [Test]() + + guard let db = dbConnection else {return allTests} + + do { + for test in try db.prepare(self.tests).reversed() { + guard let soundMode = SoundMode(rawValue: test[mode]) else { + continue + } + allTests.append(Test( + id: test[id], + username: test[username], + date: test[date], + timelength: test[timelength], + mode: soundMode, + score: test[score], + correctAnswers: test[correctAnswers], + userAnswers: test[userAnswers])) + } + } catch { + print("Select failed") + } + + return allTests + } + + func getTest(id: Int64) -> Test? { + guard let db = dbConnection else {return nil} + let query = tests.filter(self.id == id) + do { + let tests = try db.prepare(query) + for test in tests { + guard let soundMode = SoundMode(rawValue: test[self.mode]) else { + return nil + } + return Test( + id: test[self.id], + username: test[self.username], + date: test[self.date], + timelength: test[self.timelength], + mode: soundMode, + score: test[self.score], + correctAnswers: test[self.correctAnswers], + userAnswers: test[self.userAnswers]) + } + } catch { + print("Select failed") + } + return nil + } + + func getHighScores() -> (singlesMax: Int, doublesMax: Int) { + guard let db = dbConnection else {return (0,0)} + let single = SoundMode.single.rawValue + let double = SoundMode.double.rawValue + do { + let singlesMax = try db.scalar(tests.filter(mode == single).select(score.max)) ?? 0 + let doublesMax = try db.scalar(tests.filter(mode == double).select(score.max)) ?? 0 + return (Int(singlesMax), Int(doublesMax)) + } catch { + print("Highscore db query failed") + return (0,0) + } + } + + func addTest(_ test: Test) -> Int64? { + guard let db = dbConnection else {return nil} + + do { + let insert = tests.insert( + username <- test.username, + date <- test.date, + timelength <- test.timelength, + mode <- test.mode.rawValue, + score <- test.score, + correctAnswers <- test.correctAnswers, + userAnswers <- test.userAnswers) + let id = try db.run(insert) + return id + } catch { + print("Insert failed") + return -1 + } + } +} diff --git a/aePronunciation/SelectSoundsViewController.swift b/aePronunciation/SelectSoundsViewController.swift new file mode 100644 index 0000000..6fa1646 --- /dev/null +++ b/aePronunciation/SelectSoundsViewController.swift @@ -0,0 +1,113 @@ +import UIKit +class SelectSoundsViewController: UIViewController, KeyboardDelegate { + + private static let SINGLE = 0 + private static let DOUBLE = 1 + private var somethingWasChanged = false + + var previouslySelectedMode = SoundMode.single + var previouslySelectedKeys = [String]() + var callback : ((SoundMode, [String], [String]) -> Void)? + + @IBOutlet weak var singleDoubleSegmentedControl: UISegmentedControl! + @IBOutlet weak var vowelsLabel: UILabel! + @IBOutlet weak var consonantsLabel: UILabel! + @IBOutlet weak var ipaChooserKeyboard: IpaChooserKeyboard! + @IBOutlet weak var vowelsSwitch: UISwitch! + @IBOutlet weak var consonantsSwitch: UISwitch! + + // MARK:- Overrides + + override func viewDidLoad() { + super.viewDidLoad() + + ipaChooserKeyboard.delegate = self + setLocalizedStrings() + initPreviouslyChosenItems() + } + + override func viewWillDisappear(_ animated : Bool) { + super.viewWillDisappear(animated) + + if self.isMovingFromParentViewController { + if somethingWasChanged { + let (vowels, consonants) = getSelectedVowelsConsonants() + callback?(getSoundMode(), vowels, consonants) + } + } + } + + // MARK:- Actions + + @IBAction func onSingleDoubleChanged(_ sender: UISegmentedControl) { + let selectedIndex = sender.selectedSegmentIndex + if selectedIndex == SelectSoundsViewController.SINGLE { + ipaChooserKeyboard.mode = SoundMode.single + } else { + ipaChooserKeyboard.mode = SoundMode.double + } + vowelsSwitch.setOn(true, animated: true) + consonantsSwitch.setOn(true, animated: true) + let allSounds = Ipa.getAllVowels() + Ipa.getAllConsonants() + ipaChooserKeyboard.setKeySelectedFor(selectedSounds: allSounds) + somethingWasChanged = true + } + + @IBAction func vowelsSwitched(_ sender: UISwitch) { + let isOn = sender.isOn + ipaChooserKeyboard.setVowels(areSelected: isOn) + somethingWasChanged = true + } + + @IBAction func consonantsSwitched(_ sender: UISwitch) { + let isOn = sender.isOn + ipaChooserKeyboard.setConsonants(areSelected: isOn) + somethingWasChanged = true + } + + // MARK:- Keyboard Delegate + + func keyWasTapped(_ character: String) { + somethingWasChanged = true + } + + func keyBackspace() {} + + // MARK:- Other + + private func setLocalizedStrings() { + self.title = "select_sounds_title".localized + singleDoubleSegmentedControl.setTitle("select_sounds_radio_single".localized, forSegmentAt: 0) + singleDoubleSegmentedControl.setTitle("select_sounds_radio_double".localized, forSegmentAt: 1) + vowelsLabel.text = "select_sounds_cb_vowels".localized + consonantsLabel.text = "select_sounds_cb_consonants".localized + } + + private func initPreviouslyChosenItems() { + ipaChooserKeyboard.mode = previouslySelectedMode + if previouslySelectedMode == SoundMode.single { + singleDoubleSegmentedControl.selectedSegmentIndex = 0 + } else { + singleDoubleSegmentedControl.selectedSegmentIndex = 1 + } + ipaChooserKeyboard.setKeySelectedFor(selectedSounds: previouslySelectedKeys) + if !ipaChooserKeyboard.hasSelectedVowels() { + vowelsSwitch.setOn(false, animated: false) + } + if !ipaChooserKeyboard.hasSelectedConsonants() { + consonantsSwitch.setOn(false, animated: false) + } + } + + private func getSoundMode() -> SoundMode { + if singleDoubleSegmentedControl.selectedSegmentIndex == SelectSoundsViewController.SINGLE { + return SoundMode.single + } else { + return SoundMode.double + } + } + + private func getSelectedVowelsConsonants() -> ([String], [String]) { + return ipaChooserKeyboard.getSelectedVowelsConsonants() + } +} diff --git a/aePronunciation/SingleSound.swift b/aePronunciation/SingleSound.swift index 16a554c..6575ad3 100644 --- a/aePronunciation/SingleSound.swift +++ b/aePronunciation/SingleSound.swift @@ -1,14 +1,57 @@ import Foundation -//enum SingleSoundType: Int { -// case VowelsAndConsonants = 0 -// case VowelsOnly -// case ConsonantsOnly -// } - class SingleSound { - fileprivate let soundName = [ + private var singleSounds: [String]? + + // MARK: - Methods + + func getSoundCount() -> Int { + guard let sounds = singleSounds else {return 0} + return sounds.count + } + + func getRandomIpa() -> String { + + if singleSounds == nil { + includeAllSounds() + } + + // get random integer (0 <= x < numberOfSounds) + let index = Int(arc4random_uniform(UInt32(singleSounds!.count))) + + // translate integer to ipa string + return singleSounds![index] + } + + private func includeAllSounds() { + singleSounds = Array(SingleSound.soundMap.keys) + } + + func restrictListTo(consonants: [String], vowels: [String]) { + if consonants.isEmpty && vowels.isEmpty {return} + + singleSounds = consonants + vowels + + } + + class func getSoundFileName(ipa: String) -> String? { + return SingleSound.soundMap[ipa] + } + + class func getExampleOneFileName(ipa: String) -> String? { + return SingleSound.exampleOneMap[ipa] + } + + class func getExampleTwoFileName(ipa: String) -> String? { + return SingleSound.exampleTwoMap[ipa] + } + + class func getExampleThreeFileName(ipa: String) -> String? { + return SingleSound.exampleThreeMap[ipa] + } + + private static let soundMap = [ "p": "single_p", "t": "single_t", "k": "single_k", @@ -33,21 +76,21 @@ class SingleSound { "j": "single_j", "h": "single_h", "r": "single_r", - "i": "single_i_long", + "i": "single_i", "ɪ": "single_i_short", - "ɛ": "single_e_short", + "ɛ": "single_e", "æ": "single_ae", "ɑ": "single_a", "ɔ": "single_c_backwards", "ʊ": "single_u_short", "u": "single_u", "ʌ": "single_v_upsidedown", - "ə": "single_schwa", - "e": "single_e", + "ə": "single_shwua", + "eɪ": "single_ei", "aɪ": "single_ai", "aʊ": "single_au", "ɔɪ": "single_oi", - "o": "single_o", + "oʊ": "single_ou", "ɝ": "single_er_stressed", "ɚ": "single_er_unstressed", "ɑr": "single_ar", @@ -58,216 +101,153 @@ class SingleSound { "ɾ": "single_flap_t" ] - // test/practice pool excludes "ə", "ɚ", "ʔ", "ɾ" - //private let ipaTestPool = [ "p", "t", "k", "ʧ", "f", "θ", "s", "ʃ", "b", "d", "g", "ʤ", "v", "ð", "z", "ʒ", "m", "n", "ŋ", "l", "w", "j", "h", "r", "i", "ɪ", "ɛ", "æ", "ɑ", "ɔ", "ʊ", "u", "ʌ", "e", "aɪ", "aʊ", "ɔɪ", "o", "ɝ", "ɑr", "ɛr", "ɪr", "ɔr" ] - fileprivate let ipaTestPoolVowels = [ "i", "ɪ", "ɛ", "æ", "ɑ", "ɔ", "ʊ", "u", "ʌ", "e", "aɪ", "aʊ", "ɔɪ", "o", "ɝ", "ɑr", "ɛr", "ɪr", "ɔr" ] - fileprivate let ipaTestPoolConsonants = [ "p", "t", "k", "ʧ", "f", "θ", "s", "ʃ", "b", "d", "g", "ʤ", "v", "ð", "z", "ʒ", "m", "n", "ŋ", "l", "w", "j", "h", "r" ] - - fileprivate let exampleOneFile = [ - "p": "pass", - "t": "toad", - "k": "cool", - "ʧ": "chairs", - "f": "father", - "θ": "think", - "s": "set", - "ʃ": "shoot", - "b": "bill", - "d": "delicious", - "g": "good", - "ʤ": "jump", - "v": "very", - "ð": "there", - "z": "zoo", - "ʒ": "usually", - "m": "me", + private static let exampleOneMap = [ + "p": "word_pass", + "t": "word_toad", + "k": "word_cool", + "ʧ": "word_chairs", + "f": "word_father", + "θ": "word_think", + "s": "word_set", + "ʃ": "word_shoot", + "b": "word_bill", + "d": "word_delicious", + "g": "word_good", + "ʤ": "word_jump", + "v": "word_very", + "ð": "word_there", + "z": "word_zoo", + "ʒ": "word_usually", + "m": "word_me", "n": "word_new", - "ŋ": "ringing", - "l": "loud", - "w": "wary", - "j": "year", - "h": "her", - "r": "real", - "i": "each", - "ɪ": "it", - "ɛ": "edge", - "æ": "ash", - "ɑ": "on", - "ɔ": "ought", - "ʊ": "put", - "u": "ooze", - "ʌ": "up", - "ə": "above", - "e": "age", - "aɪ": "im", - "aʊ": "out", - "ɔɪ": "oil", - "o": "oath", - "ɝ": "earth", - "ɚ": "mother", - "ɑr": "arm", - "ɛr": "aired", - "ɪr": "ear", - "ɔr": "oars", - "ʔ": "put_glottal", - "ɾ": "water" + "ŋ": "word_ringing", + "l": "word_loud", + "w": "word_wary", + "j": "word_year", + "h": "word_her", + "r": "word_real", + "i": "word_each", + "ɪ": "word_it", + "ɛ": "word_edge", + "æ": "word_ash", + "ɑ": "word_on", + "ɔ": "word_ought", + "ʊ": "word_put", + "u": "word_ooze", + "ʌ": "word_up", + "ə": "word_above", + "eɪ": "word_age", + "aɪ": "word_im", + "aʊ": "word_out", + "ɔɪ": "word_oil", + "oʊ": "word_oath", + "ɝ": "word_earth", + "ɚ": "word_mother", + "ɑr": "word_arm", + "ɛr": "word_aired", + "ɪr": "word_ear", + "ɔr": "word_oars", + "ʔ": "word_put_glottal", + "ɾ": "word_water" ] - fileprivate let exampleTwoFile = [ - "p": "speak", - "t": "sting", - "k": "skill", - "ʧ": "eachof", - "f": "gift", - "θ": "jonathan", - "s": "raced", - "ʃ": "wished", - "b": "above", - "d": "cards", - "g": "again", - "ʤ": "agile", - "v": "every", - "ð": "father", - "z": "raised", - "ʒ": "pleasure", - "m": "jump", - "n": "panda", - "ŋ": "think", - "l": "cool", - "w": "twelve", - "j": "cube", - "h": "have", - "r": "rib", - "i": "read", - "ɪ": "him", - "ɛ": "set", - "æ": "bad", - "ɑ": "father", - "ɔ": "call", - "ʊ": "good", - "u": "shoot", - "ʌ": "sun", - "ə": "delicious", - "e": "safe", - "aɪ": "bite", - "aʊ": "loud", - "ɔɪ": "voice", - "o": "cove", - "ɝ": "birthday", - "ɚ": "perform", - "ɑr": "part", - "ɛr": "chairs", - "ɪr": "weird", - "ɔr": "north", - "ʔ": "button", - "ɾ": "little" + private static let exampleTwoMap = [ + "p": "word_speak", + "t": "word_sting", + "k": "word_skill", + "ʧ": "word_eachof", + "f": "word_gift", + "θ": "word_jonathan", + "s": "word_raced", + "ʃ": "word_wished", + "b": "word_above", + "d": "word_cards", + "g": "word_again", + "ʤ": "word_agile", + "v": "word_every", + "ð": "word_father", + "z": "word_raised", + "ʒ": "word_pleasure", + "m": "word_jump", + "n": "word_panda", + "ŋ": "word_think", + "l": "word_cool", + "w": "word_twelve", + "j": "word_cube", + "h": "word_have", + "r": "word_rib", + "i": "word_read", + "ɪ": "word_him", + "ɛ": "word_set", + "æ": "word_bad", + "ɑ": "word_father", + "ɔ": "word_call", + "ʊ": "word_good", + "u": "word_shoot", + "ʌ": "word_sun", + "ə": "word_delicious", + "eɪ": "word_safe", + "aɪ": "word_bite", + "aʊ": "word_loud", + "ɔɪ": "word_voice", + "oʊ": "word_cove", + "ɝ": "word_birthday", + "ɚ": "word_perform", + "ɑr": "word_part", + "ɛr": "word_chairs", + "ɪr": "word_weird", + "ɔr": "word_north", + "ʔ": "word_button", + "ɾ": "word_little" ] - fileprivate let exampleThreeFile = [ - "p": "stop", - "t": "it", - "k": "week", - "ʧ": "church", + private static let exampleThreeMap = [ + "p": "word_stop", + "t": "word_it", + "k": "word_week", + "ʧ": "word_church", "f": "word_if", - "θ": "earth", - "s": "pass", - "ʃ": "ash", - "b": "rib", - "d": "card", - "g": "pig", - "ʤ": "edge", - "v": "have", - "ð": "bathe", - "z": "cars", - "ʒ": "beige", - "m": "arm", - "n": "sun", - "ŋ": "sung", - "l": "bill", - "w": "what", - "j": "yellow", - "h": "ahead", - "r": "roar", - "i": "me", - "ɪ": "rib", - "ɛ": "said", - "æ": "bat", - "ɑ": "ma", - "ɔ": "saw", - "ʊ": "should", - "u": "blue", - "ʌ": "uhhuh", - "ə": "panda", - "e": "may", - "aɪ": "fly", - "aʊ": "cow", - "ɔɪ": "boy", - "o": "low", - "ɝ": "her", - "ɚ": "wonderful", - "ɑr": "car", - "ɛr": "there", - "ɪr": "here", - "ɔr": "roar", - "ʔ": "uhoh", - "ɾ": "thirty" + "θ": "word_earth", + "s": "word_pass", + "ʃ": "word_ash", + "b": "word_rib", + "d": "word_card", + "g": "word_pig", + "ʤ": "word_edge", + "v": "word_have", + "ð": "word_bathe", + "z": "word_cars", + "ʒ": "word_beige", + "m": "word_arm", + "n": "word_sun", + "ŋ": "word_sung", + "l": "word_bill", + "w": "word_what", + "j": "word_yellow", + "h": "word_ahead", + "r": "word_roar", + "i": "word_me", + "ɪ": "word_rib", + "ɛ": "word_said", + "æ": "word_bat", + "ɑ": "word_ma", + "ɔ": "word_saw", + "ʊ": "word_should", + "u": "word_blue", + "ʌ": "word_uhhuh", + "ə": "word_panda", + "eɪ": "word_may", + "aɪ": "word_fly", + "aʊ": "word_cow", + "ɔɪ": "word_boy", + "oʊ": "word_low", + "ɝ": "word_her", + "ɚ": "word_wonderful", + "ɑr": "word_car", + "ɛr": "word_there", + "ɪr": "word_here", + "ɔr": "word_roar", + "ʔ": "word_uhoh", + "ɾ": "word_thirty" ] - - let allIpaTestPool: [ String ] - - // MARK: - init - - init() { - allIpaTestPool = ipaTestPoolVowels + ipaTestPoolConsonants - } - - // MARK: - Methods - - func fileNameForIpa(_ ipa: String) -> String? { - - return soundName[ipa] - } - - func exampleOneFileNameFromIpa(_ ipa: String) -> String? { - - return exampleOneFile[ipa] - } - - func exampleTwoFileNameFromIpa(_ ipa: String) -> String? { - - return exampleTwoFile[ipa] - } - - func exampleThreeFileNameFromIpa(_ ipa: String) -> String? { - - return exampleThreeFile[ipa] - } - - func getRandomIpa() -> String { - - // get random sound index number - let index = arc4random_uniform(UInt32(allIpaTestPool.count)) - - // translate integer to ipa string - return allIpaTestPool[Int(index)] - } - - func getRandomVowelIpa() -> String { - - // get random sound index number - let index = arc4random_uniform(UInt32(ipaTestPoolVowels.count)) - - // translate integer to ipa string - return ipaTestPoolVowels[Int(index)] - } - - func getRandomConsonantIpa() -> String { - - // get random sound index number - let index = arc4random_uniform(UInt32(ipaTestPoolConsonants.count)) - - // translate integer to ipa string - return ipaTestPoolConsonants[Int(index)] - } - } diff --git a/aePronunciation/SoundMode.swift b/aePronunciation/SoundMode.swift new file mode 100644 index 0000000..63d3c2a --- /dev/null +++ b/aePronunciation/SoundMode.swift @@ -0,0 +1,8 @@ + + +enum SoundMode: String { + // Don't change the hardcoded strings unless you take into + // consideration that they are used in persistent memory. + case single = "single" + case double = "double" +} diff --git a/aePronunciation/SpecialSound.swift b/aePronunciation/SpecialSound.swift new file mode 100644 index 0000000..d74eba0 --- /dev/null +++ b/aePronunciation/SpecialSound.swift @@ -0,0 +1,148 @@ + +class SpecialSound { + + // These are double sounds that are used in the learning tab but not in + // the practice or tests. + + class func getSoundFileName(doubleSoundIpa: String) -> String? { + return SpecialSound.soundSpecialMap[doubleSoundIpa] + } + + class func getSounds(ipa: String) -> [String] { + var sounds = [String]() + for key in SpecialSound.soundSpecialMap.keys { + if key.contains(ipa) { + sounds.append(key) + } + } + return sounds + } + + private static let soundSpecialMap = [ + "iʔ": "double_i_glottal", + "ɪʔ": "double_is_glottal", + "eɪʔ": "double_ei_glottal", + "ɛʔ": "double_e_glottal", + "æʔ": "double_ae_glottal", + "ɑʔ": "double_a_glottal", + "ɔʔ": "double_c_glottal", + "oʊʔ": "double_ou_glottal", + "ʊʔ": "double_us_glottal", + "uʔ": "double_u_glottal", + "ʌʔ": "double_vu_glottal", + "aɪʔ": "double_ai_glottal", + "aʊʔ": "double_au_glottal", + "ɔɪʔ": "double_oi_glottal", + "ɝʔ": "double_ers_glottal", + "ɑrʔ": "double_ar_glottal", + "ɛrʔ": "double_er_glottal", + "ɪrʔ": "double_ir_glottal", + "ɔrʔ": "double_or_glottal", + "ˈiɾə": "double_i_flap_shwua", + "ˈɪɾə": "double_is_flap_shwua", + "ˈeɪɾə": "double_ei_flap_shwua", + "ˈɛɾə": "double_e_flap_shwua", + "ˈæɾə": "double_ae_flap_shwua", + "ˈɑɾə": "double_a_flap_shwua", + "ˈɔɾə": "double_c_flap_shwua", + "ˈoʊɾə": "double_ou_flap_shwua", + "ˈʊɾə": "double_us_flap_shwua", + "ˈuɾə": "double_u_flap_shwua", + "ˈʌɾə": "double_vu_flap_shwua", + "ˈaɪɾə": "double_ai_flap_shwua", + "ˈaʊɾə": "double_au_flap_shwua", + "ˈɔɪɾə": "double_oi_flap_shwua", + "ˈɝɾə": "double_ers_flap_shwua", + "ˈɑrɾə": "double_ar_flap_shwua", + "ˈɛrɾə": "double_er_flap_shwua", + "ˈɪrɾə": "double_ir_flap_shwua", + "ˈɔrɾə": "double_or_flap_shwua", + "pə": "double_p_shwua", + "tə": "double_t_shwua", + "kə": "double_k_shwua", + "ʧə": "double_ch_shwua", + "fə": "double_f_shwua", + "θə": "double_th_shwua", + "sə": "double_s_shwua", + "ʃə": "double_sh_shwua", + "bə": "double_b_shwua", + "də": "double_d_shwua", + "gə": "double_g_shwua", + "ʤə": "double_dzh_shwua", + "və": "double_v_shwua", + "ðə": "double_thv_shwua", + "zə": "double_z_shwua", + "ʒə": "double_zh_shwua", + "mə": "double_m_shwua", + "nə": "double_n_shwua", + "lə": "double_l_shwua", + "wə": "double_w_shwua", + "jə": "double_j_shwua", + "hə": "double_h_shwua", + "rə": "double_r_shwua", + "əp": "double_shwua_p", + "ət": "double_shwua_t", + "ək": "double_shwua_k", + "əʧ": "double_shwua_ch", + "əf": "double_shwua_f", + "əθ": "double_shwua_th", + "əs": "double_shwua_s", + "əʃ": "double_shwua_sh", + "əb": "double_shwua_b", + "əd": "double_shwua_d", + "əg": "double_shwua_g", + "əʤ": "double_shwua_dzh", + "əv": "double_shwua_v", + "əð": "double_shwua_thv", + "əz": "double_shwua_z", + "əʒ": "double_shwua_zh", + "əm": "double_shwua_m", + "ən": "double_shwua_n", + "əŋ": "double_shwua_ng", + "əl": "double_shwua_l", + "pɚ": "double_p_eru", + "tɚ": "double_t_eru", + "kɚ": "double_k_eru", + "ʧɚ": "double_ch_eru", + "fɚ": "double_f_eru", + "θɚ": "double_th_eru", + "sɚ": "double_s_eru", + "ʃɚ": "double_sh_eru", + "bɚ": "double_b_eru", + "dɚ": "double_d_eru", + "gɚ": "double_g_eru", + "ʤɚ": "double_dzh_eru", + "vɚ": "double_v_eru", + "ðɚ": "double_thv_eru", + "zɚ": "double_z_eru", + "ʒɚ": "double_zh_eru", + "mɚ": "double_m_eru", + "nɚ": "double_n_eru", + "lɚ": "double_l_eru", + "wɚ": "double_w_eru", + "jɚ": "double_j_eru", + "hɚ": "double_h_eru", + "rɚ": "double_r_eru", + "ɚp": "double_eru_p", + "ɚt": "double_eru_t", + "ɚk": "double_eru_k", + "ɚʧ": "double_eru_ch", + "ɚf": "double_eru_f", + "ɚθ": "double_eru_th", + "ɚs": "double_eru_s", + "ɚʃ": "double_eru_sh", + "ɚb": "double_eru_b", + "ɚd": "double_eru_d", + "ɚg": "double_eru_g", + "ɚʤ": "double_eru_dzh", + "ɚv": "double_eru_v", + "ɚð": "double_eru_thv", + "ɚz": "double_eru_z", + "ɚʒ": "double_eru_zh", + "ɚm": "double_eru_m", + "ɚn": "double_eru_n", + "ɚŋ": "double_eru_ng", + "ɚl": "double_eru_l", + ] + +} diff --git a/aePronunciation/String+localized.swift b/aePronunciation/String+localized.swift index efb9410..5e7c07b 100644 --- a/aePronunciation/String+localized.swift +++ b/aePronunciation/String+localized.swift @@ -1,15 +1,7 @@ -// -// String+localized.swift -// aePronunciation -// -// Created by MongolSuragch on 10/2/15. -// Copyright © 2015 Suragch. All rights reserved. -// - import Foundation extension String { var localized: String { return NSLocalizedString(self, comment: "") } -} \ No newline at end of file +} diff --git a/aePronunciation/StudyTimer.swift b/aePronunciation/StudyTimer.swift new file mode 100644 index 0000000..fcb1c17 --- /dev/null +++ b/aePronunciation/StudyTimer.swift @@ -0,0 +1,53 @@ +import Foundation + +class StudyTimer { + + // singleton + static let sharedInstance = StudyTimer() + private init() {} + + private var startTime: Date? + private var studyType: StudyType? + enum StudyType { + case learnSingle + case learnDouble + case practiceSingle + case practiceDouble + case testSingle + case testDouble + } + + var isTiming: Bool { + get { + return startTime != nil + } + } + + func start(type: StudyType) { + + // no need to restart the timer for the same type + if self.studyType == type { + return + } + + // stop and record time for previous type (if any) + stop() + + // start time for this type + self.startTime = Date() + self.studyType = type + } + + func stop() { + guard let currentType = self.studyType else {return} + guard let start = self.startTime else {return} + let elapsedTime = abs(start.timeIntervalSinceNow) + MyUserDefaults.addTime(for: currentType, time: elapsedTime) + + // set to nil so that not saving multiple times + self.studyType = nil + self.startTime = nil + } + + +} diff --git a/aePronunciation/Test.swift b/aePronunciation/Test.swift new file mode 100644 index 0000000..ce3cbc1 --- /dev/null +++ b/aePronunciation/Test.swift @@ -0,0 +1,85 @@ + +import Foundation + +class Test { + + let id: Int64? + var username: String + var date: Int64 + var timelength: Int64 + var mode: SoundMode + var score: Int64 + var correctAnswers: String + var userAnswers: String + + init(id: Int64) { + self.id = id + self.username = "" + self.date = 0 + self.timelength = 0 + self.mode = SoundMode.single + self.score = 0 + self.correctAnswers = "" + self.userAnswers = "" + } + + init(id: Int64, username: String, date: Int64, timelength: Int64, mode: SoundMode, score: Int64, correctAnswers: String, userAnswers: String) { + self.id = id + self.username = username + self.date = date + self.timelength = timelength + self.mode = mode + self.score = score + self.correctAnswers = correctAnswers + self.userAnswers = userAnswers + } + + func getAnswerArray() -> [Answer] { + var answers = [Answer]() + let correct = correctAnswers.split(separator: ",") + let user = userAnswers.split(separator: ",") + for index in 0.. Int { + + // count number correct + var numCorrect = 0 + for answer in answers { + let correct = answer.correctAnswer + let user = answer.userAnswer + + // Single + if testMode == SoundMode.single { + if correct == user {numCorrect += 1} + continue + } + + // Double + guard let parsedCorrect = DoubleSound.parse(ipaDouble: correct) else {continue} + guard let parsedUser = DoubleSound.parse(ipaDouble: user) else {continue} + if parsedCorrect.0 == parsedUser.0 { + numCorrect += 1 + } + if parsedCorrect.1 == parsedUser.1 { + numCorrect += 1 + } + } + return numCorrect + } + + static func getScorePercent(forAnswers answers: [Answer], testMode: SoundMode) -> Int { + //let total = answers.count + let numberCorrect = self.numberCorrect(inAnswers: answers, testMode: testMode) + var totalNumber = answers.count + if testMode == SoundMode.double { + totalNumber *= 2 + } + let score = (numberCorrect * 100) / totalNumber // round down + return score + } +} diff --git a/aePronunciation/TestResultsViewController.swift b/aePronunciation/TestResultsViewController.swift index cde0a79..b89fbb1 100644 --- a/aePronunciation/TestResultsViewController.swift +++ b/aePronunciation/TestResultsViewController.swift @@ -1,24 +1,22 @@ import UIKit -class TestResultsViewController: UIViewController { +class TestResultsViewController: UIViewController, UITableViewDelegate, UITableViewDataSource { // values passed in from previous view controller - var testAnswers = [Answer]() - var startTime = Date() - var examType = ExamType.doubles + var userName = "test_default_name".localized + var timeLength = 0 + var answers = [Answer]() + var testMode = MyUserDefaults.defaultTestMode + var isTestDetails = false - // constants - fileprivate let cellReuseIdentifier = "cell" - fileprivate let rightColor = UIColor(red: 0.031, green: 0.651, blue: 0, alpha: 1) // 08a600 green - fileprivate let wrongColor = UIColor.red - fileprivate let endTime = Date() - //let delayBeforePlayingSecondSound = 1.0 - - // variables - fileprivate let player = Player() - fileprivate lazy var singleSound = SingleSound() - fileprivate lazy var doubleSound = DoubleSound() - //var timer = NSTimer() + private var score = 0 + private var wrong = "" + private let cellReuseIdentifier = "cell" + private let rightColor = UIColor.rightGreen + private let wrongColor = UIColor.red + private let player = Player() + private lazy var singleSound = SingleSound() + private lazy var doubleSound = DoubleSound() // MARK: - Outlets @@ -26,90 +24,94 @@ class TestResultsViewController: UIViewController { @IBOutlet var tableView: UITableView! @IBOutlet weak var userNameLabel: UILabel! @IBOutlet weak var dateLabel: UILabel! - @IBOutlet weak var timeButton: UIButton! @IBOutlet weak var percentLabel: UILabel! @IBOutlet weak var rightLabel: UILabel! @IBOutlet weak var wrongLabel: UILabel! + @IBOutlet weak var timeLengthLabel: UILabel! + @IBOutlet weak var practiceDificultButton: UIButton! - // MARK: - Actions - - @IBAction func timeButtonTapped(_ sender: UIButton) { - - // get the time strings - let formatter = DateFormatter() - formatter.timeStyle = DateFormatter.Style.medium - formatter.locale = Locale(identifier: "en_US_POSIX") - let startTimeString = formatter.string(from: startTime) - let endTimeString = formatter.string(from: endTime) - - // create the message from the time strings - let message = "Start time: \(startTimeString)\nEndTime: \(endTimeString)" - - // start an alert with start and stop time - let alert = UIAlertController(title: "Test Time Length", message: message, preferredStyle: UIAlertControllerStyle.alert) - alert.addAction(UIAlertAction(title: "OK", style: UIAlertActionStyle.default, handler: nil)) - self.present(alert, animated: true, completion: nil) - } - - @IBAction func doneButtonTapped(_ sender: UIBarButtonItem) { - - self.navigationController?.popToRootViewController(animated: true) - } // MARK: - Overrides override func viewDidLoad() { super.viewDidLoad() - // Get name from user defaults - let userDefaults = UserDefaults.standard - if let name = userDefaults.string(forKey: Key.name) { - userNameLabel.text = name + let backButtonText = "test_results_back_button".localized + self.navigationItem.leftBarButtonItem = UIBarButtonItem(title: backButtonText, style: .done, target: self, action: #selector(TestResultsViewController.backButtonTapped)) + + + // title + if isTestDetails { + self.navigationController?.navigationBar.topItem?.title = "title_activity_history_test_details".localized + } else { + self.navigationController?.navigationBar.topItem?.title = "title_activity_test_results".localized } - // Set the date - let now = Date() - let formatter = DateFormatter() - formatter.locale = Locale(identifier: "en_US_POSIX") // use US English - formatter.dateStyle = DateFormatter.Style.long - dateLabel.text = formatter.string(from: now) + // name + userNameLabel.text = userName - // Show elapsed time - let timeString = getTimeString() - timeButton.setTitle(timeString, for: UIControlState()) + // date + let now = Date() + dateLabel.text = AppLocale.getFormattedDate(date: now) // calculate score - let numberCorrect = calculateNumberCorrect() - var totalNumber = testAnswers.count - if examType == ExamType.doubles { + let numberCorrect = Test.numberCorrect(inAnswers: answers, testMode: testMode) + var totalNumber = answers.count + if testMode == SoundMode.double { totalNumber *= 2 } let score = (numberCorrect * 100) / totalNumber // round down - percentLabel.text = "\(score)%" - rightLabel.text = "Right: \(numberCorrect)" - wrongLabel.text = "Wrong: \(totalNumber - numberCorrect)" + percentLabel.text = String.localizedStringWithFormat("test_results_percent".localized, score) + rightLabel.text = String.localizedStringWithFormat("test_results_right".localized, numberCorrect) + let numberWrong = totalNumber - numberCorrect + wrongLabel.text = String.localizedStringWithFormat("test_results_wrong".localized, numberWrong) + + // Show elapsed time + timeLengthLabel.text = getTimeString() + + // practice button + // Center button text + practiceDificultButton.titleLabel?.textAlignment = NSTextAlignment.center + practiceDificultButton.titleLabel?.numberOfLines = 0 + if score == 100 { + practiceDificultButton.isHidden = true + } else { + practiceDificultButton.setTitle("test_results_practice_difficult_button".localized, for: .normal) + } // register UITableViewCell for reuse - self.tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellReuseIdentifier) + tableView.register(UITableViewCell.self, forCellReuseIdentifier: cellReuseIdentifier) + // hide extra lines in table view + tableView.tableFooterView = UIView() + } + + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + if let practiceVC = segue.destination as? PracticeSoundsViewController { + practiceVC.practiceMode = testMode + let (vowels, consonants) = findNeedToPracticeSounds() + practiceVC.selectedVowels = vowels + practiceVC.selectedConsonants = consonants + } } // MARK: - Table View methods // number of rows in table view - func tableView(_ tableView: UITableView, numberOfRowsInSection section: Int) -> Int { - return self.testAnswers.count + func tableView(_ tableView: UITableView, + numberOfRowsInSection section: Int) -> Int { + return self.answers.count } // create a cell for each table view row - func tableView(_ tableView: UITableView, cellForRowAtIndexPath indexPath: IndexPath) -> UITableViewCell { + func tableView(_ tableView: UITableView, cellForRowAt indexPath: IndexPath) -> UITableViewCell { let cell:UITableViewCell = self.tableView.dequeueReusableCell(withIdentifier: cellReuseIdentifier) as UITableViewCell! // make attributes - let correctAnswer = self.testAnswers[indexPath.row].correctAnswer + let correctAnswer = self.answers[indexPath.row].correctAnswer let correctAnswerAttr = NSAttributedString(string: correctAnswer, attributes: [NSAttributedStringKey.foregroundColor: rightColor]) - let userAnswer = self.testAnswers[indexPath.row].userAnswer + let userAnswer = self.answers[indexPath.row].userAnswer let userAnswerAttr = attributedTextForUserAnswer(userAnswer, correctAnswer: correctAnswer) // build string @@ -125,17 +127,20 @@ class TestResultsViewController: UIViewController { } // method to run when table view cell is tapped - func tableView(_ tableView: UITableView, didSelectRowAtIndexPath indexPath: IndexPath) { - - let correctAnswer = self.testAnswers[indexPath.row].correctAnswer - let userAnswer = self.testAnswers[indexPath.row].userAnswer + func tableView(_ tableView: UITableView, didSelectRowAt indexPath: IndexPath) { + // deselect row after user lifts finger + tableView.deselectRow(at: indexPath as IndexPath, animated: true) + + let answer = answers[indexPath.row] + let correctAnswer = answer.correctAnswer + let userAnswer = answer.userAnswer // play sounds playIpa(correctAnswer) if correctAnswer != userAnswer { var delayTime = 1.0 - if correctAnswer == "l" { // this sound needs more time to finish - delayTime = 2.0 + if Ipa.hasTwoPronunciations(ipa: correctAnswer) { + delayTime = 2.0 // these sounds needs more time to finish } delay(delayTime) { self.playIpa(userAnswer) @@ -144,71 +149,65 @@ class TestResultsViewController: UIViewController { } // MARK: - Other methods - - func getTimeString() -> String { - - var timeString = "" - - - let userCalendar = Calendar.current - let timeComponents: NSCalendar.Unit = [.hour, .minute, .second] - let elapsedTime = (userCalendar as NSCalendar).components( - timeComponents, - from: startTime, - to: endTime, - options: []) - - if elapsedTime.hour! > 0 { - timeString = "\(elapsedTime.hour) hr" - } - - if elapsedTime.minute! > 0 { - if timeString.characters.count > 0 { - timeString = timeString + ", " - } - timeString = timeString + "\(elapsedTime.minute) min" - } - - if elapsedTime.second! > 0 { - if timeString.characters.count > 0 { - timeString = timeString + ", " - } - timeString = timeString + "\(elapsedTime.second) sec" + + @objc func backButtonTapped() { + if isTestDetails { + self.navigationController?.popViewController(animated: true) + } else { + self.navigationController?.popToRootViewController(animated: true) } - return timeString } - func calculateNumberCorrect() -> Int { + func getTimeString() -> String { + let interval = Int(timeLength) + let seconds = interval % 60 + let minutes = (interval / 60) % 60 + let hours = (interval / 3600) + return String(format: "%02d:%02d:%02d", hours, minutes, seconds) + } - // count number correct - var numCorrect = 0 - for answer in testAnswers { + private func findNeedToPracticeSounds() -> (vowels: [String], consonants: [String]) { + var practiceSet = Set() + for answer in answers { + let user = answer.userAnswer + let correct = answer.correctAnswer - if examType == ExamType.doubles { - - - let (correctFirst, correctSecond) = doubleSound.parse(answer.correctAnswer)! - - if let (userFirst, userSecond) = doubleSound.parse(answer.userAnswer) { - if userFirst == correctFirst { - numCorrect += 1 - } - if userSecond == correctSecond { - numCorrect += 1 - } + if testMode == SoundMode.single { + if user != correct { + practiceSet.insert(user) + practiceSet.insert(correct) + } + } else { // Double + guard let parsedCorrect = DoubleSound.parse(ipaDouble: correct) else {continue} + guard let parsedUser = DoubleSound.parse(ipaDouble: user) else {continue} + if parsedCorrect.0 != parsedUser.0 { + practiceSet.insert(parsedCorrect.0) + practiceSet.insert(parsedUser.0) } - - - - } else { // single - if answer.userAnswer == answer.correctAnswer { - numCorrect += 1 + if parsedCorrect.1 != parsedUser.1 { + practiceSet.insert(parsedCorrect.1) + practiceSet.insert(parsedUser.1) } } } + return sortVowelsAndConsonants(sounds: practiceSet) + } + + private func sortVowelsAndConsonants(sounds: Set) -> (vowels: [String], consonants: [String]) { - return numCorrect + var vowels = [String]() + var consonants = [String]() + + for sound in sounds { + if Ipa.isConsonant(ipa: sound) { + consonants.append(sound) + } else { + vowels.append(sound) + } + } + + return (vowels, consonants) } func attributedTextForUserAnswer(_ userAnswer: String, correctAnswer: String) -> NSAttributedString { @@ -221,63 +220,64 @@ class TestResultsViewController: UIViewController { } // color user's wrong answer red - if examType == ExamType.doubles { - + if testMode == SoundMode.double { - let (correctFirst, correctSecond) = doubleSound.parse(correctAnswer)! - if let (userFirst, userSecond) = doubleSound.parse(userAnswer) { - + let (correctFirst, correctSecond) = DoubleSound.parse(ipaDouble: correctAnswer) ?? ("","") + if let (userFirst, userSecond) = DoubleSound.parse(ipaDouble: userAnswer) { + // first part if userFirst != correctFirst { // red - returnString.append(NSAttributedString(string: userFirst, attributes: [NSAttributedStringKey.foregroundColor: wrongColor])) + returnString.append(wrongIpa(userFirst)) } else { // green - returnString.append(NSAttributedString(string: userFirst, attributes: [NSAttributedStringKey.foregroundColor: rightColor])) + returnString.append(rightIpa(userFirst)) } - + // second part if userSecond != correctSecond { // red - returnString.append(NSAttributedString(string: userSecond, attributes: [NSAttributedStringKey.foregroundColor: wrongColor])) + returnString.append(wrongIpa(userSecond)) }else { // green - returnString.append(NSAttributedString(string: userSecond, attributes: [NSAttributedStringKey.foregroundColor: rightColor])) + returnString.append(rightIpa(userSecond)) } } else { - + // TODO: - Add better error handling if user entered oi, ar, ir, etc as two seperate sounds. - + // for now just color it all red (also in score counting) - returnString.append(NSAttributedString(string: userAnswer, attributes: [NSAttributedStringKey.foregroundColor: wrongColor])) + returnString.append(wrongIpa(userAnswer)) } - - } else { // single returnString.append(NSAttributedString(string: userAnswer, attributes: [NSAttributedStringKey.foregroundColor: wrongColor])) - } return returnString } + private func wrongIpa(_ ipa: String) -> NSAttributedString { + return NSAttributedString(string: ipa, attributes: [NSAttributedStringKey.foregroundColor: wrongColor]) + } + + private func rightIpa(_ ipa: String) -> NSAttributedString { + return NSAttributedString(string: ipa, attributes: [NSAttributedStringKey.foregroundColor: rightColor]) + } + func playIpa(_ ipa: String) { - - if examType == ExamType.doubles { - - if let fileName = doubleSound.fileNameForIpa(ipa) { - player.playSoundFromFile(fileName) - } - - } else { + var fileName: String? + if testMode == SoundMode.single { + fileName = SingleSound.getSoundFileName(ipa: ipa) + } else { // double mode + fileName = DoubleSound.getSoundFileName(doubleSoundIpa: ipa) - if let fileName = singleSound.fileNameForIpa(ipa) { - player.playSoundFromFile(fileName) - } + if fileName == nil {Answer.showErrorMessageFor(ipa, in: self)} + } + if let name = fileName { + player.playSoundFrom(file: name) } - } func delay(_ delay:Double, closure:@escaping ()->()) { diff --git a/aePronunciation/TestSetupViewController.swift b/aePronunciation/TestSetupViewController.swift index c292b7b..9916ce9 100644 --- a/aePronunciation/TestSetupViewController.swift +++ b/aePronunciation/TestSetupViewController.swift @@ -1,151 +1,47 @@ import UIKit -enum ExamType: Int { - case doubles = 0 - case singles - case vowelsOnly - case consonantsOnly -} - class TestSetupViewController: UIViewController, UITextFieldDelegate { - - fileprivate var numberOfQuestions = 50 // defaults are registered in AppDelegate - fileprivate let numberOfQuestionsArray = [ 5, 10, 25, 50, 100 ] - fileprivate var contentType = ExamType.doubles - fileprivate var name = "" // MARK: - Outlets @IBOutlet weak var nameTextField: UITextField! - @IBOutlet weak var numberOfQuestionsButton: UIButton! - @IBOutlet weak var contentTypeButton: UIButton! - - // MARK: - Actions - - @IBAction func numberOfQuestionsButtonTapped(_ sender: UIButton) { - - // Create the action sheet - let myActionSheet = UIAlertController(title: "Number of Questions", message: nil, preferredStyle: UIAlertControllerStyle.actionSheet) - - //var alertActions = [ UIAlertAction ]() - - for number in numberOfQuestionsArray { - - let myAction = UIAlertAction(title: String(number), style: UIAlertActionStyle.default) { (action) in - //print("\(number) action button tapped") - self.numberOfQuestions = number - self.updateNumberOfQuestionsDisplay() - - } - myActionSheet.addAction(myAction) - } - - - // cancel action button - let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.cancel) { (action) in - // do nothing - } - myActionSheet.addAction(cancelAction) - - // support iPads (popover view) - myActionSheet.popoverPresentationController?.sourceView = self.numberOfQuestionsButton - myActionSheet.popoverPresentationController?.sourceRect = self.numberOfQuestionsButton.bounds - - // present the action sheet - self.present(myActionSheet, animated: true, completion: nil) - - } - - @IBAction func contentTypeButtonTapped(_ sender: UIButton) { - - // Create the action sheet - let myActionSheet = UIAlertController(title: "Content", message: "What do you want to take a test on?", preferredStyle: UIAlertControllerStyle.actionSheet) - - // Double Sounds action button - let doubleAction = UIAlertAction(title: "Double Sounds (Consonant and Vowel)", style: UIAlertActionStyle.default) { (action) in - self.contentType = ExamType.doubles - self.updateTypeButtonDisplay() - } - - // Single Sounds action button - let singleAction = UIAlertAction(title: "Single Sounds (Consonant or Vowel)", style: UIAlertActionStyle.default) { (action) in - self.contentType = ExamType.singles - self.updateTypeButtonDisplay() - } - - // Vowels Only action button - let vowelsAction = UIAlertAction(title: "Vowels Only", style: UIAlertActionStyle.default) { (action) in - self.contentType = ExamType.vowelsOnly - self.updateTypeButtonDisplay() - } - - // Consonants Only action button - let consonantsAction = UIAlertAction(title: "Consonants Only", style: UIAlertActionStyle.default) { (action) in - self.contentType = ExamType.consonantsOnly - self.updateTypeButtonDisplay() - } - - // cancel action button - let cancelAction = UIAlertAction(title: "Cancel", style: UIAlertActionStyle.cancel) { (action) in - // do nothing - } - - // add action buttons to action sheet - myActionSheet.addAction(doubleAction) - myActionSheet.addAction(singleAction) - myActionSheet.addAction(vowelsAction) - myActionSheet.addAction(consonantsAction) - myActionSheet.addAction(cancelAction) - - // support iPads (popover view) - myActionSheet.popoverPresentationController?.sourceView = self.contentTypeButton - myActionSheet.popoverPresentationController?.sourceRect = self.contentTypeButton.bounds - - // present the action sheet - self.present(myActionSheet, animated: true, completion: nil) - } - - @IBAction func beginButtonTapped(_ sender: UIButton) { + @IBOutlet weak var numberOfQuestionsLabel: UILabel! + @IBOutlet weak var numberOfQuestionsSegControl: UISegmentedControl! + @IBOutlet weak var typeLabel: UILabel! + @IBOutlet weak var typeSegControl: UISegmentedControl! + @IBOutlet weak var beginButton: UIButton! - // save settings as defaults - let userDefaults = UserDefaults.standard - userDefaults.set(nameTextField.text, forKey: Key.name) - userDefaults.set(numberOfQuestions, forKey: Key.numberOfQuestions) - userDefaults.set(contentType.rawValue, forKey: Key.contentType) - - } - // MARK: - Overrides override func viewDidLoad() { super.viewDidLoad() - // get defaults from settings - - // name - let userDefaults = UserDefaults.standard - if let savedName = userDefaults.string(forKey: Key.name) { - name = savedName - } - // number of questions - let number = userDefaults.integer(forKey: Key.numberOfQuestions) - if number > 0 { - numberOfQuestions = number - } - // content type - if let type = ExamType(rawValue: userDefaults.integer(forKey: Key.contentType)) { - contentType = type - } - - - // update display with values + setLocalizedStrings() + + // update display with saved/default values + let (name, number, mode) = MyUserDefaults.getTestSetupPreferences() nameTextField.text = name - updateNumberOfQuestionsDisplay() - updateTypeButtonDisplay() + updateNumberOfQuestionsDisplay(number: number) + updateTypeButtonDisplay(mode: mode) // set textfield delegate nameTextField.delegate = self - + } + + override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + if let testVC = segue.destination as? TestViewController { + + // save settings as defaults + let name = getName() + let number = getSelectedNumberOfQuestions() + let mode = getSelectedMode() + MyUserDefaults.saveTestSetupPreferences( + name: name, number: number, mode: mode) + + testVC.userName = name + testVC.totalNumberOfQuestions = number + testVC.testMode = mode + } } // MARK: - UITextFieldDelegate protocol @@ -163,23 +59,67 @@ class TestSetupViewController: UIViewController, UITextFieldDelegate { // MARK: - Other methods - func updateNumberOfQuestionsDisplay() { - - self.numberOfQuestionsButton.setTitle("\(numberOfQuestions) questions", for: UIControlState()) + private func setLocalizedStrings() { + self.title = "main_tab_test".localized + nameTextField.placeholder = "test_setup_name".localized + numberOfQuestionsLabel.text = "test_setup_number_of_questions".localized + typeLabel.text = "test_setup_type".localized + typeSegControl.setTitle("test_setup_single".localized, forSegmentAt: 0) + typeSegControl.setTitle("test_setup_double".localized, forSegmentAt: 1) + beginButton.setTitle("test_setup_begin_button".localized, for: .normal) } - func updateTypeButtonDisplay() { - - switch contentType { - case ExamType.doubles: - self.contentTypeButton.setTitle("Double Sounds", for: UIControlState()) - case ExamType.singles: - self.contentTypeButton.setTitle("Single Sounds", for: UIControlState()) - case ExamType.vowelsOnly: - self.contentTypeButton.setTitle("Vowels Only", for: UIControlState()) - case ExamType.consonantsOnly: - self.contentTypeButton.setTitle("Consonants Only", for: UIControlState()) + func updateNumberOfQuestionsDisplay(number: Int) { + switch number { + case 5: + numberOfQuestionsSegControl.selectedSegmentIndex = 0 + case 10: + numberOfQuestionsSegControl.selectedSegmentIndex = 1 + case 25: + numberOfQuestionsSegControl.selectedSegmentIndex = 2 + case 50: + numberOfQuestionsSegControl.selectedSegmentIndex = 3 + case 100: + numberOfQuestionsSegControl.selectedSegmentIndex = 4 + default: + numberOfQuestionsSegControl.selectedSegmentIndex = 3 + } + } + + func updateTypeButtonDisplay(mode: SoundMode) { + switch mode { + case SoundMode.single: + typeSegControl.selectedSegmentIndex = 0 + case SoundMode.double: + typeSegControl.selectedSegmentIndex = 1 + } + } + + private func getName() -> String { + return nameTextField.text ?? "test_default_name".localized + } + + private func getSelectedNumberOfQuestions() -> Int { + let index = numberOfQuestionsSegControl.selectedSegmentIndex + guard let text = numberOfQuestionsSegControl.titleForSegment(at: index) else { + return MyUserDefaults.defaultNumberOfTestQuestions + } + guard let number = Int(text) else { + return MyUserDefaults.defaultNumberOfTestQuestions + } + return number + } + + private func getSelectedMode() -> SoundMode { + let index = typeSegControl.selectedSegmentIndex + switch index { + case 0: + return SoundMode.single + case 1: + return SoundMode.double + default: + return SoundMode.single } - } + } diff --git a/aePronunciation/TestViewController.swift b/aePronunciation/TestViewController.swift index 771d058..832b3ee 100644 --- a/aePronunciation/TestViewController.swift +++ b/aePronunciation/TestViewController.swift @@ -1,99 +1,82 @@ import UIKit -class TestViewController: UIViewController { +class TestViewController: UIViewController, KeyboardDelegate { + + var userName = "" + var testMode = MyUserDefaults.defaultTestMode + var totalNumberOfQuestions = MyUserDefaults.defaultNumberOfTestQuestions + + private var answers = [Answer]() + private let player = Player() + private let timer = StudyTimer.sharedInstance + private lazy var singleSound = SingleSound() + private lazy var doubleSound = DoubleSound() + private var currentIpa = "" + private var inputKeyCounter = 0 + private var readyForNewSound = true + private var questionNumber = 0 // zero based + private var startTime = Date().timeIntervalSince1970 - fileprivate var answers = [Answer]() - fileprivate let player = Player() - fileprivate lazy var singleSound = SingleSound() - fileprivate lazy var doubleSound = DoubleSound() - //private var singleMode = true // false == double mode - fileprivate var currentIpa = "" - fileprivate var inputKeyCounter = 0 - //private var readyForNewSound = false - //private var alreadyMadeWrongAnswerForThisIpa = false - fileprivate var questionNumber = 0 // zero based - fileprivate var totalNumberOfQuestions = -1 - fileprivate var examType = ExamType.doubles - fileprivate var startTime = Date() + static let testToResultsSegue = "testToResults" // MARK: - Outlets @IBOutlet weak var questionNumberLabel: UILabel! + @IBOutlet weak var testModeLabel: UILabel! @IBOutlet weak var inputWindow: UILabel! @IBOutlet weak var nextButton: UIButton! @IBOutlet weak var inputWindowView: UIView! + @IBOutlet weak var ipaKeyboard: IpaKeyboard! // MARK: - Actions @IBAction func playButtonTapped(_ sender: UIButton) { - playIpa(currentIpa) + if readyForNewSound { + prepareForNextSound() + } + playSound(currentIpa) } - @IBAction func keyTapped(_ sender: UIButton) { - - // get ipa String for key tapped - let ipaTap = sender.titleLabel?.text ?? "" - - if examType != ExamType.doubles { // singles - - inputWindow.text = ipaTap - nextButton.isHidden = false - - } else { // doubles - - inputKeyCounter += 1 - - if inputKeyCounter < 3 { - inputWindow.text = inputWindow.text! + ipaTap - } - - if inputKeyCounter > 1 { - nextButton.isHidden = false - } - } - + private func prepareForNextSound() { + currentIpa = getRandomIpa() + readyForNewSound = false + inputWindow.text = "" + questionNumberLabel.text = String(questionNumber + 1) } @IBAction func clearButtonTap(_ sender: UIButton) { - inputWindow.text = "" inputKeyCounter = 0 nextButton.isHidden = true } - - @IBAction func nextButtonTapped(_ sender: UIButton) { // record correct answer and user answer - let userAnswer = inputWindow.text! + let userAnswer = inputWindow.text ?? "" let thisAnswer = Answer(correctAnswer: currentIpa, userAnswer: userAnswer) answers.append(thisAnswer) // update display inputWindow.text = "" inputKeyCounter = 0 + readyForNewSound = true nextButton.isHidden = true questionNumber += 1 if questionNumber == totalNumberOfQuestions { - // TODO: Start Results View Controller with answers data - self.performSegue(withIdentifier: Segue.testToResults, sender: self) - + saveTestToDatabase() + self.performSegue(withIdentifier: TestViewController.testToResultsSegue, sender: self) } else { - - // play next sound - currentIpa = getRandomIpa() - playIpa(currentIpa) - - questionNumberLabel.text = String(questionNumber + 1) - + // auto play next sound + prepareForNextSound() + playSound(currentIpa) } } @@ -102,95 +85,161 @@ class TestViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad() - // Get values set in test setup - let userDefaults = UserDefaults.standard - - - - // number of questions - let number = userDefaults.integer(forKey: Key.numberOfQuestions) - if number > 0 { - totalNumberOfQuestions = number - } - // content type - if let type = ExamType(rawValue: userDefaults.integer(forKey: Key.contentType)) { - examType = type - } - - + ipaKeyboard.delegate = self + ipaKeyboard.mode = testMode // set up display inputWindow.text = "" inputWindowView.layer.borderWidth = 2.0 inputWindowView.layer.cornerRadius = 8 inputWindowView.layer.masksToBounds = true + + // set mode label + if testMode == SoundMode.single { + testModeLabel.text = "practice_mode_single".localized + } else { + testModeLabel.text = "practice_mode_double".localized + } + + // clear the back button item on the test results + self.navigationItem.backBarButtonItem = UIBarButtonItem(title:"", style:.plain, target:nil, action:nil) + + // question number questionNumberLabel.text = String(questionNumber + 1) - // play first sound - currentIpa = getRandomIpa() + // hide the next button nextButton.isHidden = true - playIpa(currentIpa) - + // listen for if the user leaves the app + NotificationCenter.default.addObserver(self, selector: #selector(appDidEnterBackground), name: NSNotification.Name.UIApplicationDidEnterBackground, object: nil) + NotificationCenter.default.addObserver(self, selector: #selector(appWillEnterForeground), name: NSNotification.Name.UIApplicationWillEnterForeground, object: nil) + } + + override func viewDidAppear(_ animated: Bool) { + super.viewDidAppear(animated) + startTiming() + } + + override func viewWillDisappear(_ animated: Bool) { + super.viewWillDisappear(animated) + timer.stop() + } + + @objc func appWillEnterForeground() { + if self.viewIfLoaded?.window != nil { + startTiming() + } + } + + @objc func appDidEnterBackground() { + if self.viewIfLoaded?.window != nil { + timer.stop() + } } override func prepare(for segue: UIStoryboardSegue, sender: Any?) { + if let testResultsVC = segue.destination as? TestResultsViewController { + testResultsVC.userName = userName + testResultsVC.answers = answers + testResultsVC.timeLength = getTestTime() + testResultsVC.testMode = testMode + } + } + + // MARK:- Keyboard Delegate + + func keyWasTapped(_ character: String) { + if readyForNewSound {return} + + inputKeyCounter += 1 - // pass the answers to the results view controller - let resultsViewController = segue.destination as! TestResultsViewController - resultsViewController.testAnswers = answers - resultsViewController.startTime = startTime - resultsViewController.examType = examType + if testMode == SoundMode.single { + inputWindow.text = character + } else if testMode == SoundMode.double && inputKeyCounter <= 2 { + let oldText = inputWindow.text ?? "" + let newText = oldText + character + inputWindow.text = newText + if oldText.isEmpty {return} + } + nextButton.isHidden = false } + func keyBackspace() {} + + // MARK: - Other methods + private func startTiming() { + if testMode == SoundMode.single { + timer.start(type: .testSingle) + } else { + timer.start(type: .testDouble) + } + } + func getRandomIpa() -> String { - - var randomIpa = "" - - // don't allow repeated ipa sounds + var ipa = "" repeat { - - switch examType { - case ExamType.singles: - - randomIpa = singleSound.getRandomIpa() - - case ExamType.vowelsOnly: - - randomIpa = singleSound.getRandomVowelIpa() - - case ExamType.consonantsOnly: - - randomIpa = singleSound.getRandomConsonantIpa() - - case ExamType.doubles: - - randomIpa = doubleSound.getRandomIpa() + if testMode == SoundMode.single { + ipa = singleSound.getRandomIpa() + } else { + ipa = doubleSound.getRandomIpa() } - - } while randomIpa == currentIpa - - return randomIpa + } while currentIpa == ipa // don't allow repeat sounds + return ipa + } + + func playSound(_ ipa: String) { + var fileName: String? + if testMode == SoundMode.single { + fileName = SingleSound.getSoundFileName(ipa: ipa) + } else { // double mode + fileName = DoubleSound.getSoundFileName(doubleSoundIpa: ipa) + } + if let name = fileName { + player.playSoundFrom(file: name) + } + } + + private func getTestTime() -> Int { + let endTime = Date().timeIntervalSince1970 + return Int(endTime - startTime) } - func playIpa(_ ipa: String) { + + + private func saveTestToDatabase() { - if examType == ExamType.doubles { - - if let fileName = doubleSound.fileNameForIpa(ipa) { - player.playSoundFromFile(fileName) + // save it in a background thread + DispatchQueue.global(qos: .background).async { + var name = self.userName + if name == "" { + name = "test_default_name".localized } - - } else { - - if let fileName = singleSound.fileNameForIpa(ipa) { - player.playSoundFromFile(fileName) + var correctAnswersConcat = "" + var userAnswersConcat = "" + for answer in self.answers { + if correctAnswersConcat != "" { + // comma separated values + correctAnswersConcat.append(",") + userAnswersConcat.append(",") + } + correctAnswersConcat.append(answer.correctAnswer) + userAnswersConcat.append(answer.userAnswer) } + let date = Int64(Date().timeIntervalSince1970) + let score = Test.getScorePercent(forAnswers: self.answers, testMode: self.testMode) + let test = Test( + id: -1, + username: name, + date: date, + timelength: Int64(self.getTestTime()), + mode: self.testMode, + score: Int64(score), + correctAnswers: correctAnswersConcat, + userAnswers: userAnswersConcat) + let db = SQLiteDatabase.instance + _ = db.addTest(test) } - } - - } diff --git a/aePronunciation/TimeViewController.swift b/aePronunciation/TimeViewController.swift new file mode 100644 index 0000000..3a37894 --- /dev/null +++ b/aePronunciation/TimeViewController.swift @@ -0,0 +1,87 @@ +import UIKit + +class TimeViewController: UIViewController { + + @IBOutlet weak var timeLearningTitle: UILabel! + @IBOutlet weak var timeLearningSinglesTitle: UILabel! + @IBOutlet weak var timeLearningDoublesTitle: UILabel! + @IBOutlet weak var timePracticingTitle: UILabel! + @IBOutlet weak var timePracticingSinglesTitle: UILabel! + @IBOutlet weak var timePracticingDoublesTitle: UILabel! + @IBOutlet weak var timeTestingTitle: UILabel! + @IBOutlet weak var timeTestingSinglesTitle: UILabel! + @IBOutlet weak var timeTestingDoublesTitle: UILabel! + @IBOutlet weak var totalTimeTitle: UILabel! + + @IBOutlet weak var timeLearning: UILabel! + @IBOutlet weak var timeLearningSingles: UILabel! + @IBOutlet weak var timeLearningDoubles: UILabel! + @IBOutlet weak var timePracticing: UILabel! + @IBOutlet weak var timePracticingSingles: UILabel! + @IBOutlet weak var timePracticingDoubles: UILabel! + @IBOutlet weak var timeTesting: UILabel! + @IBOutlet weak var timeTestingSingles: UILabel! + @IBOutlet weak var timeTestingDoubles: UILabel! + @IBOutlet weak var totalTime: UILabel! + + + + override func viewDidLoad() { + super.viewDidLoad() + + timeLearningTitle.text = "history_time_details_learning".localized + timeLearningSinglesTitle.text = "history_time_details_type_single".localized + timeLearningDoublesTitle.text = "history_time_details_type_double".localized + timePracticingTitle.text = "history_time_details_practicing".localized + timePracticingSinglesTitle.text = "history_time_details_type_single".localized + timePracticingDoublesTitle.text = "history_time_details_type_double".localized + timeTestingTitle.text = "history_time_details_testing".localized + timeTestingSinglesTitle.text = "history_time_details_type_single".localized + timeTestingDoublesTitle.text = "history_time_details_type_double".localized + totalTimeTitle.text = "history_time_details_total".localized + + + } + + override func viewDidAppear(_ animated: Bool) { + let secondsLearnSingle = MyUserDefaults.getSecondsLearningSingles() + let secondsLearnDouble = MyUserDefaults.getSecondsLearningDoubles() + let secondsPracticeSingle = MyUserDefaults.getSecondsPracticingSingles() + let secondsPracticeDouble = MyUserDefaults.getSecondsPracticingDoubles() + let secondsTestSingle = MyUserDefaults.getSecondsTestingSingles() + let secondsTestDouble = MyUserDefaults.getSecondsTestingDoubles() + let totalLearn = secondsLearnSingle + secondsLearnDouble + let totalPractice = secondsPracticeSingle + secondsPracticeDouble + let totalTest = secondsTestSingle + secondsTestDouble + let total = totalLearn + totalPractice + totalTest + + timeLearning.text = getFormattedString(seconds: totalLearn) + timeLearningSingles.text = getFormattedString(seconds: secondsLearnSingle) + timeLearningDoubles.text = getFormattedString(seconds: secondsLearnDouble) + timePracticing.text = getFormattedString(seconds: totalPractice) + timePracticingSingles.text = getFormattedString(seconds: secondsPracticeSingle) + timePracticingDoubles.text = getFormattedString(seconds: secondsPracticeDouble) + timeTesting.text = getFormattedString(seconds: totalTest) + timeTestingSingles.text = getFormattedString(seconds: secondsTestSingle) + timeTestingDoubles.text = getFormattedString(seconds: secondsTestDouble) + totalTime.text = getFormattedString(seconds: total) + } + + private func getFormattedString(seconds: Int) -> String { + let (hours, minutes, seconds) = secondsToHoursMinutesSeconds(seconds: seconds) + var minuteString = "\(minutes)" + if minutes < 10 { + minuteString = "0\(minutes)" + } + var secondsString = "\(seconds)" + if seconds < 10 { + secondsString = "0\(seconds)" + } + return "\(hours):\(minuteString):\(secondsString)" + } + + private func secondsToHoursMinutesSeconds (seconds : Int) -> (Int, Int, Int) { + return (seconds / 3600, (seconds % 3600) / 60, (seconds % 3600) % 60) + } + +} diff --git a/aePronunciation/UIColor+custom.swift b/aePronunciation/UIColor+custom.swift new file mode 100644 index 0000000..98da2cd --- /dev/null +++ b/aePronunciation/UIColor+custom.swift @@ -0,0 +1,18 @@ +import UIKit + +extension UIColor { + + class var rightGreen: UIColor { + return UIColor.rgb(fromHex: 0x249900) + } + + class func rgb(fromHex: Int) -> UIColor { + + let red = CGFloat((fromHex & 0xFF0000) >> 16) / 0xFF + let green = CGFloat((fromHex & 0x00FF00) >> 8) / 0xFF + let blue = CGFloat(fromHex & 0x0000FF) / 0xFF + let alpha = CGFloat(1.0) + + return UIColor(red: red, green: green, blue: blue, alpha: alpha) + } +} diff --git a/aePronunciation/raw/above.mp3 b/aePronunciation/raw/above.mp3 deleted file mode 100755 index c900bdb..0000000 Binary files a/aePronunciation/raw/above.mp3 and /dev/null differ diff --git a/aePronunciation/raw/again.mp3 b/aePronunciation/raw/again.mp3 deleted file mode 100755 index b95a299..0000000 Binary files a/aePronunciation/raw/again.mp3 and /dev/null differ diff --git a/aePronunciation/raw/age.mp3 b/aePronunciation/raw/age.mp3 deleted file mode 100755 index 68dd00d..0000000 Binary files a/aePronunciation/raw/age.mp3 and /dev/null differ diff --git a/aePronunciation/raw/agile.mp3 b/aePronunciation/raw/agile.mp3 deleted file mode 100755 index 1f4c970..0000000 Binary files a/aePronunciation/raw/agile.mp3 and /dev/null differ diff --git a/aePronunciation/raw/ahead.mp3 b/aePronunciation/raw/ahead.mp3 deleted file mode 100755 index 6b30681..0000000 Binary files a/aePronunciation/raw/ahead.mp3 and /dev/null differ diff --git a/aePronunciation/raw/aired.mp3 b/aePronunciation/raw/aired.mp3 deleted file mode 100755 index 197ecfc..0000000 Binary files a/aePronunciation/raw/aired.mp3 and /dev/null differ diff --git a/aePronunciation/raw/arm.mp3 b/aePronunciation/raw/arm.mp3 deleted file mode 100755 index 1380669..0000000 Binary files a/aePronunciation/raw/arm.mp3 and /dev/null differ diff --git a/aePronunciation/raw/ash.mp3 b/aePronunciation/raw/ash.mp3 deleted file mode 100755 index 1aa22ab..0000000 Binary files a/aePronunciation/raw/ash.mp3 and /dev/null differ diff --git a/aePronunciation/raw/bad.mp3 b/aePronunciation/raw/bad.mp3 deleted file mode 100755 index 2388786..0000000 Binary files a/aePronunciation/raw/bad.mp3 and /dev/null differ diff --git a/aePronunciation/raw/bat.mp3 b/aePronunciation/raw/bat.mp3 deleted file mode 100755 index 382f75f..0000000 Binary files a/aePronunciation/raw/bat.mp3 and /dev/null differ diff --git a/aePronunciation/raw/bathe.mp3 b/aePronunciation/raw/bathe.mp3 deleted file mode 100755 index 64c58c8..0000000 Binary files a/aePronunciation/raw/bathe.mp3 and /dev/null differ diff --git a/aePronunciation/raw/beige.mp3 b/aePronunciation/raw/beige.mp3 deleted file mode 100755 index 9c7fc17..0000000 Binary files a/aePronunciation/raw/beige.mp3 and /dev/null differ diff --git a/aePronunciation/raw/bill.mp3 b/aePronunciation/raw/bill.mp3 deleted file mode 100755 index b32e225..0000000 Binary files a/aePronunciation/raw/bill.mp3 and /dev/null differ diff --git a/aePronunciation/raw/birthday.mp3 b/aePronunciation/raw/birthday.mp3 deleted file mode 100755 index 33fa1f5..0000000 Binary files a/aePronunciation/raw/birthday.mp3 and /dev/null differ diff --git a/aePronunciation/raw/bite.mp3 b/aePronunciation/raw/bite.mp3 deleted file mode 100755 index dffb61c..0000000 Binary files a/aePronunciation/raw/bite.mp3 and /dev/null differ diff --git a/aePronunciation/raw/blue.mp3 b/aePronunciation/raw/blue.mp3 deleted file mode 100755 index 2a20e2c..0000000 Binary files a/aePronunciation/raw/blue.mp3 and /dev/null differ diff --git a/aePronunciation/raw/boy.mp3 b/aePronunciation/raw/boy.mp3 deleted file mode 100755 index 0ac73c1..0000000 Binary files a/aePronunciation/raw/boy.mp3 and /dev/null differ diff --git a/aePronunciation/raw/button.mp3 b/aePronunciation/raw/button.mp3 deleted file mode 100755 index 0f0ceda..0000000 Binary files a/aePronunciation/raw/button.mp3 and /dev/null differ diff --git a/aePronunciation/raw/call.mp3 b/aePronunciation/raw/call.mp3 deleted file mode 100755 index b2527b8..0000000 Binary files a/aePronunciation/raw/call.mp3 and /dev/null differ diff --git a/aePronunciation/raw/car.mp3 b/aePronunciation/raw/car.mp3 deleted file mode 100755 index a710c96..0000000 Binary files a/aePronunciation/raw/car.mp3 and /dev/null differ diff --git a/aePronunciation/raw/card.mp3 b/aePronunciation/raw/card.mp3 deleted file mode 100755 index 15b25ac..0000000 Binary files a/aePronunciation/raw/card.mp3 and /dev/null differ diff --git a/aePronunciation/raw/cards.mp3 b/aePronunciation/raw/cards.mp3 deleted file mode 100755 index b14fa6e..0000000 Binary files a/aePronunciation/raw/cards.mp3 and /dev/null differ diff --git a/aePronunciation/raw/cars.mp3 b/aePronunciation/raw/cars.mp3 deleted file mode 100755 index ffea419..0000000 Binary files a/aePronunciation/raw/cars.mp3 and /dev/null differ diff --git a/aePronunciation/raw/chairs.mp3 b/aePronunciation/raw/chairs.mp3 deleted file mode 100755 index 208ba18..0000000 Binary files a/aePronunciation/raw/chairs.mp3 and /dev/null differ diff --git a/aePronunciation/raw/church.mp3 b/aePronunciation/raw/church.mp3 deleted file mode 100755 index 064356d..0000000 Binary files a/aePronunciation/raw/church.mp3 and /dev/null differ diff --git a/aePronunciation/raw/cool.mp3 b/aePronunciation/raw/cool.mp3 deleted file mode 100755 index 247623c..0000000 Binary files a/aePronunciation/raw/cool.mp3 and /dev/null differ diff --git a/aePronunciation/raw/cove.mp3 b/aePronunciation/raw/cove.mp3 deleted file mode 100755 index 60ab445..0000000 Binary files a/aePronunciation/raw/cove.mp3 and /dev/null differ diff --git a/aePronunciation/raw/cow.mp3 b/aePronunciation/raw/cow.mp3 deleted file mode 100755 index 4a8c394..0000000 Binary files a/aePronunciation/raw/cow.mp3 and /dev/null differ diff --git a/aePronunciation/raw/cube.mp3 b/aePronunciation/raw/cube.mp3 deleted file mode 100755 index da75014..0000000 Binary files a/aePronunciation/raw/cube.mp3 and /dev/null differ diff --git a/aePronunciation/raw/delicious.mp3 b/aePronunciation/raw/delicious.mp3 deleted file mode 100755 index fa10773..0000000 Binary files a/aePronunciation/raw/delicious.mp3 and /dev/null differ diff --git a/aePronunciation/raw/double_a_b.mp3 b/aePronunciation/raw/double_a_b.mp3 new file mode 100755 index 0000000..f67f595 Binary files /dev/null and b/aePronunciation/raw/double_a_b.mp3 differ diff --git a/aePronunciation/raw/double_a_ch.mp3 b/aePronunciation/raw/double_a_ch.mp3 new file mode 100755 index 0000000..b3dd6d4 Binary files /dev/null and b/aePronunciation/raw/double_a_ch.mp3 differ diff --git a/aePronunciation/raw/double_a_d.mp3 b/aePronunciation/raw/double_a_d.mp3 new file mode 100755 index 0000000..a9946e2 Binary files /dev/null and b/aePronunciation/raw/double_a_d.mp3 differ diff --git a/aePronunciation/raw/double_a_dzh.mp3 b/aePronunciation/raw/double_a_dzh.mp3 new file mode 100755 index 0000000..63c8ca7 Binary files /dev/null and b/aePronunciation/raw/double_a_dzh.mp3 differ diff --git a/aePronunciation/raw/double_a_f.mp3 b/aePronunciation/raw/double_a_f.mp3 new file mode 100755 index 0000000..338a9f5 Binary files /dev/null and b/aePronunciation/raw/double_a_f.mp3 differ diff --git a/aePronunciation/raw/double_a_flap_shwua.mp3 b/aePronunciation/raw/double_a_flap_shwua.mp3 new file mode 100755 index 0000000..bf23274 Binary files /dev/null and b/aePronunciation/raw/double_a_flap_shwua.mp3 differ diff --git a/aePronunciation/raw/double_a_g.mp3 b/aePronunciation/raw/double_a_g.mp3 new file mode 100755 index 0000000..af9378c Binary files /dev/null and b/aePronunciation/raw/double_a_g.mp3 differ diff --git a/aePronunciation/raw/double_a_glottal.mp3 b/aePronunciation/raw/double_a_glottal.mp3 new file mode 100755 index 0000000..b5140ec Binary files /dev/null and b/aePronunciation/raw/double_a_glottal.mp3 differ diff --git a/aePronunciation/raw/double_a_k.mp3 b/aePronunciation/raw/double_a_k.mp3 new file mode 100755 index 0000000..9890e85 Binary files /dev/null and b/aePronunciation/raw/double_a_k.mp3 differ diff --git a/aePronunciation/raw/double_a_l.mp3 b/aePronunciation/raw/double_a_l.mp3 new file mode 100755 index 0000000..d3a32a8 Binary files /dev/null and b/aePronunciation/raw/double_a_l.mp3 differ diff --git a/aePronunciation/raw/double_a_m.mp3 b/aePronunciation/raw/double_a_m.mp3 new file mode 100755 index 0000000..6ae0f64 Binary files /dev/null and b/aePronunciation/raw/double_a_m.mp3 differ diff --git a/aePronunciation/raw/double_a_n.mp3 b/aePronunciation/raw/double_a_n.mp3 new file mode 100755 index 0000000..794f9db Binary files /dev/null and b/aePronunciation/raw/double_a_n.mp3 differ diff --git a/aePronunciation/raw/double_a_ng.mp3 b/aePronunciation/raw/double_a_ng.mp3 new file mode 100755 index 0000000..3da3d03 Binary files /dev/null and b/aePronunciation/raw/double_a_ng.mp3 differ diff --git a/aePronunciation/raw/double_a_p.mp3 b/aePronunciation/raw/double_a_p.mp3 new file mode 100755 index 0000000..51a49cc Binary files /dev/null and b/aePronunciation/raw/double_a_p.mp3 differ diff --git a/aePronunciation/raw/double_a_s.mp3 b/aePronunciation/raw/double_a_s.mp3 new file mode 100755 index 0000000..d6c6f54 Binary files /dev/null and b/aePronunciation/raw/double_a_s.mp3 differ diff --git a/aePronunciation/raw/double_a_sh.mp3 b/aePronunciation/raw/double_a_sh.mp3 new file mode 100755 index 0000000..7f78d2c Binary files /dev/null and b/aePronunciation/raw/double_a_sh.mp3 differ diff --git a/aePronunciation/raw/double_a_t.mp3 b/aePronunciation/raw/double_a_t.mp3 new file mode 100755 index 0000000..5c2f94d Binary files /dev/null and b/aePronunciation/raw/double_a_t.mp3 differ diff --git a/aePronunciation/raw/double_a_th.mp3 b/aePronunciation/raw/double_a_th.mp3 new file mode 100755 index 0000000..4bbf577 Binary files /dev/null and b/aePronunciation/raw/double_a_th.mp3 differ diff --git a/aePronunciation/raw/double_a_thv.mp3 b/aePronunciation/raw/double_a_thv.mp3 new file mode 100755 index 0000000..564781f Binary files /dev/null and b/aePronunciation/raw/double_a_thv.mp3 differ diff --git a/aePronunciation/raw/double_a_v.mp3 b/aePronunciation/raw/double_a_v.mp3 new file mode 100755 index 0000000..b4d72e4 Binary files /dev/null and b/aePronunciation/raw/double_a_v.mp3 differ diff --git a/aePronunciation/raw/double_a_z.mp3 b/aePronunciation/raw/double_a_z.mp3 new file mode 100755 index 0000000..13c643c Binary files /dev/null and b/aePronunciation/raw/double_a_z.mp3 differ diff --git a/aePronunciation/raw/double_a_zh.mp3 b/aePronunciation/raw/double_a_zh.mp3 new file mode 100755 index 0000000..c8ae1ba Binary files /dev/null and b/aePronunciation/raw/double_a_zh.mp3 differ diff --git a/aePronunciation/raw/double_ae_b.mp3 b/aePronunciation/raw/double_ae_b.mp3 new file mode 100755 index 0000000..ce68d54 Binary files /dev/null and b/aePronunciation/raw/double_ae_b.mp3 differ diff --git a/aePronunciation/raw/double_ae_ch.mp3 b/aePronunciation/raw/double_ae_ch.mp3 new file mode 100755 index 0000000..a07ed2a Binary files /dev/null and b/aePronunciation/raw/double_ae_ch.mp3 differ diff --git a/aePronunciation/raw/double_ae_d.mp3 b/aePronunciation/raw/double_ae_d.mp3 new file mode 100755 index 0000000..b88ce00 Binary files /dev/null and b/aePronunciation/raw/double_ae_d.mp3 differ diff --git a/aePronunciation/raw/double_ae_dzh.mp3 b/aePronunciation/raw/double_ae_dzh.mp3 new file mode 100755 index 0000000..c70d06c Binary files /dev/null and b/aePronunciation/raw/double_ae_dzh.mp3 differ diff --git a/aePronunciation/raw/double_ae_f.mp3 b/aePronunciation/raw/double_ae_f.mp3 new file mode 100755 index 0000000..5cf7813 Binary files /dev/null and b/aePronunciation/raw/double_ae_f.mp3 differ diff --git a/aePronunciation/raw/double_ae_flap_shwua.mp3 b/aePronunciation/raw/double_ae_flap_shwua.mp3 new file mode 100755 index 0000000..f0f554f Binary files /dev/null and b/aePronunciation/raw/double_ae_flap_shwua.mp3 differ diff --git a/aePronunciation/raw/double_ae_g.mp3 b/aePronunciation/raw/double_ae_g.mp3 new file mode 100755 index 0000000..f7e43ea Binary files /dev/null and b/aePronunciation/raw/double_ae_g.mp3 differ diff --git a/aePronunciation/raw/double_ae_glottal.mp3 b/aePronunciation/raw/double_ae_glottal.mp3 new file mode 100755 index 0000000..087b1ed Binary files /dev/null and b/aePronunciation/raw/double_ae_glottal.mp3 differ diff --git a/aePronunciation/raw/double_ae_k.mp3 b/aePronunciation/raw/double_ae_k.mp3 new file mode 100755 index 0000000..ab3ecdb Binary files /dev/null and b/aePronunciation/raw/double_ae_k.mp3 differ diff --git a/aePronunciation/raw/double_ae_l.mp3 b/aePronunciation/raw/double_ae_l.mp3 new file mode 100755 index 0000000..208bedd Binary files /dev/null and b/aePronunciation/raw/double_ae_l.mp3 differ diff --git a/aePronunciation/raw/double_ae_m.mp3 b/aePronunciation/raw/double_ae_m.mp3 new file mode 100755 index 0000000..9ccb34c Binary files /dev/null and b/aePronunciation/raw/double_ae_m.mp3 differ diff --git a/aePronunciation/raw/double_ae_n.mp3 b/aePronunciation/raw/double_ae_n.mp3 new file mode 100755 index 0000000..66fc83d Binary files /dev/null and b/aePronunciation/raw/double_ae_n.mp3 differ diff --git a/aePronunciation/raw/double_ae_ng.mp3 b/aePronunciation/raw/double_ae_ng.mp3 new file mode 100755 index 0000000..b7878da Binary files /dev/null and b/aePronunciation/raw/double_ae_ng.mp3 differ diff --git a/aePronunciation/raw/double_ae_p.mp3 b/aePronunciation/raw/double_ae_p.mp3 new file mode 100755 index 0000000..229842e Binary files /dev/null and b/aePronunciation/raw/double_ae_p.mp3 differ diff --git a/aePronunciation/raw/double_ae_s.mp3 b/aePronunciation/raw/double_ae_s.mp3 new file mode 100755 index 0000000..e43252c Binary files /dev/null and b/aePronunciation/raw/double_ae_s.mp3 differ diff --git a/aePronunciation/raw/double_ae_sh.mp3 b/aePronunciation/raw/double_ae_sh.mp3 new file mode 100755 index 0000000..8d35dd6 Binary files /dev/null and b/aePronunciation/raw/double_ae_sh.mp3 differ diff --git a/aePronunciation/raw/double_ae_t.mp3 b/aePronunciation/raw/double_ae_t.mp3 new file mode 100755 index 0000000..284de33 Binary files /dev/null and b/aePronunciation/raw/double_ae_t.mp3 differ diff --git a/aePronunciation/raw/double_ae_th.mp3 b/aePronunciation/raw/double_ae_th.mp3 new file mode 100755 index 0000000..e084565 Binary files /dev/null and b/aePronunciation/raw/double_ae_th.mp3 differ diff --git a/aePronunciation/raw/double_ae_thv.mp3 b/aePronunciation/raw/double_ae_thv.mp3 new file mode 100755 index 0000000..425efd9 Binary files /dev/null and b/aePronunciation/raw/double_ae_thv.mp3 differ diff --git a/aePronunciation/raw/double_ae_v.mp3 b/aePronunciation/raw/double_ae_v.mp3 new file mode 100755 index 0000000..ae8599f Binary files /dev/null and b/aePronunciation/raw/double_ae_v.mp3 differ diff --git a/aePronunciation/raw/double_ae_z.mp3 b/aePronunciation/raw/double_ae_z.mp3 new file mode 100755 index 0000000..213e991 Binary files /dev/null and b/aePronunciation/raw/double_ae_z.mp3 differ diff --git a/aePronunciation/raw/double_ae_zh.mp3 b/aePronunciation/raw/double_ae_zh.mp3 new file mode 100755 index 0000000..8f56f59 Binary files /dev/null and b/aePronunciation/raw/double_ae_zh.mp3 differ diff --git a/aePronunciation/raw/double_ai_b.mp3 b/aePronunciation/raw/double_ai_b.mp3 new file mode 100755 index 0000000..77a8426 Binary files /dev/null and b/aePronunciation/raw/double_ai_b.mp3 differ diff --git a/aePronunciation/raw/double_ai_ch.mp3 b/aePronunciation/raw/double_ai_ch.mp3 new file mode 100755 index 0000000..0e4d292 Binary files /dev/null and b/aePronunciation/raw/double_ai_ch.mp3 differ diff --git a/aePronunciation/raw/double_ai_d.mp3 b/aePronunciation/raw/double_ai_d.mp3 new file mode 100755 index 0000000..559f66f Binary files /dev/null and b/aePronunciation/raw/double_ai_d.mp3 differ diff --git a/aePronunciation/raw/double_ai_dzh.mp3 b/aePronunciation/raw/double_ai_dzh.mp3 new file mode 100755 index 0000000..c1a488b Binary files /dev/null and b/aePronunciation/raw/double_ai_dzh.mp3 differ diff --git a/aePronunciation/raw/double_ai_f.mp3 b/aePronunciation/raw/double_ai_f.mp3 new file mode 100755 index 0000000..64a3d3b Binary files /dev/null and b/aePronunciation/raw/double_ai_f.mp3 differ diff --git a/aePronunciation/raw/double_ai_flap_shwua.mp3 b/aePronunciation/raw/double_ai_flap_shwua.mp3 new file mode 100755 index 0000000..de52afe Binary files /dev/null and b/aePronunciation/raw/double_ai_flap_shwua.mp3 differ diff --git a/aePronunciation/raw/double_ai_g.mp3 b/aePronunciation/raw/double_ai_g.mp3 new file mode 100755 index 0000000..bb4460d Binary files /dev/null and b/aePronunciation/raw/double_ai_g.mp3 differ diff --git a/aePronunciation/raw/double_ai_glottal.mp3 b/aePronunciation/raw/double_ai_glottal.mp3 new file mode 100755 index 0000000..9d5919f Binary files /dev/null and b/aePronunciation/raw/double_ai_glottal.mp3 differ diff --git a/aePronunciation/raw/double_ai_k.mp3 b/aePronunciation/raw/double_ai_k.mp3 new file mode 100755 index 0000000..b8b3c54 Binary files /dev/null and b/aePronunciation/raw/double_ai_k.mp3 differ diff --git a/aePronunciation/raw/double_ai_l.mp3 b/aePronunciation/raw/double_ai_l.mp3 new file mode 100755 index 0000000..092ff95 Binary files /dev/null and b/aePronunciation/raw/double_ai_l.mp3 differ diff --git a/aePronunciation/raw/double_ai_m.mp3 b/aePronunciation/raw/double_ai_m.mp3 new file mode 100755 index 0000000..2e6c3c7 Binary files /dev/null and b/aePronunciation/raw/double_ai_m.mp3 differ diff --git a/aePronunciation/raw/double_ai_n.mp3 b/aePronunciation/raw/double_ai_n.mp3 new file mode 100755 index 0000000..de316ed Binary files /dev/null and b/aePronunciation/raw/double_ai_n.mp3 differ diff --git a/aePronunciation/raw/double_ai_ng.mp3 b/aePronunciation/raw/double_ai_ng.mp3 new file mode 100755 index 0000000..7509fb6 Binary files /dev/null and b/aePronunciation/raw/double_ai_ng.mp3 differ diff --git a/aePronunciation/raw/double_ai_p.mp3 b/aePronunciation/raw/double_ai_p.mp3 new file mode 100755 index 0000000..e967bed Binary files /dev/null and b/aePronunciation/raw/double_ai_p.mp3 differ diff --git a/aePronunciation/raw/double_ai_s.mp3 b/aePronunciation/raw/double_ai_s.mp3 new file mode 100755 index 0000000..411b44d Binary files /dev/null and b/aePronunciation/raw/double_ai_s.mp3 differ diff --git a/aePronunciation/raw/double_ai_sh.mp3 b/aePronunciation/raw/double_ai_sh.mp3 new file mode 100755 index 0000000..8b094df Binary files /dev/null and b/aePronunciation/raw/double_ai_sh.mp3 differ diff --git a/aePronunciation/raw/double_ai_t.mp3 b/aePronunciation/raw/double_ai_t.mp3 new file mode 100755 index 0000000..9440969 Binary files /dev/null and b/aePronunciation/raw/double_ai_t.mp3 differ diff --git a/aePronunciation/raw/double_ai_th.mp3 b/aePronunciation/raw/double_ai_th.mp3 new file mode 100755 index 0000000..cd722c0 Binary files /dev/null and b/aePronunciation/raw/double_ai_th.mp3 differ diff --git a/aePronunciation/raw/double_ai_thv.mp3 b/aePronunciation/raw/double_ai_thv.mp3 new file mode 100755 index 0000000..345dadf Binary files /dev/null and b/aePronunciation/raw/double_ai_thv.mp3 differ diff --git a/aePronunciation/raw/double_ai_v.mp3 b/aePronunciation/raw/double_ai_v.mp3 new file mode 100755 index 0000000..5c67a4b Binary files /dev/null and b/aePronunciation/raw/double_ai_v.mp3 differ diff --git a/aePronunciation/raw/double_ai_z.mp3 b/aePronunciation/raw/double_ai_z.mp3 new file mode 100755 index 0000000..54161c0 Binary files /dev/null and b/aePronunciation/raw/double_ai_z.mp3 differ diff --git a/aePronunciation/raw/double_ai_zh.mp3 b/aePronunciation/raw/double_ai_zh.mp3 new file mode 100755 index 0000000..1753724 Binary files /dev/null and b/aePronunciation/raw/double_ai_zh.mp3 differ diff --git a/aePronunciation/raw/double_ar_b.mp3 b/aePronunciation/raw/double_ar_b.mp3 new file mode 100755 index 0000000..738e75a Binary files /dev/null and b/aePronunciation/raw/double_ar_b.mp3 differ diff --git a/aePronunciation/raw/double_ar_ch.mp3 b/aePronunciation/raw/double_ar_ch.mp3 new file mode 100755 index 0000000..f4be20d Binary files /dev/null and b/aePronunciation/raw/double_ar_ch.mp3 differ diff --git a/aePronunciation/raw/double_ar_d.mp3 b/aePronunciation/raw/double_ar_d.mp3 new file mode 100755 index 0000000..2aef5f4 Binary files /dev/null and b/aePronunciation/raw/double_ar_d.mp3 differ diff --git a/aePronunciation/raw/double_ar_dzh.mp3 b/aePronunciation/raw/double_ar_dzh.mp3 new file mode 100755 index 0000000..7bfa76e Binary files /dev/null and b/aePronunciation/raw/double_ar_dzh.mp3 differ diff --git a/aePronunciation/raw/double_ar_f.mp3 b/aePronunciation/raw/double_ar_f.mp3 new file mode 100755 index 0000000..d416522 Binary files /dev/null and b/aePronunciation/raw/double_ar_f.mp3 differ diff --git a/aePronunciation/raw/double_ar_flap_shwua.mp3 b/aePronunciation/raw/double_ar_flap_shwua.mp3 new file mode 100755 index 0000000..244e19c Binary files /dev/null and b/aePronunciation/raw/double_ar_flap_shwua.mp3 differ diff --git a/aePronunciation/raw/double_ar_g.mp3 b/aePronunciation/raw/double_ar_g.mp3 new file mode 100755 index 0000000..0b70a4c Binary files /dev/null and b/aePronunciation/raw/double_ar_g.mp3 differ diff --git a/aePronunciation/raw/double_ar_glottal.mp3 b/aePronunciation/raw/double_ar_glottal.mp3 new file mode 100755 index 0000000..0a2e7e9 Binary files /dev/null and b/aePronunciation/raw/double_ar_glottal.mp3 differ diff --git a/aePronunciation/raw/double_ar_k.mp3 b/aePronunciation/raw/double_ar_k.mp3 new file mode 100755 index 0000000..ad1744d Binary files /dev/null and b/aePronunciation/raw/double_ar_k.mp3 differ diff --git a/aePronunciation/raw/double_ar_l.mp3 b/aePronunciation/raw/double_ar_l.mp3 new file mode 100755 index 0000000..df60058 Binary files /dev/null and b/aePronunciation/raw/double_ar_l.mp3 differ diff --git a/aePronunciation/raw/double_ar_m.mp3 b/aePronunciation/raw/double_ar_m.mp3 new file mode 100755 index 0000000..61f49eb Binary files /dev/null and b/aePronunciation/raw/double_ar_m.mp3 differ diff --git a/aePronunciation/raw/double_ar_n.mp3 b/aePronunciation/raw/double_ar_n.mp3 new file mode 100755 index 0000000..b815585 Binary files /dev/null and b/aePronunciation/raw/double_ar_n.mp3 differ diff --git a/aePronunciation/raw/double_ar_ng.mp3 b/aePronunciation/raw/double_ar_ng.mp3 new file mode 100755 index 0000000..9e3d8ad Binary files /dev/null and b/aePronunciation/raw/double_ar_ng.mp3 differ diff --git a/aePronunciation/raw/double_ar_p.mp3 b/aePronunciation/raw/double_ar_p.mp3 new file mode 100755 index 0000000..afdd9df Binary files /dev/null and b/aePronunciation/raw/double_ar_p.mp3 differ diff --git a/aePronunciation/raw/double_ar_s.mp3 b/aePronunciation/raw/double_ar_s.mp3 new file mode 100755 index 0000000..d80a8dd Binary files /dev/null and b/aePronunciation/raw/double_ar_s.mp3 differ diff --git a/aePronunciation/raw/double_ar_sh.mp3 b/aePronunciation/raw/double_ar_sh.mp3 new file mode 100755 index 0000000..444936c Binary files /dev/null and b/aePronunciation/raw/double_ar_sh.mp3 differ diff --git a/aePronunciation/raw/double_ar_t.mp3 b/aePronunciation/raw/double_ar_t.mp3 new file mode 100755 index 0000000..1283b35 Binary files /dev/null and b/aePronunciation/raw/double_ar_t.mp3 differ diff --git a/aePronunciation/raw/double_ar_th.mp3 b/aePronunciation/raw/double_ar_th.mp3 new file mode 100755 index 0000000..9aacf31 Binary files /dev/null and b/aePronunciation/raw/double_ar_th.mp3 differ diff --git a/aePronunciation/raw/double_ar_thv.mp3 b/aePronunciation/raw/double_ar_thv.mp3 new file mode 100755 index 0000000..c944dd0 Binary files /dev/null and b/aePronunciation/raw/double_ar_thv.mp3 differ diff --git a/aePronunciation/raw/double_ar_v.mp3 b/aePronunciation/raw/double_ar_v.mp3 new file mode 100755 index 0000000..be3a983 Binary files /dev/null and b/aePronunciation/raw/double_ar_v.mp3 differ diff --git a/aePronunciation/raw/double_ar_z.mp3 b/aePronunciation/raw/double_ar_z.mp3 new file mode 100755 index 0000000..df9fb70 Binary files /dev/null and b/aePronunciation/raw/double_ar_z.mp3 differ diff --git a/aePronunciation/raw/double_ar_zh.mp3 b/aePronunciation/raw/double_ar_zh.mp3 new file mode 100755 index 0000000..ac3e70d Binary files /dev/null and b/aePronunciation/raw/double_ar_zh.mp3 differ diff --git a/aePronunciation/raw/double_au_b.mp3 b/aePronunciation/raw/double_au_b.mp3 new file mode 100755 index 0000000..b848a17 Binary files /dev/null and b/aePronunciation/raw/double_au_b.mp3 differ diff --git a/aePronunciation/raw/double_au_ch.mp3 b/aePronunciation/raw/double_au_ch.mp3 new file mode 100755 index 0000000..1f97f09 Binary files /dev/null and b/aePronunciation/raw/double_au_ch.mp3 differ diff --git a/aePronunciation/raw/double_au_d.mp3 b/aePronunciation/raw/double_au_d.mp3 new file mode 100755 index 0000000..d2edcef Binary files /dev/null and b/aePronunciation/raw/double_au_d.mp3 differ diff --git a/aePronunciation/raw/double_au_dzh.mp3 b/aePronunciation/raw/double_au_dzh.mp3 new file mode 100755 index 0000000..34ec772 Binary files /dev/null and b/aePronunciation/raw/double_au_dzh.mp3 differ diff --git a/aePronunciation/raw/double_au_f.mp3 b/aePronunciation/raw/double_au_f.mp3 new file mode 100755 index 0000000..d41b4be Binary files /dev/null and b/aePronunciation/raw/double_au_f.mp3 differ diff --git a/aePronunciation/raw/double_au_flap_shwua.mp3 b/aePronunciation/raw/double_au_flap_shwua.mp3 new file mode 100755 index 0000000..6c1ce17 Binary files /dev/null and b/aePronunciation/raw/double_au_flap_shwua.mp3 differ diff --git a/aePronunciation/raw/double_au_g.mp3 b/aePronunciation/raw/double_au_g.mp3 new file mode 100755 index 0000000..25c164e Binary files /dev/null and b/aePronunciation/raw/double_au_g.mp3 differ diff --git a/aePronunciation/raw/double_au_glottal.mp3 b/aePronunciation/raw/double_au_glottal.mp3 new file mode 100755 index 0000000..8fe77b0 Binary files /dev/null and b/aePronunciation/raw/double_au_glottal.mp3 differ diff --git a/aePronunciation/raw/double_au_k.mp3 b/aePronunciation/raw/double_au_k.mp3 new file mode 100755 index 0000000..f54b51e Binary files /dev/null and b/aePronunciation/raw/double_au_k.mp3 differ diff --git a/aePronunciation/raw/double_au_l.mp3 b/aePronunciation/raw/double_au_l.mp3 new file mode 100755 index 0000000..a8dc1ce Binary files /dev/null and b/aePronunciation/raw/double_au_l.mp3 differ diff --git a/aePronunciation/raw/double_au_m.mp3 b/aePronunciation/raw/double_au_m.mp3 new file mode 100755 index 0000000..0402172 Binary files /dev/null and b/aePronunciation/raw/double_au_m.mp3 differ diff --git a/aePronunciation/raw/double_au_n.mp3 b/aePronunciation/raw/double_au_n.mp3 new file mode 100755 index 0000000..512d403 Binary files /dev/null and b/aePronunciation/raw/double_au_n.mp3 differ diff --git a/aePronunciation/raw/double_au_ng.mp3 b/aePronunciation/raw/double_au_ng.mp3 new file mode 100755 index 0000000..a8314c1 Binary files /dev/null and b/aePronunciation/raw/double_au_ng.mp3 differ diff --git a/aePronunciation/raw/double_au_p.mp3 b/aePronunciation/raw/double_au_p.mp3 new file mode 100755 index 0000000..14d66a7 Binary files /dev/null and b/aePronunciation/raw/double_au_p.mp3 differ diff --git a/aePronunciation/raw/double_au_s.mp3 b/aePronunciation/raw/double_au_s.mp3 new file mode 100755 index 0000000..ee92c43 Binary files /dev/null and b/aePronunciation/raw/double_au_s.mp3 differ diff --git a/aePronunciation/raw/double_au_sh.mp3 b/aePronunciation/raw/double_au_sh.mp3 new file mode 100755 index 0000000..6921f0e Binary files /dev/null and b/aePronunciation/raw/double_au_sh.mp3 differ diff --git a/aePronunciation/raw/double_au_t.mp3 b/aePronunciation/raw/double_au_t.mp3 new file mode 100755 index 0000000..aa545bb Binary files /dev/null and b/aePronunciation/raw/double_au_t.mp3 differ diff --git a/aePronunciation/raw/double_au_th.mp3 b/aePronunciation/raw/double_au_th.mp3 new file mode 100755 index 0000000..be4e472 Binary files /dev/null and b/aePronunciation/raw/double_au_th.mp3 differ diff --git a/aePronunciation/raw/double_au_thv.mp3 b/aePronunciation/raw/double_au_thv.mp3 new file mode 100755 index 0000000..0132b7b Binary files /dev/null and b/aePronunciation/raw/double_au_thv.mp3 differ diff --git a/aePronunciation/raw/double_au_v.mp3 b/aePronunciation/raw/double_au_v.mp3 new file mode 100755 index 0000000..db42a12 Binary files /dev/null and b/aePronunciation/raw/double_au_v.mp3 differ diff --git a/aePronunciation/raw/double_au_z.mp3 b/aePronunciation/raw/double_au_z.mp3 new file mode 100755 index 0000000..16aad93 Binary files /dev/null and b/aePronunciation/raw/double_au_z.mp3 differ diff --git a/aePronunciation/raw/double_au_zh.mp3 b/aePronunciation/raw/double_au_zh.mp3 new file mode 100755 index 0000000..38945f7 Binary files /dev/null and b/aePronunciation/raw/double_au_zh.mp3 differ diff --git a/aePronunciation/raw/double_b_a.mp3 b/aePronunciation/raw/double_b_a.mp3 new file mode 100755 index 0000000..51bebbf Binary files /dev/null and b/aePronunciation/raw/double_b_a.mp3 differ diff --git a/aePronunciation/raw/double_b_ae.mp3 b/aePronunciation/raw/double_b_ae.mp3 new file mode 100755 index 0000000..f90856b Binary files /dev/null and b/aePronunciation/raw/double_b_ae.mp3 differ diff --git a/aePronunciation/raw/double_b_ai.mp3 b/aePronunciation/raw/double_b_ai.mp3 new file mode 100755 index 0000000..a5c88b5 Binary files /dev/null and b/aePronunciation/raw/double_b_ai.mp3 differ diff --git a/aePronunciation/raw/double_b_ar.mp3 b/aePronunciation/raw/double_b_ar.mp3 new file mode 100755 index 0000000..8061beb Binary files /dev/null and b/aePronunciation/raw/double_b_ar.mp3 differ diff --git a/aePronunciation/raw/double_b_au.mp3 b/aePronunciation/raw/double_b_au.mp3 new file mode 100755 index 0000000..cb989ba Binary files /dev/null and b/aePronunciation/raw/double_b_au.mp3 differ diff --git a/aePronunciation/raw/double_b_c.mp3 b/aePronunciation/raw/double_b_c.mp3 new file mode 100755 index 0000000..201fbe5 Binary files /dev/null and b/aePronunciation/raw/double_b_c.mp3 differ diff --git a/aePronunciation/raw/double_b_e.mp3 b/aePronunciation/raw/double_b_e.mp3 new file mode 100755 index 0000000..b7d9b43 Binary files /dev/null and b/aePronunciation/raw/double_b_e.mp3 differ diff --git a/aePronunciation/raw/double_b_ei.mp3 b/aePronunciation/raw/double_b_ei.mp3 new file mode 100755 index 0000000..3ccf470 Binary files /dev/null and b/aePronunciation/raw/double_b_ei.mp3 differ diff --git a/aePronunciation/raw/double_b_er.mp3 b/aePronunciation/raw/double_b_er.mp3 new file mode 100755 index 0000000..12a6ec8 Binary files /dev/null and b/aePronunciation/raw/double_b_er.mp3 differ diff --git a/aePronunciation/raw/double_b_ers.mp3 b/aePronunciation/raw/double_b_ers.mp3 new file mode 100755 index 0000000..0067d85 Binary files /dev/null and b/aePronunciation/raw/double_b_ers.mp3 differ diff --git a/aePronunciation/raw/double_b_eru.mp3 b/aePronunciation/raw/double_b_eru.mp3 new file mode 100755 index 0000000..422f947 Binary files /dev/null and b/aePronunciation/raw/double_b_eru.mp3 differ diff --git a/aePronunciation/raw/double_b_i.mp3 b/aePronunciation/raw/double_b_i.mp3 new file mode 100755 index 0000000..9bd8091 Binary files /dev/null and b/aePronunciation/raw/double_b_i.mp3 differ diff --git a/aePronunciation/raw/double_b_ir.mp3 b/aePronunciation/raw/double_b_ir.mp3 new file mode 100755 index 0000000..b1d689b Binary files /dev/null and b/aePronunciation/raw/double_b_ir.mp3 differ diff --git a/aePronunciation/raw/double_b_is.mp3 b/aePronunciation/raw/double_b_is.mp3 new file mode 100755 index 0000000..223f7fd Binary files /dev/null and b/aePronunciation/raw/double_b_is.mp3 differ diff --git a/aePronunciation/raw/double_b_oi.mp3 b/aePronunciation/raw/double_b_oi.mp3 new file mode 100755 index 0000000..0b281ce Binary files /dev/null and b/aePronunciation/raw/double_b_oi.mp3 differ diff --git a/aePronunciation/raw/double_b_or.mp3 b/aePronunciation/raw/double_b_or.mp3 new file mode 100755 index 0000000..07f426f Binary files /dev/null and b/aePronunciation/raw/double_b_or.mp3 differ diff --git a/aePronunciation/raw/double_b_ou.mp3 b/aePronunciation/raw/double_b_ou.mp3 new file mode 100755 index 0000000..ccd7ce8 Binary files /dev/null and b/aePronunciation/raw/double_b_ou.mp3 differ diff --git a/aePronunciation/raw/double_b_shwua.mp3 b/aePronunciation/raw/double_b_shwua.mp3 new file mode 100755 index 0000000..34fc4bd Binary files /dev/null and b/aePronunciation/raw/double_b_shwua.mp3 differ diff --git a/aePronunciation/raw/double_b_u.mp3 b/aePronunciation/raw/double_b_u.mp3 new file mode 100755 index 0000000..f0b24f1 Binary files /dev/null and b/aePronunciation/raw/double_b_u.mp3 differ diff --git a/aePronunciation/raw/double_b_us.mp3 b/aePronunciation/raw/double_b_us.mp3 new file mode 100755 index 0000000..7824401 Binary files /dev/null and b/aePronunciation/raw/double_b_us.mp3 differ diff --git a/aePronunciation/raw/double_b_vu.mp3 b/aePronunciation/raw/double_b_vu.mp3 new file mode 100755 index 0000000..3bfb02e Binary files /dev/null and b/aePronunciation/raw/double_b_vu.mp3 differ diff --git a/aePronunciation/raw/double_c_b.mp3 b/aePronunciation/raw/double_c_b.mp3 new file mode 100755 index 0000000..485ffe2 Binary files /dev/null and b/aePronunciation/raw/double_c_b.mp3 differ diff --git a/aePronunciation/raw/double_c_ch.mp3 b/aePronunciation/raw/double_c_ch.mp3 new file mode 100755 index 0000000..7543ee5 Binary files /dev/null and b/aePronunciation/raw/double_c_ch.mp3 differ diff --git a/aePronunciation/raw/double_c_d.mp3 b/aePronunciation/raw/double_c_d.mp3 new file mode 100755 index 0000000..9db4ce6 Binary files /dev/null and b/aePronunciation/raw/double_c_d.mp3 differ diff --git a/aePronunciation/raw/double_c_dzh.mp3 b/aePronunciation/raw/double_c_dzh.mp3 new file mode 100755 index 0000000..9763ef5 Binary files /dev/null and b/aePronunciation/raw/double_c_dzh.mp3 differ diff --git a/aePronunciation/raw/double_c_f.mp3 b/aePronunciation/raw/double_c_f.mp3 new file mode 100755 index 0000000..bb977ed Binary files /dev/null and b/aePronunciation/raw/double_c_f.mp3 differ diff --git a/aePronunciation/raw/double_c_flap_shwua.mp3 b/aePronunciation/raw/double_c_flap_shwua.mp3 new file mode 100755 index 0000000..0fb8b17 Binary files /dev/null and b/aePronunciation/raw/double_c_flap_shwua.mp3 differ diff --git a/aePronunciation/raw/double_c_g.mp3 b/aePronunciation/raw/double_c_g.mp3 new file mode 100755 index 0000000..2e40771 Binary files /dev/null and b/aePronunciation/raw/double_c_g.mp3 differ diff --git a/aePronunciation/raw/double_c_glottal.mp3 b/aePronunciation/raw/double_c_glottal.mp3 new file mode 100755 index 0000000..0a00d48 Binary files /dev/null and b/aePronunciation/raw/double_c_glottal.mp3 differ diff --git a/aePronunciation/raw/double_c_k.mp3 b/aePronunciation/raw/double_c_k.mp3 new file mode 100755 index 0000000..71836a4 Binary files /dev/null and b/aePronunciation/raw/double_c_k.mp3 differ diff --git a/aePronunciation/raw/double_c_l.mp3 b/aePronunciation/raw/double_c_l.mp3 new file mode 100755 index 0000000..ea46c9e Binary files /dev/null and b/aePronunciation/raw/double_c_l.mp3 differ diff --git a/aePronunciation/raw/double_c_m.mp3 b/aePronunciation/raw/double_c_m.mp3 new file mode 100755 index 0000000..a3720c7 Binary files /dev/null and b/aePronunciation/raw/double_c_m.mp3 differ diff --git a/aePronunciation/raw/double_c_n.mp3 b/aePronunciation/raw/double_c_n.mp3 new file mode 100755 index 0000000..c85543e Binary files /dev/null and b/aePronunciation/raw/double_c_n.mp3 differ diff --git a/aePronunciation/raw/double_c_ng.mp3 b/aePronunciation/raw/double_c_ng.mp3 new file mode 100755 index 0000000..f5a292c Binary files /dev/null and b/aePronunciation/raw/double_c_ng.mp3 differ diff --git a/aePronunciation/raw/double_c_p.mp3 b/aePronunciation/raw/double_c_p.mp3 new file mode 100755 index 0000000..4cc26df Binary files /dev/null and b/aePronunciation/raw/double_c_p.mp3 differ diff --git a/aePronunciation/raw/double_c_s.mp3 b/aePronunciation/raw/double_c_s.mp3 new file mode 100755 index 0000000..43333dd Binary files /dev/null and b/aePronunciation/raw/double_c_s.mp3 differ diff --git a/aePronunciation/raw/double_c_sh.mp3 b/aePronunciation/raw/double_c_sh.mp3 new file mode 100755 index 0000000..eb2ace4 Binary files /dev/null and b/aePronunciation/raw/double_c_sh.mp3 differ diff --git a/aePronunciation/raw/double_c_t.mp3 b/aePronunciation/raw/double_c_t.mp3 new file mode 100755 index 0000000..c23b1d1 Binary files /dev/null and b/aePronunciation/raw/double_c_t.mp3 differ diff --git a/aePronunciation/raw/double_c_th.mp3 b/aePronunciation/raw/double_c_th.mp3 new file mode 100755 index 0000000..67be948 Binary files /dev/null and b/aePronunciation/raw/double_c_th.mp3 differ diff --git a/aePronunciation/raw/double_c_thv.mp3 b/aePronunciation/raw/double_c_thv.mp3 new file mode 100755 index 0000000..8dbb254 Binary files /dev/null and b/aePronunciation/raw/double_c_thv.mp3 differ diff --git a/aePronunciation/raw/double_c_v.mp3 b/aePronunciation/raw/double_c_v.mp3 new file mode 100755 index 0000000..6d7baac Binary files /dev/null and b/aePronunciation/raw/double_c_v.mp3 differ diff --git a/aePronunciation/raw/double_c_z.mp3 b/aePronunciation/raw/double_c_z.mp3 new file mode 100755 index 0000000..060f851 Binary files /dev/null and b/aePronunciation/raw/double_c_z.mp3 differ diff --git a/aePronunciation/raw/double_c_zh.mp3 b/aePronunciation/raw/double_c_zh.mp3 new file mode 100755 index 0000000..fcc9d58 Binary files /dev/null and b/aePronunciation/raw/double_c_zh.mp3 differ diff --git a/aePronunciation/raw/double_ch_a.mp3 b/aePronunciation/raw/double_ch_a.mp3 new file mode 100755 index 0000000..0d679b9 Binary files /dev/null and b/aePronunciation/raw/double_ch_a.mp3 differ diff --git a/aePronunciation/raw/double_ch_ae.mp3 b/aePronunciation/raw/double_ch_ae.mp3 new file mode 100755 index 0000000..25ec33b Binary files /dev/null and b/aePronunciation/raw/double_ch_ae.mp3 differ diff --git a/aePronunciation/raw/double_ch_ai.mp3 b/aePronunciation/raw/double_ch_ai.mp3 new file mode 100755 index 0000000..b86de9e Binary files /dev/null and b/aePronunciation/raw/double_ch_ai.mp3 differ diff --git a/aePronunciation/raw/double_ch_ar.mp3 b/aePronunciation/raw/double_ch_ar.mp3 new file mode 100755 index 0000000..e87845c Binary files /dev/null and b/aePronunciation/raw/double_ch_ar.mp3 differ diff --git a/aePronunciation/raw/double_ch_au.mp3 b/aePronunciation/raw/double_ch_au.mp3 new file mode 100755 index 0000000..c11f8bc Binary files /dev/null and b/aePronunciation/raw/double_ch_au.mp3 differ diff --git a/aePronunciation/raw/double_ch_c.mp3 b/aePronunciation/raw/double_ch_c.mp3 new file mode 100755 index 0000000..a9a2f6b Binary files /dev/null and b/aePronunciation/raw/double_ch_c.mp3 differ diff --git a/aePronunciation/raw/double_ch_e.mp3 b/aePronunciation/raw/double_ch_e.mp3 new file mode 100755 index 0000000..aff78fd Binary files /dev/null and b/aePronunciation/raw/double_ch_e.mp3 differ diff --git a/aePronunciation/raw/double_ch_ei.mp3 b/aePronunciation/raw/double_ch_ei.mp3 new file mode 100755 index 0000000..d0b3980 Binary files /dev/null and b/aePronunciation/raw/double_ch_ei.mp3 differ diff --git a/aePronunciation/raw/double_ch_er.mp3 b/aePronunciation/raw/double_ch_er.mp3 new file mode 100755 index 0000000..fa380c4 Binary files /dev/null and b/aePronunciation/raw/double_ch_er.mp3 differ diff --git a/aePronunciation/raw/double_ch_ers.mp3 b/aePronunciation/raw/double_ch_ers.mp3 new file mode 100755 index 0000000..5c937c6 Binary files /dev/null and b/aePronunciation/raw/double_ch_ers.mp3 differ diff --git a/aePronunciation/raw/double_ch_eru.mp3 b/aePronunciation/raw/double_ch_eru.mp3 new file mode 100755 index 0000000..005dc0f Binary files /dev/null and b/aePronunciation/raw/double_ch_eru.mp3 differ diff --git a/aePronunciation/raw/double_ch_i.mp3 b/aePronunciation/raw/double_ch_i.mp3 new file mode 100755 index 0000000..a8c241d Binary files /dev/null and b/aePronunciation/raw/double_ch_i.mp3 differ diff --git a/aePronunciation/raw/double_ch_ir.mp3 b/aePronunciation/raw/double_ch_ir.mp3 new file mode 100755 index 0000000..49ec974 Binary files /dev/null and b/aePronunciation/raw/double_ch_ir.mp3 differ diff --git a/aePronunciation/raw/double_ch_is.mp3 b/aePronunciation/raw/double_ch_is.mp3 new file mode 100755 index 0000000..5ffe33b Binary files /dev/null and b/aePronunciation/raw/double_ch_is.mp3 differ diff --git a/aePronunciation/raw/double_ch_oi.mp3 b/aePronunciation/raw/double_ch_oi.mp3 new file mode 100755 index 0000000..24b8df9 Binary files /dev/null and b/aePronunciation/raw/double_ch_oi.mp3 differ diff --git a/aePronunciation/raw/double_ch_or.mp3 b/aePronunciation/raw/double_ch_or.mp3 new file mode 100755 index 0000000..ffaa878 Binary files /dev/null and b/aePronunciation/raw/double_ch_or.mp3 differ diff --git a/aePronunciation/raw/double_ch_ou.mp3 b/aePronunciation/raw/double_ch_ou.mp3 new file mode 100755 index 0000000..8ff6a66 Binary files /dev/null and b/aePronunciation/raw/double_ch_ou.mp3 differ diff --git a/aePronunciation/raw/double_ch_shwua.mp3 b/aePronunciation/raw/double_ch_shwua.mp3 new file mode 100755 index 0000000..6f0ead2 Binary files /dev/null and b/aePronunciation/raw/double_ch_shwua.mp3 differ diff --git a/aePronunciation/raw/double_ch_u.mp3 b/aePronunciation/raw/double_ch_u.mp3 new file mode 100755 index 0000000..1a5e70c Binary files /dev/null and b/aePronunciation/raw/double_ch_u.mp3 differ diff --git a/aePronunciation/raw/double_ch_us.mp3 b/aePronunciation/raw/double_ch_us.mp3 new file mode 100755 index 0000000..e9070e7 Binary files /dev/null and b/aePronunciation/raw/double_ch_us.mp3 differ diff --git a/aePronunciation/raw/double_ch_vu.mp3 b/aePronunciation/raw/double_ch_vu.mp3 new file mode 100755 index 0000000..b956580 Binary files /dev/null and b/aePronunciation/raw/double_ch_vu.mp3 differ diff --git a/aePronunciation/raw/double_d_a.mp3 b/aePronunciation/raw/double_d_a.mp3 new file mode 100755 index 0000000..fb3ca4c Binary files /dev/null and b/aePronunciation/raw/double_d_a.mp3 differ diff --git a/aePronunciation/raw/double_d_ae.mp3 b/aePronunciation/raw/double_d_ae.mp3 new file mode 100755 index 0000000..4d28e35 Binary files /dev/null and b/aePronunciation/raw/double_d_ae.mp3 differ diff --git a/aePronunciation/raw/double_d_ai.mp3 b/aePronunciation/raw/double_d_ai.mp3 new file mode 100755 index 0000000..8be1076 Binary files /dev/null and b/aePronunciation/raw/double_d_ai.mp3 differ diff --git a/aePronunciation/raw/double_d_ar.mp3 b/aePronunciation/raw/double_d_ar.mp3 new file mode 100755 index 0000000..eb791e8 Binary files /dev/null and b/aePronunciation/raw/double_d_ar.mp3 differ diff --git a/aePronunciation/raw/double_d_au.mp3 b/aePronunciation/raw/double_d_au.mp3 new file mode 100755 index 0000000..3ac59f2 Binary files /dev/null and b/aePronunciation/raw/double_d_au.mp3 differ diff --git a/aePronunciation/raw/double_d_c.mp3 b/aePronunciation/raw/double_d_c.mp3 new file mode 100755 index 0000000..c73310a Binary files /dev/null and b/aePronunciation/raw/double_d_c.mp3 differ diff --git a/aePronunciation/raw/double_d_e.mp3 b/aePronunciation/raw/double_d_e.mp3 new file mode 100755 index 0000000..eeccc58 Binary files /dev/null and b/aePronunciation/raw/double_d_e.mp3 differ diff --git a/aePronunciation/raw/double_d_ei.mp3 b/aePronunciation/raw/double_d_ei.mp3 new file mode 100755 index 0000000..50941d3 Binary files /dev/null and b/aePronunciation/raw/double_d_ei.mp3 differ diff --git a/aePronunciation/raw/double_d_er.mp3 b/aePronunciation/raw/double_d_er.mp3 new file mode 100755 index 0000000..1ec4f27 Binary files /dev/null and b/aePronunciation/raw/double_d_er.mp3 differ diff --git a/aePronunciation/raw/double_d_ers.mp3 b/aePronunciation/raw/double_d_ers.mp3 new file mode 100755 index 0000000..a9f5b7d Binary files /dev/null and b/aePronunciation/raw/double_d_ers.mp3 differ diff --git a/aePronunciation/raw/double_d_eru.mp3 b/aePronunciation/raw/double_d_eru.mp3 new file mode 100755 index 0000000..8007057 Binary files /dev/null and b/aePronunciation/raw/double_d_eru.mp3 differ diff --git a/aePronunciation/raw/double_d_i.mp3 b/aePronunciation/raw/double_d_i.mp3 new file mode 100755 index 0000000..aaef6ef Binary files /dev/null and b/aePronunciation/raw/double_d_i.mp3 differ diff --git a/aePronunciation/raw/double_d_ir.mp3 b/aePronunciation/raw/double_d_ir.mp3 new file mode 100755 index 0000000..4433d09 Binary files /dev/null and b/aePronunciation/raw/double_d_ir.mp3 differ diff --git a/aePronunciation/raw/double_d_is.mp3 b/aePronunciation/raw/double_d_is.mp3 new file mode 100755 index 0000000..e6ead6c Binary files /dev/null and b/aePronunciation/raw/double_d_is.mp3 differ diff --git a/aePronunciation/raw/double_d_oi.mp3 b/aePronunciation/raw/double_d_oi.mp3 new file mode 100755 index 0000000..f894ca5 Binary files /dev/null and b/aePronunciation/raw/double_d_oi.mp3 differ diff --git a/aePronunciation/raw/double_d_or.mp3 b/aePronunciation/raw/double_d_or.mp3 new file mode 100755 index 0000000..65305de Binary files /dev/null and b/aePronunciation/raw/double_d_or.mp3 differ diff --git a/aePronunciation/raw/double_d_ou.mp3 b/aePronunciation/raw/double_d_ou.mp3 new file mode 100755 index 0000000..5e528fa Binary files /dev/null and b/aePronunciation/raw/double_d_ou.mp3 differ diff --git a/aePronunciation/raw/double_d_shwua.mp3 b/aePronunciation/raw/double_d_shwua.mp3 new file mode 100755 index 0000000..b8a8f46 Binary files /dev/null and b/aePronunciation/raw/double_d_shwua.mp3 differ diff --git a/aePronunciation/raw/double_d_u.mp3 b/aePronunciation/raw/double_d_u.mp3 new file mode 100755 index 0000000..730351e Binary files /dev/null and b/aePronunciation/raw/double_d_u.mp3 differ diff --git a/aePronunciation/raw/double_d_us.mp3 b/aePronunciation/raw/double_d_us.mp3 new file mode 100755 index 0000000..a933960 Binary files /dev/null and b/aePronunciation/raw/double_d_us.mp3 differ diff --git a/aePronunciation/raw/double_d_vu.mp3 b/aePronunciation/raw/double_d_vu.mp3 new file mode 100755 index 0000000..0961d91 Binary files /dev/null and b/aePronunciation/raw/double_d_vu.mp3 differ diff --git a/aePronunciation/raw/double_dzh_a.mp3 b/aePronunciation/raw/double_dzh_a.mp3 new file mode 100755 index 0000000..2917418 Binary files /dev/null and b/aePronunciation/raw/double_dzh_a.mp3 differ diff --git a/aePronunciation/raw/double_dzh_ae.mp3 b/aePronunciation/raw/double_dzh_ae.mp3 new file mode 100755 index 0000000..e9cdb19 Binary files /dev/null and b/aePronunciation/raw/double_dzh_ae.mp3 differ diff --git a/aePronunciation/raw/double_dzh_ai.mp3 b/aePronunciation/raw/double_dzh_ai.mp3 new file mode 100755 index 0000000..1259694 Binary files /dev/null and b/aePronunciation/raw/double_dzh_ai.mp3 differ diff --git a/aePronunciation/raw/double_dzh_ar.mp3 b/aePronunciation/raw/double_dzh_ar.mp3 new file mode 100755 index 0000000..078f4ba Binary files /dev/null and b/aePronunciation/raw/double_dzh_ar.mp3 differ diff --git a/aePronunciation/raw/double_dzh_au.mp3 b/aePronunciation/raw/double_dzh_au.mp3 new file mode 100755 index 0000000..9f1ae28 Binary files /dev/null and b/aePronunciation/raw/double_dzh_au.mp3 differ diff --git a/aePronunciation/raw/double_dzh_c.mp3 b/aePronunciation/raw/double_dzh_c.mp3 new file mode 100755 index 0000000..5693ff1 Binary files /dev/null and b/aePronunciation/raw/double_dzh_c.mp3 differ diff --git a/aePronunciation/raw/double_dzh_e.mp3 b/aePronunciation/raw/double_dzh_e.mp3 new file mode 100755 index 0000000..d4bf553 Binary files /dev/null and b/aePronunciation/raw/double_dzh_e.mp3 differ diff --git a/aePronunciation/raw/double_dzh_ei.mp3 b/aePronunciation/raw/double_dzh_ei.mp3 new file mode 100755 index 0000000..4286e30 Binary files /dev/null and b/aePronunciation/raw/double_dzh_ei.mp3 differ diff --git a/aePronunciation/raw/double_dzh_er.mp3 b/aePronunciation/raw/double_dzh_er.mp3 new file mode 100755 index 0000000..a7babe0 Binary files /dev/null and b/aePronunciation/raw/double_dzh_er.mp3 differ diff --git a/aePronunciation/raw/double_dzh_ers.mp3 b/aePronunciation/raw/double_dzh_ers.mp3 new file mode 100755 index 0000000..4263a2b Binary files /dev/null and b/aePronunciation/raw/double_dzh_ers.mp3 differ diff --git a/aePronunciation/raw/double_dzh_eru.mp3 b/aePronunciation/raw/double_dzh_eru.mp3 new file mode 100755 index 0000000..9569a72 Binary files /dev/null and b/aePronunciation/raw/double_dzh_eru.mp3 differ diff --git a/aePronunciation/raw/double_dzh_i.mp3 b/aePronunciation/raw/double_dzh_i.mp3 new file mode 100755 index 0000000..aef7e93 Binary files /dev/null and b/aePronunciation/raw/double_dzh_i.mp3 differ diff --git a/aePronunciation/raw/double_dzh_ir.mp3 b/aePronunciation/raw/double_dzh_ir.mp3 new file mode 100755 index 0000000..10c3a2d Binary files /dev/null and b/aePronunciation/raw/double_dzh_ir.mp3 differ diff --git a/aePronunciation/raw/double_dzh_is.mp3 b/aePronunciation/raw/double_dzh_is.mp3 new file mode 100755 index 0000000..3d7d335 Binary files /dev/null and b/aePronunciation/raw/double_dzh_is.mp3 differ diff --git a/aePronunciation/raw/double_dzh_oi.mp3 b/aePronunciation/raw/double_dzh_oi.mp3 new file mode 100755 index 0000000..171285d Binary files /dev/null and b/aePronunciation/raw/double_dzh_oi.mp3 differ diff --git a/aePronunciation/raw/double_dzh_or.mp3 b/aePronunciation/raw/double_dzh_or.mp3 new file mode 100755 index 0000000..f6c7d5a Binary files /dev/null and b/aePronunciation/raw/double_dzh_or.mp3 differ diff --git a/aePronunciation/raw/double_dzh_ou.mp3 b/aePronunciation/raw/double_dzh_ou.mp3 new file mode 100755 index 0000000..f2e6731 Binary files /dev/null and b/aePronunciation/raw/double_dzh_ou.mp3 differ diff --git a/aePronunciation/raw/double_dzh_shwua.mp3 b/aePronunciation/raw/double_dzh_shwua.mp3 new file mode 100755 index 0000000..f1a98c2 Binary files /dev/null and b/aePronunciation/raw/double_dzh_shwua.mp3 differ diff --git a/aePronunciation/raw/double_dzh_u.mp3 b/aePronunciation/raw/double_dzh_u.mp3 new file mode 100755 index 0000000..4a2b173 Binary files /dev/null and b/aePronunciation/raw/double_dzh_u.mp3 differ diff --git a/aePronunciation/raw/double_dzh_us.mp3 b/aePronunciation/raw/double_dzh_us.mp3 new file mode 100755 index 0000000..1071843 Binary files /dev/null and b/aePronunciation/raw/double_dzh_us.mp3 differ diff --git a/aePronunciation/raw/double_dzh_vu.mp3 b/aePronunciation/raw/double_dzh_vu.mp3 new file mode 100755 index 0000000..1a0056b Binary files /dev/null and b/aePronunciation/raw/double_dzh_vu.mp3 differ diff --git a/aePronunciation/raw/double_e_b.mp3 b/aePronunciation/raw/double_e_b.mp3 new file mode 100755 index 0000000..d0e82ec Binary files /dev/null and b/aePronunciation/raw/double_e_b.mp3 differ diff --git a/aePronunciation/raw/double_e_ch.mp3 b/aePronunciation/raw/double_e_ch.mp3 new file mode 100755 index 0000000..672e310 Binary files /dev/null and b/aePronunciation/raw/double_e_ch.mp3 differ diff --git a/aePronunciation/raw/double_e_d.mp3 b/aePronunciation/raw/double_e_d.mp3 new file mode 100755 index 0000000..f12ef16 Binary files /dev/null and b/aePronunciation/raw/double_e_d.mp3 differ diff --git a/aePronunciation/raw/double_e_dzh.mp3 b/aePronunciation/raw/double_e_dzh.mp3 new file mode 100755 index 0000000..82a8dcc Binary files /dev/null and b/aePronunciation/raw/double_e_dzh.mp3 differ diff --git a/aePronunciation/raw/double_e_f.mp3 b/aePronunciation/raw/double_e_f.mp3 new file mode 100755 index 0000000..cefc65a Binary files /dev/null and b/aePronunciation/raw/double_e_f.mp3 differ diff --git a/aePronunciation/raw/double_e_flap_shwua.mp3 b/aePronunciation/raw/double_e_flap_shwua.mp3 new file mode 100755 index 0000000..4f6b878 Binary files /dev/null and b/aePronunciation/raw/double_e_flap_shwua.mp3 differ diff --git a/aePronunciation/raw/double_e_g.mp3 b/aePronunciation/raw/double_e_g.mp3 new file mode 100755 index 0000000..288d459 Binary files /dev/null and b/aePronunciation/raw/double_e_g.mp3 differ diff --git a/aePronunciation/raw/double_e_glottal.mp3 b/aePronunciation/raw/double_e_glottal.mp3 new file mode 100755 index 0000000..375d3e6 Binary files /dev/null and b/aePronunciation/raw/double_e_glottal.mp3 differ diff --git a/aePronunciation/raw/double_e_k.mp3 b/aePronunciation/raw/double_e_k.mp3 new file mode 100755 index 0000000..40b93ef Binary files /dev/null and b/aePronunciation/raw/double_e_k.mp3 differ diff --git a/aePronunciation/raw/double_e_l.mp3 b/aePronunciation/raw/double_e_l.mp3 new file mode 100755 index 0000000..e96623a Binary files /dev/null and b/aePronunciation/raw/double_e_l.mp3 differ diff --git a/aePronunciation/raw/double_e_m.mp3 b/aePronunciation/raw/double_e_m.mp3 new file mode 100755 index 0000000..544416b Binary files /dev/null and b/aePronunciation/raw/double_e_m.mp3 differ diff --git a/aePronunciation/raw/double_e_n.mp3 b/aePronunciation/raw/double_e_n.mp3 new file mode 100755 index 0000000..9fafaa4 Binary files /dev/null and b/aePronunciation/raw/double_e_n.mp3 differ diff --git a/aePronunciation/raw/double_e_ng.mp3 b/aePronunciation/raw/double_e_ng.mp3 new file mode 100755 index 0000000..46a54e6 Binary files /dev/null and b/aePronunciation/raw/double_e_ng.mp3 differ diff --git a/aePronunciation/raw/double_e_p.mp3 b/aePronunciation/raw/double_e_p.mp3 new file mode 100755 index 0000000..03236ea Binary files /dev/null and b/aePronunciation/raw/double_e_p.mp3 differ diff --git a/aePronunciation/raw/double_e_s.mp3 b/aePronunciation/raw/double_e_s.mp3 new file mode 100755 index 0000000..4a616a3 Binary files /dev/null and b/aePronunciation/raw/double_e_s.mp3 differ diff --git a/aePronunciation/raw/double_e_sh.mp3 b/aePronunciation/raw/double_e_sh.mp3 new file mode 100755 index 0000000..7ba9e92 Binary files /dev/null and b/aePronunciation/raw/double_e_sh.mp3 differ diff --git a/aePronunciation/raw/double_e_t.mp3 b/aePronunciation/raw/double_e_t.mp3 new file mode 100755 index 0000000..580a0eb Binary files /dev/null and b/aePronunciation/raw/double_e_t.mp3 differ diff --git a/aePronunciation/raw/double_e_th.mp3 b/aePronunciation/raw/double_e_th.mp3 new file mode 100755 index 0000000..493b802 Binary files /dev/null and b/aePronunciation/raw/double_e_th.mp3 differ diff --git a/aePronunciation/raw/double_e_thv.mp3 b/aePronunciation/raw/double_e_thv.mp3 new file mode 100755 index 0000000..d1b3b95 Binary files /dev/null and b/aePronunciation/raw/double_e_thv.mp3 differ diff --git a/aePronunciation/raw/double_e_v.mp3 b/aePronunciation/raw/double_e_v.mp3 new file mode 100755 index 0000000..5f92233 Binary files /dev/null and b/aePronunciation/raw/double_e_v.mp3 differ diff --git a/aePronunciation/raw/double_e_z.mp3 b/aePronunciation/raw/double_e_z.mp3 new file mode 100755 index 0000000..591a283 Binary files /dev/null and b/aePronunciation/raw/double_e_z.mp3 differ diff --git a/aePronunciation/raw/double_e_zh.mp3 b/aePronunciation/raw/double_e_zh.mp3 new file mode 100755 index 0000000..285cc3b Binary files /dev/null and b/aePronunciation/raw/double_e_zh.mp3 differ diff --git a/aePronunciation/raw/double_ei_b.mp3 b/aePronunciation/raw/double_ei_b.mp3 new file mode 100755 index 0000000..108d21a Binary files /dev/null and b/aePronunciation/raw/double_ei_b.mp3 differ diff --git a/aePronunciation/raw/double_ei_ch.mp3 b/aePronunciation/raw/double_ei_ch.mp3 new file mode 100755 index 0000000..e7b7d2e Binary files /dev/null and b/aePronunciation/raw/double_ei_ch.mp3 differ diff --git a/aePronunciation/raw/double_ei_d.mp3 b/aePronunciation/raw/double_ei_d.mp3 new file mode 100755 index 0000000..ab343d1 Binary files /dev/null and b/aePronunciation/raw/double_ei_d.mp3 differ diff --git a/aePronunciation/raw/double_ei_dzh.mp3 b/aePronunciation/raw/double_ei_dzh.mp3 new file mode 100755 index 0000000..5ae32c1 Binary files /dev/null and b/aePronunciation/raw/double_ei_dzh.mp3 differ diff --git a/aePronunciation/raw/double_ei_f.mp3 b/aePronunciation/raw/double_ei_f.mp3 new file mode 100755 index 0000000..25c8358 Binary files /dev/null and b/aePronunciation/raw/double_ei_f.mp3 differ diff --git a/aePronunciation/raw/double_ei_flap_shwua.mp3 b/aePronunciation/raw/double_ei_flap_shwua.mp3 new file mode 100755 index 0000000..d4ae4a7 Binary files /dev/null and b/aePronunciation/raw/double_ei_flap_shwua.mp3 differ diff --git a/aePronunciation/raw/double_ei_g.mp3 b/aePronunciation/raw/double_ei_g.mp3 new file mode 100755 index 0000000..fdab577 Binary files /dev/null and b/aePronunciation/raw/double_ei_g.mp3 differ diff --git a/aePronunciation/raw/double_ei_glottal.mp3 b/aePronunciation/raw/double_ei_glottal.mp3 new file mode 100755 index 0000000..09e318f Binary files /dev/null and b/aePronunciation/raw/double_ei_glottal.mp3 differ diff --git a/aePronunciation/raw/double_ei_k.mp3 b/aePronunciation/raw/double_ei_k.mp3 new file mode 100755 index 0000000..4a3697b Binary files /dev/null and b/aePronunciation/raw/double_ei_k.mp3 differ diff --git a/aePronunciation/raw/double_ei_l.mp3 b/aePronunciation/raw/double_ei_l.mp3 new file mode 100755 index 0000000..e3eb986 Binary files /dev/null and b/aePronunciation/raw/double_ei_l.mp3 differ diff --git a/aePronunciation/raw/double_ei_m.mp3 b/aePronunciation/raw/double_ei_m.mp3 new file mode 100755 index 0000000..487b4b6 Binary files /dev/null and b/aePronunciation/raw/double_ei_m.mp3 differ diff --git a/aePronunciation/raw/double_ei_n.mp3 b/aePronunciation/raw/double_ei_n.mp3 new file mode 100755 index 0000000..0bf1837 Binary files /dev/null and b/aePronunciation/raw/double_ei_n.mp3 differ diff --git a/aePronunciation/raw/double_ei_ng.mp3 b/aePronunciation/raw/double_ei_ng.mp3 new file mode 100755 index 0000000..e88d0eb Binary files /dev/null and b/aePronunciation/raw/double_ei_ng.mp3 differ diff --git a/aePronunciation/raw/double_ei_p.mp3 b/aePronunciation/raw/double_ei_p.mp3 new file mode 100755 index 0000000..95dfb8d Binary files /dev/null and b/aePronunciation/raw/double_ei_p.mp3 differ diff --git a/aePronunciation/raw/double_ei_s.mp3 b/aePronunciation/raw/double_ei_s.mp3 new file mode 100755 index 0000000..99d2cb9 Binary files /dev/null and b/aePronunciation/raw/double_ei_s.mp3 differ diff --git a/aePronunciation/raw/double_ei_sh.mp3 b/aePronunciation/raw/double_ei_sh.mp3 new file mode 100755 index 0000000..f28bd23 Binary files /dev/null and b/aePronunciation/raw/double_ei_sh.mp3 differ diff --git a/aePronunciation/raw/double_ei_t.mp3 b/aePronunciation/raw/double_ei_t.mp3 new file mode 100755 index 0000000..811d1bc Binary files /dev/null and b/aePronunciation/raw/double_ei_t.mp3 differ diff --git a/aePronunciation/raw/double_ei_th.mp3 b/aePronunciation/raw/double_ei_th.mp3 new file mode 100755 index 0000000..a258d07 Binary files /dev/null and b/aePronunciation/raw/double_ei_th.mp3 differ diff --git a/aePronunciation/raw/double_ei_thv.mp3 b/aePronunciation/raw/double_ei_thv.mp3 new file mode 100755 index 0000000..7cbdc08 Binary files /dev/null and b/aePronunciation/raw/double_ei_thv.mp3 differ diff --git a/aePronunciation/raw/double_ei_v.mp3 b/aePronunciation/raw/double_ei_v.mp3 new file mode 100755 index 0000000..ceb698d Binary files /dev/null and b/aePronunciation/raw/double_ei_v.mp3 differ diff --git a/aePronunciation/raw/double_ei_z.mp3 b/aePronunciation/raw/double_ei_z.mp3 new file mode 100755 index 0000000..b9647ab Binary files /dev/null and b/aePronunciation/raw/double_ei_z.mp3 differ diff --git a/aePronunciation/raw/double_ei_zh.mp3 b/aePronunciation/raw/double_ei_zh.mp3 new file mode 100755 index 0000000..2020f0a Binary files /dev/null and b/aePronunciation/raw/double_ei_zh.mp3 differ diff --git a/aePronunciation/raw/double_er_b.mp3 b/aePronunciation/raw/double_er_b.mp3 new file mode 100755 index 0000000..7a278de Binary files /dev/null and b/aePronunciation/raw/double_er_b.mp3 differ diff --git a/aePronunciation/raw/double_er_ch.mp3 b/aePronunciation/raw/double_er_ch.mp3 new file mode 100755 index 0000000..a5535b2 Binary files /dev/null and b/aePronunciation/raw/double_er_ch.mp3 differ diff --git a/aePronunciation/raw/double_er_d.mp3 b/aePronunciation/raw/double_er_d.mp3 new file mode 100755 index 0000000..79df371 Binary files /dev/null and b/aePronunciation/raw/double_er_d.mp3 differ diff --git a/aePronunciation/raw/double_er_dzh.mp3 b/aePronunciation/raw/double_er_dzh.mp3 new file mode 100755 index 0000000..b4faa8e Binary files /dev/null and b/aePronunciation/raw/double_er_dzh.mp3 differ diff --git a/aePronunciation/raw/double_er_f.mp3 b/aePronunciation/raw/double_er_f.mp3 new file mode 100755 index 0000000..4e35a17 Binary files /dev/null and b/aePronunciation/raw/double_er_f.mp3 differ diff --git a/aePronunciation/raw/double_er_flap_shwua.mp3 b/aePronunciation/raw/double_er_flap_shwua.mp3 new file mode 100755 index 0000000..886532e Binary files /dev/null and b/aePronunciation/raw/double_er_flap_shwua.mp3 differ diff --git a/aePronunciation/raw/double_er_g.mp3 b/aePronunciation/raw/double_er_g.mp3 new file mode 100755 index 0000000..a809c4c Binary files /dev/null and b/aePronunciation/raw/double_er_g.mp3 differ diff --git a/aePronunciation/raw/double_er_glottal.mp3 b/aePronunciation/raw/double_er_glottal.mp3 new file mode 100755 index 0000000..89fab4e Binary files /dev/null and b/aePronunciation/raw/double_er_glottal.mp3 differ diff --git a/aePronunciation/raw/double_er_k.mp3 b/aePronunciation/raw/double_er_k.mp3 new file mode 100755 index 0000000..d2847aa Binary files /dev/null and b/aePronunciation/raw/double_er_k.mp3 differ diff --git a/aePronunciation/raw/double_er_l.mp3 b/aePronunciation/raw/double_er_l.mp3 new file mode 100755 index 0000000..c6a27e8 Binary files /dev/null and b/aePronunciation/raw/double_er_l.mp3 differ diff --git a/aePronunciation/raw/double_er_m.mp3 b/aePronunciation/raw/double_er_m.mp3 new file mode 100755 index 0000000..1d7aec4 Binary files /dev/null and b/aePronunciation/raw/double_er_m.mp3 differ diff --git a/aePronunciation/raw/double_er_n.mp3 b/aePronunciation/raw/double_er_n.mp3 new file mode 100755 index 0000000..97d8afd Binary files /dev/null and b/aePronunciation/raw/double_er_n.mp3 differ diff --git a/aePronunciation/raw/double_er_ng.mp3 b/aePronunciation/raw/double_er_ng.mp3 new file mode 100755 index 0000000..b75e7e4 Binary files /dev/null and b/aePronunciation/raw/double_er_ng.mp3 differ diff --git a/aePronunciation/raw/double_er_p.mp3 b/aePronunciation/raw/double_er_p.mp3 new file mode 100755 index 0000000..904fd2a Binary files /dev/null and b/aePronunciation/raw/double_er_p.mp3 differ diff --git a/aePronunciation/raw/double_er_s.mp3 b/aePronunciation/raw/double_er_s.mp3 new file mode 100755 index 0000000..a53e15c Binary files /dev/null and b/aePronunciation/raw/double_er_s.mp3 differ diff --git a/aePronunciation/raw/double_er_sh.mp3 b/aePronunciation/raw/double_er_sh.mp3 new file mode 100755 index 0000000..f80057c Binary files /dev/null and b/aePronunciation/raw/double_er_sh.mp3 differ diff --git a/aePronunciation/raw/double_er_t.mp3 b/aePronunciation/raw/double_er_t.mp3 new file mode 100755 index 0000000..fa00693 Binary files /dev/null and b/aePronunciation/raw/double_er_t.mp3 differ diff --git a/aePronunciation/raw/double_er_th.mp3 b/aePronunciation/raw/double_er_th.mp3 new file mode 100755 index 0000000..346080b Binary files /dev/null and b/aePronunciation/raw/double_er_th.mp3 differ diff --git a/aePronunciation/raw/double_er_thv.mp3 b/aePronunciation/raw/double_er_thv.mp3 new file mode 100755 index 0000000..7dc91b6 Binary files /dev/null and b/aePronunciation/raw/double_er_thv.mp3 differ diff --git a/aePronunciation/raw/double_er_v.mp3 b/aePronunciation/raw/double_er_v.mp3 new file mode 100755 index 0000000..a37a078 Binary files /dev/null and b/aePronunciation/raw/double_er_v.mp3 differ diff --git a/aePronunciation/raw/double_er_z.mp3 b/aePronunciation/raw/double_er_z.mp3 new file mode 100755 index 0000000..46cb049 Binary files /dev/null and b/aePronunciation/raw/double_er_z.mp3 differ diff --git a/aePronunciation/raw/double_er_zh.mp3 b/aePronunciation/raw/double_er_zh.mp3 new file mode 100755 index 0000000..1a27319 Binary files /dev/null and b/aePronunciation/raw/double_er_zh.mp3 differ diff --git a/aePronunciation/raw/double_ers_b.mp3 b/aePronunciation/raw/double_ers_b.mp3 new file mode 100755 index 0000000..9958c13 Binary files /dev/null and b/aePronunciation/raw/double_ers_b.mp3 differ diff --git a/aePronunciation/raw/double_ers_ch.mp3 b/aePronunciation/raw/double_ers_ch.mp3 new file mode 100755 index 0000000..9ac5e46 Binary files /dev/null and b/aePronunciation/raw/double_ers_ch.mp3 differ diff --git a/aePronunciation/raw/double_ers_d.mp3 b/aePronunciation/raw/double_ers_d.mp3 new file mode 100755 index 0000000..a4ae56e Binary files /dev/null and b/aePronunciation/raw/double_ers_d.mp3 differ diff --git a/aePronunciation/raw/double_ers_dzh.mp3 b/aePronunciation/raw/double_ers_dzh.mp3 new file mode 100755 index 0000000..67164df Binary files /dev/null and b/aePronunciation/raw/double_ers_dzh.mp3 differ diff --git a/aePronunciation/raw/double_ers_f.mp3 b/aePronunciation/raw/double_ers_f.mp3 new file mode 100755 index 0000000..6881723 Binary files /dev/null and b/aePronunciation/raw/double_ers_f.mp3 differ diff --git a/aePronunciation/raw/double_ers_flap_shwua.mp3 b/aePronunciation/raw/double_ers_flap_shwua.mp3 new file mode 100755 index 0000000..26721f8 Binary files /dev/null and b/aePronunciation/raw/double_ers_flap_shwua.mp3 differ diff --git a/aePronunciation/raw/double_ers_g.mp3 b/aePronunciation/raw/double_ers_g.mp3 new file mode 100755 index 0000000..0988fbc Binary files /dev/null and b/aePronunciation/raw/double_ers_g.mp3 differ diff --git a/aePronunciation/raw/double_ers_glottal.mp3 b/aePronunciation/raw/double_ers_glottal.mp3 new file mode 100755 index 0000000..eb8e408 Binary files /dev/null and b/aePronunciation/raw/double_ers_glottal.mp3 differ diff --git a/aePronunciation/raw/double_ers_k.mp3 b/aePronunciation/raw/double_ers_k.mp3 new file mode 100755 index 0000000..d94cc8c Binary files /dev/null and b/aePronunciation/raw/double_ers_k.mp3 differ diff --git a/aePronunciation/raw/double_ers_l.mp3 b/aePronunciation/raw/double_ers_l.mp3 new file mode 100755 index 0000000..8720524 Binary files /dev/null and b/aePronunciation/raw/double_ers_l.mp3 differ diff --git a/aePronunciation/raw/double_ers_m.mp3 b/aePronunciation/raw/double_ers_m.mp3 new file mode 100755 index 0000000..0755396 Binary files /dev/null and b/aePronunciation/raw/double_ers_m.mp3 differ diff --git a/aePronunciation/raw/double_ers_n.mp3 b/aePronunciation/raw/double_ers_n.mp3 new file mode 100755 index 0000000..c63e232 Binary files /dev/null and b/aePronunciation/raw/double_ers_n.mp3 differ diff --git a/aePronunciation/raw/double_ers_ng.mp3 b/aePronunciation/raw/double_ers_ng.mp3 new file mode 100755 index 0000000..4e0c362 Binary files /dev/null and b/aePronunciation/raw/double_ers_ng.mp3 differ diff --git a/aePronunciation/raw/double_ers_p.mp3 b/aePronunciation/raw/double_ers_p.mp3 new file mode 100755 index 0000000..47c495b Binary files /dev/null and b/aePronunciation/raw/double_ers_p.mp3 differ diff --git a/aePronunciation/raw/double_ers_s.mp3 b/aePronunciation/raw/double_ers_s.mp3 new file mode 100755 index 0000000..fc00fdc Binary files /dev/null and b/aePronunciation/raw/double_ers_s.mp3 differ diff --git a/aePronunciation/raw/double_ers_sh.mp3 b/aePronunciation/raw/double_ers_sh.mp3 new file mode 100755 index 0000000..a7ba237 Binary files /dev/null and b/aePronunciation/raw/double_ers_sh.mp3 differ diff --git a/aePronunciation/raw/double_ers_t.mp3 b/aePronunciation/raw/double_ers_t.mp3 new file mode 100755 index 0000000..6ddbea8 Binary files /dev/null and b/aePronunciation/raw/double_ers_t.mp3 differ diff --git a/aePronunciation/raw/double_ers_th.mp3 b/aePronunciation/raw/double_ers_th.mp3 new file mode 100755 index 0000000..e24b0e6 Binary files /dev/null and b/aePronunciation/raw/double_ers_th.mp3 differ diff --git a/aePronunciation/raw/double_ers_thv.mp3 b/aePronunciation/raw/double_ers_thv.mp3 new file mode 100755 index 0000000..e6d0bf7 Binary files /dev/null and b/aePronunciation/raw/double_ers_thv.mp3 differ diff --git a/aePronunciation/raw/double_ers_v.mp3 b/aePronunciation/raw/double_ers_v.mp3 new file mode 100755 index 0000000..eb1fcd1 Binary files /dev/null and b/aePronunciation/raw/double_ers_v.mp3 differ diff --git a/aePronunciation/raw/double_ers_z.mp3 b/aePronunciation/raw/double_ers_z.mp3 new file mode 100755 index 0000000..b6c34d3 Binary files /dev/null and b/aePronunciation/raw/double_ers_z.mp3 differ diff --git a/aePronunciation/raw/double_ers_zh.mp3 b/aePronunciation/raw/double_ers_zh.mp3 new file mode 100755 index 0000000..15e15da Binary files /dev/null and b/aePronunciation/raw/double_ers_zh.mp3 differ diff --git a/aePronunciation/raw/double_eru_b.mp3 b/aePronunciation/raw/double_eru_b.mp3 new file mode 100755 index 0000000..602a034 Binary files /dev/null and b/aePronunciation/raw/double_eru_b.mp3 differ diff --git a/aePronunciation/raw/double_eru_ch.mp3 b/aePronunciation/raw/double_eru_ch.mp3 new file mode 100755 index 0000000..3388e89 Binary files /dev/null and b/aePronunciation/raw/double_eru_ch.mp3 differ diff --git a/aePronunciation/raw/double_eru_d.mp3 b/aePronunciation/raw/double_eru_d.mp3 new file mode 100755 index 0000000..28fe2e0 Binary files /dev/null and b/aePronunciation/raw/double_eru_d.mp3 differ diff --git a/aePronunciation/raw/double_eru_dzh.mp3 b/aePronunciation/raw/double_eru_dzh.mp3 new file mode 100755 index 0000000..07905f1 Binary files /dev/null and b/aePronunciation/raw/double_eru_dzh.mp3 differ diff --git a/aePronunciation/raw/double_eru_f.mp3 b/aePronunciation/raw/double_eru_f.mp3 new file mode 100755 index 0000000..d7296a5 Binary files /dev/null and b/aePronunciation/raw/double_eru_f.mp3 differ diff --git a/aePronunciation/raw/double_eru_g.mp3 b/aePronunciation/raw/double_eru_g.mp3 new file mode 100755 index 0000000..d245f17 Binary files /dev/null and b/aePronunciation/raw/double_eru_g.mp3 differ diff --git a/aePronunciation/raw/double_eru_k.mp3 b/aePronunciation/raw/double_eru_k.mp3 new file mode 100755 index 0000000..71201f7 Binary files /dev/null and b/aePronunciation/raw/double_eru_k.mp3 differ diff --git a/aePronunciation/raw/double_eru_l.mp3 b/aePronunciation/raw/double_eru_l.mp3 new file mode 100755 index 0000000..c293385 Binary files /dev/null and b/aePronunciation/raw/double_eru_l.mp3 differ diff --git a/aePronunciation/raw/double_eru_m.mp3 b/aePronunciation/raw/double_eru_m.mp3 new file mode 100755 index 0000000..e7976d1 Binary files /dev/null and b/aePronunciation/raw/double_eru_m.mp3 differ diff --git a/aePronunciation/raw/double_eru_n.mp3 b/aePronunciation/raw/double_eru_n.mp3 new file mode 100755 index 0000000..03f8efd Binary files /dev/null and b/aePronunciation/raw/double_eru_n.mp3 differ diff --git a/aePronunciation/raw/double_eru_ng.mp3 b/aePronunciation/raw/double_eru_ng.mp3 new file mode 100755 index 0000000..36e59e6 Binary files /dev/null and b/aePronunciation/raw/double_eru_ng.mp3 differ diff --git a/aePronunciation/raw/double_eru_p.mp3 b/aePronunciation/raw/double_eru_p.mp3 new file mode 100755 index 0000000..e442551 Binary files /dev/null and b/aePronunciation/raw/double_eru_p.mp3 differ diff --git a/aePronunciation/raw/double_eru_s.mp3 b/aePronunciation/raw/double_eru_s.mp3 new file mode 100755 index 0000000..1ad0221 Binary files /dev/null and b/aePronunciation/raw/double_eru_s.mp3 differ diff --git a/aePronunciation/raw/double_eru_sh.mp3 b/aePronunciation/raw/double_eru_sh.mp3 new file mode 100755 index 0000000..b67eeee Binary files /dev/null and b/aePronunciation/raw/double_eru_sh.mp3 differ diff --git a/aePronunciation/raw/double_eru_t.mp3 b/aePronunciation/raw/double_eru_t.mp3 new file mode 100755 index 0000000..7f4fb58 Binary files /dev/null and b/aePronunciation/raw/double_eru_t.mp3 differ diff --git a/aePronunciation/raw/double_eru_th.mp3 b/aePronunciation/raw/double_eru_th.mp3 new file mode 100755 index 0000000..f4a472d Binary files /dev/null and b/aePronunciation/raw/double_eru_th.mp3 differ diff --git a/aePronunciation/raw/double_eru_thv.mp3 b/aePronunciation/raw/double_eru_thv.mp3 new file mode 100755 index 0000000..d5467a0 Binary files /dev/null and b/aePronunciation/raw/double_eru_thv.mp3 differ diff --git a/aePronunciation/raw/double_eru_v.mp3 b/aePronunciation/raw/double_eru_v.mp3 new file mode 100755 index 0000000..d228236 Binary files /dev/null and b/aePronunciation/raw/double_eru_v.mp3 differ diff --git a/aePronunciation/raw/double_eru_z.mp3 b/aePronunciation/raw/double_eru_z.mp3 new file mode 100755 index 0000000..82ba6d2 Binary files /dev/null and b/aePronunciation/raw/double_eru_z.mp3 differ diff --git a/aePronunciation/raw/double_eru_zh.mp3 b/aePronunciation/raw/double_eru_zh.mp3 new file mode 100755 index 0000000..8f1d3ee Binary files /dev/null and b/aePronunciation/raw/double_eru_zh.mp3 differ diff --git a/aePronunciation/raw/double_f_a.mp3 b/aePronunciation/raw/double_f_a.mp3 new file mode 100755 index 0000000..a7df153 Binary files /dev/null and b/aePronunciation/raw/double_f_a.mp3 differ diff --git a/aePronunciation/raw/double_f_ae.mp3 b/aePronunciation/raw/double_f_ae.mp3 new file mode 100755 index 0000000..f637c18 Binary files /dev/null and b/aePronunciation/raw/double_f_ae.mp3 differ diff --git a/aePronunciation/raw/double_f_ai.mp3 b/aePronunciation/raw/double_f_ai.mp3 new file mode 100755 index 0000000..14f31cf Binary files /dev/null and b/aePronunciation/raw/double_f_ai.mp3 differ diff --git a/aePronunciation/raw/double_f_ar.mp3 b/aePronunciation/raw/double_f_ar.mp3 new file mode 100755 index 0000000..550b356 Binary files /dev/null and b/aePronunciation/raw/double_f_ar.mp3 differ diff --git a/aePronunciation/raw/double_f_au.mp3 b/aePronunciation/raw/double_f_au.mp3 new file mode 100755 index 0000000..0f861e7 Binary files /dev/null and b/aePronunciation/raw/double_f_au.mp3 differ diff --git a/aePronunciation/raw/double_f_c.mp3 b/aePronunciation/raw/double_f_c.mp3 new file mode 100755 index 0000000..ce8345a Binary files /dev/null and b/aePronunciation/raw/double_f_c.mp3 differ diff --git a/aePronunciation/raw/double_f_e.mp3 b/aePronunciation/raw/double_f_e.mp3 new file mode 100755 index 0000000..3feb5bf Binary files /dev/null and b/aePronunciation/raw/double_f_e.mp3 differ diff --git a/aePronunciation/raw/double_f_ei.mp3 b/aePronunciation/raw/double_f_ei.mp3 new file mode 100755 index 0000000..4cc609b Binary files /dev/null and b/aePronunciation/raw/double_f_ei.mp3 differ diff --git a/aePronunciation/raw/double_f_er.mp3 b/aePronunciation/raw/double_f_er.mp3 new file mode 100755 index 0000000..bcee92f Binary files /dev/null and b/aePronunciation/raw/double_f_er.mp3 differ diff --git a/aePronunciation/raw/double_f_ers.mp3 b/aePronunciation/raw/double_f_ers.mp3 new file mode 100755 index 0000000..ca1d7ba Binary files /dev/null and b/aePronunciation/raw/double_f_ers.mp3 differ diff --git a/aePronunciation/raw/double_f_eru.mp3 b/aePronunciation/raw/double_f_eru.mp3 new file mode 100755 index 0000000..1c4c7a9 Binary files /dev/null and b/aePronunciation/raw/double_f_eru.mp3 differ diff --git a/aePronunciation/raw/double_f_i.mp3 b/aePronunciation/raw/double_f_i.mp3 new file mode 100755 index 0000000..8a88795 Binary files /dev/null and b/aePronunciation/raw/double_f_i.mp3 differ diff --git a/aePronunciation/raw/double_f_ir.mp3 b/aePronunciation/raw/double_f_ir.mp3 new file mode 100755 index 0000000..57f9d1e Binary files /dev/null and b/aePronunciation/raw/double_f_ir.mp3 differ diff --git a/aePronunciation/raw/double_f_is.mp3 b/aePronunciation/raw/double_f_is.mp3 new file mode 100755 index 0000000..d3d50f1 Binary files /dev/null and b/aePronunciation/raw/double_f_is.mp3 differ diff --git a/aePronunciation/raw/double_f_oi.mp3 b/aePronunciation/raw/double_f_oi.mp3 new file mode 100755 index 0000000..6181fad Binary files /dev/null and b/aePronunciation/raw/double_f_oi.mp3 differ diff --git a/aePronunciation/raw/double_f_or.mp3 b/aePronunciation/raw/double_f_or.mp3 new file mode 100755 index 0000000..be01f0c Binary files /dev/null and b/aePronunciation/raw/double_f_or.mp3 differ diff --git a/aePronunciation/raw/double_f_ou.mp3 b/aePronunciation/raw/double_f_ou.mp3 new file mode 100755 index 0000000..ef21bd5 Binary files /dev/null and b/aePronunciation/raw/double_f_ou.mp3 differ diff --git a/aePronunciation/raw/double_f_shwua.mp3 b/aePronunciation/raw/double_f_shwua.mp3 new file mode 100755 index 0000000..277da9f Binary files /dev/null and b/aePronunciation/raw/double_f_shwua.mp3 differ diff --git a/aePronunciation/raw/double_f_u.mp3 b/aePronunciation/raw/double_f_u.mp3 new file mode 100755 index 0000000..796777b Binary files /dev/null and b/aePronunciation/raw/double_f_u.mp3 differ diff --git a/aePronunciation/raw/double_f_us.mp3 b/aePronunciation/raw/double_f_us.mp3 new file mode 100755 index 0000000..24a407c Binary files /dev/null and b/aePronunciation/raw/double_f_us.mp3 differ diff --git a/aePronunciation/raw/double_f_vu.mp3 b/aePronunciation/raw/double_f_vu.mp3 new file mode 100755 index 0000000..46e8c36 Binary files /dev/null and b/aePronunciation/raw/double_f_vu.mp3 differ diff --git a/aePronunciation/raw/double_g_a.mp3 b/aePronunciation/raw/double_g_a.mp3 new file mode 100755 index 0000000..6bfd359 Binary files /dev/null and b/aePronunciation/raw/double_g_a.mp3 differ diff --git a/aePronunciation/raw/double_g_ae.mp3 b/aePronunciation/raw/double_g_ae.mp3 new file mode 100755 index 0000000..f453557 Binary files /dev/null and b/aePronunciation/raw/double_g_ae.mp3 differ diff --git a/aePronunciation/raw/double_g_ai.mp3 b/aePronunciation/raw/double_g_ai.mp3 new file mode 100755 index 0000000..aad84af Binary files /dev/null and b/aePronunciation/raw/double_g_ai.mp3 differ diff --git a/aePronunciation/raw/double_g_ar.mp3 b/aePronunciation/raw/double_g_ar.mp3 new file mode 100755 index 0000000..f2a09dd Binary files /dev/null and b/aePronunciation/raw/double_g_ar.mp3 differ diff --git a/aePronunciation/raw/double_g_au.mp3 b/aePronunciation/raw/double_g_au.mp3 new file mode 100755 index 0000000..c39a4ab Binary files /dev/null and b/aePronunciation/raw/double_g_au.mp3 differ diff --git a/aePronunciation/raw/double_g_c.mp3 b/aePronunciation/raw/double_g_c.mp3 new file mode 100755 index 0000000..04e3358 Binary files /dev/null and b/aePronunciation/raw/double_g_c.mp3 differ diff --git a/aePronunciation/raw/double_g_e.mp3 b/aePronunciation/raw/double_g_e.mp3 new file mode 100755 index 0000000..2a25c47 Binary files /dev/null and b/aePronunciation/raw/double_g_e.mp3 differ diff --git a/aePronunciation/raw/double_g_ei.mp3 b/aePronunciation/raw/double_g_ei.mp3 new file mode 100755 index 0000000..17cb01a Binary files /dev/null and b/aePronunciation/raw/double_g_ei.mp3 differ diff --git a/aePronunciation/raw/double_g_er.mp3 b/aePronunciation/raw/double_g_er.mp3 new file mode 100755 index 0000000..f595d34 Binary files /dev/null and b/aePronunciation/raw/double_g_er.mp3 differ diff --git a/aePronunciation/raw/double_g_ers.mp3 b/aePronunciation/raw/double_g_ers.mp3 new file mode 100755 index 0000000..bc2803d Binary files /dev/null and b/aePronunciation/raw/double_g_ers.mp3 differ diff --git a/aePronunciation/raw/double_g_eru.mp3 b/aePronunciation/raw/double_g_eru.mp3 new file mode 100755 index 0000000..7b39282 Binary files /dev/null and b/aePronunciation/raw/double_g_eru.mp3 differ diff --git a/aePronunciation/raw/double_g_i.mp3 b/aePronunciation/raw/double_g_i.mp3 new file mode 100755 index 0000000..f057125 Binary files /dev/null and b/aePronunciation/raw/double_g_i.mp3 differ diff --git a/aePronunciation/raw/double_g_ir.mp3 b/aePronunciation/raw/double_g_ir.mp3 new file mode 100755 index 0000000..f8729b1 Binary files /dev/null and b/aePronunciation/raw/double_g_ir.mp3 differ diff --git a/aePronunciation/raw/double_g_is.mp3 b/aePronunciation/raw/double_g_is.mp3 new file mode 100755 index 0000000..b4c8b59 Binary files /dev/null and b/aePronunciation/raw/double_g_is.mp3 differ diff --git a/aePronunciation/raw/double_g_oi.mp3 b/aePronunciation/raw/double_g_oi.mp3 new file mode 100755 index 0000000..56ce331 Binary files /dev/null and b/aePronunciation/raw/double_g_oi.mp3 differ diff --git a/aePronunciation/raw/double_g_or.mp3 b/aePronunciation/raw/double_g_or.mp3 new file mode 100755 index 0000000..a1351a7 Binary files /dev/null and b/aePronunciation/raw/double_g_or.mp3 differ diff --git a/aePronunciation/raw/double_g_ou.mp3 b/aePronunciation/raw/double_g_ou.mp3 new file mode 100755 index 0000000..a8cb222 Binary files /dev/null and b/aePronunciation/raw/double_g_ou.mp3 differ diff --git a/aePronunciation/raw/double_g_shwua.mp3 b/aePronunciation/raw/double_g_shwua.mp3 new file mode 100755 index 0000000..fecdac3 Binary files /dev/null and b/aePronunciation/raw/double_g_shwua.mp3 differ diff --git a/aePronunciation/raw/double_g_u.mp3 b/aePronunciation/raw/double_g_u.mp3 new file mode 100755 index 0000000..44fd941 Binary files /dev/null and b/aePronunciation/raw/double_g_u.mp3 differ diff --git a/aePronunciation/raw/double_g_us.mp3 b/aePronunciation/raw/double_g_us.mp3 new file mode 100755 index 0000000..0cd480e Binary files /dev/null and b/aePronunciation/raw/double_g_us.mp3 differ diff --git a/aePronunciation/raw/double_g_vu.mp3 b/aePronunciation/raw/double_g_vu.mp3 new file mode 100755 index 0000000..b462e99 Binary files /dev/null and b/aePronunciation/raw/double_g_vu.mp3 differ diff --git a/aePronunciation/raw/double_h_a.mp3 b/aePronunciation/raw/double_h_a.mp3 new file mode 100755 index 0000000..4e383d8 Binary files /dev/null and b/aePronunciation/raw/double_h_a.mp3 differ diff --git a/aePronunciation/raw/double_h_ae.mp3 b/aePronunciation/raw/double_h_ae.mp3 new file mode 100755 index 0000000..2b3464d Binary files /dev/null and b/aePronunciation/raw/double_h_ae.mp3 differ diff --git a/aePronunciation/raw/double_h_ai.mp3 b/aePronunciation/raw/double_h_ai.mp3 new file mode 100755 index 0000000..e9f798b Binary files /dev/null and b/aePronunciation/raw/double_h_ai.mp3 differ diff --git a/aePronunciation/raw/double_h_ar.mp3 b/aePronunciation/raw/double_h_ar.mp3 new file mode 100755 index 0000000..7f1a5b6 Binary files /dev/null and b/aePronunciation/raw/double_h_ar.mp3 differ diff --git a/aePronunciation/raw/double_h_au.mp3 b/aePronunciation/raw/double_h_au.mp3 new file mode 100755 index 0000000..61976ab Binary files /dev/null and b/aePronunciation/raw/double_h_au.mp3 differ diff --git a/aePronunciation/raw/double_h_c.mp3 b/aePronunciation/raw/double_h_c.mp3 new file mode 100755 index 0000000..7ae21eb Binary files /dev/null and b/aePronunciation/raw/double_h_c.mp3 differ diff --git a/aePronunciation/raw/double_h_e.mp3 b/aePronunciation/raw/double_h_e.mp3 new file mode 100755 index 0000000..8f09d06 Binary files /dev/null and b/aePronunciation/raw/double_h_e.mp3 differ diff --git a/aePronunciation/raw/double_h_ei.mp3 b/aePronunciation/raw/double_h_ei.mp3 new file mode 100755 index 0000000..505447c Binary files /dev/null and b/aePronunciation/raw/double_h_ei.mp3 differ diff --git a/aePronunciation/raw/double_h_er.mp3 b/aePronunciation/raw/double_h_er.mp3 new file mode 100755 index 0000000..9c25d49 Binary files /dev/null and b/aePronunciation/raw/double_h_er.mp3 differ diff --git a/aePronunciation/raw/double_h_ers.mp3 b/aePronunciation/raw/double_h_ers.mp3 new file mode 100755 index 0000000..f57fcc5 Binary files /dev/null and b/aePronunciation/raw/double_h_ers.mp3 differ diff --git a/aePronunciation/raw/double_h_eru.mp3 b/aePronunciation/raw/double_h_eru.mp3 new file mode 100755 index 0000000..2b71e03 Binary files /dev/null and b/aePronunciation/raw/double_h_eru.mp3 differ diff --git a/aePronunciation/raw/double_h_i.mp3 b/aePronunciation/raw/double_h_i.mp3 new file mode 100755 index 0000000..a89dcc8 Binary files /dev/null and b/aePronunciation/raw/double_h_i.mp3 differ diff --git a/aePronunciation/raw/double_h_ir.mp3 b/aePronunciation/raw/double_h_ir.mp3 new file mode 100755 index 0000000..0250367 Binary files /dev/null and b/aePronunciation/raw/double_h_ir.mp3 differ diff --git a/aePronunciation/raw/double_h_is.mp3 b/aePronunciation/raw/double_h_is.mp3 new file mode 100755 index 0000000..b0c70da Binary files /dev/null and b/aePronunciation/raw/double_h_is.mp3 differ diff --git a/aePronunciation/raw/double_h_oi.mp3 b/aePronunciation/raw/double_h_oi.mp3 new file mode 100755 index 0000000..46ace5a Binary files /dev/null and b/aePronunciation/raw/double_h_oi.mp3 differ diff --git a/aePronunciation/raw/double_h_or.mp3 b/aePronunciation/raw/double_h_or.mp3 new file mode 100755 index 0000000..de3ada3 Binary files /dev/null and b/aePronunciation/raw/double_h_or.mp3 differ diff --git a/aePronunciation/raw/double_h_ou.mp3 b/aePronunciation/raw/double_h_ou.mp3 new file mode 100755 index 0000000..17555a3 Binary files /dev/null and b/aePronunciation/raw/double_h_ou.mp3 differ diff --git a/aePronunciation/raw/double_h_shwua.mp3 b/aePronunciation/raw/double_h_shwua.mp3 new file mode 100755 index 0000000..b62c2ed Binary files /dev/null and b/aePronunciation/raw/double_h_shwua.mp3 differ diff --git a/aePronunciation/raw/double_h_u.mp3 b/aePronunciation/raw/double_h_u.mp3 new file mode 100755 index 0000000..51e83ff Binary files /dev/null and b/aePronunciation/raw/double_h_u.mp3 differ diff --git a/aePronunciation/raw/double_h_us.mp3 b/aePronunciation/raw/double_h_us.mp3 new file mode 100755 index 0000000..32a25c4 Binary files /dev/null and b/aePronunciation/raw/double_h_us.mp3 differ diff --git a/aePronunciation/raw/double_h_vu.mp3 b/aePronunciation/raw/double_h_vu.mp3 new file mode 100755 index 0000000..74e2138 Binary files /dev/null and b/aePronunciation/raw/double_h_vu.mp3 differ diff --git a/aePronunciation/raw/double_i_b.mp3 b/aePronunciation/raw/double_i_b.mp3 new file mode 100755 index 0000000..d82d130 Binary files /dev/null and b/aePronunciation/raw/double_i_b.mp3 differ diff --git a/aePronunciation/raw/double_i_ch.mp3 b/aePronunciation/raw/double_i_ch.mp3 new file mode 100755 index 0000000..eb013d3 Binary files /dev/null and b/aePronunciation/raw/double_i_ch.mp3 differ diff --git a/aePronunciation/raw/double_i_d.mp3 b/aePronunciation/raw/double_i_d.mp3 new file mode 100755 index 0000000..d32b423 Binary files /dev/null and b/aePronunciation/raw/double_i_d.mp3 differ diff --git a/aePronunciation/raw/double_i_dzh.mp3 b/aePronunciation/raw/double_i_dzh.mp3 new file mode 100755 index 0000000..c79707b Binary files /dev/null and b/aePronunciation/raw/double_i_dzh.mp3 differ diff --git a/aePronunciation/raw/double_i_f.mp3 b/aePronunciation/raw/double_i_f.mp3 new file mode 100755 index 0000000..ad3f4da Binary files /dev/null and b/aePronunciation/raw/double_i_f.mp3 differ diff --git a/aePronunciation/raw/double_i_flap_shwua.mp3 b/aePronunciation/raw/double_i_flap_shwua.mp3 new file mode 100755 index 0000000..f42a1f3 Binary files /dev/null and b/aePronunciation/raw/double_i_flap_shwua.mp3 differ diff --git a/aePronunciation/raw/double_i_g.mp3 b/aePronunciation/raw/double_i_g.mp3 new file mode 100755 index 0000000..4c77494 Binary files /dev/null and b/aePronunciation/raw/double_i_g.mp3 differ diff --git a/aePronunciation/raw/double_i_glottal.mp3 b/aePronunciation/raw/double_i_glottal.mp3 new file mode 100755 index 0000000..e1c8d25 Binary files /dev/null and b/aePronunciation/raw/double_i_glottal.mp3 differ diff --git a/aePronunciation/raw/double_i_k.mp3 b/aePronunciation/raw/double_i_k.mp3 new file mode 100755 index 0000000..7ffff8e Binary files /dev/null and b/aePronunciation/raw/double_i_k.mp3 differ diff --git a/aePronunciation/raw/double_i_l.mp3 b/aePronunciation/raw/double_i_l.mp3 new file mode 100755 index 0000000..11428a7 Binary files /dev/null and b/aePronunciation/raw/double_i_l.mp3 differ diff --git a/aePronunciation/raw/double_i_m.mp3 b/aePronunciation/raw/double_i_m.mp3 new file mode 100755 index 0000000..44da23f Binary files /dev/null and b/aePronunciation/raw/double_i_m.mp3 differ diff --git a/aePronunciation/raw/double_i_n.mp3 b/aePronunciation/raw/double_i_n.mp3 new file mode 100755 index 0000000..6ef4a19 Binary files /dev/null and b/aePronunciation/raw/double_i_n.mp3 differ diff --git a/aePronunciation/raw/double_i_ng.mp3 b/aePronunciation/raw/double_i_ng.mp3 new file mode 100755 index 0000000..0b24849 Binary files /dev/null and b/aePronunciation/raw/double_i_ng.mp3 differ diff --git a/aePronunciation/raw/double_i_p.mp3 b/aePronunciation/raw/double_i_p.mp3 new file mode 100755 index 0000000..b462444 Binary files /dev/null and b/aePronunciation/raw/double_i_p.mp3 differ diff --git a/aePronunciation/raw/double_i_s.mp3 b/aePronunciation/raw/double_i_s.mp3 new file mode 100755 index 0000000..018469c Binary files /dev/null and b/aePronunciation/raw/double_i_s.mp3 differ diff --git a/aePronunciation/raw/double_i_sh.mp3 b/aePronunciation/raw/double_i_sh.mp3 new file mode 100755 index 0000000..2c8d187 Binary files /dev/null and b/aePronunciation/raw/double_i_sh.mp3 differ diff --git a/aePronunciation/raw/double_i_t.mp3 b/aePronunciation/raw/double_i_t.mp3 new file mode 100755 index 0000000..aac30cb Binary files /dev/null and b/aePronunciation/raw/double_i_t.mp3 differ diff --git a/aePronunciation/raw/double_i_th.mp3 b/aePronunciation/raw/double_i_th.mp3 new file mode 100755 index 0000000..f9cf69c Binary files /dev/null and b/aePronunciation/raw/double_i_th.mp3 differ diff --git a/aePronunciation/raw/double_i_thv.mp3 b/aePronunciation/raw/double_i_thv.mp3 new file mode 100755 index 0000000..bdb201d Binary files /dev/null and b/aePronunciation/raw/double_i_thv.mp3 differ diff --git a/aePronunciation/raw/double_i_v.mp3 b/aePronunciation/raw/double_i_v.mp3 new file mode 100755 index 0000000..ff6cecf Binary files /dev/null and b/aePronunciation/raw/double_i_v.mp3 differ diff --git a/aePronunciation/raw/double_i_z.mp3 b/aePronunciation/raw/double_i_z.mp3 new file mode 100755 index 0000000..7bb789e Binary files /dev/null and b/aePronunciation/raw/double_i_z.mp3 differ diff --git a/aePronunciation/raw/double_i_zh.mp3 b/aePronunciation/raw/double_i_zh.mp3 new file mode 100755 index 0000000..28aa95b Binary files /dev/null and b/aePronunciation/raw/double_i_zh.mp3 differ diff --git a/aePronunciation/raw/double_ir_b.mp3 b/aePronunciation/raw/double_ir_b.mp3 new file mode 100755 index 0000000..087a879 Binary files /dev/null and b/aePronunciation/raw/double_ir_b.mp3 differ diff --git a/aePronunciation/raw/double_ir_ch.mp3 b/aePronunciation/raw/double_ir_ch.mp3 new file mode 100755 index 0000000..1cccddc Binary files /dev/null and b/aePronunciation/raw/double_ir_ch.mp3 differ diff --git a/aePronunciation/raw/double_ir_d.mp3 b/aePronunciation/raw/double_ir_d.mp3 new file mode 100755 index 0000000..888c2cb Binary files /dev/null and b/aePronunciation/raw/double_ir_d.mp3 differ diff --git a/aePronunciation/raw/double_ir_dzh.mp3 b/aePronunciation/raw/double_ir_dzh.mp3 new file mode 100755 index 0000000..a02ca0c Binary files /dev/null and b/aePronunciation/raw/double_ir_dzh.mp3 differ diff --git a/aePronunciation/raw/double_ir_f.mp3 b/aePronunciation/raw/double_ir_f.mp3 new file mode 100755 index 0000000..674875b Binary files /dev/null and b/aePronunciation/raw/double_ir_f.mp3 differ diff --git a/aePronunciation/raw/double_ir_flap_shwua.mp3 b/aePronunciation/raw/double_ir_flap_shwua.mp3 new file mode 100755 index 0000000..feaa03c Binary files /dev/null and b/aePronunciation/raw/double_ir_flap_shwua.mp3 differ diff --git a/aePronunciation/raw/double_ir_g.mp3 b/aePronunciation/raw/double_ir_g.mp3 new file mode 100755 index 0000000..911ba81 Binary files /dev/null and b/aePronunciation/raw/double_ir_g.mp3 differ diff --git a/aePronunciation/raw/double_ir_glottal.mp3 b/aePronunciation/raw/double_ir_glottal.mp3 new file mode 100755 index 0000000..a29c1b3 Binary files /dev/null and b/aePronunciation/raw/double_ir_glottal.mp3 differ diff --git a/aePronunciation/raw/double_ir_k.mp3 b/aePronunciation/raw/double_ir_k.mp3 new file mode 100755 index 0000000..143cfc1 Binary files /dev/null and b/aePronunciation/raw/double_ir_k.mp3 differ diff --git a/aePronunciation/raw/double_ir_l.mp3 b/aePronunciation/raw/double_ir_l.mp3 new file mode 100755 index 0000000..ae80546 Binary files /dev/null and b/aePronunciation/raw/double_ir_l.mp3 differ diff --git a/aePronunciation/raw/double_ir_m.mp3 b/aePronunciation/raw/double_ir_m.mp3 new file mode 100755 index 0000000..236accc Binary files /dev/null and b/aePronunciation/raw/double_ir_m.mp3 differ diff --git a/aePronunciation/raw/double_ir_n.mp3 b/aePronunciation/raw/double_ir_n.mp3 new file mode 100755 index 0000000..7c05a68 Binary files /dev/null and b/aePronunciation/raw/double_ir_n.mp3 differ diff --git a/aePronunciation/raw/double_ir_ng.mp3 b/aePronunciation/raw/double_ir_ng.mp3 new file mode 100755 index 0000000..dec5239 Binary files /dev/null and b/aePronunciation/raw/double_ir_ng.mp3 differ diff --git a/aePronunciation/raw/double_ir_p.mp3 b/aePronunciation/raw/double_ir_p.mp3 new file mode 100755 index 0000000..cf29724 Binary files /dev/null and b/aePronunciation/raw/double_ir_p.mp3 differ diff --git a/aePronunciation/raw/double_ir_s.mp3 b/aePronunciation/raw/double_ir_s.mp3 new file mode 100755 index 0000000..632fb5d Binary files /dev/null and b/aePronunciation/raw/double_ir_s.mp3 differ diff --git a/aePronunciation/raw/double_ir_sh.mp3 b/aePronunciation/raw/double_ir_sh.mp3 new file mode 100755 index 0000000..12c76fd Binary files /dev/null and b/aePronunciation/raw/double_ir_sh.mp3 differ diff --git a/aePronunciation/raw/double_ir_t.mp3 b/aePronunciation/raw/double_ir_t.mp3 new file mode 100755 index 0000000..3d848f3 Binary files /dev/null and b/aePronunciation/raw/double_ir_t.mp3 differ diff --git a/aePronunciation/raw/double_ir_th.mp3 b/aePronunciation/raw/double_ir_th.mp3 new file mode 100755 index 0000000..0c1694b Binary files /dev/null and b/aePronunciation/raw/double_ir_th.mp3 differ diff --git a/aePronunciation/raw/double_ir_thv.mp3 b/aePronunciation/raw/double_ir_thv.mp3 new file mode 100755 index 0000000..eb84dba Binary files /dev/null and b/aePronunciation/raw/double_ir_thv.mp3 differ diff --git a/aePronunciation/raw/double_ir_v.mp3 b/aePronunciation/raw/double_ir_v.mp3 new file mode 100755 index 0000000..988cc28 Binary files /dev/null and b/aePronunciation/raw/double_ir_v.mp3 differ diff --git a/aePronunciation/raw/double_ir_z.mp3 b/aePronunciation/raw/double_ir_z.mp3 new file mode 100755 index 0000000..05b25cf Binary files /dev/null and b/aePronunciation/raw/double_ir_z.mp3 differ diff --git a/aePronunciation/raw/double_ir_zh.mp3 b/aePronunciation/raw/double_ir_zh.mp3 new file mode 100755 index 0000000..499d2e3 Binary files /dev/null and b/aePronunciation/raw/double_ir_zh.mp3 differ diff --git a/aePronunciation/raw/double_is_b.mp3 b/aePronunciation/raw/double_is_b.mp3 new file mode 100755 index 0000000..b08b98d Binary files /dev/null and b/aePronunciation/raw/double_is_b.mp3 differ diff --git a/aePronunciation/raw/double_is_ch.mp3 b/aePronunciation/raw/double_is_ch.mp3 new file mode 100755 index 0000000..2ffa032 Binary files /dev/null and b/aePronunciation/raw/double_is_ch.mp3 differ diff --git a/aePronunciation/raw/double_is_d.mp3 b/aePronunciation/raw/double_is_d.mp3 new file mode 100755 index 0000000..d9e00bc Binary files /dev/null and b/aePronunciation/raw/double_is_d.mp3 differ diff --git a/aePronunciation/raw/double_is_dzh.mp3 b/aePronunciation/raw/double_is_dzh.mp3 new file mode 100755 index 0000000..dbfad61 Binary files /dev/null and b/aePronunciation/raw/double_is_dzh.mp3 differ diff --git a/aePronunciation/raw/double_is_f.mp3 b/aePronunciation/raw/double_is_f.mp3 new file mode 100755 index 0000000..3c77e3a Binary files /dev/null and b/aePronunciation/raw/double_is_f.mp3 differ diff --git a/aePronunciation/raw/double_is_flap_shwua.mp3 b/aePronunciation/raw/double_is_flap_shwua.mp3 new file mode 100755 index 0000000..7a07388 Binary files /dev/null and b/aePronunciation/raw/double_is_flap_shwua.mp3 differ diff --git a/aePronunciation/raw/double_is_g.mp3 b/aePronunciation/raw/double_is_g.mp3 new file mode 100755 index 0000000..7a71907 Binary files /dev/null and b/aePronunciation/raw/double_is_g.mp3 differ diff --git a/aePronunciation/raw/double_is_glottal.mp3 b/aePronunciation/raw/double_is_glottal.mp3 new file mode 100755 index 0000000..03725fa Binary files /dev/null and b/aePronunciation/raw/double_is_glottal.mp3 differ diff --git a/aePronunciation/raw/double_is_k.mp3 b/aePronunciation/raw/double_is_k.mp3 new file mode 100755 index 0000000..9f4312b Binary files /dev/null and b/aePronunciation/raw/double_is_k.mp3 differ diff --git a/aePronunciation/raw/double_is_l.mp3 b/aePronunciation/raw/double_is_l.mp3 new file mode 100755 index 0000000..e03d4a0 Binary files /dev/null and b/aePronunciation/raw/double_is_l.mp3 differ diff --git a/aePronunciation/raw/double_is_m.mp3 b/aePronunciation/raw/double_is_m.mp3 new file mode 100755 index 0000000..6848d4b Binary files /dev/null and b/aePronunciation/raw/double_is_m.mp3 differ diff --git a/aePronunciation/raw/double_is_n.mp3 b/aePronunciation/raw/double_is_n.mp3 new file mode 100755 index 0000000..81461a0 Binary files /dev/null and b/aePronunciation/raw/double_is_n.mp3 differ diff --git a/aePronunciation/raw/double_is_ng.mp3 b/aePronunciation/raw/double_is_ng.mp3 new file mode 100755 index 0000000..b8a23d3 Binary files /dev/null and b/aePronunciation/raw/double_is_ng.mp3 differ diff --git a/aePronunciation/raw/double_is_p.mp3 b/aePronunciation/raw/double_is_p.mp3 new file mode 100755 index 0000000..814bd1a Binary files /dev/null and b/aePronunciation/raw/double_is_p.mp3 differ diff --git a/aePronunciation/raw/double_is_s.mp3 b/aePronunciation/raw/double_is_s.mp3 new file mode 100755 index 0000000..420345d Binary files /dev/null and b/aePronunciation/raw/double_is_s.mp3 differ diff --git a/aePronunciation/raw/double_is_sh.mp3 b/aePronunciation/raw/double_is_sh.mp3 new file mode 100755 index 0000000..958d47d Binary files /dev/null and b/aePronunciation/raw/double_is_sh.mp3 differ diff --git a/aePronunciation/raw/double_is_t.mp3 b/aePronunciation/raw/double_is_t.mp3 new file mode 100755 index 0000000..0a963fc Binary files /dev/null and b/aePronunciation/raw/double_is_t.mp3 differ diff --git a/aePronunciation/raw/double_is_th.mp3 b/aePronunciation/raw/double_is_th.mp3 new file mode 100755 index 0000000..d70a514 Binary files /dev/null and b/aePronunciation/raw/double_is_th.mp3 differ diff --git a/aePronunciation/raw/double_is_thv.mp3 b/aePronunciation/raw/double_is_thv.mp3 new file mode 100755 index 0000000..9eff6b3 Binary files /dev/null and b/aePronunciation/raw/double_is_thv.mp3 differ diff --git a/aePronunciation/raw/double_is_v.mp3 b/aePronunciation/raw/double_is_v.mp3 new file mode 100755 index 0000000..b52231c Binary files /dev/null and b/aePronunciation/raw/double_is_v.mp3 differ diff --git a/aePronunciation/raw/double_is_z.mp3 b/aePronunciation/raw/double_is_z.mp3 new file mode 100755 index 0000000..2885dfa Binary files /dev/null and b/aePronunciation/raw/double_is_z.mp3 differ diff --git a/aePronunciation/raw/double_is_zh.mp3 b/aePronunciation/raw/double_is_zh.mp3 new file mode 100755 index 0000000..0ae7291 Binary files /dev/null and b/aePronunciation/raw/double_is_zh.mp3 differ diff --git a/aePronunciation/raw/double_j_a.mp3 b/aePronunciation/raw/double_j_a.mp3 new file mode 100755 index 0000000..269bf1a Binary files /dev/null and b/aePronunciation/raw/double_j_a.mp3 differ diff --git a/aePronunciation/raw/double_j_ae.mp3 b/aePronunciation/raw/double_j_ae.mp3 new file mode 100755 index 0000000..54e7960 Binary files /dev/null and b/aePronunciation/raw/double_j_ae.mp3 differ diff --git a/aePronunciation/raw/double_j_ai.mp3 b/aePronunciation/raw/double_j_ai.mp3 new file mode 100755 index 0000000..3cce939 Binary files /dev/null and b/aePronunciation/raw/double_j_ai.mp3 differ diff --git a/aePronunciation/raw/double_j_ar.mp3 b/aePronunciation/raw/double_j_ar.mp3 new file mode 100755 index 0000000..9fb2497 Binary files /dev/null and b/aePronunciation/raw/double_j_ar.mp3 differ diff --git a/aePronunciation/raw/double_j_au.mp3 b/aePronunciation/raw/double_j_au.mp3 new file mode 100755 index 0000000..647e9ab Binary files /dev/null and b/aePronunciation/raw/double_j_au.mp3 differ diff --git a/aePronunciation/raw/double_j_c.mp3 b/aePronunciation/raw/double_j_c.mp3 new file mode 100755 index 0000000..f3fab3a Binary files /dev/null and b/aePronunciation/raw/double_j_c.mp3 differ diff --git a/aePronunciation/raw/double_j_e.mp3 b/aePronunciation/raw/double_j_e.mp3 new file mode 100755 index 0000000..18d7597 Binary files /dev/null and b/aePronunciation/raw/double_j_e.mp3 differ diff --git a/aePronunciation/raw/double_j_ei.mp3 b/aePronunciation/raw/double_j_ei.mp3 new file mode 100755 index 0000000..7216ced Binary files /dev/null and b/aePronunciation/raw/double_j_ei.mp3 differ diff --git a/aePronunciation/raw/double_j_er.mp3 b/aePronunciation/raw/double_j_er.mp3 new file mode 100755 index 0000000..a801a0c Binary files /dev/null and b/aePronunciation/raw/double_j_er.mp3 differ diff --git a/aePronunciation/raw/double_j_ers.mp3 b/aePronunciation/raw/double_j_ers.mp3 new file mode 100755 index 0000000..a8bd642 Binary files /dev/null and b/aePronunciation/raw/double_j_ers.mp3 differ diff --git a/aePronunciation/raw/double_j_eru.mp3 b/aePronunciation/raw/double_j_eru.mp3 new file mode 100755 index 0000000..401d2df Binary files /dev/null and b/aePronunciation/raw/double_j_eru.mp3 differ diff --git a/aePronunciation/raw/double_j_i.mp3 b/aePronunciation/raw/double_j_i.mp3 new file mode 100755 index 0000000..c251db3 Binary files /dev/null and b/aePronunciation/raw/double_j_i.mp3 differ diff --git a/aePronunciation/raw/double_j_ir.mp3 b/aePronunciation/raw/double_j_ir.mp3 new file mode 100755 index 0000000..3847fe5 Binary files /dev/null and b/aePronunciation/raw/double_j_ir.mp3 differ diff --git a/aePronunciation/raw/double_j_is.mp3 b/aePronunciation/raw/double_j_is.mp3 new file mode 100755 index 0000000..bc7a803 Binary files /dev/null and b/aePronunciation/raw/double_j_is.mp3 differ diff --git a/aePronunciation/raw/double_j_oi.mp3 b/aePronunciation/raw/double_j_oi.mp3 new file mode 100755 index 0000000..2a9050d Binary files /dev/null and b/aePronunciation/raw/double_j_oi.mp3 differ diff --git a/aePronunciation/raw/double_j_or.mp3 b/aePronunciation/raw/double_j_or.mp3 new file mode 100755 index 0000000..954e668 Binary files /dev/null and b/aePronunciation/raw/double_j_or.mp3 differ diff --git a/aePronunciation/raw/double_j_ou.mp3 b/aePronunciation/raw/double_j_ou.mp3 new file mode 100755 index 0000000..126a172 Binary files /dev/null and b/aePronunciation/raw/double_j_ou.mp3 differ diff --git a/aePronunciation/raw/double_j_shwua.mp3 b/aePronunciation/raw/double_j_shwua.mp3 new file mode 100755 index 0000000..7a9bfb7 Binary files /dev/null and b/aePronunciation/raw/double_j_shwua.mp3 differ diff --git a/aePronunciation/raw/double_j_u.mp3 b/aePronunciation/raw/double_j_u.mp3 new file mode 100755 index 0000000..b69e20c Binary files /dev/null and b/aePronunciation/raw/double_j_u.mp3 differ diff --git a/aePronunciation/raw/double_j_us.mp3 b/aePronunciation/raw/double_j_us.mp3 new file mode 100755 index 0000000..ca1cfa3 Binary files /dev/null and b/aePronunciation/raw/double_j_us.mp3 differ diff --git a/aePronunciation/raw/double_j_vu.mp3 b/aePronunciation/raw/double_j_vu.mp3 new file mode 100755 index 0000000..bf1baf2 Binary files /dev/null and b/aePronunciation/raw/double_j_vu.mp3 differ diff --git a/aePronunciation/raw/double_k_a.mp3 b/aePronunciation/raw/double_k_a.mp3 new file mode 100755 index 0000000..ddb29dd Binary files /dev/null and b/aePronunciation/raw/double_k_a.mp3 differ diff --git a/aePronunciation/raw/double_k_ae.mp3 b/aePronunciation/raw/double_k_ae.mp3 new file mode 100755 index 0000000..22cd32a Binary files /dev/null and b/aePronunciation/raw/double_k_ae.mp3 differ diff --git a/aePronunciation/raw/double_k_ai.mp3 b/aePronunciation/raw/double_k_ai.mp3 new file mode 100755 index 0000000..45fd487 Binary files /dev/null and b/aePronunciation/raw/double_k_ai.mp3 differ diff --git a/aePronunciation/raw/double_k_ar.mp3 b/aePronunciation/raw/double_k_ar.mp3 new file mode 100755 index 0000000..772bead Binary files /dev/null and b/aePronunciation/raw/double_k_ar.mp3 differ diff --git a/aePronunciation/raw/double_k_au.mp3 b/aePronunciation/raw/double_k_au.mp3 new file mode 100755 index 0000000..fa8964c Binary files /dev/null and b/aePronunciation/raw/double_k_au.mp3 differ diff --git a/aePronunciation/raw/double_k_c.mp3 b/aePronunciation/raw/double_k_c.mp3 new file mode 100755 index 0000000..ee9d2a9 Binary files /dev/null and b/aePronunciation/raw/double_k_c.mp3 differ diff --git a/aePronunciation/raw/double_k_e.mp3 b/aePronunciation/raw/double_k_e.mp3 new file mode 100755 index 0000000..0fca4a8 Binary files /dev/null and b/aePronunciation/raw/double_k_e.mp3 differ diff --git a/aePronunciation/raw/double_k_ei.mp3 b/aePronunciation/raw/double_k_ei.mp3 new file mode 100755 index 0000000..4d28685 Binary files /dev/null and b/aePronunciation/raw/double_k_ei.mp3 differ diff --git a/aePronunciation/raw/double_k_er.mp3 b/aePronunciation/raw/double_k_er.mp3 new file mode 100755 index 0000000..ec259ca Binary files /dev/null and b/aePronunciation/raw/double_k_er.mp3 differ diff --git a/aePronunciation/raw/double_k_ers.mp3 b/aePronunciation/raw/double_k_ers.mp3 new file mode 100755 index 0000000..f2d8580 Binary files /dev/null and b/aePronunciation/raw/double_k_ers.mp3 differ diff --git a/aePronunciation/raw/double_k_eru.mp3 b/aePronunciation/raw/double_k_eru.mp3 new file mode 100755 index 0000000..5f67aa2 Binary files /dev/null and b/aePronunciation/raw/double_k_eru.mp3 differ diff --git a/aePronunciation/raw/double_k_i.mp3 b/aePronunciation/raw/double_k_i.mp3 new file mode 100755 index 0000000..716f2c5 Binary files /dev/null and b/aePronunciation/raw/double_k_i.mp3 differ diff --git a/aePronunciation/raw/double_k_ir.mp3 b/aePronunciation/raw/double_k_ir.mp3 new file mode 100755 index 0000000..4d76e15 Binary files /dev/null and b/aePronunciation/raw/double_k_ir.mp3 differ diff --git a/aePronunciation/raw/double_k_is.mp3 b/aePronunciation/raw/double_k_is.mp3 new file mode 100755 index 0000000..93bcf2b Binary files /dev/null and b/aePronunciation/raw/double_k_is.mp3 differ diff --git a/aePronunciation/raw/double_k_oi.mp3 b/aePronunciation/raw/double_k_oi.mp3 new file mode 100755 index 0000000..e2c86e5 Binary files /dev/null and b/aePronunciation/raw/double_k_oi.mp3 differ diff --git a/aePronunciation/raw/double_k_or.mp3 b/aePronunciation/raw/double_k_or.mp3 new file mode 100755 index 0000000..fce49ed Binary files /dev/null and b/aePronunciation/raw/double_k_or.mp3 differ diff --git a/aePronunciation/raw/double_k_ou.mp3 b/aePronunciation/raw/double_k_ou.mp3 new file mode 100755 index 0000000..22ce841 Binary files /dev/null and b/aePronunciation/raw/double_k_ou.mp3 differ diff --git a/aePronunciation/raw/double_k_shwua.mp3 b/aePronunciation/raw/double_k_shwua.mp3 new file mode 100755 index 0000000..062eb50 Binary files /dev/null and b/aePronunciation/raw/double_k_shwua.mp3 differ diff --git a/aePronunciation/raw/double_k_u.mp3 b/aePronunciation/raw/double_k_u.mp3 new file mode 100755 index 0000000..fbdce9d Binary files /dev/null and b/aePronunciation/raw/double_k_u.mp3 differ diff --git a/aePronunciation/raw/double_k_us.mp3 b/aePronunciation/raw/double_k_us.mp3 new file mode 100755 index 0000000..a722de1 Binary files /dev/null and b/aePronunciation/raw/double_k_us.mp3 differ diff --git a/aePronunciation/raw/double_k_vu.mp3 b/aePronunciation/raw/double_k_vu.mp3 new file mode 100755 index 0000000..a3e3fcb Binary files /dev/null and b/aePronunciation/raw/double_k_vu.mp3 differ diff --git a/aePronunciation/raw/double_l_a.mp3 b/aePronunciation/raw/double_l_a.mp3 new file mode 100755 index 0000000..dc239ad Binary files /dev/null and b/aePronunciation/raw/double_l_a.mp3 differ diff --git a/aePronunciation/raw/double_l_ae.mp3 b/aePronunciation/raw/double_l_ae.mp3 new file mode 100755 index 0000000..7525bf0 Binary files /dev/null and b/aePronunciation/raw/double_l_ae.mp3 differ diff --git a/aePronunciation/raw/double_l_ai.mp3 b/aePronunciation/raw/double_l_ai.mp3 new file mode 100755 index 0000000..6e8dafa Binary files /dev/null and b/aePronunciation/raw/double_l_ai.mp3 differ diff --git a/aePronunciation/raw/double_l_ar.mp3 b/aePronunciation/raw/double_l_ar.mp3 new file mode 100755 index 0000000..f4f84b2 Binary files /dev/null and b/aePronunciation/raw/double_l_ar.mp3 differ diff --git a/aePronunciation/raw/double_l_au.mp3 b/aePronunciation/raw/double_l_au.mp3 new file mode 100755 index 0000000..d4efbf0 Binary files /dev/null and b/aePronunciation/raw/double_l_au.mp3 differ diff --git a/aePronunciation/raw/double_l_c.mp3 b/aePronunciation/raw/double_l_c.mp3 new file mode 100755 index 0000000..f2a6cc0 Binary files /dev/null and b/aePronunciation/raw/double_l_c.mp3 differ diff --git a/aePronunciation/raw/double_l_e.mp3 b/aePronunciation/raw/double_l_e.mp3 new file mode 100755 index 0000000..9036d49 Binary files /dev/null and b/aePronunciation/raw/double_l_e.mp3 differ diff --git a/aePronunciation/raw/double_l_ei.mp3 b/aePronunciation/raw/double_l_ei.mp3 new file mode 100755 index 0000000..0a6358f Binary files /dev/null and b/aePronunciation/raw/double_l_ei.mp3 differ diff --git a/aePronunciation/raw/double_l_er.mp3 b/aePronunciation/raw/double_l_er.mp3 new file mode 100755 index 0000000..4607c77 Binary files /dev/null and b/aePronunciation/raw/double_l_er.mp3 differ diff --git a/aePronunciation/raw/double_l_ers.mp3 b/aePronunciation/raw/double_l_ers.mp3 new file mode 100755 index 0000000..070d88d Binary files /dev/null and b/aePronunciation/raw/double_l_ers.mp3 differ diff --git a/aePronunciation/raw/double_l_eru.mp3 b/aePronunciation/raw/double_l_eru.mp3 new file mode 100755 index 0000000..d0e713d Binary files /dev/null and b/aePronunciation/raw/double_l_eru.mp3 differ diff --git a/aePronunciation/raw/double_l_i.mp3 b/aePronunciation/raw/double_l_i.mp3 new file mode 100755 index 0000000..0c78bf4 Binary files /dev/null and b/aePronunciation/raw/double_l_i.mp3 differ diff --git a/aePronunciation/raw/double_l_ir.mp3 b/aePronunciation/raw/double_l_ir.mp3 new file mode 100755 index 0000000..638f798 Binary files /dev/null and b/aePronunciation/raw/double_l_ir.mp3 differ diff --git a/aePronunciation/raw/double_l_is.mp3 b/aePronunciation/raw/double_l_is.mp3 new file mode 100755 index 0000000..f5a89fb Binary files /dev/null and b/aePronunciation/raw/double_l_is.mp3 differ diff --git a/aePronunciation/raw/double_l_oi.mp3 b/aePronunciation/raw/double_l_oi.mp3 new file mode 100755 index 0000000..abc11b5 Binary files /dev/null and b/aePronunciation/raw/double_l_oi.mp3 differ diff --git a/aePronunciation/raw/double_l_or.mp3 b/aePronunciation/raw/double_l_or.mp3 new file mode 100755 index 0000000..aaaa082 Binary files /dev/null and b/aePronunciation/raw/double_l_or.mp3 differ diff --git a/aePronunciation/raw/double_l_ou.mp3 b/aePronunciation/raw/double_l_ou.mp3 new file mode 100755 index 0000000..8b5ba02 Binary files /dev/null and b/aePronunciation/raw/double_l_ou.mp3 differ diff --git a/aePronunciation/raw/double_l_shwua.mp3 b/aePronunciation/raw/double_l_shwua.mp3 new file mode 100755 index 0000000..1ab1929 Binary files /dev/null and b/aePronunciation/raw/double_l_shwua.mp3 differ diff --git a/aePronunciation/raw/double_l_u.mp3 b/aePronunciation/raw/double_l_u.mp3 new file mode 100755 index 0000000..0205125 Binary files /dev/null and b/aePronunciation/raw/double_l_u.mp3 differ diff --git a/aePronunciation/raw/double_l_us.mp3 b/aePronunciation/raw/double_l_us.mp3 new file mode 100755 index 0000000..55bbb0d Binary files /dev/null and b/aePronunciation/raw/double_l_us.mp3 differ diff --git a/aePronunciation/raw/double_l_vu.mp3 b/aePronunciation/raw/double_l_vu.mp3 new file mode 100755 index 0000000..226c730 Binary files /dev/null and b/aePronunciation/raw/double_l_vu.mp3 differ diff --git a/aePronunciation/raw/double_m_a.mp3 b/aePronunciation/raw/double_m_a.mp3 new file mode 100755 index 0000000..cb3a9c9 Binary files /dev/null and b/aePronunciation/raw/double_m_a.mp3 differ diff --git a/aePronunciation/raw/double_m_ae.mp3 b/aePronunciation/raw/double_m_ae.mp3 new file mode 100755 index 0000000..5a7d12a Binary files /dev/null and b/aePronunciation/raw/double_m_ae.mp3 differ diff --git a/aePronunciation/raw/double_m_ai.mp3 b/aePronunciation/raw/double_m_ai.mp3 new file mode 100755 index 0000000..060c799 Binary files /dev/null and b/aePronunciation/raw/double_m_ai.mp3 differ diff --git a/aePronunciation/raw/double_m_ar.mp3 b/aePronunciation/raw/double_m_ar.mp3 new file mode 100755 index 0000000..9b7b519 Binary files /dev/null and b/aePronunciation/raw/double_m_ar.mp3 differ diff --git a/aePronunciation/raw/double_m_au.mp3 b/aePronunciation/raw/double_m_au.mp3 new file mode 100755 index 0000000..5f0c59f Binary files /dev/null and b/aePronunciation/raw/double_m_au.mp3 differ diff --git a/aePronunciation/raw/double_m_c.mp3 b/aePronunciation/raw/double_m_c.mp3 new file mode 100755 index 0000000..1a1df0a Binary files /dev/null and b/aePronunciation/raw/double_m_c.mp3 differ diff --git a/aePronunciation/raw/double_m_e.mp3 b/aePronunciation/raw/double_m_e.mp3 new file mode 100755 index 0000000..cde7864 Binary files /dev/null and b/aePronunciation/raw/double_m_e.mp3 differ diff --git a/aePronunciation/raw/double_m_ei.mp3 b/aePronunciation/raw/double_m_ei.mp3 new file mode 100755 index 0000000..bc4048c Binary files /dev/null and b/aePronunciation/raw/double_m_ei.mp3 differ diff --git a/aePronunciation/raw/double_m_er.mp3 b/aePronunciation/raw/double_m_er.mp3 new file mode 100755 index 0000000..842509b Binary files /dev/null and b/aePronunciation/raw/double_m_er.mp3 differ diff --git a/aePronunciation/raw/double_m_ers.mp3 b/aePronunciation/raw/double_m_ers.mp3 new file mode 100755 index 0000000..a855565 Binary files /dev/null and b/aePronunciation/raw/double_m_ers.mp3 differ diff --git a/aePronunciation/raw/double_m_eru.mp3 b/aePronunciation/raw/double_m_eru.mp3 new file mode 100755 index 0000000..0a3af8b Binary files /dev/null and b/aePronunciation/raw/double_m_eru.mp3 differ diff --git a/aePronunciation/raw/double_m_i.mp3 b/aePronunciation/raw/double_m_i.mp3 new file mode 100755 index 0000000..50659e8 Binary files /dev/null and b/aePronunciation/raw/double_m_i.mp3 differ diff --git a/aePronunciation/raw/double_m_ir.mp3 b/aePronunciation/raw/double_m_ir.mp3 new file mode 100755 index 0000000..3fcc771 Binary files /dev/null and b/aePronunciation/raw/double_m_ir.mp3 differ diff --git a/aePronunciation/raw/double_m_is.mp3 b/aePronunciation/raw/double_m_is.mp3 new file mode 100755 index 0000000..2365b50 Binary files /dev/null and b/aePronunciation/raw/double_m_is.mp3 differ diff --git a/aePronunciation/raw/double_m_oi.mp3 b/aePronunciation/raw/double_m_oi.mp3 new file mode 100755 index 0000000..ee9b4b1 Binary files /dev/null and b/aePronunciation/raw/double_m_oi.mp3 differ diff --git a/aePronunciation/raw/double_m_or.mp3 b/aePronunciation/raw/double_m_or.mp3 new file mode 100755 index 0000000..982d0ef Binary files /dev/null and b/aePronunciation/raw/double_m_or.mp3 differ diff --git a/aePronunciation/raw/double_m_ou.mp3 b/aePronunciation/raw/double_m_ou.mp3 new file mode 100755 index 0000000..3a751f6 Binary files /dev/null and b/aePronunciation/raw/double_m_ou.mp3 differ diff --git a/aePronunciation/raw/double_m_shwua.mp3 b/aePronunciation/raw/double_m_shwua.mp3 new file mode 100755 index 0000000..5732b31 Binary files /dev/null and b/aePronunciation/raw/double_m_shwua.mp3 differ diff --git a/aePronunciation/raw/double_m_u.mp3 b/aePronunciation/raw/double_m_u.mp3 new file mode 100755 index 0000000..4dfee47 Binary files /dev/null and b/aePronunciation/raw/double_m_u.mp3 differ diff --git a/aePronunciation/raw/double_m_us.mp3 b/aePronunciation/raw/double_m_us.mp3 new file mode 100755 index 0000000..663f6df Binary files /dev/null and b/aePronunciation/raw/double_m_us.mp3 differ diff --git a/aePronunciation/raw/double_m_vu.mp3 b/aePronunciation/raw/double_m_vu.mp3 new file mode 100755 index 0000000..d33c9de Binary files /dev/null and b/aePronunciation/raw/double_m_vu.mp3 differ diff --git a/aePronunciation/raw/double_n_a.mp3 b/aePronunciation/raw/double_n_a.mp3 new file mode 100755 index 0000000..6dcd836 Binary files /dev/null and b/aePronunciation/raw/double_n_a.mp3 differ diff --git a/aePronunciation/raw/double_n_ae.mp3 b/aePronunciation/raw/double_n_ae.mp3 new file mode 100755 index 0000000..02b248b Binary files /dev/null and b/aePronunciation/raw/double_n_ae.mp3 differ diff --git a/aePronunciation/raw/double_n_ai.mp3 b/aePronunciation/raw/double_n_ai.mp3 new file mode 100755 index 0000000..2400d6e Binary files /dev/null and b/aePronunciation/raw/double_n_ai.mp3 differ diff --git a/aePronunciation/raw/double_n_ar.mp3 b/aePronunciation/raw/double_n_ar.mp3 new file mode 100755 index 0000000..91d7e6e Binary files /dev/null and b/aePronunciation/raw/double_n_ar.mp3 differ diff --git a/aePronunciation/raw/double_n_au.mp3 b/aePronunciation/raw/double_n_au.mp3 new file mode 100755 index 0000000..c28c788 Binary files /dev/null and b/aePronunciation/raw/double_n_au.mp3 differ diff --git a/aePronunciation/raw/double_n_c.mp3 b/aePronunciation/raw/double_n_c.mp3 new file mode 100755 index 0000000..06a3426 Binary files /dev/null and b/aePronunciation/raw/double_n_c.mp3 differ diff --git a/aePronunciation/raw/double_n_e.mp3 b/aePronunciation/raw/double_n_e.mp3 new file mode 100755 index 0000000..4caf4d6 Binary files /dev/null and b/aePronunciation/raw/double_n_e.mp3 differ diff --git a/aePronunciation/raw/double_n_ei.mp3 b/aePronunciation/raw/double_n_ei.mp3 new file mode 100755 index 0000000..4ccb53b Binary files /dev/null and b/aePronunciation/raw/double_n_ei.mp3 differ diff --git a/aePronunciation/raw/double_n_er.mp3 b/aePronunciation/raw/double_n_er.mp3 new file mode 100755 index 0000000..87f2646 Binary files /dev/null and b/aePronunciation/raw/double_n_er.mp3 differ diff --git a/aePronunciation/raw/double_n_ers.mp3 b/aePronunciation/raw/double_n_ers.mp3 new file mode 100755 index 0000000..d0737c5 Binary files /dev/null and b/aePronunciation/raw/double_n_ers.mp3 differ diff --git a/aePronunciation/raw/double_n_eru.mp3 b/aePronunciation/raw/double_n_eru.mp3 new file mode 100755 index 0000000..f7ff9c5 Binary files /dev/null and b/aePronunciation/raw/double_n_eru.mp3 differ diff --git a/aePronunciation/raw/double_n_i.mp3 b/aePronunciation/raw/double_n_i.mp3 new file mode 100755 index 0000000..4ac62ef Binary files /dev/null and b/aePronunciation/raw/double_n_i.mp3 differ diff --git a/aePronunciation/raw/double_n_ir.mp3 b/aePronunciation/raw/double_n_ir.mp3 new file mode 100755 index 0000000..6c3bba9 Binary files /dev/null and b/aePronunciation/raw/double_n_ir.mp3 differ diff --git a/aePronunciation/raw/double_n_is.mp3 b/aePronunciation/raw/double_n_is.mp3 new file mode 100755 index 0000000..41ac34f Binary files /dev/null and b/aePronunciation/raw/double_n_is.mp3 differ diff --git a/aePronunciation/raw/double_n_oi.mp3 b/aePronunciation/raw/double_n_oi.mp3 new file mode 100755 index 0000000..d04e66b Binary files /dev/null and b/aePronunciation/raw/double_n_oi.mp3 differ diff --git a/aePronunciation/raw/double_n_or.mp3 b/aePronunciation/raw/double_n_or.mp3 new file mode 100755 index 0000000..d955341 Binary files /dev/null and b/aePronunciation/raw/double_n_or.mp3 differ diff --git a/aePronunciation/raw/double_n_ou.mp3 b/aePronunciation/raw/double_n_ou.mp3 new file mode 100755 index 0000000..6e8dc44 Binary files /dev/null and b/aePronunciation/raw/double_n_ou.mp3 differ diff --git a/aePronunciation/raw/double_n_shwua.mp3 b/aePronunciation/raw/double_n_shwua.mp3 new file mode 100755 index 0000000..a412ac8 Binary files /dev/null and b/aePronunciation/raw/double_n_shwua.mp3 differ diff --git a/aePronunciation/raw/double_n_u.mp3 b/aePronunciation/raw/double_n_u.mp3 new file mode 100755 index 0000000..d75182d Binary files /dev/null and b/aePronunciation/raw/double_n_u.mp3 differ diff --git a/aePronunciation/raw/double_n_us.mp3 b/aePronunciation/raw/double_n_us.mp3 new file mode 100755 index 0000000..c032ce2 Binary files /dev/null and b/aePronunciation/raw/double_n_us.mp3 differ diff --git a/aePronunciation/raw/double_n_vu.mp3 b/aePronunciation/raw/double_n_vu.mp3 new file mode 100755 index 0000000..30c2f25 Binary files /dev/null and b/aePronunciation/raw/double_n_vu.mp3 differ diff --git a/aePronunciation/raw/double_oi_b.mp3 b/aePronunciation/raw/double_oi_b.mp3 new file mode 100755 index 0000000..6cc448f Binary files /dev/null and b/aePronunciation/raw/double_oi_b.mp3 differ diff --git a/aePronunciation/raw/double_oi_ch.mp3 b/aePronunciation/raw/double_oi_ch.mp3 new file mode 100755 index 0000000..dd0ea1b Binary files /dev/null and b/aePronunciation/raw/double_oi_ch.mp3 differ diff --git a/aePronunciation/raw/double_oi_d.mp3 b/aePronunciation/raw/double_oi_d.mp3 new file mode 100755 index 0000000..08dcb25 Binary files /dev/null and b/aePronunciation/raw/double_oi_d.mp3 differ diff --git a/aePronunciation/raw/double_oi_dzh.mp3 b/aePronunciation/raw/double_oi_dzh.mp3 new file mode 100755 index 0000000..295c8ba Binary files /dev/null and b/aePronunciation/raw/double_oi_dzh.mp3 differ diff --git a/aePronunciation/raw/double_oi_f.mp3 b/aePronunciation/raw/double_oi_f.mp3 new file mode 100755 index 0000000..606b4e9 Binary files /dev/null and b/aePronunciation/raw/double_oi_f.mp3 differ diff --git a/aePronunciation/raw/double_oi_flap_shwua.mp3 b/aePronunciation/raw/double_oi_flap_shwua.mp3 new file mode 100755 index 0000000..fbc455c Binary files /dev/null and b/aePronunciation/raw/double_oi_flap_shwua.mp3 differ diff --git a/aePronunciation/raw/double_oi_g.mp3 b/aePronunciation/raw/double_oi_g.mp3 new file mode 100755 index 0000000..99b00e6 Binary files /dev/null and b/aePronunciation/raw/double_oi_g.mp3 differ diff --git a/aePronunciation/raw/double_oi_glottal.mp3 b/aePronunciation/raw/double_oi_glottal.mp3 new file mode 100755 index 0000000..9eeb469 Binary files /dev/null and b/aePronunciation/raw/double_oi_glottal.mp3 differ diff --git a/aePronunciation/raw/double_oi_k.mp3 b/aePronunciation/raw/double_oi_k.mp3 new file mode 100755 index 0000000..a67de03 Binary files /dev/null and b/aePronunciation/raw/double_oi_k.mp3 differ diff --git a/aePronunciation/raw/double_oi_l.mp3 b/aePronunciation/raw/double_oi_l.mp3 new file mode 100755 index 0000000..3c04544 Binary files /dev/null and b/aePronunciation/raw/double_oi_l.mp3 differ diff --git a/aePronunciation/raw/double_oi_m.mp3 b/aePronunciation/raw/double_oi_m.mp3 new file mode 100755 index 0000000..95fa99b Binary files /dev/null and b/aePronunciation/raw/double_oi_m.mp3 differ diff --git a/aePronunciation/raw/double_oi_n.mp3 b/aePronunciation/raw/double_oi_n.mp3 new file mode 100755 index 0000000..0b994bb Binary files /dev/null and b/aePronunciation/raw/double_oi_n.mp3 differ diff --git a/aePronunciation/raw/double_oi_ng.mp3 b/aePronunciation/raw/double_oi_ng.mp3 new file mode 100755 index 0000000..351be76 Binary files /dev/null and b/aePronunciation/raw/double_oi_ng.mp3 differ diff --git a/aePronunciation/raw/double_oi_p.mp3 b/aePronunciation/raw/double_oi_p.mp3 new file mode 100755 index 0000000..d067625 Binary files /dev/null and b/aePronunciation/raw/double_oi_p.mp3 differ diff --git a/aePronunciation/raw/double_oi_s.mp3 b/aePronunciation/raw/double_oi_s.mp3 new file mode 100755 index 0000000..e5bfec9 Binary files /dev/null and b/aePronunciation/raw/double_oi_s.mp3 differ diff --git a/aePronunciation/raw/double_oi_sh.mp3 b/aePronunciation/raw/double_oi_sh.mp3 new file mode 100755 index 0000000..5951191 Binary files /dev/null and b/aePronunciation/raw/double_oi_sh.mp3 differ diff --git a/aePronunciation/raw/double_oi_t.mp3 b/aePronunciation/raw/double_oi_t.mp3 new file mode 100755 index 0000000..a4e7532 Binary files /dev/null and b/aePronunciation/raw/double_oi_t.mp3 differ diff --git a/aePronunciation/raw/double_oi_th.mp3 b/aePronunciation/raw/double_oi_th.mp3 new file mode 100755 index 0000000..927b9ce Binary files /dev/null and b/aePronunciation/raw/double_oi_th.mp3 differ diff --git a/aePronunciation/raw/double_oi_thv.mp3 b/aePronunciation/raw/double_oi_thv.mp3 new file mode 100755 index 0000000..b2876db Binary files /dev/null and b/aePronunciation/raw/double_oi_thv.mp3 differ diff --git a/aePronunciation/raw/double_oi_v.mp3 b/aePronunciation/raw/double_oi_v.mp3 new file mode 100755 index 0000000..b80f81c Binary files /dev/null and b/aePronunciation/raw/double_oi_v.mp3 differ diff --git a/aePronunciation/raw/double_oi_z.mp3 b/aePronunciation/raw/double_oi_z.mp3 new file mode 100755 index 0000000..5cc4d62 Binary files /dev/null and b/aePronunciation/raw/double_oi_z.mp3 differ diff --git a/aePronunciation/raw/double_oi_zh.mp3 b/aePronunciation/raw/double_oi_zh.mp3 new file mode 100755 index 0000000..ddb7f27 Binary files /dev/null and b/aePronunciation/raw/double_oi_zh.mp3 differ diff --git a/aePronunciation/raw/double_or_b.mp3 b/aePronunciation/raw/double_or_b.mp3 new file mode 100755 index 0000000..299ac54 Binary files /dev/null and b/aePronunciation/raw/double_or_b.mp3 differ diff --git a/aePronunciation/raw/double_or_ch.mp3 b/aePronunciation/raw/double_or_ch.mp3 new file mode 100755 index 0000000..76c123d Binary files /dev/null and b/aePronunciation/raw/double_or_ch.mp3 differ diff --git a/aePronunciation/raw/double_or_d.mp3 b/aePronunciation/raw/double_or_d.mp3 new file mode 100755 index 0000000..d0fdf76 Binary files /dev/null and b/aePronunciation/raw/double_or_d.mp3 differ diff --git a/aePronunciation/raw/double_or_dzh.mp3 b/aePronunciation/raw/double_or_dzh.mp3 new file mode 100755 index 0000000..f2fd217 Binary files /dev/null and b/aePronunciation/raw/double_or_dzh.mp3 differ diff --git a/aePronunciation/raw/double_or_f.mp3 b/aePronunciation/raw/double_or_f.mp3 new file mode 100755 index 0000000..b9b8e36 Binary files /dev/null and b/aePronunciation/raw/double_or_f.mp3 differ diff --git a/aePronunciation/raw/double_or_flap_shwua.mp3 b/aePronunciation/raw/double_or_flap_shwua.mp3 new file mode 100755 index 0000000..caabdda Binary files /dev/null and b/aePronunciation/raw/double_or_flap_shwua.mp3 differ diff --git a/aePronunciation/raw/double_or_g.mp3 b/aePronunciation/raw/double_or_g.mp3 new file mode 100755 index 0000000..fad9900 Binary files /dev/null and b/aePronunciation/raw/double_or_g.mp3 differ diff --git a/aePronunciation/raw/double_or_glottal.mp3 b/aePronunciation/raw/double_or_glottal.mp3 new file mode 100755 index 0000000..947b890 Binary files /dev/null and b/aePronunciation/raw/double_or_glottal.mp3 differ diff --git a/aePronunciation/raw/double_or_k.mp3 b/aePronunciation/raw/double_or_k.mp3 new file mode 100755 index 0000000..cdd7b6f Binary files /dev/null and b/aePronunciation/raw/double_or_k.mp3 differ diff --git a/aePronunciation/raw/double_or_l.mp3 b/aePronunciation/raw/double_or_l.mp3 new file mode 100755 index 0000000..f9b9809 Binary files /dev/null and b/aePronunciation/raw/double_or_l.mp3 differ diff --git a/aePronunciation/raw/double_or_m.mp3 b/aePronunciation/raw/double_or_m.mp3 new file mode 100755 index 0000000..e460a64 Binary files /dev/null and b/aePronunciation/raw/double_or_m.mp3 differ diff --git a/aePronunciation/raw/double_or_n.mp3 b/aePronunciation/raw/double_or_n.mp3 new file mode 100755 index 0000000..9d301f9 Binary files /dev/null and b/aePronunciation/raw/double_or_n.mp3 differ diff --git a/aePronunciation/raw/double_or_ng.mp3 b/aePronunciation/raw/double_or_ng.mp3 new file mode 100755 index 0000000..bede37a Binary files /dev/null and b/aePronunciation/raw/double_or_ng.mp3 differ diff --git a/aePronunciation/raw/double_or_p.mp3 b/aePronunciation/raw/double_or_p.mp3 new file mode 100755 index 0000000..dc9d03d Binary files /dev/null and b/aePronunciation/raw/double_or_p.mp3 differ diff --git a/aePronunciation/raw/double_or_s.mp3 b/aePronunciation/raw/double_or_s.mp3 new file mode 100755 index 0000000..1338937 Binary files /dev/null and b/aePronunciation/raw/double_or_s.mp3 differ diff --git a/aePronunciation/raw/double_or_sh.mp3 b/aePronunciation/raw/double_or_sh.mp3 new file mode 100755 index 0000000..6ee432d Binary files /dev/null and b/aePronunciation/raw/double_or_sh.mp3 differ diff --git a/aePronunciation/raw/double_or_t.mp3 b/aePronunciation/raw/double_or_t.mp3 new file mode 100755 index 0000000..a926edb Binary files /dev/null and b/aePronunciation/raw/double_or_t.mp3 differ diff --git a/aePronunciation/raw/double_or_th.mp3 b/aePronunciation/raw/double_or_th.mp3 new file mode 100755 index 0000000..d0cd813 Binary files /dev/null and b/aePronunciation/raw/double_or_th.mp3 differ diff --git a/aePronunciation/raw/double_or_thv.mp3 b/aePronunciation/raw/double_or_thv.mp3 new file mode 100755 index 0000000..55be67e Binary files /dev/null and b/aePronunciation/raw/double_or_thv.mp3 differ diff --git a/aePronunciation/raw/double_or_v.mp3 b/aePronunciation/raw/double_or_v.mp3 new file mode 100755 index 0000000..5622772 Binary files /dev/null and b/aePronunciation/raw/double_or_v.mp3 differ diff --git a/aePronunciation/raw/double_or_z.mp3 b/aePronunciation/raw/double_or_z.mp3 new file mode 100755 index 0000000..4338032 Binary files /dev/null and b/aePronunciation/raw/double_or_z.mp3 differ diff --git a/aePronunciation/raw/double_or_zh.mp3 b/aePronunciation/raw/double_or_zh.mp3 new file mode 100755 index 0000000..b0579f5 Binary files /dev/null and b/aePronunciation/raw/double_or_zh.mp3 differ diff --git a/aePronunciation/raw/double_ou_b.mp3 b/aePronunciation/raw/double_ou_b.mp3 new file mode 100755 index 0000000..8c3fed5 Binary files /dev/null and b/aePronunciation/raw/double_ou_b.mp3 differ diff --git a/aePronunciation/raw/double_ou_ch.mp3 b/aePronunciation/raw/double_ou_ch.mp3 new file mode 100755 index 0000000..3f67135 Binary files /dev/null and b/aePronunciation/raw/double_ou_ch.mp3 differ diff --git a/aePronunciation/raw/double_ou_d.mp3 b/aePronunciation/raw/double_ou_d.mp3 new file mode 100755 index 0000000..f7ac141 Binary files /dev/null and b/aePronunciation/raw/double_ou_d.mp3 differ diff --git a/aePronunciation/raw/double_ou_dzh.mp3 b/aePronunciation/raw/double_ou_dzh.mp3 new file mode 100755 index 0000000..8a045b9 Binary files /dev/null and b/aePronunciation/raw/double_ou_dzh.mp3 differ diff --git a/aePronunciation/raw/double_ou_f.mp3 b/aePronunciation/raw/double_ou_f.mp3 new file mode 100755 index 0000000..5528709 Binary files /dev/null and b/aePronunciation/raw/double_ou_f.mp3 differ diff --git a/aePronunciation/raw/double_ou_flap_shwua.mp3 b/aePronunciation/raw/double_ou_flap_shwua.mp3 new file mode 100755 index 0000000..ccba0da Binary files /dev/null and b/aePronunciation/raw/double_ou_flap_shwua.mp3 differ diff --git a/aePronunciation/raw/double_ou_g.mp3 b/aePronunciation/raw/double_ou_g.mp3 new file mode 100755 index 0000000..117424a Binary files /dev/null and b/aePronunciation/raw/double_ou_g.mp3 differ diff --git a/aePronunciation/raw/double_ou_glottal.mp3 b/aePronunciation/raw/double_ou_glottal.mp3 new file mode 100755 index 0000000..cc4c449 Binary files /dev/null and b/aePronunciation/raw/double_ou_glottal.mp3 differ diff --git a/aePronunciation/raw/double_ou_k.mp3 b/aePronunciation/raw/double_ou_k.mp3 new file mode 100755 index 0000000..33731ff Binary files /dev/null and b/aePronunciation/raw/double_ou_k.mp3 differ diff --git a/aePronunciation/raw/double_ou_l.mp3 b/aePronunciation/raw/double_ou_l.mp3 new file mode 100755 index 0000000..fc697d0 Binary files /dev/null and b/aePronunciation/raw/double_ou_l.mp3 differ diff --git a/aePronunciation/raw/double_ou_m.mp3 b/aePronunciation/raw/double_ou_m.mp3 new file mode 100755 index 0000000..e73ae27 Binary files /dev/null and b/aePronunciation/raw/double_ou_m.mp3 differ diff --git a/aePronunciation/raw/double_ou_n.mp3 b/aePronunciation/raw/double_ou_n.mp3 new file mode 100755 index 0000000..4f64779 Binary files /dev/null and b/aePronunciation/raw/double_ou_n.mp3 differ diff --git a/aePronunciation/raw/double_ou_ng.mp3 b/aePronunciation/raw/double_ou_ng.mp3 new file mode 100755 index 0000000..13dc490 Binary files /dev/null and b/aePronunciation/raw/double_ou_ng.mp3 differ diff --git a/aePronunciation/raw/double_ou_p.mp3 b/aePronunciation/raw/double_ou_p.mp3 new file mode 100755 index 0000000..268630a Binary files /dev/null and b/aePronunciation/raw/double_ou_p.mp3 differ diff --git a/aePronunciation/raw/double_ou_s.mp3 b/aePronunciation/raw/double_ou_s.mp3 new file mode 100755 index 0000000..1fca475 Binary files /dev/null and b/aePronunciation/raw/double_ou_s.mp3 differ diff --git a/aePronunciation/raw/double_ou_sh.mp3 b/aePronunciation/raw/double_ou_sh.mp3 new file mode 100755 index 0000000..bb966eb Binary files /dev/null and b/aePronunciation/raw/double_ou_sh.mp3 differ diff --git a/aePronunciation/raw/double_ou_t.mp3 b/aePronunciation/raw/double_ou_t.mp3 new file mode 100755 index 0000000..80b20c5 Binary files /dev/null and b/aePronunciation/raw/double_ou_t.mp3 differ diff --git a/aePronunciation/raw/double_ou_th.mp3 b/aePronunciation/raw/double_ou_th.mp3 new file mode 100755 index 0000000..d207031 Binary files /dev/null and b/aePronunciation/raw/double_ou_th.mp3 differ diff --git a/aePronunciation/raw/double_ou_thv.mp3 b/aePronunciation/raw/double_ou_thv.mp3 new file mode 100755 index 0000000..8532917 Binary files /dev/null and b/aePronunciation/raw/double_ou_thv.mp3 differ diff --git a/aePronunciation/raw/double_ou_v.mp3 b/aePronunciation/raw/double_ou_v.mp3 new file mode 100755 index 0000000..90a2e02 Binary files /dev/null and b/aePronunciation/raw/double_ou_v.mp3 differ diff --git a/aePronunciation/raw/double_ou_z.mp3 b/aePronunciation/raw/double_ou_z.mp3 new file mode 100755 index 0000000..6337558 Binary files /dev/null and b/aePronunciation/raw/double_ou_z.mp3 differ diff --git a/aePronunciation/raw/double_ou_zh.mp3 b/aePronunciation/raw/double_ou_zh.mp3 new file mode 100755 index 0000000..104a906 Binary files /dev/null and b/aePronunciation/raw/double_ou_zh.mp3 differ diff --git a/aePronunciation/raw/double_p_a.mp3 b/aePronunciation/raw/double_p_a.mp3 new file mode 100755 index 0000000..6125959 Binary files /dev/null and b/aePronunciation/raw/double_p_a.mp3 differ diff --git a/aePronunciation/raw/double_p_ae.mp3 b/aePronunciation/raw/double_p_ae.mp3 new file mode 100755 index 0000000..e37e844 Binary files /dev/null and b/aePronunciation/raw/double_p_ae.mp3 differ diff --git a/aePronunciation/raw/double_p_ai.mp3 b/aePronunciation/raw/double_p_ai.mp3 new file mode 100755 index 0000000..7ced698 Binary files /dev/null and b/aePronunciation/raw/double_p_ai.mp3 differ diff --git a/aePronunciation/raw/double_p_ar.mp3 b/aePronunciation/raw/double_p_ar.mp3 new file mode 100755 index 0000000..edd0248 Binary files /dev/null and b/aePronunciation/raw/double_p_ar.mp3 differ diff --git a/aePronunciation/raw/double_p_au.mp3 b/aePronunciation/raw/double_p_au.mp3 new file mode 100755 index 0000000..1b76510 Binary files /dev/null and b/aePronunciation/raw/double_p_au.mp3 differ diff --git a/aePronunciation/raw/double_p_c.mp3 b/aePronunciation/raw/double_p_c.mp3 new file mode 100755 index 0000000..c841f4c Binary files /dev/null and b/aePronunciation/raw/double_p_c.mp3 differ diff --git a/aePronunciation/raw/double_p_e.mp3 b/aePronunciation/raw/double_p_e.mp3 new file mode 100755 index 0000000..671e0ed Binary files /dev/null and b/aePronunciation/raw/double_p_e.mp3 differ diff --git a/aePronunciation/raw/double_p_ei.mp3 b/aePronunciation/raw/double_p_ei.mp3 new file mode 100755 index 0000000..1175b97 Binary files /dev/null and b/aePronunciation/raw/double_p_ei.mp3 differ diff --git a/aePronunciation/raw/double_p_er.mp3 b/aePronunciation/raw/double_p_er.mp3 new file mode 100755 index 0000000..ffe36dd Binary files /dev/null and b/aePronunciation/raw/double_p_er.mp3 differ diff --git a/aePronunciation/raw/double_p_ers.mp3 b/aePronunciation/raw/double_p_ers.mp3 new file mode 100755 index 0000000..e27cfcf Binary files /dev/null and b/aePronunciation/raw/double_p_ers.mp3 differ diff --git a/aePronunciation/raw/double_p_eru.mp3 b/aePronunciation/raw/double_p_eru.mp3 new file mode 100755 index 0000000..4a9f7cf Binary files /dev/null and b/aePronunciation/raw/double_p_eru.mp3 differ diff --git a/aePronunciation/raw/double_p_i.mp3 b/aePronunciation/raw/double_p_i.mp3 new file mode 100755 index 0000000..c965ac0 Binary files /dev/null and b/aePronunciation/raw/double_p_i.mp3 differ diff --git a/aePronunciation/raw/double_p_ir.mp3 b/aePronunciation/raw/double_p_ir.mp3 new file mode 100755 index 0000000..c88b26f Binary files /dev/null and b/aePronunciation/raw/double_p_ir.mp3 differ diff --git a/aePronunciation/raw/double_p_is.mp3 b/aePronunciation/raw/double_p_is.mp3 new file mode 100755 index 0000000..c63de71 Binary files /dev/null and b/aePronunciation/raw/double_p_is.mp3 differ diff --git a/aePronunciation/raw/double_p_oi.mp3 b/aePronunciation/raw/double_p_oi.mp3 new file mode 100755 index 0000000..b0fa076 Binary files /dev/null and b/aePronunciation/raw/double_p_oi.mp3 differ diff --git a/aePronunciation/raw/double_p_or.mp3 b/aePronunciation/raw/double_p_or.mp3 new file mode 100755 index 0000000..bdbf824 Binary files /dev/null and b/aePronunciation/raw/double_p_or.mp3 differ diff --git a/aePronunciation/raw/double_p_ou.mp3 b/aePronunciation/raw/double_p_ou.mp3 new file mode 100755 index 0000000..1529047 Binary files /dev/null and b/aePronunciation/raw/double_p_ou.mp3 differ diff --git a/aePronunciation/raw/double_p_shwua.mp3 b/aePronunciation/raw/double_p_shwua.mp3 new file mode 100755 index 0000000..66c9215 Binary files /dev/null and b/aePronunciation/raw/double_p_shwua.mp3 differ diff --git a/aePronunciation/raw/double_p_u.mp3 b/aePronunciation/raw/double_p_u.mp3 new file mode 100755 index 0000000..2377cb4 Binary files /dev/null and b/aePronunciation/raw/double_p_u.mp3 differ diff --git a/aePronunciation/raw/double_p_us.mp3 b/aePronunciation/raw/double_p_us.mp3 new file mode 100755 index 0000000..ee67354 Binary files /dev/null and b/aePronunciation/raw/double_p_us.mp3 differ diff --git a/aePronunciation/raw/double_p_vu.mp3 b/aePronunciation/raw/double_p_vu.mp3 new file mode 100755 index 0000000..dfc2cbb Binary files /dev/null and b/aePronunciation/raw/double_p_vu.mp3 differ diff --git a/aePronunciation/raw/double_r_a.mp3 b/aePronunciation/raw/double_r_a.mp3 new file mode 100755 index 0000000..621dcf2 Binary files /dev/null and b/aePronunciation/raw/double_r_a.mp3 differ diff --git a/aePronunciation/raw/double_r_ae.mp3 b/aePronunciation/raw/double_r_ae.mp3 new file mode 100755 index 0000000..02fcd7e Binary files /dev/null and b/aePronunciation/raw/double_r_ae.mp3 differ diff --git a/aePronunciation/raw/double_r_ai.mp3 b/aePronunciation/raw/double_r_ai.mp3 new file mode 100755 index 0000000..44e5913 Binary files /dev/null and b/aePronunciation/raw/double_r_ai.mp3 differ diff --git a/aePronunciation/raw/double_r_ar.mp3 b/aePronunciation/raw/double_r_ar.mp3 new file mode 100755 index 0000000..76408b9 Binary files /dev/null and b/aePronunciation/raw/double_r_ar.mp3 differ diff --git a/aePronunciation/raw/double_r_au.mp3 b/aePronunciation/raw/double_r_au.mp3 new file mode 100755 index 0000000..6b36429 Binary files /dev/null and b/aePronunciation/raw/double_r_au.mp3 differ diff --git a/aePronunciation/raw/double_r_c.mp3 b/aePronunciation/raw/double_r_c.mp3 new file mode 100755 index 0000000..7c4166a Binary files /dev/null and b/aePronunciation/raw/double_r_c.mp3 differ diff --git a/aePronunciation/raw/double_r_e.mp3 b/aePronunciation/raw/double_r_e.mp3 new file mode 100755 index 0000000..121f619 Binary files /dev/null and b/aePronunciation/raw/double_r_e.mp3 differ diff --git a/aePronunciation/raw/double_r_ei.mp3 b/aePronunciation/raw/double_r_ei.mp3 new file mode 100755 index 0000000..0279ec5 Binary files /dev/null and b/aePronunciation/raw/double_r_ei.mp3 differ diff --git a/aePronunciation/raw/double_r_er.mp3 b/aePronunciation/raw/double_r_er.mp3 new file mode 100755 index 0000000..4158634 Binary files /dev/null and b/aePronunciation/raw/double_r_er.mp3 differ diff --git a/aePronunciation/raw/double_r_ers.mp3 b/aePronunciation/raw/double_r_ers.mp3 new file mode 100755 index 0000000..3dd4256 Binary files /dev/null and b/aePronunciation/raw/double_r_ers.mp3 differ diff --git a/aePronunciation/raw/double_r_eru.mp3 b/aePronunciation/raw/double_r_eru.mp3 new file mode 100755 index 0000000..1375019 Binary files /dev/null and b/aePronunciation/raw/double_r_eru.mp3 differ diff --git a/aePronunciation/raw/double_r_i.mp3 b/aePronunciation/raw/double_r_i.mp3 new file mode 100755 index 0000000..6f19c30 Binary files /dev/null and b/aePronunciation/raw/double_r_i.mp3 differ diff --git a/aePronunciation/raw/double_r_ir.mp3 b/aePronunciation/raw/double_r_ir.mp3 new file mode 100755 index 0000000..4ed609a Binary files /dev/null and b/aePronunciation/raw/double_r_ir.mp3 differ diff --git a/aePronunciation/raw/double_r_is.mp3 b/aePronunciation/raw/double_r_is.mp3 new file mode 100755 index 0000000..641211b Binary files /dev/null and b/aePronunciation/raw/double_r_is.mp3 differ diff --git a/aePronunciation/raw/double_r_oi.mp3 b/aePronunciation/raw/double_r_oi.mp3 new file mode 100755 index 0000000..61dedea Binary files /dev/null and b/aePronunciation/raw/double_r_oi.mp3 differ diff --git a/aePronunciation/raw/double_r_or.mp3 b/aePronunciation/raw/double_r_or.mp3 new file mode 100755 index 0000000..d14b7c2 Binary files /dev/null and b/aePronunciation/raw/double_r_or.mp3 differ diff --git a/aePronunciation/raw/double_r_ou.mp3 b/aePronunciation/raw/double_r_ou.mp3 new file mode 100755 index 0000000..34f236c Binary files /dev/null and b/aePronunciation/raw/double_r_ou.mp3 differ diff --git a/aePronunciation/raw/double_r_shwua.mp3 b/aePronunciation/raw/double_r_shwua.mp3 new file mode 100755 index 0000000..0bf9f7f Binary files /dev/null and b/aePronunciation/raw/double_r_shwua.mp3 differ diff --git a/aePronunciation/raw/double_r_u.mp3 b/aePronunciation/raw/double_r_u.mp3 new file mode 100755 index 0000000..1f55ce3 Binary files /dev/null and b/aePronunciation/raw/double_r_u.mp3 differ diff --git a/aePronunciation/raw/double_r_us.mp3 b/aePronunciation/raw/double_r_us.mp3 new file mode 100755 index 0000000..edb72ad Binary files /dev/null and b/aePronunciation/raw/double_r_us.mp3 differ diff --git a/aePronunciation/raw/double_r_vu.mp3 b/aePronunciation/raw/double_r_vu.mp3 new file mode 100755 index 0000000..af4bbf7 Binary files /dev/null and b/aePronunciation/raw/double_r_vu.mp3 differ diff --git a/aePronunciation/raw/double_s_a.mp3 b/aePronunciation/raw/double_s_a.mp3 new file mode 100755 index 0000000..07bd36d Binary files /dev/null and b/aePronunciation/raw/double_s_a.mp3 differ diff --git a/aePronunciation/raw/double_s_ae.mp3 b/aePronunciation/raw/double_s_ae.mp3 new file mode 100755 index 0000000..b7e6fee Binary files /dev/null and b/aePronunciation/raw/double_s_ae.mp3 differ diff --git a/aePronunciation/raw/double_s_ai.mp3 b/aePronunciation/raw/double_s_ai.mp3 new file mode 100755 index 0000000..8a2ab8d Binary files /dev/null and b/aePronunciation/raw/double_s_ai.mp3 differ diff --git a/aePronunciation/raw/double_s_ar.mp3 b/aePronunciation/raw/double_s_ar.mp3 new file mode 100755 index 0000000..2ba82ee Binary files /dev/null and b/aePronunciation/raw/double_s_ar.mp3 differ diff --git a/aePronunciation/raw/double_s_au.mp3 b/aePronunciation/raw/double_s_au.mp3 new file mode 100755 index 0000000..5498114 Binary files /dev/null and b/aePronunciation/raw/double_s_au.mp3 differ diff --git a/aePronunciation/raw/double_s_c.mp3 b/aePronunciation/raw/double_s_c.mp3 new file mode 100755 index 0000000..bef1e29 Binary files /dev/null and b/aePronunciation/raw/double_s_c.mp3 differ diff --git a/aePronunciation/raw/double_s_e.mp3 b/aePronunciation/raw/double_s_e.mp3 new file mode 100755 index 0000000..0392509 Binary files /dev/null and b/aePronunciation/raw/double_s_e.mp3 differ diff --git a/aePronunciation/raw/double_s_ei.mp3 b/aePronunciation/raw/double_s_ei.mp3 new file mode 100755 index 0000000..9809dec Binary files /dev/null and b/aePronunciation/raw/double_s_ei.mp3 differ diff --git a/aePronunciation/raw/double_s_er.mp3 b/aePronunciation/raw/double_s_er.mp3 new file mode 100755 index 0000000..6175990 Binary files /dev/null and b/aePronunciation/raw/double_s_er.mp3 differ diff --git a/aePronunciation/raw/double_s_ers.mp3 b/aePronunciation/raw/double_s_ers.mp3 new file mode 100755 index 0000000..0c8a6b2 Binary files /dev/null and b/aePronunciation/raw/double_s_ers.mp3 differ diff --git a/aePronunciation/raw/double_s_eru.mp3 b/aePronunciation/raw/double_s_eru.mp3 new file mode 100755 index 0000000..6bcd4ca Binary files /dev/null and b/aePronunciation/raw/double_s_eru.mp3 differ diff --git a/aePronunciation/raw/double_s_i.mp3 b/aePronunciation/raw/double_s_i.mp3 new file mode 100755 index 0000000..01ab64f Binary files /dev/null and b/aePronunciation/raw/double_s_i.mp3 differ diff --git a/aePronunciation/raw/double_s_ir.mp3 b/aePronunciation/raw/double_s_ir.mp3 new file mode 100755 index 0000000..3d8ee80 Binary files /dev/null and b/aePronunciation/raw/double_s_ir.mp3 differ diff --git a/aePronunciation/raw/double_s_is.mp3 b/aePronunciation/raw/double_s_is.mp3 new file mode 100755 index 0000000..5f90011 Binary files /dev/null and b/aePronunciation/raw/double_s_is.mp3 differ diff --git a/aePronunciation/raw/double_s_oi.mp3 b/aePronunciation/raw/double_s_oi.mp3 new file mode 100755 index 0000000..daef1a8 Binary files /dev/null and b/aePronunciation/raw/double_s_oi.mp3 differ diff --git a/aePronunciation/raw/double_s_or.mp3 b/aePronunciation/raw/double_s_or.mp3 new file mode 100755 index 0000000..4e26355 Binary files /dev/null and b/aePronunciation/raw/double_s_or.mp3 differ diff --git a/aePronunciation/raw/double_s_ou.mp3 b/aePronunciation/raw/double_s_ou.mp3 new file mode 100755 index 0000000..4f2c212 Binary files /dev/null and b/aePronunciation/raw/double_s_ou.mp3 differ diff --git a/aePronunciation/raw/double_s_shwua.mp3 b/aePronunciation/raw/double_s_shwua.mp3 new file mode 100755 index 0000000..b380f88 Binary files /dev/null and b/aePronunciation/raw/double_s_shwua.mp3 differ diff --git a/aePronunciation/raw/double_s_u.mp3 b/aePronunciation/raw/double_s_u.mp3 new file mode 100755 index 0000000..e7f8f90 Binary files /dev/null and b/aePronunciation/raw/double_s_u.mp3 differ diff --git a/aePronunciation/raw/double_s_us.mp3 b/aePronunciation/raw/double_s_us.mp3 new file mode 100755 index 0000000..05b3a3c Binary files /dev/null and b/aePronunciation/raw/double_s_us.mp3 differ diff --git a/aePronunciation/raw/double_s_vu.mp3 b/aePronunciation/raw/double_s_vu.mp3 new file mode 100755 index 0000000..f66739f Binary files /dev/null and b/aePronunciation/raw/double_s_vu.mp3 differ diff --git a/aePronunciation/raw/double_sh_a.mp3 b/aePronunciation/raw/double_sh_a.mp3 new file mode 100755 index 0000000..1c43e5d Binary files /dev/null and b/aePronunciation/raw/double_sh_a.mp3 differ diff --git a/aePronunciation/raw/double_sh_ae.mp3 b/aePronunciation/raw/double_sh_ae.mp3 new file mode 100755 index 0000000..4fc642e Binary files /dev/null and b/aePronunciation/raw/double_sh_ae.mp3 differ diff --git a/aePronunciation/raw/double_sh_ai.mp3 b/aePronunciation/raw/double_sh_ai.mp3 new file mode 100755 index 0000000..2d8f054 Binary files /dev/null and b/aePronunciation/raw/double_sh_ai.mp3 differ diff --git a/aePronunciation/raw/double_sh_ar.mp3 b/aePronunciation/raw/double_sh_ar.mp3 new file mode 100755 index 0000000..c935a77 Binary files /dev/null and b/aePronunciation/raw/double_sh_ar.mp3 differ diff --git a/aePronunciation/raw/double_sh_au.mp3 b/aePronunciation/raw/double_sh_au.mp3 new file mode 100755 index 0000000..f349296 Binary files /dev/null and b/aePronunciation/raw/double_sh_au.mp3 differ diff --git a/aePronunciation/raw/double_sh_c.mp3 b/aePronunciation/raw/double_sh_c.mp3 new file mode 100755 index 0000000..2b9cb82 Binary files /dev/null and b/aePronunciation/raw/double_sh_c.mp3 differ diff --git a/aePronunciation/raw/double_sh_e.mp3 b/aePronunciation/raw/double_sh_e.mp3 new file mode 100755 index 0000000..b94bb21 Binary files /dev/null and b/aePronunciation/raw/double_sh_e.mp3 differ diff --git a/aePronunciation/raw/double_sh_ei.mp3 b/aePronunciation/raw/double_sh_ei.mp3 new file mode 100755 index 0000000..f4e2206 Binary files /dev/null and b/aePronunciation/raw/double_sh_ei.mp3 differ diff --git a/aePronunciation/raw/double_sh_er.mp3 b/aePronunciation/raw/double_sh_er.mp3 new file mode 100755 index 0000000..9afb606 Binary files /dev/null and b/aePronunciation/raw/double_sh_er.mp3 differ diff --git a/aePronunciation/raw/double_sh_ers.mp3 b/aePronunciation/raw/double_sh_ers.mp3 new file mode 100755 index 0000000..f2a5223 Binary files /dev/null and b/aePronunciation/raw/double_sh_ers.mp3 differ diff --git a/aePronunciation/raw/double_sh_eru.mp3 b/aePronunciation/raw/double_sh_eru.mp3 new file mode 100755 index 0000000..a085ec8 Binary files /dev/null and b/aePronunciation/raw/double_sh_eru.mp3 differ diff --git a/aePronunciation/raw/double_sh_i.mp3 b/aePronunciation/raw/double_sh_i.mp3 new file mode 100755 index 0000000..116549b Binary files /dev/null and b/aePronunciation/raw/double_sh_i.mp3 differ diff --git a/aePronunciation/raw/double_sh_ir.mp3 b/aePronunciation/raw/double_sh_ir.mp3 new file mode 100755 index 0000000..19db05d Binary files /dev/null and b/aePronunciation/raw/double_sh_ir.mp3 differ diff --git a/aePronunciation/raw/double_sh_is.mp3 b/aePronunciation/raw/double_sh_is.mp3 new file mode 100755 index 0000000..ff831c9 Binary files /dev/null and b/aePronunciation/raw/double_sh_is.mp3 differ diff --git a/aePronunciation/raw/double_sh_oi.mp3 b/aePronunciation/raw/double_sh_oi.mp3 new file mode 100755 index 0000000..c6dde1a Binary files /dev/null and b/aePronunciation/raw/double_sh_oi.mp3 differ diff --git a/aePronunciation/raw/double_sh_or.mp3 b/aePronunciation/raw/double_sh_or.mp3 new file mode 100755 index 0000000..2966532 Binary files /dev/null and b/aePronunciation/raw/double_sh_or.mp3 differ diff --git a/aePronunciation/raw/double_sh_ou.mp3 b/aePronunciation/raw/double_sh_ou.mp3 new file mode 100755 index 0000000..76b4345 Binary files /dev/null and b/aePronunciation/raw/double_sh_ou.mp3 differ diff --git a/aePronunciation/raw/double_sh_shwua.mp3 b/aePronunciation/raw/double_sh_shwua.mp3 new file mode 100755 index 0000000..ff030eb Binary files /dev/null and b/aePronunciation/raw/double_sh_shwua.mp3 differ diff --git a/aePronunciation/raw/double_sh_u.mp3 b/aePronunciation/raw/double_sh_u.mp3 new file mode 100755 index 0000000..a1058b6 Binary files /dev/null and b/aePronunciation/raw/double_sh_u.mp3 differ diff --git a/aePronunciation/raw/double_sh_us.mp3 b/aePronunciation/raw/double_sh_us.mp3 new file mode 100755 index 0000000..43cb5f4 Binary files /dev/null and b/aePronunciation/raw/double_sh_us.mp3 differ diff --git a/aePronunciation/raw/double_sh_vu.mp3 b/aePronunciation/raw/double_sh_vu.mp3 new file mode 100755 index 0000000..768c733 Binary files /dev/null and b/aePronunciation/raw/double_sh_vu.mp3 differ diff --git a/aePronunciation/raw/double_shwua_b.mp3 b/aePronunciation/raw/double_shwua_b.mp3 new file mode 100755 index 0000000..0939e0d Binary files /dev/null and b/aePronunciation/raw/double_shwua_b.mp3 differ diff --git a/aePronunciation/raw/double_shwua_ch.mp3 b/aePronunciation/raw/double_shwua_ch.mp3 new file mode 100755 index 0000000..ab146e7 Binary files /dev/null and b/aePronunciation/raw/double_shwua_ch.mp3 differ diff --git a/aePronunciation/raw/double_shwua_d.mp3 b/aePronunciation/raw/double_shwua_d.mp3 new file mode 100755 index 0000000..35be146 Binary files /dev/null and b/aePronunciation/raw/double_shwua_d.mp3 differ diff --git a/aePronunciation/raw/double_shwua_dzh.mp3 b/aePronunciation/raw/double_shwua_dzh.mp3 new file mode 100755 index 0000000..2480c36 Binary files /dev/null and b/aePronunciation/raw/double_shwua_dzh.mp3 differ diff --git a/aePronunciation/raw/double_shwua_f.mp3 b/aePronunciation/raw/double_shwua_f.mp3 new file mode 100755 index 0000000..2e085d3 Binary files /dev/null and b/aePronunciation/raw/double_shwua_f.mp3 differ diff --git a/aePronunciation/raw/double_shwua_g.mp3 b/aePronunciation/raw/double_shwua_g.mp3 new file mode 100755 index 0000000..ba0626c Binary files /dev/null and b/aePronunciation/raw/double_shwua_g.mp3 differ diff --git a/aePronunciation/raw/double_shwua_k.mp3 b/aePronunciation/raw/double_shwua_k.mp3 new file mode 100755 index 0000000..e67b765 Binary files /dev/null and b/aePronunciation/raw/double_shwua_k.mp3 differ diff --git a/aePronunciation/raw/double_shwua_l.mp3 b/aePronunciation/raw/double_shwua_l.mp3 new file mode 100755 index 0000000..98cc0cf Binary files /dev/null and b/aePronunciation/raw/double_shwua_l.mp3 differ diff --git a/aePronunciation/raw/double_shwua_m.mp3 b/aePronunciation/raw/double_shwua_m.mp3 new file mode 100755 index 0000000..b5a7717 Binary files /dev/null and b/aePronunciation/raw/double_shwua_m.mp3 differ diff --git a/aePronunciation/raw/double_shwua_n.mp3 b/aePronunciation/raw/double_shwua_n.mp3 new file mode 100755 index 0000000..ee3f228 Binary files /dev/null and b/aePronunciation/raw/double_shwua_n.mp3 differ diff --git a/aePronunciation/raw/double_shwua_ng.mp3 b/aePronunciation/raw/double_shwua_ng.mp3 new file mode 100755 index 0000000..22334c6 Binary files /dev/null and b/aePronunciation/raw/double_shwua_ng.mp3 differ diff --git a/aePronunciation/raw/double_shwua_p.mp3 b/aePronunciation/raw/double_shwua_p.mp3 new file mode 100755 index 0000000..a283a26 Binary files /dev/null and b/aePronunciation/raw/double_shwua_p.mp3 differ diff --git a/aePronunciation/raw/double_shwua_s.mp3 b/aePronunciation/raw/double_shwua_s.mp3 new file mode 100755 index 0000000..3736224 Binary files /dev/null and b/aePronunciation/raw/double_shwua_s.mp3 differ diff --git a/aePronunciation/raw/double_shwua_sh.mp3 b/aePronunciation/raw/double_shwua_sh.mp3 new file mode 100755 index 0000000..6ca8116 Binary files /dev/null and b/aePronunciation/raw/double_shwua_sh.mp3 differ diff --git a/aePronunciation/raw/double_shwua_t.mp3 b/aePronunciation/raw/double_shwua_t.mp3 new file mode 100755 index 0000000..b22fb82 Binary files /dev/null and b/aePronunciation/raw/double_shwua_t.mp3 differ diff --git a/aePronunciation/raw/double_shwua_th.mp3 b/aePronunciation/raw/double_shwua_th.mp3 new file mode 100755 index 0000000..ca2b785 Binary files /dev/null and b/aePronunciation/raw/double_shwua_th.mp3 differ diff --git a/aePronunciation/raw/double_shwua_thv.mp3 b/aePronunciation/raw/double_shwua_thv.mp3 new file mode 100755 index 0000000..dbe170e Binary files /dev/null and b/aePronunciation/raw/double_shwua_thv.mp3 differ diff --git a/aePronunciation/raw/double_shwua_v.mp3 b/aePronunciation/raw/double_shwua_v.mp3 new file mode 100755 index 0000000..e894d05 Binary files /dev/null and b/aePronunciation/raw/double_shwua_v.mp3 differ diff --git a/aePronunciation/raw/double_shwua_z.mp3 b/aePronunciation/raw/double_shwua_z.mp3 new file mode 100755 index 0000000..03684a8 Binary files /dev/null and b/aePronunciation/raw/double_shwua_z.mp3 differ diff --git a/aePronunciation/raw/double_shwua_zh.mp3 b/aePronunciation/raw/double_shwua_zh.mp3 new file mode 100755 index 0000000..80aaa83 Binary files /dev/null and b/aePronunciation/raw/double_shwua_zh.mp3 differ diff --git a/aePronunciation/raw/double_t_a.mp3 b/aePronunciation/raw/double_t_a.mp3 new file mode 100755 index 0000000..136aef7 Binary files /dev/null and b/aePronunciation/raw/double_t_a.mp3 differ diff --git a/aePronunciation/raw/double_t_ae.mp3 b/aePronunciation/raw/double_t_ae.mp3 new file mode 100755 index 0000000..f9b0d93 Binary files /dev/null and b/aePronunciation/raw/double_t_ae.mp3 differ diff --git a/aePronunciation/raw/double_t_ai.mp3 b/aePronunciation/raw/double_t_ai.mp3 new file mode 100755 index 0000000..c3414dd Binary files /dev/null and b/aePronunciation/raw/double_t_ai.mp3 differ diff --git a/aePronunciation/raw/double_t_ar.mp3 b/aePronunciation/raw/double_t_ar.mp3 new file mode 100755 index 0000000..eb765d8 Binary files /dev/null and b/aePronunciation/raw/double_t_ar.mp3 differ diff --git a/aePronunciation/raw/double_t_au.mp3 b/aePronunciation/raw/double_t_au.mp3 new file mode 100755 index 0000000..9872e6b Binary files /dev/null and b/aePronunciation/raw/double_t_au.mp3 differ diff --git a/aePronunciation/raw/double_t_c.mp3 b/aePronunciation/raw/double_t_c.mp3 new file mode 100755 index 0000000..d9dd35d Binary files /dev/null and b/aePronunciation/raw/double_t_c.mp3 differ diff --git a/aePronunciation/raw/double_t_e.mp3 b/aePronunciation/raw/double_t_e.mp3 new file mode 100755 index 0000000..a3020c7 Binary files /dev/null and b/aePronunciation/raw/double_t_e.mp3 differ diff --git a/aePronunciation/raw/double_t_ei.mp3 b/aePronunciation/raw/double_t_ei.mp3 new file mode 100755 index 0000000..a0f999a Binary files /dev/null and b/aePronunciation/raw/double_t_ei.mp3 differ diff --git a/aePronunciation/raw/double_t_er.mp3 b/aePronunciation/raw/double_t_er.mp3 new file mode 100755 index 0000000..aea13e7 Binary files /dev/null and b/aePronunciation/raw/double_t_er.mp3 differ diff --git a/aePronunciation/raw/double_t_ers.mp3 b/aePronunciation/raw/double_t_ers.mp3 new file mode 100755 index 0000000..11cf104 Binary files /dev/null and b/aePronunciation/raw/double_t_ers.mp3 differ diff --git a/aePronunciation/raw/double_t_eru.mp3 b/aePronunciation/raw/double_t_eru.mp3 new file mode 100755 index 0000000..7a61e7a Binary files /dev/null and b/aePronunciation/raw/double_t_eru.mp3 differ diff --git a/aePronunciation/raw/double_t_i.mp3 b/aePronunciation/raw/double_t_i.mp3 new file mode 100755 index 0000000..3bbb5ed Binary files /dev/null and b/aePronunciation/raw/double_t_i.mp3 differ diff --git a/aePronunciation/raw/double_t_ir.mp3 b/aePronunciation/raw/double_t_ir.mp3 new file mode 100755 index 0000000..ac9de2d Binary files /dev/null and b/aePronunciation/raw/double_t_ir.mp3 differ diff --git a/aePronunciation/raw/double_t_is.mp3 b/aePronunciation/raw/double_t_is.mp3 new file mode 100755 index 0000000..f07a1ae Binary files /dev/null and b/aePronunciation/raw/double_t_is.mp3 differ diff --git a/aePronunciation/raw/double_t_oi.mp3 b/aePronunciation/raw/double_t_oi.mp3 new file mode 100755 index 0000000..4640bd2 Binary files /dev/null and b/aePronunciation/raw/double_t_oi.mp3 differ diff --git a/aePronunciation/raw/double_t_or.mp3 b/aePronunciation/raw/double_t_or.mp3 new file mode 100755 index 0000000..85ad85a Binary files /dev/null and b/aePronunciation/raw/double_t_or.mp3 differ diff --git a/aePronunciation/raw/double_t_ou.mp3 b/aePronunciation/raw/double_t_ou.mp3 new file mode 100755 index 0000000..f0a3210 Binary files /dev/null and b/aePronunciation/raw/double_t_ou.mp3 differ diff --git a/aePronunciation/raw/double_t_shwua.mp3 b/aePronunciation/raw/double_t_shwua.mp3 new file mode 100755 index 0000000..be4d497 Binary files /dev/null and b/aePronunciation/raw/double_t_shwua.mp3 differ diff --git a/aePronunciation/raw/double_t_u.mp3 b/aePronunciation/raw/double_t_u.mp3 new file mode 100755 index 0000000..6aa1b0c Binary files /dev/null and b/aePronunciation/raw/double_t_u.mp3 differ diff --git a/aePronunciation/raw/double_t_us.mp3 b/aePronunciation/raw/double_t_us.mp3 new file mode 100755 index 0000000..5874ddc Binary files /dev/null and b/aePronunciation/raw/double_t_us.mp3 differ diff --git a/aePronunciation/raw/double_t_vu.mp3 b/aePronunciation/raw/double_t_vu.mp3 new file mode 100755 index 0000000..e0aadf0 Binary files /dev/null and b/aePronunciation/raw/double_t_vu.mp3 differ diff --git a/aePronunciation/raw/double_th_a.mp3 b/aePronunciation/raw/double_th_a.mp3 new file mode 100755 index 0000000..4836906 Binary files /dev/null and b/aePronunciation/raw/double_th_a.mp3 differ diff --git a/aePronunciation/raw/double_th_ae.mp3 b/aePronunciation/raw/double_th_ae.mp3 new file mode 100755 index 0000000..ec5735a Binary files /dev/null and b/aePronunciation/raw/double_th_ae.mp3 differ diff --git a/aePronunciation/raw/double_th_ai.mp3 b/aePronunciation/raw/double_th_ai.mp3 new file mode 100755 index 0000000..62f56ca Binary files /dev/null and b/aePronunciation/raw/double_th_ai.mp3 differ diff --git a/aePronunciation/raw/double_th_ar.mp3 b/aePronunciation/raw/double_th_ar.mp3 new file mode 100755 index 0000000..7ff4e92 Binary files /dev/null and b/aePronunciation/raw/double_th_ar.mp3 differ diff --git a/aePronunciation/raw/double_th_au.mp3 b/aePronunciation/raw/double_th_au.mp3 new file mode 100755 index 0000000..1b57dbd Binary files /dev/null and b/aePronunciation/raw/double_th_au.mp3 differ diff --git a/aePronunciation/raw/double_th_c.mp3 b/aePronunciation/raw/double_th_c.mp3 new file mode 100755 index 0000000..f62c685 Binary files /dev/null and b/aePronunciation/raw/double_th_c.mp3 differ diff --git a/aePronunciation/raw/double_th_e.mp3 b/aePronunciation/raw/double_th_e.mp3 new file mode 100755 index 0000000..c5d859b Binary files /dev/null and b/aePronunciation/raw/double_th_e.mp3 differ diff --git a/aePronunciation/raw/double_th_ei.mp3 b/aePronunciation/raw/double_th_ei.mp3 new file mode 100755 index 0000000..0792ab9 Binary files /dev/null and b/aePronunciation/raw/double_th_ei.mp3 differ diff --git a/aePronunciation/raw/double_th_er.mp3 b/aePronunciation/raw/double_th_er.mp3 new file mode 100755 index 0000000..a909335 Binary files /dev/null and b/aePronunciation/raw/double_th_er.mp3 differ diff --git a/aePronunciation/raw/double_th_ers.mp3 b/aePronunciation/raw/double_th_ers.mp3 new file mode 100755 index 0000000..afee3ed Binary files /dev/null and b/aePronunciation/raw/double_th_ers.mp3 differ diff --git a/aePronunciation/raw/double_th_eru.mp3 b/aePronunciation/raw/double_th_eru.mp3 new file mode 100755 index 0000000..745d45a Binary files /dev/null and b/aePronunciation/raw/double_th_eru.mp3 differ diff --git a/aePronunciation/raw/double_th_i.mp3 b/aePronunciation/raw/double_th_i.mp3 new file mode 100755 index 0000000..d55c2a7 Binary files /dev/null and b/aePronunciation/raw/double_th_i.mp3 differ diff --git a/aePronunciation/raw/double_th_ir.mp3 b/aePronunciation/raw/double_th_ir.mp3 new file mode 100755 index 0000000..e441dae Binary files /dev/null and b/aePronunciation/raw/double_th_ir.mp3 differ diff --git a/aePronunciation/raw/double_th_is.mp3 b/aePronunciation/raw/double_th_is.mp3 new file mode 100755 index 0000000..4e656a5 Binary files /dev/null and b/aePronunciation/raw/double_th_is.mp3 differ diff --git a/aePronunciation/raw/double_th_oi.mp3 b/aePronunciation/raw/double_th_oi.mp3 new file mode 100755 index 0000000..8321f49 Binary files /dev/null and b/aePronunciation/raw/double_th_oi.mp3 differ diff --git a/aePronunciation/raw/double_th_or.mp3 b/aePronunciation/raw/double_th_or.mp3 new file mode 100755 index 0000000..53187d9 Binary files /dev/null and b/aePronunciation/raw/double_th_or.mp3 differ diff --git a/aePronunciation/raw/double_th_ou.mp3 b/aePronunciation/raw/double_th_ou.mp3 new file mode 100755 index 0000000..8450d84 Binary files /dev/null and b/aePronunciation/raw/double_th_ou.mp3 differ diff --git a/aePronunciation/raw/double_th_shwua.mp3 b/aePronunciation/raw/double_th_shwua.mp3 new file mode 100755 index 0000000..8e074df Binary files /dev/null and b/aePronunciation/raw/double_th_shwua.mp3 differ diff --git a/aePronunciation/raw/double_th_u.mp3 b/aePronunciation/raw/double_th_u.mp3 new file mode 100755 index 0000000..211eabe Binary files /dev/null and b/aePronunciation/raw/double_th_u.mp3 differ diff --git a/aePronunciation/raw/double_th_us.mp3 b/aePronunciation/raw/double_th_us.mp3 new file mode 100755 index 0000000..9bc5c9d Binary files /dev/null and b/aePronunciation/raw/double_th_us.mp3 differ diff --git a/aePronunciation/raw/double_th_vu.mp3 b/aePronunciation/raw/double_th_vu.mp3 new file mode 100755 index 0000000..ff00150 Binary files /dev/null and b/aePronunciation/raw/double_th_vu.mp3 differ diff --git a/aePronunciation/raw/double_thv_a.mp3 b/aePronunciation/raw/double_thv_a.mp3 new file mode 100755 index 0000000..dbeb74d Binary files /dev/null and b/aePronunciation/raw/double_thv_a.mp3 differ diff --git a/aePronunciation/raw/double_thv_ae.mp3 b/aePronunciation/raw/double_thv_ae.mp3 new file mode 100755 index 0000000..51f5a19 Binary files /dev/null and b/aePronunciation/raw/double_thv_ae.mp3 differ diff --git a/aePronunciation/raw/double_thv_ai.mp3 b/aePronunciation/raw/double_thv_ai.mp3 new file mode 100755 index 0000000..164324d Binary files /dev/null and b/aePronunciation/raw/double_thv_ai.mp3 differ diff --git a/aePronunciation/raw/double_thv_ar.mp3 b/aePronunciation/raw/double_thv_ar.mp3 new file mode 100755 index 0000000..5c07aed Binary files /dev/null and b/aePronunciation/raw/double_thv_ar.mp3 differ diff --git a/aePronunciation/raw/double_thv_au.mp3 b/aePronunciation/raw/double_thv_au.mp3 new file mode 100755 index 0000000..8a684fb Binary files /dev/null and b/aePronunciation/raw/double_thv_au.mp3 differ diff --git a/aePronunciation/raw/double_thv_c.mp3 b/aePronunciation/raw/double_thv_c.mp3 new file mode 100755 index 0000000..21e7983 Binary files /dev/null and b/aePronunciation/raw/double_thv_c.mp3 differ diff --git a/aePronunciation/raw/double_thv_e.mp3 b/aePronunciation/raw/double_thv_e.mp3 new file mode 100755 index 0000000..e92c13b Binary files /dev/null and b/aePronunciation/raw/double_thv_e.mp3 differ diff --git a/aePronunciation/raw/double_thv_ei.mp3 b/aePronunciation/raw/double_thv_ei.mp3 new file mode 100755 index 0000000..d15994c Binary files /dev/null and b/aePronunciation/raw/double_thv_ei.mp3 differ diff --git a/aePronunciation/raw/double_thv_er.mp3 b/aePronunciation/raw/double_thv_er.mp3 new file mode 100755 index 0000000..011f016 Binary files /dev/null and b/aePronunciation/raw/double_thv_er.mp3 differ diff --git a/aePronunciation/raw/double_thv_ers.mp3 b/aePronunciation/raw/double_thv_ers.mp3 new file mode 100755 index 0000000..4b47765 Binary files /dev/null and b/aePronunciation/raw/double_thv_ers.mp3 differ diff --git a/aePronunciation/raw/double_thv_eru.mp3 b/aePronunciation/raw/double_thv_eru.mp3 new file mode 100755 index 0000000..8d94f24 Binary files /dev/null and b/aePronunciation/raw/double_thv_eru.mp3 differ diff --git a/aePronunciation/raw/double_thv_i.mp3 b/aePronunciation/raw/double_thv_i.mp3 new file mode 100755 index 0000000..bc7548d Binary files /dev/null and b/aePronunciation/raw/double_thv_i.mp3 differ diff --git a/aePronunciation/raw/double_thv_ir.mp3 b/aePronunciation/raw/double_thv_ir.mp3 new file mode 100755 index 0000000..ec0fd3e Binary files /dev/null and b/aePronunciation/raw/double_thv_ir.mp3 differ diff --git a/aePronunciation/raw/double_thv_is.mp3 b/aePronunciation/raw/double_thv_is.mp3 new file mode 100755 index 0000000..6bddd2f Binary files /dev/null and b/aePronunciation/raw/double_thv_is.mp3 differ diff --git a/aePronunciation/raw/double_thv_oi.mp3 b/aePronunciation/raw/double_thv_oi.mp3 new file mode 100755 index 0000000..6f2efe5 Binary files /dev/null and b/aePronunciation/raw/double_thv_oi.mp3 differ diff --git a/aePronunciation/raw/double_thv_or.mp3 b/aePronunciation/raw/double_thv_or.mp3 new file mode 100755 index 0000000..c17987f Binary files /dev/null and b/aePronunciation/raw/double_thv_or.mp3 differ diff --git a/aePronunciation/raw/double_thv_ou.mp3 b/aePronunciation/raw/double_thv_ou.mp3 new file mode 100755 index 0000000..02df1ab Binary files /dev/null and b/aePronunciation/raw/double_thv_ou.mp3 differ diff --git a/aePronunciation/raw/double_thv_shwua.mp3 b/aePronunciation/raw/double_thv_shwua.mp3 new file mode 100755 index 0000000..9054449 Binary files /dev/null and b/aePronunciation/raw/double_thv_shwua.mp3 differ diff --git a/aePronunciation/raw/double_thv_u.mp3 b/aePronunciation/raw/double_thv_u.mp3 new file mode 100755 index 0000000..c1845a2 Binary files /dev/null and b/aePronunciation/raw/double_thv_u.mp3 differ diff --git a/aePronunciation/raw/double_thv_us.mp3 b/aePronunciation/raw/double_thv_us.mp3 new file mode 100755 index 0000000..75eea03 Binary files /dev/null and b/aePronunciation/raw/double_thv_us.mp3 differ diff --git a/aePronunciation/raw/double_thv_vu.mp3 b/aePronunciation/raw/double_thv_vu.mp3 new file mode 100755 index 0000000..1b102ca Binary files /dev/null and b/aePronunciation/raw/double_thv_vu.mp3 differ diff --git a/aePronunciation/raw/double_u_b.mp3 b/aePronunciation/raw/double_u_b.mp3 new file mode 100755 index 0000000..b27fba9 Binary files /dev/null and b/aePronunciation/raw/double_u_b.mp3 differ diff --git a/aePronunciation/raw/double_u_ch.mp3 b/aePronunciation/raw/double_u_ch.mp3 new file mode 100755 index 0000000..e7de39d Binary files /dev/null and b/aePronunciation/raw/double_u_ch.mp3 differ diff --git a/aePronunciation/raw/double_u_d.mp3 b/aePronunciation/raw/double_u_d.mp3 new file mode 100755 index 0000000..45bf74a Binary files /dev/null and b/aePronunciation/raw/double_u_d.mp3 differ diff --git a/aePronunciation/raw/double_u_dzh.mp3 b/aePronunciation/raw/double_u_dzh.mp3 new file mode 100755 index 0000000..4d90f5d Binary files /dev/null and b/aePronunciation/raw/double_u_dzh.mp3 differ diff --git a/aePronunciation/raw/double_u_f.mp3 b/aePronunciation/raw/double_u_f.mp3 new file mode 100755 index 0000000..534d3ab Binary files /dev/null and b/aePronunciation/raw/double_u_f.mp3 differ diff --git a/aePronunciation/raw/double_u_flap_shwua.mp3 b/aePronunciation/raw/double_u_flap_shwua.mp3 new file mode 100755 index 0000000..bcfe505 Binary files /dev/null and b/aePronunciation/raw/double_u_flap_shwua.mp3 differ diff --git a/aePronunciation/raw/double_u_g.mp3 b/aePronunciation/raw/double_u_g.mp3 new file mode 100755 index 0000000..e53221e Binary files /dev/null and b/aePronunciation/raw/double_u_g.mp3 differ diff --git a/aePronunciation/raw/double_u_glottal.mp3 b/aePronunciation/raw/double_u_glottal.mp3 new file mode 100755 index 0000000..28ae8cb Binary files /dev/null and b/aePronunciation/raw/double_u_glottal.mp3 differ diff --git a/aePronunciation/raw/double_u_k.mp3 b/aePronunciation/raw/double_u_k.mp3 new file mode 100755 index 0000000..4a65939 Binary files /dev/null and b/aePronunciation/raw/double_u_k.mp3 differ diff --git a/aePronunciation/raw/double_u_l.mp3 b/aePronunciation/raw/double_u_l.mp3 new file mode 100755 index 0000000..0c3ac71 Binary files /dev/null and b/aePronunciation/raw/double_u_l.mp3 differ diff --git a/aePronunciation/raw/double_u_m.mp3 b/aePronunciation/raw/double_u_m.mp3 new file mode 100755 index 0000000..81f4fae Binary files /dev/null and b/aePronunciation/raw/double_u_m.mp3 differ diff --git a/aePronunciation/raw/double_u_n.mp3 b/aePronunciation/raw/double_u_n.mp3 new file mode 100755 index 0000000..7001031 Binary files /dev/null and b/aePronunciation/raw/double_u_n.mp3 differ diff --git a/aePronunciation/raw/double_u_ng.mp3 b/aePronunciation/raw/double_u_ng.mp3 new file mode 100755 index 0000000..49dd94c Binary files /dev/null and b/aePronunciation/raw/double_u_ng.mp3 differ diff --git a/aePronunciation/raw/double_u_p.mp3 b/aePronunciation/raw/double_u_p.mp3 new file mode 100755 index 0000000..a8d0e63 Binary files /dev/null and b/aePronunciation/raw/double_u_p.mp3 differ diff --git a/aePronunciation/raw/double_u_s.mp3 b/aePronunciation/raw/double_u_s.mp3 new file mode 100755 index 0000000..9fd41b2 Binary files /dev/null and b/aePronunciation/raw/double_u_s.mp3 differ diff --git a/aePronunciation/raw/double_u_sh.mp3 b/aePronunciation/raw/double_u_sh.mp3 new file mode 100755 index 0000000..d331624 Binary files /dev/null and b/aePronunciation/raw/double_u_sh.mp3 differ diff --git a/aePronunciation/raw/double_u_t.mp3 b/aePronunciation/raw/double_u_t.mp3 new file mode 100755 index 0000000..62a95c5 Binary files /dev/null and b/aePronunciation/raw/double_u_t.mp3 differ diff --git a/aePronunciation/raw/double_u_th.mp3 b/aePronunciation/raw/double_u_th.mp3 new file mode 100755 index 0000000..df31d04 Binary files /dev/null and b/aePronunciation/raw/double_u_th.mp3 differ diff --git a/aePronunciation/raw/double_u_thv.mp3 b/aePronunciation/raw/double_u_thv.mp3 new file mode 100755 index 0000000..7873c75 Binary files /dev/null and b/aePronunciation/raw/double_u_thv.mp3 differ diff --git a/aePronunciation/raw/double_u_v.mp3 b/aePronunciation/raw/double_u_v.mp3 new file mode 100755 index 0000000..6a82bba Binary files /dev/null and b/aePronunciation/raw/double_u_v.mp3 differ diff --git a/aePronunciation/raw/double_u_z.mp3 b/aePronunciation/raw/double_u_z.mp3 new file mode 100755 index 0000000..1885a5c Binary files /dev/null and b/aePronunciation/raw/double_u_z.mp3 differ diff --git a/aePronunciation/raw/double_u_zh.mp3 b/aePronunciation/raw/double_u_zh.mp3 new file mode 100755 index 0000000..6789c4c Binary files /dev/null and b/aePronunciation/raw/double_u_zh.mp3 differ diff --git a/aePronunciation/raw/double_us_b.mp3 b/aePronunciation/raw/double_us_b.mp3 new file mode 100755 index 0000000..fe75b5b Binary files /dev/null and b/aePronunciation/raw/double_us_b.mp3 differ diff --git a/aePronunciation/raw/double_us_ch.mp3 b/aePronunciation/raw/double_us_ch.mp3 new file mode 100755 index 0000000..c49daeb Binary files /dev/null and b/aePronunciation/raw/double_us_ch.mp3 differ diff --git a/aePronunciation/raw/double_us_d.mp3 b/aePronunciation/raw/double_us_d.mp3 new file mode 100755 index 0000000..9cecced Binary files /dev/null and b/aePronunciation/raw/double_us_d.mp3 differ diff --git a/aePronunciation/raw/double_us_dzh.mp3 b/aePronunciation/raw/double_us_dzh.mp3 new file mode 100755 index 0000000..477bea3 Binary files /dev/null and b/aePronunciation/raw/double_us_dzh.mp3 differ diff --git a/aePronunciation/raw/double_us_f.mp3 b/aePronunciation/raw/double_us_f.mp3 new file mode 100755 index 0000000..42e0761 Binary files /dev/null and b/aePronunciation/raw/double_us_f.mp3 differ diff --git a/aePronunciation/raw/double_us_flap_shwua.mp3 b/aePronunciation/raw/double_us_flap_shwua.mp3 new file mode 100755 index 0000000..6b0fb70 Binary files /dev/null and b/aePronunciation/raw/double_us_flap_shwua.mp3 differ diff --git a/aePronunciation/raw/double_us_g.mp3 b/aePronunciation/raw/double_us_g.mp3 new file mode 100755 index 0000000..228f660 Binary files /dev/null and b/aePronunciation/raw/double_us_g.mp3 differ diff --git a/aePronunciation/raw/double_us_glottal.mp3 b/aePronunciation/raw/double_us_glottal.mp3 new file mode 100755 index 0000000..edaf38b Binary files /dev/null and b/aePronunciation/raw/double_us_glottal.mp3 differ diff --git a/aePronunciation/raw/double_us_k.mp3 b/aePronunciation/raw/double_us_k.mp3 new file mode 100755 index 0000000..83555c7 Binary files /dev/null and b/aePronunciation/raw/double_us_k.mp3 differ diff --git a/aePronunciation/raw/double_us_l.mp3 b/aePronunciation/raw/double_us_l.mp3 new file mode 100755 index 0000000..b447b1a Binary files /dev/null and b/aePronunciation/raw/double_us_l.mp3 differ diff --git a/aePronunciation/raw/double_us_m.mp3 b/aePronunciation/raw/double_us_m.mp3 new file mode 100755 index 0000000..8d067a5 Binary files /dev/null and b/aePronunciation/raw/double_us_m.mp3 differ diff --git a/aePronunciation/raw/double_us_n.mp3 b/aePronunciation/raw/double_us_n.mp3 new file mode 100755 index 0000000..84c93e5 Binary files /dev/null and b/aePronunciation/raw/double_us_n.mp3 differ diff --git a/aePronunciation/raw/double_us_ng.mp3 b/aePronunciation/raw/double_us_ng.mp3 new file mode 100755 index 0000000..29e00b4 Binary files /dev/null and b/aePronunciation/raw/double_us_ng.mp3 differ diff --git a/aePronunciation/raw/double_us_p.mp3 b/aePronunciation/raw/double_us_p.mp3 new file mode 100755 index 0000000..879dd8b Binary files /dev/null and b/aePronunciation/raw/double_us_p.mp3 differ diff --git a/aePronunciation/raw/double_us_s.mp3 b/aePronunciation/raw/double_us_s.mp3 new file mode 100755 index 0000000..174c92c Binary files /dev/null and b/aePronunciation/raw/double_us_s.mp3 differ diff --git a/aePronunciation/raw/double_us_sh.mp3 b/aePronunciation/raw/double_us_sh.mp3 new file mode 100755 index 0000000..9cc7916 Binary files /dev/null and b/aePronunciation/raw/double_us_sh.mp3 differ diff --git a/aePronunciation/raw/double_us_t.mp3 b/aePronunciation/raw/double_us_t.mp3 new file mode 100755 index 0000000..60b81fb Binary files /dev/null and b/aePronunciation/raw/double_us_t.mp3 differ diff --git a/aePronunciation/raw/double_us_th.mp3 b/aePronunciation/raw/double_us_th.mp3 new file mode 100755 index 0000000..8f8e9d7 Binary files /dev/null and b/aePronunciation/raw/double_us_th.mp3 differ diff --git a/aePronunciation/raw/double_us_thv.mp3 b/aePronunciation/raw/double_us_thv.mp3 new file mode 100755 index 0000000..e954b16 Binary files /dev/null and b/aePronunciation/raw/double_us_thv.mp3 differ diff --git a/aePronunciation/raw/double_us_v.mp3 b/aePronunciation/raw/double_us_v.mp3 new file mode 100755 index 0000000..75226ef Binary files /dev/null and b/aePronunciation/raw/double_us_v.mp3 differ diff --git a/aePronunciation/raw/double_us_z.mp3 b/aePronunciation/raw/double_us_z.mp3 new file mode 100755 index 0000000..6e2946c Binary files /dev/null and b/aePronunciation/raw/double_us_z.mp3 differ diff --git a/aePronunciation/raw/double_us_zh.mp3 b/aePronunciation/raw/double_us_zh.mp3 new file mode 100755 index 0000000..8848b41 Binary files /dev/null and b/aePronunciation/raw/double_us_zh.mp3 differ diff --git a/aePronunciation/raw/double_v_a.mp3 b/aePronunciation/raw/double_v_a.mp3 new file mode 100755 index 0000000..c88c182 Binary files /dev/null and b/aePronunciation/raw/double_v_a.mp3 differ diff --git a/aePronunciation/raw/double_v_ae.mp3 b/aePronunciation/raw/double_v_ae.mp3 new file mode 100755 index 0000000..4b0bd05 Binary files /dev/null and b/aePronunciation/raw/double_v_ae.mp3 differ diff --git a/aePronunciation/raw/double_v_ai.mp3 b/aePronunciation/raw/double_v_ai.mp3 new file mode 100755 index 0000000..f260e3b Binary files /dev/null and b/aePronunciation/raw/double_v_ai.mp3 differ diff --git a/aePronunciation/raw/double_v_ar.mp3 b/aePronunciation/raw/double_v_ar.mp3 new file mode 100755 index 0000000..8cfc809 Binary files /dev/null and b/aePronunciation/raw/double_v_ar.mp3 differ diff --git a/aePronunciation/raw/double_v_au.mp3 b/aePronunciation/raw/double_v_au.mp3 new file mode 100755 index 0000000..accd7d9 Binary files /dev/null and b/aePronunciation/raw/double_v_au.mp3 differ diff --git a/aePronunciation/raw/double_v_c.mp3 b/aePronunciation/raw/double_v_c.mp3 new file mode 100755 index 0000000..e1b4a03 Binary files /dev/null and b/aePronunciation/raw/double_v_c.mp3 differ diff --git a/aePronunciation/raw/double_v_e.mp3 b/aePronunciation/raw/double_v_e.mp3 new file mode 100755 index 0000000..bd70388 Binary files /dev/null and b/aePronunciation/raw/double_v_e.mp3 differ diff --git a/aePronunciation/raw/double_v_ei.mp3 b/aePronunciation/raw/double_v_ei.mp3 new file mode 100755 index 0000000..7a1f0d2 Binary files /dev/null and b/aePronunciation/raw/double_v_ei.mp3 differ diff --git a/aePronunciation/raw/double_v_er.mp3 b/aePronunciation/raw/double_v_er.mp3 new file mode 100755 index 0000000..c74c63b Binary files /dev/null and b/aePronunciation/raw/double_v_er.mp3 differ diff --git a/aePronunciation/raw/double_v_ers.mp3 b/aePronunciation/raw/double_v_ers.mp3 new file mode 100755 index 0000000..3a9d8bc Binary files /dev/null and b/aePronunciation/raw/double_v_ers.mp3 differ diff --git a/aePronunciation/raw/double_v_eru.mp3 b/aePronunciation/raw/double_v_eru.mp3 new file mode 100755 index 0000000..1e9661e Binary files /dev/null and b/aePronunciation/raw/double_v_eru.mp3 differ diff --git a/aePronunciation/raw/double_v_i.mp3 b/aePronunciation/raw/double_v_i.mp3 new file mode 100755 index 0000000..db656d5 Binary files /dev/null and b/aePronunciation/raw/double_v_i.mp3 differ diff --git a/aePronunciation/raw/double_v_ir.mp3 b/aePronunciation/raw/double_v_ir.mp3 new file mode 100755 index 0000000..2ebf177 Binary files /dev/null and b/aePronunciation/raw/double_v_ir.mp3 differ diff --git a/aePronunciation/raw/double_v_is.mp3 b/aePronunciation/raw/double_v_is.mp3 new file mode 100755 index 0000000..eb51fd4 Binary files /dev/null and b/aePronunciation/raw/double_v_is.mp3 differ diff --git a/aePronunciation/raw/double_v_oi.mp3 b/aePronunciation/raw/double_v_oi.mp3 new file mode 100755 index 0000000..9914132 Binary files /dev/null and b/aePronunciation/raw/double_v_oi.mp3 differ diff --git a/aePronunciation/raw/double_v_or.mp3 b/aePronunciation/raw/double_v_or.mp3 new file mode 100755 index 0000000..31baa31 Binary files /dev/null and b/aePronunciation/raw/double_v_or.mp3 differ diff --git a/aePronunciation/raw/double_v_ou.mp3 b/aePronunciation/raw/double_v_ou.mp3 new file mode 100755 index 0000000..6e24f64 Binary files /dev/null and b/aePronunciation/raw/double_v_ou.mp3 differ diff --git a/aePronunciation/raw/double_v_shwua.mp3 b/aePronunciation/raw/double_v_shwua.mp3 new file mode 100755 index 0000000..4e700d4 Binary files /dev/null and b/aePronunciation/raw/double_v_shwua.mp3 differ diff --git a/aePronunciation/raw/double_v_u.mp3 b/aePronunciation/raw/double_v_u.mp3 new file mode 100755 index 0000000..6275d8c Binary files /dev/null and b/aePronunciation/raw/double_v_u.mp3 differ diff --git a/aePronunciation/raw/double_v_us.mp3 b/aePronunciation/raw/double_v_us.mp3 new file mode 100755 index 0000000..c520084 Binary files /dev/null and b/aePronunciation/raw/double_v_us.mp3 differ diff --git a/aePronunciation/raw/double_v_vu.mp3 b/aePronunciation/raw/double_v_vu.mp3 new file mode 100755 index 0000000..bc5c3f8 Binary files /dev/null and b/aePronunciation/raw/double_v_vu.mp3 differ diff --git a/aePronunciation/raw/double_vu_b.mp3 b/aePronunciation/raw/double_vu_b.mp3 new file mode 100755 index 0000000..304c6d0 Binary files /dev/null and b/aePronunciation/raw/double_vu_b.mp3 differ diff --git a/aePronunciation/raw/double_vu_ch.mp3 b/aePronunciation/raw/double_vu_ch.mp3 new file mode 100755 index 0000000..89247e0 Binary files /dev/null and b/aePronunciation/raw/double_vu_ch.mp3 differ diff --git a/aePronunciation/raw/double_vu_d.mp3 b/aePronunciation/raw/double_vu_d.mp3 new file mode 100755 index 0000000..f1a57f5 Binary files /dev/null and b/aePronunciation/raw/double_vu_d.mp3 differ diff --git a/aePronunciation/raw/double_vu_dzh.mp3 b/aePronunciation/raw/double_vu_dzh.mp3 new file mode 100755 index 0000000..4a1782a Binary files /dev/null and b/aePronunciation/raw/double_vu_dzh.mp3 differ diff --git a/aePronunciation/raw/double_vu_f.mp3 b/aePronunciation/raw/double_vu_f.mp3 new file mode 100755 index 0000000..36c1a2d Binary files /dev/null and b/aePronunciation/raw/double_vu_f.mp3 differ diff --git a/aePronunciation/raw/double_vu_flap_shwua.mp3 b/aePronunciation/raw/double_vu_flap_shwua.mp3 new file mode 100755 index 0000000..447a315 Binary files /dev/null and b/aePronunciation/raw/double_vu_flap_shwua.mp3 differ diff --git a/aePronunciation/raw/double_vu_g.mp3 b/aePronunciation/raw/double_vu_g.mp3 new file mode 100755 index 0000000..cdb1f51 Binary files /dev/null and b/aePronunciation/raw/double_vu_g.mp3 differ diff --git a/aePronunciation/raw/double_vu_glottal.mp3 b/aePronunciation/raw/double_vu_glottal.mp3 new file mode 100755 index 0000000..d0df161 Binary files /dev/null and b/aePronunciation/raw/double_vu_glottal.mp3 differ diff --git a/aePronunciation/raw/double_vu_k.mp3 b/aePronunciation/raw/double_vu_k.mp3 new file mode 100755 index 0000000..ed31891 Binary files /dev/null and b/aePronunciation/raw/double_vu_k.mp3 differ diff --git a/aePronunciation/raw/double_vu_l.mp3 b/aePronunciation/raw/double_vu_l.mp3 new file mode 100755 index 0000000..e8b2a55 Binary files /dev/null and b/aePronunciation/raw/double_vu_l.mp3 differ diff --git a/aePronunciation/raw/double_vu_m.mp3 b/aePronunciation/raw/double_vu_m.mp3 new file mode 100755 index 0000000..13510e8 Binary files /dev/null and b/aePronunciation/raw/double_vu_m.mp3 differ diff --git a/aePronunciation/raw/double_vu_n.mp3 b/aePronunciation/raw/double_vu_n.mp3 new file mode 100755 index 0000000..e2f7b8e Binary files /dev/null and b/aePronunciation/raw/double_vu_n.mp3 differ diff --git a/aePronunciation/raw/double_vu_ng.mp3 b/aePronunciation/raw/double_vu_ng.mp3 new file mode 100755 index 0000000..3a317d5 Binary files /dev/null and b/aePronunciation/raw/double_vu_ng.mp3 differ diff --git a/aePronunciation/raw/double_vu_p.mp3 b/aePronunciation/raw/double_vu_p.mp3 new file mode 100755 index 0000000..db0c627 Binary files /dev/null and b/aePronunciation/raw/double_vu_p.mp3 differ diff --git a/aePronunciation/raw/double_vu_s.mp3 b/aePronunciation/raw/double_vu_s.mp3 new file mode 100755 index 0000000..0e247db Binary files /dev/null and b/aePronunciation/raw/double_vu_s.mp3 differ diff --git a/aePronunciation/raw/double_vu_sh.mp3 b/aePronunciation/raw/double_vu_sh.mp3 new file mode 100755 index 0000000..7359b67 Binary files /dev/null and b/aePronunciation/raw/double_vu_sh.mp3 differ diff --git a/aePronunciation/raw/double_vu_t.mp3 b/aePronunciation/raw/double_vu_t.mp3 new file mode 100755 index 0000000..dcc7db0 Binary files /dev/null and b/aePronunciation/raw/double_vu_t.mp3 differ diff --git a/aePronunciation/raw/double_vu_th.mp3 b/aePronunciation/raw/double_vu_th.mp3 new file mode 100755 index 0000000..9955a4a Binary files /dev/null and b/aePronunciation/raw/double_vu_th.mp3 differ diff --git a/aePronunciation/raw/double_vu_thv.mp3 b/aePronunciation/raw/double_vu_thv.mp3 new file mode 100755 index 0000000..4311dd0 Binary files /dev/null and b/aePronunciation/raw/double_vu_thv.mp3 differ diff --git a/aePronunciation/raw/double_vu_v.mp3 b/aePronunciation/raw/double_vu_v.mp3 new file mode 100755 index 0000000..6d6bda1 Binary files /dev/null and b/aePronunciation/raw/double_vu_v.mp3 differ diff --git a/aePronunciation/raw/double_vu_z.mp3 b/aePronunciation/raw/double_vu_z.mp3 new file mode 100755 index 0000000..cf5da57 Binary files /dev/null and b/aePronunciation/raw/double_vu_z.mp3 differ diff --git a/aePronunciation/raw/double_vu_zh.mp3 b/aePronunciation/raw/double_vu_zh.mp3 new file mode 100755 index 0000000..5dd2ac6 Binary files /dev/null and b/aePronunciation/raw/double_vu_zh.mp3 differ diff --git a/aePronunciation/raw/double_w_a.mp3 b/aePronunciation/raw/double_w_a.mp3 new file mode 100755 index 0000000..543c1c3 Binary files /dev/null and b/aePronunciation/raw/double_w_a.mp3 differ diff --git a/aePronunciation/raw/double_w_ae.mp3 b/aePronunciation/raw/double_w_ae.mp3 new file mode 100755 index 0000000..8f18193 Binary files /dev/null and b/aePronunciation/raw/double_w_ae.mp3 differ diff --git a/aePronunciation/raw/double_w_ai.mp3 b/aePronunciation/raw/double_w_ai.mp3 new file mode 100755 index 0000000..4d73215 Binary files /dev/null and b/aePronunciation/raw/double_w_ai.mp3 differ diff --git a/aePronunciation/raw/double_w_ar.mp3 b/aePronunciation/raw/double_w_ar.mp3 new file mode 100755 index 0000000..28864f6 Binary files /dev/null and b/aePronunciation/raw/double_w_ar.mp3 differ diff --git a/aePronunciation/raw/double_w_au.mp3 b/aePronunciation/raw/double_w_au.mp3 new file mode 100755 index 0000000..e2fcc89 Binary files /dev/null and b/aePronunciation/raw/double_w_au.mp3 differ diff --git a/aePronunciation/raw/double_w_c.mp3 b/aePronunciation/raw/double_w_c.mp3 new file mode 100755 index 0000000..64e1237 Binary files /dev/null and b/aePronunciation/raw/double_w_c.mp3 differ diff --git a/aePronunciation/raw/double_w_e.mp3 b/aePronunciation/raw/double_w_e.mp3 new file mode 100755 index 0000000..0ed603a Binary files /dev/null and b/aePronunciation/raw/double_w_e.mp3 differ diff --git a/aePronunciation/raw/double_w_ei.mp3 b/aePronunciation/raw/double_w_ei.mp3 new file mode 100755 index 0000000..81c5faa Binary files /dev/null and b/aePronunciation/raw/double_w_ei.mp3 differ diff --git a/aePronunciation/raw/double_w_er.mp3 b/aePronunciation/raw/double_w_er.mp3 new file mode 100755 index 0000000..7794042 Binary files /dev/null and b/aePronunciation/raw/double_w_er.mp3 differ diff --git a/aePronunciation/raw/double_w_ers.mp3 b/aePronunciation/raw/double_w_ers.mp3 new file mode 100755 index 0000000..d502ebd Binary files /dev/null and b/aePronunciation/raw/double_w_ers.mp3 differ diff --git a/aePronunciation/raw/double_w_eru.mp3 b/aePronunciation/raw/double_w_eru.mp3 new file mode 100755 index 0000000..40afa6e Binary files /dev/null and b/aePronunciation/raw/double_w_eru.mp3 differ diff --git a/aePronunciation/raw/double_w_i.mp3 b/aePronunciation/raw/double_w_i.mp3 new file mode 100755 index 0000000..7dadf91 Binary files /dev/null and b/aePronunciation/raw/double_w_i.mp3 differ diff --git a/aePronunciation/raw/double_w_ir.mp3 b/aePronunciation/raw/double_w_ir.mp3 new file mode 100755 index 0000000..fbbc9f2 Binary files /dev/null and b/aePronunciation/raw/double_w_ir.mp3 differ diff --git a/aePronunciation/raw/double_w_is.mp3 b/aePronunciation/raw/double_w_is.mp3 new file mode 100755 index 0000000..7b432fe Binary files /dev/null and b/aePronunciation/raw/double_w_is.mp3 differ diff --git a/aePronunciation/raw/double_w_oi.mp3 b/aePronunciation/raw/double_w_oi.mp3 new file mode 100755 index 0000000..8d2c512 Binary files /dev/null and b/aePronunciation/raw/double_w_oi.mp3 differ diff --git a/aePronunciation/raw/double_w_or.mp3 b/aePronunciation/raw/double_w_or.mp3 new file mode 100755 index 0000000..8e68cd4 Binary files /dev/null and b/aePronunciation/raw/double_w_or.mp3 differ diff --git a/aePronunciation/raw/double_w_ou.mp3 b/aePronunciation/raw/double_w_ou.mp3 new file mode 100755 index 0000000..94686df Binary files /dev/null and b/aePronunciation/raw/double_w_ou.mp3 differ diff --git a/aePronunciation/raw/double_w_shwua.mp3 b/aePronunciation/raw/double_w_shwua.mp3 new file mode 100755 index 0000000..67be3dd Binary files /dev/null and b/aePronunciation/raw/double_w_shwua.mp3 differ diff --git a/aePronunciation/raw/double_w_u.mp3 b/aePronunciation/raw/double_w_u.mp3 new file mode 100755 index 0000000..857830f Binary files /dev/null and b/aePronunciation/raw/double_w_u.mp3 differ diff --git a/aePronunciation/raw/double_w_us.mp3 b/aePronunciation/raw/double_w_us.mp3 new file mode 100755 index 0000000..a5ef4f9 Binary files /dev/null and b/aePronunciation/raw/double_w_us.mp3 differ diff --git a/aePronunciation/raw/double_w_vu.mp3 b/aePronunciation/raw/double_w_vu.mp3 new file mode 100755 index 0000000..8ab1a26 Binary files /dev/null and b/aePronunciation/raw/double_w_vu.mp3 differ diff --git a/aePronunciation/raw/double_z_a.mp3 b/aePronunciation/raw/double_z_a.mp3 new file mode 100755 index 0000000..e1a8f76 Binary files /dev/null and b/aePronunciation/raw/double_z_a.mp3 differ diff --git a/aePronunciation/raw/double_z_ae.mp3 b/aePronunciation/raw/double_z_ae.mp3 new file mode 100755 index 0000000..6c3c950 Binary files /dev/null and b/aePronunciation/raw/double_z_ae.mp3 differ diff --git a/aePronunciation/raw/double_z_ai.mp3 b/aePronunciation/raw/double_z_ai.mp3 new file mode 100755 index 0000000..692357b Binary files /dev/null and b/aePronunciation/raw/double_z_ai.mp3 differ diff --git a/aePronunciation/raw/double_z_ar.mp3 b/aePronunciation/raw/double_z_ar.mp3 new file mode 100755 index 0000000..5f9fd65 Binary files /dev/null and b/aePronunciation/raw/double_z_ar.mp3 differ diff --git a/aePronunciation/raw/double_z_au.mp3 b/aePronunciation/raw/double_z_au.mp3 new file mode 100755 index 0000000..07f35dd Binary files /dev/null and b/aePronunciation/raw/double_z_au.mp3 differ diff --git a/aePronunciation/raw/double_z_c.mp3 b/aePronunciation/raw/double_z_c.mp3 new file mode 100755 index 0000000..7b9b9b3 Binary files /dev/null and b/aePronunciation/raw/double_z_c.mp3 differ diff --git a/aePronunciation/raw/double_z_e.mp3 b/aePronunciation/raw/double_z_e.mp3 new file mode 100755 index 0000000..26d75ae Binary files /dev/null and b/aePronunciation/raw/double_z_e.mp3 differ diff --git a/aePronunciation/raw/double_z_ei.mp3 b/aePronunciation/raw/double_z_ei.mp3 new file mode 100755 index 0000000..3f75bd0 Binary files /dev/null and b/aePronunciation/raw/double_z_ei.mp3 differ diff --git a/aePronunciation/raw/double_z_er.mp3 b/aePronunciation/raw/double_z_er.mp3 new file mode 100755 index 0000000..fb65483 Binary files /dev/null and b/aePronunciation/raw/double_z_er.mp3 differ diff --git a/aePronunciation/raw/double_z_ers.mp3 b/aePronunciation/raw/double_z_ers.mp3 new file mode 100755 index 0000000..b59078c Binary files /dev/null and b/aePronunciation/raw/double_z_ers.mp3 differ diff --git a/aePronunciation/raw/double_z_eru.mp3 b/aePronunciation/raw/double_z_eru.mp3 new file mode 100755 index 0000000..2ec19c2 Binary files /dev/null and b/aePronunciation/raw/double_z_eru.mp3 differ diff --git a/aePronunciation/raw/double_z_i.mp3 b/aePronunciation/raw/double_z_i.mp3 new file mode 100755 index 0000000..20338a5 Binary files /dev/null and b/aePronunciation/raw/double_z_i.mp3 differ diff --git a/aePronunciation/raw/double_z_ir.mp3 b/aePronunciation/raw/double_z_ir.mp3 new file mode 100755 index 0000000..1ecd621 Binary files /dev/null and b/aePronunciation/raw/double_z_ir.mp3 differ diff --git a/aePronunciation/raw/double_z_is.mp3 b/aePronunciation/raw/double_z_is.mp3 new file mode 100755 index 0000000..4e2cfc3 Binary files /dev/null and b/aePronunciation/raw/double_z_is.mp3 differ diff --git a/aePronunciation/raw/double_z_oi.mp3 b/aePronunciation/raw/double_z_oi.mp3 new file mode 100755 index 0000000..cf31f2a Binary files /dev/null and b/aePronunciation/raw/double_z_oi.mp3 differ diff --git a/aePronunciation/raw/double_z_or.mp3 b/aePronunciation/raw/double_z_or.mp3 new file mode 100755 index 0000000..ea74ba2 Binary files /dev/null and b/aePronunciation/raw/double_z_or.mp3 differ diff --git a/aePronunciation/raw/double_z_ou.mp3 b/aePronunciation/raw/double_z_ou.mp3 new file mode 100755 index 0000000..5d3a4f6 Binary files /dev/null and b/aePronunciation/raw/double_z_ou.mp3 differ diff --git a/aePronunciation/raw/double_z_shwua.mp3 b/aePronunciation/raw/double_z_shwua.mp3 new file mode 100755 index 0000000..ee0e411 Binary files /dev/null and b/aePronunciation/raw/double_z_shwua.mp3 differ diff --git a/aePronunciation/raw/double_z_u.mp3 b/aePronunciation/raw/double_z_u.mp3 new file mode 100755 index 0000000..dba8705 Binary files /dev/null and b/aePronunciation/raw/double_z_u.mp3 differ diff --git a/aePronunciation/raw/double_z_us.mp3 b/aePronunciation/raw/double_z_us.mp3 new file mode 100755 index 0000000..e911882 Binary files /dev/null and b/aePronunciation/raw/double_z_us.mp3 differ diff --git a/aePronunciation/raw/double_z_vu.mp3 b/aePronunciation/raw/double_z_vu.mp3 new file mode 100755 index 0000000..951fc4b Binary files /dev/null and b/aePronunciation/raw/double_z_vu.mp3 differ diff --git a/aePronunciation/raw/double_zh_a.mp3 b/aePronunciation/raw/double_zh_a.mp3 new file mode 100755 index 0000000..ecec2b9 Binary files /dev/null and b/aePronunciation/raw/double_zh_a.mp3 differ diff --git a/aePronunciation/raw/double_zh_ae.mp3 b/aePronunciation/raw/double_zh_ae.mp3 new file mode 100755 index 0000000..6de676a Binary files /dev/null and b/aePronunciation/raw/double_zh_ae.mp3 differ diff --git a/aePronunciation/raw/double_zh_ai.mp3 b/aePronunciation/raw/double_zh_ai.mp3 new file mode 100755 index 0000000..19128b8 Binary files /dev/null and b/aePronunciation/raw/double_zh_ai.mp3 differ diff --git a/aePronunciation/raw/double_zh_ar.mp3 b/aePronunciation/raw/double_zh_ar.mp3 new file mode 100755 index 0000000..94dd4e2 Binary files /dev/null and b/aePronunciation/raw/double_zh_ar.mp3 differ diff --git a/aePronunciation/raw/double_zh_au.mp3 b/aePronunciation/raw/double_zh_au.mp3 new file mode 100755 index 0000000..0576ac3 Binary files /dev/null and b/aePronunciation/raw/double_zh_au.mp3 differ diff --git a/aePronunciation/raw/double_zh_c.mp3 b/aePronunciation/raw/double_zh_c.mp3 new file mode 100755 index 0000000..d007d4a Binary files /dev/null and b/aePronunciation/raw/double_zh_c.mp3 differ diff --git a/aePronunciation/raw/double_zh_e.mp3 b/aePronunciation/raw/double_zh_e.mp3 new file mode 100755 index 0000000..f0c59b6 Binary files /dev/null and b/aePronunciation/raw/double_zh_e.mp3 differ diff --git a/aePronunciation/raw/double_zh_ei.mp3 b/aePronunciation/raw/double_zh_ei.mp3 new file mode 100755 index 0000000..9df22d4 Binary files /dev/null and b/aePronunciation/raw/double_zh_ei.mp3 differ diff --git a/aePronunciation/raw/double_zh_er.mp3 b/aePronunciation/raw/double_zh_er.mp3 new file mode 100755 index 0000000..2ec06a4 Binary files /dev/null and b/aePronunciation/raw/double_zh_er.mp3 differ diff --git a/aePronunciation/raw/double_zh_ers.mp3 b/aePronunciation/raw/double_zh_ers.mp3 new file mode 100755 index 0000000..1543cc9 Binary files /dev/null and b/aePronunciation/raw/double_zh_ers.mp3 differ diff --git a/aePronunciation/raw/double_zh_eru.mp3 b/aePronunciation/raw/double_zh_eru.mp3 new file mode 100755 index 0000000..3b378fc Binary files /dev/null and b/aePronunciation/raw/double_zh_eru.mp3 differ diff --git a/aePronunciation/raw/double_zh_i.mp3 b/aePronunciation/raw/double_zh_i.mp3 new file mode 100755 index 0000000..6deab0a Binary files /dev/null and b/aePronunciation/raw/double_zh_i.mp3 differ diff --git a/aePronunciation/raw/double_zh_ir.mp3 b/aePronunciation/raw/double_zh_ir.mp3 new file mode 100755 index 0000000..5a02dd1 Binary files /dev/null and b/aePronunciation/raw/double_zh_ir.mp3 differ diff --git a/aePronunciation/raw/double_zh_is.mp3 b/aePronunciation/raw/double_zh_is.mp3 new file mode 100755 index 0000000..14411b1 Binary files /dev/null and b/aePronunciation/raw/double_zh_is.mp3 differ diff --git a/aePronunciation/raw/double_zh_oi.mp3 b/aePronunciation/raw/double_zh_oi.mp3 new file mode 100755 index 0000000..61424b8 Binary files /dev/null and b/aePronunciation/raw/double_zh_oi.mp3 differ diff --git a/aePronunciation/raw/double_zh_or.mp3 b/aePronunciation/raw/double_zh_or.mp3 new file mode 100755 index 0000000..04efd22 Binary files /dev/null and b/aePronunciation/raw/double_zh_or.mp3 differ diff --git a/aePronunciation/raw/double_zh_ou.mp3 b/aePronunciation/raw/double_zh_ou.mp3 new file mode 100755 index 0000000..4bb3553 Binary files /dev/null and b/aePronunciation/raw/double_zh_ou.mp3 differ diff --git a/aePronunciation/raw/double_zh_shwua.mp3 b/aePronunciation/raw/double_zh_shwua.mp3 new file mode 100755 index 0000000..1f07363 Binary files /dev/null and b/aePronunciation/raw/double_zh_shwua.mp3 differ diff --git a/aePronunciation/raw/double_zh_u.mp3 b/aePronunciation/raw/double_zh_u.mp3 new file mode 100755 index 0000000..1292874 Binary files /dev/null and b/aePronunciation/raw/double_zh_u.mp3 differ diff --git a/aePronunciation/raw/double_zh_us.mp3 b/aePronunciation/raw/double_zh_us.mp3 new file mode 100755 index 0000000..2c31869 Binary files /dev/null and b/aePronunciation/raw/double_zh_us.mp3 differ diff --git a/aePronunciation/raw/double_zh_vu.mp3 b/aePronunciation/raw/double_zh_vu.mp3 new file mode 100755 index 0000000..47b30e5 Binary files /dev/null and b/aePronunciation/raw/double_zh_vu.mp3 differ diff --git a/aePronunciation/raw/each.mp3 b/aePronunciation/raw/each.mp3 deleted file mode 100755 index 14113a6..0000000 Binary files a/aePronunciation/raw/each.mp3 and /dev/null differ diff --git a/aePronunciation/raw/eachof.mp3 b/aePronunciation/raw/eachof.mp3 deleted file mode 100755 index 4a19f8f..0000000 Binary files a/aePronunciation/raw/eachof.mp3 and /dev/null differ diff --git a/aePronunciation/raw/ear.mp3 b/aePronunciation/raw/ear.mp3 deleted file mode 100755 index 84c7ce1..0000000 Binary files a/aePronunciation/raw/ear.mp3 and /dev/null differ diff --git a/aePronunciation/raw/earth.mp3 b/aePronunciation/raw/earth.mp3 deleted file mode 100755 index 61e1544..0000000 Binary files a/aePronunciation/raw/earth.mp3 and /dev/null differ diff --git a/aePronunciation/raw/edge.mp3 b/aePronunciation/raw/edge.mp3 deleted file mode 100755 index 2496f41..0000000 Binary files a/aePronunciation/raw/edge.mp3 and /dev/null differ diff --git a/aePronunciation/raw/every.mp3 b/aePronunciation/raw/every.mp3 deleted file mode 100755 index 964f633..0000000 Binary files a/aePronunciation/raw/every.mp3 and /dev/null differ diff --git a/aePronunciation/raw/father.mp3 b/aePronunciation/raw/father.mp3 deleted file mode 100755 index cc3a6a4..0000000 Binary files a/aePronunciation/raw/father.mp3 and /dev/null differ diff --git a/aePronunciation/raw/first.mp3 b/aePronunciation/raw/first.mp3 deleted file mode 100755 index 3138068..0000000 Binary files a/aePronunciation/raw/first.mp3 and /dev/null differ diff --git a/aePronunciation/raw/fly.mp3 b/aePronunciation/raw/fly.mp3 deleted file mode 100755 index 639bd92..0000000 Binary files a/aePronunciation/raw/fly.mp3 and /dev/null differ diff --git a/aePronunciation/raw/gift.mp3 b/aePronunciation/raw/gift.mp3 deleted file mode 100755 index ec89df0..0000000 Binary files a/aePronunciation/raw/gift.mp3 and /dev/null differ diff --git a/aePronunciation/raw/good.mp3 b/aePronunciation/raw/good.mp3 deleted file mode 100755 index 934a8cf..0000000 Binary files a/aePronunciation/raw/good.mp3 and /dev/null differ diff --git a/aePronunciation/raw/have.mp3 b/aePronunciation/raw/have.mp3 deleted file mode 100755 index ef7537e..0000000 Binary files a/aePronunciation/raw/have.mp3 and /dev/null differ diff --git a/aePronunciation/raw/her.mp3 b/aePronunciation/raw/her.mp3 deleted file mode 100755 index 0ebe03c..0000000 Binary files a/aePronunciation/raw/her.mp3 and /dev/null differ diff --git a/aePronunciation/raw/here.mp3 b/aePronunciation/raw/here.mp3 deleted file mode 100755 index 2b200b9..0000000 Binary files a/aePronunciation/raw/here.mp3 and /dev/null differ diff --git a/aePronunciation/raw/him.mp3 b/aePronunciation/raw/him.mp3 deleted file mode 100755 index b7455cb..0000000 Binary files a/aePronunciation/raw/him.mp3 and /dev/null differ diff --git a/aePronunciation/raw/im.mp3 b/aePronunciation/raw/im.mp3 deleted file mode 100755 index 697d47d..0000000 Binary files a/aePronunciation/raw/im.mp3 and /dev/null differ diff --git a/aePronunciation/raw/it.mp3 b/aePronunciation/raw/it.mp3 deleted file mode 100755 index 384e1cf..0000000 Binary files a/aePronunciation/raw/it.mp3 and /dev/null differ diff --git a/aePronunciation/raw/jonathan.mp3 b/aePronunciation/raw/jonathan.mp3 deleted file mode 100755 index fe16d50..0000000 Binary files a/aePronunciation/raw/jonathan.mp3 and /dev/null differ diff --git a/aePronunciation/raw/jump.mp3 b/aePronunciation/raw/jump.mp3 deleted file mode 100755 index b889f38..0000000 Binary files a/aePronunciation/raw/jump.mp3 and /dev/null differ diff --git a/aePronunciation/raw/little.mp3 b/aePronunciation/raw/little.mp3 deleted file mode 100755 index 2e6b162..0000000 Binary files a/aePronunciation/raw/little.mp3 and /dev/null differ diff --git a/aePronunciation/raw/loud.mp3 b/aePronunciation/raw/loud.mp3 deleted file mode 100755 index 1e84caf..0000000 Binary files a/aePronunciation/raw/loud.mp3 and /dev/null differ diff --git a/aePronunciation/raw/low.mp3 b/aePronunciation/raw/low.mp3 deleted file mode 100755 index 2a69fe7..0000000 Binary files a/aePronunciation/raw/low.mp3 and /dev/null differ diff --git a/aePronunciation/raw/ma.mp3 b/aePronunciation/raw/ma.mp3 deleted file mode 100755 index 6e710c6..0000000 Binary files a/aePronunciation/raw/ma.mp3 and /dev/null differ diff --git a/aePronunciation/raw/may.mp3 b/aePronunciation/raw/may.mp3 deleted file mode 100755 index 3fdaf2d..0000000 Binary files a/aePronunciation/raw/may.mp3 and /dev/null differ diff --git a/aePronunciation/raw/me.mp3 b/aePronunciation/raw/me.mp3 deleted file mode 100755 index e88ba6e..0000000 Binary files a/aePronunciation/raw/me.mp3 and /dev/null differ diff --git a/aePronunciation/raw/mother.mp3 b/aePronunciation/raw/mother.mp3 deleted file mode 100755 index 7d48896..0000000 Binary files a/aePronunciation/raw/mother.mp3 and /dev/null differ diff --git a/aePronunciation/raw/north.mp3 b/aePronunciation/raw/north.mp3 deleted file mode 100755 index c9fac92..0000000 Binary files a/aePronunciation/raw/north.mp3 and /dev/null differ diff --git a/aePronunciation/raw/oars.mp3 b/aePronunciation/raw/oars.mp3 deleted file mode 100755 index 2fa7d65..0000000 Binary files a/aePronunciation/raw/oars.mp3 and /dev/null differ diff --git a/aePronunciation/raw/oath.mp3 b/aePronunciation/raw/oath.mp3 deleted file mode 100755 index d8bdeea..0000000 Binary files a/aePronunciation/raw/oath.mp3 and /dev/null differ diff --git a/aePronunciation/raw/oil.mp3 b/aePronunciation/raw/oil.mp3 deleted file mode 100755 index 7f4de60..0000000 Binary files a/aePronunciation/raw/oil.mp3 and /dev/null differ diff --git a/aePronunciation/raw/on.mp3 b/aePronunciation/raw/on.mp3 deleted file mode 100755 index 7d6d61b..0000000 Binary files a/aePronunciation/raw/on.mp3 and /dev/null differ diff --git a/aePronunciation/raw/ooze.mp3 b/aePronunciation/raw/ooze.mp3 deleted file mode 100755 index beb81d0..0000000 Binary files a/aePronunciation/raw/ooze.mp3 and /dev/null differ diff --git a/aePronunciation/raw/ought.mp3 b/aePronunciation/raw/ought.mp3 deleted file mode 100755 index 57647fe..0000000 Binary files a/aePronunciation/raw/ought.mp3 and /dev/null differ diff --git a/aePronunciation/raw/out.mp3 b/aePronunciation/raw/out.mp3 deleted file mode 100755 index c866d9f..0000000 Binary files a/aePronunciation/raw/out.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs01_01.mp3 b/aePronunciation/raw/pairs01_01.mp3 deleted file mode 100755 index 0c81b2a..0000000 Binary files a/aePronunciation/raw/pairs01_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs01_02.mp3 b/aePronunciation/raw/pairs01_02.mp3 deleted file mode 100755 index 00592ad..0000000 Binary files a/aePronunciation/raw/pairs01_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs01_03.mp3 b/aePronunciation/raw/pairs01_03.mp3 deleted file mode 100755 index 0fcbf1c..0000000 Binary files a/aePronunciation/raw/pairs01_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs01_04.mp3 b/aePronunciation/raw/pairs01_04.mp3 deleted file mode 100755 index 1c6081b..0000000 Binary files a/aePronunciation/raw/pairs01_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs01_05.mp3 b/aePronunciation/raw/pairs01_05.mp3 deleted file mode 100755 index 057f75b..0000000 Binary files a/aePronunciation/raw/pairs01_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs01_06.mp3 b/aePronunciation/raw/pairs01_06.mp3 deleted file mode 100755 index 3e4b4a7..0000000 Binary files a/aePronunciation/raw/pairs01_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs01_07.mp3 b/aePronunciation/raw/pairs01_07.mp3 deleted file mode 100755 index b8daae1..0000000 Binary files a/aePronunciation/raw/pairs01_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs01_08.mp3 b/aePronunciation/raw/pairs01_08.mp3 deleted file mode 100755 index f327de1..0000000 Binary files a/aePronunciation/raw/pairs01_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs01_09.mp3 b/aePronunciation/raw/pairs01_09.mp3 deleted file mode 100755 index e478c79..0000000 Binary files a/aePronunciation/raw/pairs01_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs01_10.mp3 b/aePronunciation/raw/pairs01_10.mp3 deleted file mode 100755 index 515f4f8..0000000 Binary files a/aePronunciation/raw/pairs01_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs01_11.mp3 b/aePronunciation/raw/pairs01_11.mp3 deleted file mode 100755 index 2a05b8a..0000000 Binary files a/aePronunciation/raw/pairs01_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs01_12.mp3 b/aePronunciation/raw/pairs01_12.mp3 deleted file mode 100755 index 9b1399e..0000000 Binary files a/aePronunciation/raw/pairs01_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs01_13.mp3 b/aePronunciation/raw/pairs01_13.mp3 deleted file mode 100755 index dd36bab..0000000 Binary files a/aePronunciation/raw/pairs01_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs01_14.mp3 b/aePronunciation/raw/pairs01_14.mp3 deleted file mode 100755 index fce5436..0000000 Binary files a/aePronunciation/raw/pairs01_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs01_15.mp3 b/aePronunciation/raw/pairs01_15.mp3 deleted file mode 100755 index 4fa0639..0000000 Binary files a/aePronunciation/raw/pairs01_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs01_16.mp3 b/aePronunciation/raw/pairs01_16.mp3 deleted file mode 100755 index 8bbb421..0000000 Binary files a/aePronunciation/raw/pairs01_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs01_17.mp3 b/aePronunciation/raw/pairs01_17.mp3 deleted file mode 100755 index 134ec12..0000000 Binary files a/aePronunciation/raw/pairs01_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs01_18.mp3 b/aePronunciation/raw/pairs01_18.mp3 deleted file mode 100755 index 3df3239..0000000 Binary files a/aePronunciation/raw/pairs01_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs01_19.mp3 b/aePronunciation/raw/pairs01_19.mp3 deleted file mode 100755 index 014ecce..0000000 Binary files a/aePronunciation/raw/pairs01_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs02_01.mp3 b/aePronunciation/raw/pairs02_01.mp3 deleted file mode 100755 index 0d2fb40..0000000 Binary files a/aePronunciation/raw/pairs02_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs02_02.mp3 b/aePronunciation/raw/pairs02_02.mp3 deleted file mode 100755 index 34f5823..0000000 Binary files a/aePronunciation/raw/pairs02_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs02_03.mp3 b/aePronunciation/raw/pairs02_03.mp3 deleted file mode 100755 index 812382a..0000000 Binary files a/aePronunciation/raw/pairs02_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs02_04.mp3 b/aePronunciation/raw/pairs02_04.mp3 deleted file mode 100755 index f171301..0000000 Binary files a/aePronunciation/raw/pairs02_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs02_05.mp3 b/aePronunciation/raw/pairs02_05.mp3 deleted file mode 100755 index d828485..0000000 Binary files a/aePronunciation/raw/pairs02_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs02_06.mp3 b/aePronunciation/raw/pairs02_06.mp3 deleted file mode 100755 index 4d2cc7d..0000000 Binary files a/aePronunciation/raw/pairs02_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs02_07.mp3 b/aePronunciation/raw/pairs02_07.mp3 deleted file mode 100755 index 38dbb7d..0000000 Binary files a/aePronunciation/raw/pairs02_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs02_08.mp3 b/aePronunciation/raw/pairs02_08.mp3 deleted file mode 100755 index 651ec63..0000000 Binary files a/aePronunciation/raw/pairs02_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs02_09.mp3 b/aePronunciation/raw/pairs02_09.mp3 deleted file mode 100755 index 06881e9..0000000 Binary files a/aePronunciation/raw/pairs02_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs02_10.mp3 b/aePronunciation/raw/pairs02_10.mp3 deleted file mode 100755 index 425097a..0000000 Binary files a/aePronunciation/raw/pairs02_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs02_11.mp3 b/aePronunciation/raw/pairs02_11.mp3 deleted file mode 100755 index f9a61a5..0000000 Binary files a/aePronunciation/raw/pairs02_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs02_12.mp3 b/aePronunciation/raw/pairs02_12.mp3 deleted file mode 100755 index f898701..0000000 Binary files a/aePronunciation/raw/pairs02_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs02_13.mp3 b/aePronunciation/raw/pairs02_13.mp3 deleted file mode 100755 index 8106aea..0000000 Binary files a/aePronunciation/raw/pairs02_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs02_14.mp3 b/aePronunciation/raw/pairs02_14.mp3 deleted file mode 100755 index 4d43bb0..0000000 Binary files a/aePronunciation/raw/pairs02_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs02_15.mp3 b/aePronunciation/raw/pairs02_15.mp3 deleted file mode 100755 index 66f365b..0000000 Binary files a/aePronunciation/raw/pairs02_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs02_16.mp3 b/aePronunciation/raw/pairs02_16.mp3 deleted file mode 100755 index d848297..0000000 Binary files a/aePronunciation/raw/pairs02_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs02_17.mp3 b/aePronunciation/raw/pairs02_17.mp3 deleted file mode 100755 index 102482d..0000000 Binary files a/aePronunciation/raw/pairs02_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs02_18.mp3 b/aePronunciation/raw/pairs02_18.mp3 deleted file mode 100755 index e1baad8..0000000 Binary files a/aePronunciation/raw/pairs02_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs02_19.mp3 b/aePronunciation/raw/pairs02_19.mp3 deleted file mode 100755 index f93d80f..0000000 Binary files a/aePronunciation/raw/pairs02_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs03_01.mp3 b/aePronunciation/raw/pairs03_01.mp3 deleted file mode 100755 index 3d12cd3..0000000 Binary files a/aePronunciation/raw/pairs03_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs03_02.mp3 b/aePronunciation/raw/pairs03_02.mp3 deleted file mode 100755 index 39aeb1d..0000000 Binary files a/aePronunciation/raw/pairs03_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs03_03.mp3 b/aePronunciation/raw/pairs03_03.mp3 deleted file mode 100755 index 85a9a8a..0000000 Binary files a/aePronunciation/raw/pairs03_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs03_04.mp3 b/aePronunciation/raw/pairs03_04.mp3 deleted file mode 100755 index 6712b35..0000000 Binary files a/aePronunciation/raw/pairs03_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs03_05.mp3 b/aePronunciation/raw/pairs03_05.mp3 deleted file mode 100755 index a6ef924..0000000 Binary files a/aePronunciation/raw/pairs03_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs03_06.mp3 b/aePronunciation/raw/pairs03_06.mp3 deleted file mode 100755 index a98cb8c..0000000 Binary files a/aePronunciation/raw/pairs03_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs03_07.mp3 b/aePronunciation/raw/pairs03_07.mp3 deleted file mode 100755 index 0664220..0000000 Binary files a/aePronunciation/raw/pairs03_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs03_08.mp3 b/aePronunciation/raw/pairs03_08.mp3 deleted file mode 100755 index ddac7ce..0000000 Binary files a/aePronunciation/raw/pairs03_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs03_09.mp3 b/aePronunciation/raw/pairs03_09.mp3 deleted file mode 100755 index 3a73b3e..0000000 Binary files a/aePronunciation/raw/pairs03_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs03_10.mp3 b/aePronunciation/raw/pairs03_10.mp3 deleted file mode 100755 index 87deeef..0000000 Binary files a/aePronunciation/raw/pairs03_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs03_11.mp3 b/aePronunciation/raw/pairs03_11.mp3 deleted file mode 100755 index f8a543c..0000000 Binary files a/aePronunciation/raw/pairs03_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs03_12.mp3 b/aePronunciation/raw/pairs03_12.mp3 deleted file mode 100755 index dd1dc4a..0000000 Binary files a/aePronunciation/raw/pairs03_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs03_13.mp3 b/aePronunciation/raw/pairs03_13.mp3 deleted file mode 100755 index 641a678..0000000 Binary files a/aePronunciation/raw/pairs03_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs03_14.mp3 b/aePronunciation/raw/pairs03_14.mp3 deleted file mode 100755 index 49e5f70..0000000 Binary files a/aePronunciation/raw/pairs03_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs03_15.mp3 b/aePronunciation/raw/pairs03_15.mp3 deleted file mode 100755 index ff9007c..0000000 Binary files a/aePronunciation/raw/pairs03_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs03_16.mp3 b/aePronunciation/raw/pairs03_16.mp3 deleted file mode 100755 index 4c68569..0000000 Binary files a/aePronunciation/raw/pairs03_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs03_17.mp3 b/aePronunciation/raw/pairs03_17.mp3 deleted file mode 100755 index 3684813..0000000 Binary files a/aePronunciation/raw/pairs03_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs03_18.mp3 b/aePronunciation/raw/pairs03_18.mp3 deleted file mode 100755 index 1f43f3e..0000000 Binary files a/aePronunciation/raw/pairs03_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs03_19.mp3 b/aePronunciation/raw/pairs03_19.mp3 deleted file mode 100755 index 006de74..0000000 Binary files a/aePronunciation/raw/pairs03_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs04_01.mp3 b/aePronunciation/raw/pairs04_01.mp3 deleted file mode 100755 index 7cf7a7b..0000000 Binary files a/aePronunciation/raw/pairs04_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs04_02.mp3 b/aePronunciation/raw/pairs04_02.mp3 deleted file mode 100755 index 684ad80..0000000 Binary files a/aePronunciation/raw/pairs04_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs04_03.mp3 b/aePronunciation/raw/pairs04_03.mp3 deleted file mode 100755 index 9dcd090..0000000 Binary files a/aePronunciation/raw/pairs04_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs04_04.mp3 b/aePronunciation/raw/pairs04_04.mp3 deleted file mode 100755 index e54cdd5..0000000 Binary files a/aePronunciation/raw/pairs04_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs04_05.mp3 b/aePronunciation/raw/pairs04_05.mp3 deleted file mode 100755 index 54bcb8e..0000000 Binary files a/aePronunciation/raw/pairs04_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs04_06.mp3 b/aePronunciation/raw/pairs04_06.mp3 deleted file mode 100755 index 90523bc..0000000 Binary files a/aePronunciation/raw/pairs04_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs04_07.mp3 b/aePronunciation/raw/pairs04_07.mp3 deleted file mode 100755 index 6673de3..0000000 Binary files a/aePronunciation/raw/pairs04_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs04_08.mp3 b/aePronunciation/raw/pairs04_08.mp3 deleted file mode 100755 index 33086e4..0000000 Binary files a/aePronunciation/raw/pairs04_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs04_09.mp3 b/aePronunciation/raw/pairs04_09.mp3 deleted file mode 100755 index b9bee3a..0000000 Binary files a/aePronunciation/raw/pairs04_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs04_10.mp3 b/aePronunciation/raw/pairs04_10.mp3 deleted file mode 100755 index c97af0d..0000000 Binary files a/aePronunciation/raw/pairs04_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs04_11.mp3 b/aePronunciation/raw/pairs04_11.mp3 deleted file mode 100755 index 7fafc96..0000000 Binary files a/aePronunciation/raw/pairs04_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs04_12.mp3 b/aePronunciation/raw/pairs04_12.mp3 deleted file mode 100755 index 587b51a..0000000 Binary files a/aePronunciation/raw/pairs04_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs04_13.mp3 b/aePronunciation/raw/pairs04_13.mp3 deleted file mode 100755 index 896b028..0000000 Binary files a/aePronunciation/raw/pairs04_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs04_14.mp3 b/aePronunciation/raw/pairs04_14.mp3 deleted file mode 100755 index d828166..0000000 Binary files a/aePronunciation/raw/pairs04_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs04_15.mp3 b/aePronunciation/raw/pairs04_15.mp3 deleted file mode 100755 index 7fd2a69..0000000 Binary files a/aePronunciation/raw/pairs04_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs04_16.mp3 b/aePronunciation/raw/pairs04_16.mp3 deleted file mode 100755 index 0e1569e..0000000 Binary files a/aePronunciation/raw/pairs04_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs04_17.mp3 b/aePronunciation/raw/pairs04_17.mp3 deleted file mode 100755 index fea5b15..0000000 Binary files a/aePronunciation/raw/pairs04_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs04_18.mp3 b/aePronunciation/raw/pairs04_18.mp3 deleted file mode 100755 index f472eac..0000000 Binary files a/aePronunciation/raw/pairs04_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs04_19.mp3 b/aePronunciation/raw/pairs04_19.mp3 deleted file mode 100755 index 7501a87..0000000 Binary files a/aePronunciation/raw/pairs04_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs05_01.mp3 b/aePronunciation/raw/pairs05_01.mp3 deleted file mode 100755 index 5e7c6d2..0000000 Binary files a/aePronunciation/raw/pairs05_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs05_02.mp3 b/aePronunciation/raw/pairs05_02.mp3 deleted file mode 100755 index 4603103..0000000 Binary files a/aePronunciation/raw/pairs05_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs05_03.mp3 b/aePronunciation/raw/pairs05_03.mp3 deleted file mode 100755 index d7425b0..0000000 Binary files a/aePronunciation/raw/pairs05_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs05_04.mp3 b/aePronunciation/raw/pairs05_04.mp3 deleted file mode 100755 index a0bd2b9..0000000 Binary files a/aePronunciation/raw/pairs05_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs05_05.mp3 b/aePronunciation/raw/pairs05_05.mp3 deleted file mode 100755 index d9853d1..0000000 Binary files a/aePronunciation/raw/pairs05_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs05_06.mp3 b/aePronunciation/raw/pairs05_06.mp3 deleted file mode 100755 index 7ccc3e0..0000000 Binary files a/aePronunciation/raw/pairs05_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs05_07.mp3 b/aePronunciation/raw/pairs05_07.mp3 deleted file mode 100755 index 3b6ab9d..0000000 Binary files a/aePronunciation/raw/pairs05_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs05_08.mp3 b/aePronunciation/raw/pairs05_08.mp3 deleted file mode 100755 index 07d30a8..0000000 Binary files a/aePronunciation/raw/pairs05_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs05_09.mp3 b/aePronunciation/raw/pairs05_09.mp3 deleted file mode 100755 index 7d94eb0..0000000 Binary files a/aePronunciation/raw/pairs05_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs05_10.mp3 b/aePronunciation/raw/pairs05_10.mp3 deleted file mode 100755 index 9a8272a..0000000 Binary files a/aePronunciation/raw/pairs05_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs05_11.mp3 b/aePronunciation/raw/pairs05_11.mp3 deleted file mode 100755 index 1e970c4..0000000 Binary files a/aePronunciation/raw/pairs05_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs05_12.mp3 b/aePronunciation/raw/pairs05_12.mp3 deleted file mode 100755 index d196776..0000000 Binary files a/aePronunciation/raw/pairs05_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs05_13.mp3 b/aePronunciation/raw/pairs05_13.mp3 deleted file mode 100755 index bab0416..0000000 Binary files a/aePronunciation/raw/pairs05_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs05_14.mp3 b/aePronunciation/raw/pairs05_14.mp3 deleted file mode 100755 index 30f060a..0000000 Binary files a/aePronunciation/raw/pairs05_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs05_15.mp3 b/aePronunciation/raw/pairs05_15.mp3 deleted file mode 100755 index bd9af89..0000000 Binary files a/aePronunciation/raw/pairs05_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs05_16.mp3 b/aePronunciation/raw/pairs05_16.mp3 deleted file mode 100755 index 7f7c805..0000000 Binary files a/aePronunciation/raw/pairs05_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs05_17.mp3 b/aePronunciation/raw/pairs05_17.mp3 deleted file mode 100755 index 370796a..0000000 Binary files a/aePronunciation/raw/pairs05_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs05_18.mp3 b/aePronunciation/raw/pairs05_18.mp3 deleted file mode 100755 index b21cbda..0000000 Binary files a/aePronunciation/raw/pairs05_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs05_19.mp3 b/aePronunciation/raw/pairs05_19.mp3 deleted file mode 100755 index 989049b..0000000 Binary files a/aePronunciation/raw/pairs05_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs06_01.mp3 b/aePronunciation/raw/pairs06_01.mp3 deleted file mode 100755 index fc54f17..0000000 Binary files a/aePronunciation/raw/pairs06_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs06_02.mp3 b/aePronunciation/raw/pairs06_02.mp3 deleted file mode 100755 index de3063d..0000000 Binary files a/aePronunciation/raw/pairs06_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs06_03.mp3 b/aePronunciation/raw/pairs06_03.mp3 deleted file mode 100755 index b2387ef..0000000 Binary files a/aePronunciation/raw/pairs06_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs06_04.mp3 b/aePronunciation/raw/pairs06_04.mp3 deleted file mode 100755 index 349bf67..0000000 Binary files a/aePronunciation/raw/pairs06_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs06_05.mp3 b/aePronunciation/raw/pairs06_05.mp3 deleted file mode 100755 index 5758cc2..0000000 Binary files a/aePronunciation/raw/pairs06_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs06_06.mp3 b/aePronunciation/raw/pairs06_06.mp3 deleted file mode 100755 index fb05324..0000000 Binary files a/aePronunciation/raw/pairs06_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs06_07.mp3 b/aePronunciation/raw/pairs06_07.mp3 deleted file mode 100755 index 84ca2a3..0000000 Binary files a/aePronunciation/raw/pairs06_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs06_08.mp3 b/aePronunciation/raw/pairs06_08.mp3 deleted file mode 100755 index 7023b5c..0000000 Binary files a/aePronunciation/raw/pairs06_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs06_09.mp3 b/aePronunciation/raw/pairs06_09.mp3 deleted file mode 100755 index 0a438be..0000000 Binary files a/aePronunciation/raw/pairs06_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs06_10.mp3 b/aePronunciation/raw/pairs06_10.mp3 deleted file mode 100755 index b6941fd..0000000 Binary files a/aePronunciation/raw/pairs06_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs06_11.mp3 b/aePronunciation/raw/pairs06_11.mp3 deleted file mode 100755 index f0d1955..0000000 Binary files a/aePronunciation/raw/pairs06_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs06_12.mp3 b/aePronunciation/raw/pairs06_12.mp3 deleted file mode 100755 index 46ce924..0000000 Binary files a/aePronunciation/raw/pairs06_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs06_13.mp3 b/aePronunciation/raw/pairs06_13.mp3 deleted file mode 100755 index 54702eb..0000000 Binary files a/aePronunciation/raw/pairs06_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs06_14.mp3 b/aePronunciation/raw/pairs06_14.mp3 deleted file mode 100755 index da63942..0000000 Binary files a/aePronunciation/raw/pairs06_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs06_15.mp3 b/aePronunciation/raw/pairs06_15.mp3 deleted file mode 100755 index f798a91..0000000 Binary files a/aePronunciation/raw/pairs06_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs06_16.mp3 b/aePronunciation/raw/pairs06_16.mp3 deleted file mode 100755 index e2e13d0..0000000 Binary files a/aePronunciation/raw/pairs06_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs06_17.mp3 b/aePronunciation/raw/pairs06_17.mp3 deleted file mode 100755 index b4c9df1..0000000 Binary files a/aePronunciation/raw/pairs06_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs06_18.mp3 b/aePronunciation/raw/pairs06_18.mp3 deleted file mode 100755 index 0b65599..0000000 Binary files a/aePronunciation/raw/pairs06_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs06_19.mp3 b/aePronunciation/raw/pairs06_19.mp3 deleted file mode 100755 index 42a1cde..0000000 Binary files a/aePronunciation/raw/pairs06_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs07_01.mp3 b/aePronunciation/raw/pairs07_01.mp3 deleted file mode 100755 index 9b7c39f..0000000 Binary files a/aePronunciation/raw/pairs07_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs07_02.mp3 b/aePronunciation/raw/pairs07_02.mp3 deleted file mode 100755 index 33063ce..0000000 Binary files a/aePronunciation/raw/pairs07_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs07_03.mp3 b/aePronunciation/raw/pairs07_03.mp3 deleted file mode 100755 index e1ff83b..0000000 Binary files a/aePronunciation/raw/pairs07_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs07_04.mp3 b/aePronunciation/raw/pairs07_04.mp3 deleted file mode 100755 index 26a81aa..0000000 Binary files a/aePronunciation/raw/pairs07_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs07_05.mp3 b/aePronunciation/raw/pairs07_05.mp3 deleted file mode 100755 index eaa21cb..0000000 Binary files a/aePronunciation/raw/pairs07_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs07_06.mp3 b/aePronunciation/raw/pairs07_06.mp3 deleted file mode 100755 index fef1989..0000000 Binary files a/aePronunciation/raw/pairs07_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs07_07.mp3 b/aePronunciation/raw/pairs07_07.mp3 deleted file mode 100755 index 7b2798a..0000000 Binary files a/aePronunciation/raw/pairs07_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs07_08.mp3 b/aePronunciation/raw/pairs07_08.mp3 deleted file mode 100755 index 68f90f3..0000000 Binary files a/aePronunciation/raw/pairs07_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs07_09.mp3 b/aePronunciation/raw/pairs07_09.mp3 deleted file mode 100755 index 26a40ba..0000000 Binary files a/aePronunciation/raw/pairs07_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs07_10.mp3 b/aePronunciation/raw/pairs07_10.mp3 deleted file mode 100755 index 1fbcaa3..0000000 Binary files a/aePronunciation/raw/pairs07_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs07_11.mp3 b/aePronunciation/raw/pairs07_11.mp3 deleted file mode 100755 index 9aea1d1..0000000 Binary files a/aePronunciation/raw/pairs07_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs07_12.mp3 b/aePronunciation/raw/pairs07_12.mp3 deleted file mode 100755 index a7a70a4..0000000 Binary files a/aePronunciation/raw/pairs07_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs07_13.mp3 b/aePronunciation/raw/pairs07_13.mp3 deleted file mode 100755 index df38eab..0000000 Binary files a/aePronunciation/raw/pairs07_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs07_14.mp3 b/aePronunciation/raw/pairs07_14.mp3 deleted file mode 100755 index 56ed6aa..0000000 Binary files a/aePronunciation/raw/pairs07_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs07_15.mp3 b/aePronunciation/raw/pairs07_15.mp3 deleted file mode 100755 index d0a6281..0000000 Binary files a/aePronunciation/raw/pairs07_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs07_16.mp3 b/aePronunciation/raw/pairs07_16.mp3 deleted file mode 100755 index c022da8..0000000 Binary files a/aePronunciation/raw/pairs07_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs07_17.mp3 b/aePronunciation/raw/pairs07_17.mp3 deleted file mode 100755 index 8140b20..0000000 Binary files a/aePronunciation/raw/pairs07_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs07_18.mp3 b/aePronunciation/raw/pairs07_18.mp3 deleted file mode 100755 index 8d4b048..0000000 Binary files a/aePronunciation/raw/pairs07_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs07_19.mp3 b/aePronunciation/raw/pairs07_19.mp3 deleted file mode 100755 index 638ea0c..0000000 Binary files a/aePronunciation/raw/pairs07_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs08_01.mp3 b/aePronunciation/raw/pairs08_01.mp3 deleted file mode 100755 index 4973434..0000000 Binary files a/aePronunciation/raw/pairs08_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs08_02.mp3 b/aePronunciation/raw/pairs08_02.mp3 deleted file mode 100755 index db30cfa..0000000 Binary files a/aePronunciation/raw/pairs08_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs08_03.mp3 b/aePronunciation/raw/pairs08_03.mp3 deleted file mode 100755 index d7e81eb..0000000 Binary files a/aePronunciation/raw/pairs08_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs08_04.mp3 b/aePronunciation/raw/pairs08_04.mp3 deleted file mode 100755 index 88e88b3..0000000 Binary files a/aePronunciation/raw/pairs08_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs08_05.mp3 b/aePronunciation/raw/pairs08_05.mp3 deleted file mode 100755 index 1dadddf..0000000 Binary files a/aePronunciation/raw/pairs08_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs08_06.mp3 b/aePronunciation/raw/pairs08_06.mp3 deleted file mode 100755 index 49b7ac9..0000000 Binary files a/aePronunciation/raw/pairs08_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs08_07.mp3 b/aePronunciation/raw/pairs08_07.mp3 deleted file mode 100755 index c5010c3..0000000 Binary files a/aePronunciation/raw/pairs08_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs08_08.mp3 b/aePronunciation/raw/pairs08_08.mp3 deleted file mode 100755 index c408a16..0000000 Binary files a/aePronunciation/raw/pairs08_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs08_09.mp3 b/aePronunciation/raw/pairs08_09.mp3 deleted file mode 100755 index d10876c..0000000 Binary files a/aePronunciation/raw/pairs08_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs08_10.mp3 b/aePronunciation/raw/pairs08_10.mp3 deleted file mode 100755 index a028feb..0000000 Binary files a/aePronunciation/raw/pairs08_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs08_11.mp3 b/aePronunciation/raw/pairs08_11.mp3 deleted file mode 100755 index 5df5fbf..0000000 Binary files a/aePronunciation/raw/pairs08_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs08_12.mp3 b/aePronunciation/raw/pairs08_12.mp3 deleted file mode 100755 index 6ec720d..0000000 Binary files a/aePronunciation/raw/pairs08_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs08_13.mp3 b/aePronunciation/raw/pairs08_13.mp3 deleted file mode 100755 index 108a016..0000000 Binary files a/aePronunciation/raw/pairs08_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs08_14.mp3 b/aePronunciation/raw/pairs08_14.mp3 deleted file mode 100755 index 6d20270..0000000 Binary files a/aePronunciation/raw/pairs08_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs08_15.mp3 b/aePronunciation/raw/pairs08_15.mp3 deleted file mode 100755 index dafdece..0000000 Binary files a/aePronunciation/raw/pairs08_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs08_16.mp3 b/aePronunciation/raw/pairs08_16.mp3 deleted file mode 100755 index 09a0401..0000000 Binary files a/aePronunciation/raw/pairs08_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs08_17.mp3 b/aePronunciation/raw/pairs08_17.mp3 deleted file mode 100755 index 5762dd8..0000000 Binary files a/aePronunciation/raw/pairs08_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs08_18.mp3 b/aePronunciation/raw/pairs08_18.mp3 deleted file mode 100755 index f38ed1b..0000000 Binary files a/aePronunciation/raw/pairs08_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs08_19.mp3 b/aePronunciation/raw/pairs08_19.mp3 deleted file mode 100755 index 8934fda..0000000 Binary files a/aePronunciation/raw/pairs08_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs09_01.mp3 b/aePronunciation/raw/pairs09_01.mp3 deleted file mode 100755 index 8175de2..0000000 Binary files a/aePronunciation/raw/pairs09_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs09_02.mp3 b/aePronunciation/raw/pairs09_02.mp3 deleted file mode 100755 index e353f21..0000000 Binary files a/aePronunciation/raw/pairs09_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs09_03.mp3 b/aePronunciation/raw/pairs09_03.mp3 deleted file mode 100755 index 76ab997..0000000 Binary files a/aePronunciation/raw/pairs09_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs09_04.mp3 b/aePronunciation/raw/pairs09_04.mp3 deleted file mode 100755 index 19f2fdb..0000000 Binary files a/aePronunciation/raw/pairs09_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs09_05.mp3 b/aePronunciation/raw/pairs09_05.mp3 deleted file mode 100755 index 8ae76f9..0000000 Binary files a/aePronunciation/raw/pairs09_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs09_06.mp3 b/aePronunciation/raw/pairs09_06.mp3 deleted file mode 100755 index 7388577..0000000 Binary files a/aePronunciation/raw/pairs09_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs09_07.mp3 b/aePronunciation/raw/pairs09_07.mp3 deleted file mode 100755 index 52d09bb..0000000 Binary files a/aePronunciation/raw/pairs09_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs09_08.mp3 b/aePronunciation/raw/pairs09_08.mp3 deleted file mode 100755 index 964808b..0000000 Binary files a/aePronunciation/raw/pairs09_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs09_09.mp3 b/aePronunciation/raw/pairs09_09.mp3 deleted file mode 100755 index a5c29f7..0000000 Binary files a/aePronunciation/raw/pairs09_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs09_10.mp3 b/aePronunciation/raw/pairs09_10.mp3 deleted file mode 100755 index 0a642d2..0000000 Binary files a/aePronunciation/raw/pairs09_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs09_11.mp3 b/aePronunciation/raw/pairs09_11.mp3 deleted file mode 100755 index 4410365..0000000 Binary files a/aePronunciation/raw/pairs09_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs09_12.mp3 b/aePronunciation/raw/pairs09_12.mp3 deleted file mode 100755 index 7e4a0cc..0000000 Binary files a/aePronunciation/raw/pairs09_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs09_13.mp3 b/aePronunciation/raw/pairs09_13.mp3 deleted file mode 100755 index 9eedb4e..0000000 Binary files a/aePronunciation/raw/pairs09_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs09_14.mp3 b/aePronunciation/raw/pairs09_14.mp3 deleted file mode 100755 index 40e299f..0000000 Binary files a/aePronunciation/raw/pairs09_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs09_15.mp3 b/aePronunciation/raw/pairs09_15.mp3 deleted file mode 100755 index 196825e..0000000 Binary files a/aePronunciation/raw/pairs09_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs09_16.mp3 b/aePronunciation/raw/pairs09_16.mp3 deleted file mode 100755 index 182482a..0000000 Binary files a/aePronunciation/raw/pairs09_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs09_17.mp3 b/aePronunciation/raw/pairs09_17.mp3 deleted file mode 100755 index e1e5571..0000000 Binary files a/aePronunciation/raw/pairs09_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs09_18.mp3 b/aePronunciation/raw/pairs09_18.mp3 deleted file mode 100755 index e469a3a..0000000 Binary files a/aePronunciation/raw/pairs09_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs09_19.mp3 b/aePronunciation/raw/pairs09_19.mp3 deleted file mode 100755 index 38bbc70..0000000 Binary files a/aePronunciation/raw/pairs09_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs10_01.mp3 b/aePronunciation/raw/pairs10_01.mp3 deleted file mode 100755 index 3ab824a..0000000 Binary files a/aePronunciation/raw/pairs10_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs10_02.mp3 b/aePronunciation/raw/pairs10_02.mp3 deleted file mode 100755 index f263abe..0000000 Binary files a/aePronunciation/raw/pairs10_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs10_03.mp3 b/aePronunciation/raw/pairs10_03.mp3 deleted file mode 100755 index 68b66e8..0000000 Binary files a/aePronunciation/raw/pairs10_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs10_04.mp3 b/aePronunciation/raw/pairs10_04.mp3 deleted file mode 100755 index 901dc13..0000000 Binary files a/aePronunciation/raw/pairs10_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs10_05.mp3 b/aePronunciation/raw/pairs10_05.mp3 deleted file mode 100755 index 293f136..0000000 Binary files a/aePronunciation/raw/pairs10_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs10_06.mp3 b/aePronunciation/raw/pairs10_06.mp3 deleted file mode 100755 index 82d471c..0000000 Binary files a/aePronunciation/raw/pairs10_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs10_07.mp3 b/aePronunciation/raw/pairs10_07.mp3 deleted file mode 100755 index e996302..0000000 Binary files a/aePronunciation/raw/pairs10_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs10_08.mp3 b/aePronunciation/raw/pairs10_08.mp3 deleted file mode 100755 index 7d816e7..0000000 Binary files a/aePronunciation/raw/pairs10_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs10_09.mp3 b/aePronunciation/raw/pairs10_09.mp3 deleted file mode 100755 index 2f1d843..0000000 Binary files a/aePronunciation/raw/pairs10_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs10_10.mp3 b/aePronunciation/raw/pairs10_10.mp3 deleted file mode 100755 index 2a7f949..0000000 Binary files a/aePronunciation/raw/pairs10_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs10_11.mp3 b/aePronunciation/raw/pairs10_11.mp3 deleted file mode 100755 index f1dfa41..0000000 Binary files a/aePronunciation/raw/pairs10_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs10_12.mp3 b/aePronunciation/raw/pairs10_12.mp3 deleted file mode 100755 index 7e6d44c..0000000 Binary files a/aePronunciation/raw/pairs10_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs10_13.mp3 b/aePronunciation/raw/pairs10_13.mp3 deleted file mode 100755 index 19198db..0000000 Binary files a/aePronunciation/raw/pairs10_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs10_14.mp3 b/aePronunciation/raw/pairs10_14.mp3 deleted file mode 100755 index ecfbec4..0000000 Binary files a/aePronunciation/raw/pairs10_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs10_15.mp3 b/aePronunciation/raw/pairs10_15.mp3 deleted file mode 100755 index e677f8d..0000000 Binary files a/aePronunciation/raw/pairs10_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs10_16.mp3 b/aePronunciation/raw/pairs10_16.mp3 deleted file mode 100755 index c9387f8..0000000 Binary files a/aePronunciation/raw/pairs10_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs10_17.mp3 b/aePronunciation/raw/pairs10_17.mp3 deleted file mode 100755 index 6f59fee..0000000 Binary files a/aePronunciation/raw/pairs10_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs10_18.mp3 b/aePronunciation/raw/pairs10_18.mp3 deleted file mode 100755 index b933825..0000000 Binary files a/aePronunciation/raw/pairs10_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs10_19.mp3 b/aePronunciation/raw/pairs10_19.mp3 deleted file mode 100755 index 1456d03..0000000 Binary files a/aePronunciation/raw/pairs10_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs11_01.mp3 b/aePronunciation/raw/pairs11_01.mp3 deleted file mode 100755 index c851de7..0000000 Binary files a/aePronunciation/raw/pairs11_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs11_02.mp3 b/aePronunciation/raw/pairs11_02.mp3 deleted file mode 100755 index ad24fbd..0000000 Binary files a/aePronunciation/raw/pairs11_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs11_03.mp3 b/aePronunciation/raw/pairs11_03.mp3 deleted file mode 100755 index 5f846ba..0000000 Binary files a/aePronunciation/raw/pairs11_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs11_04.mp3 b/aePronunciation/raw/pairs11_04.mp3 deleted file mode 100755 index 91e04cc..0000000 Binary files a/aePronunciation/raw/pairs11_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs11_05.mp3 b/aePronunciation/raw/pairs11_05.mp3 deleted file mode 100755 index 8ca7a08..0000000 Binary files a/aePronunciation/raw/pairs11_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs11_06.mp3 b/aePronunciation/raw/pairs11_06.mp3 deleted file mode 100755 index 0362d9e..0000000 Binary files a/aePronunciation/raw/pairs11_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs11_07.mp3 b/aePronunciation/raw/pairs11_07.mp3 deleted file mode 100755 index 3358468..0000000 Binary files a/aePronunciation/raw/pairs11_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs11_08.mp3 b/aePronunciation/raw/pairs11_08.mp3 deleted file mode 100755 index 7be8e23..0000000 Binary files a/aePronunciation/raw/pairs11_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs11_09.mp3 b/aePronunciation/raw/pairs11_09.mp3 deleted file mode 100755 index ce38c7b..0000000 Binary files a/aePronunciation/raw/pairs11_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs11_10.mp3 b/aePronunciation/raw/pairs11_10.mp3 deleted file mode 100755 index 54cbd02..0000000 Binary files a/aePronunciation/raw/pairs11_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs11_11.mp3 b/aePronunciation/raw/pairs11_11.mp3 deleted file mode 100755 index 3481504..0000000 Binary files a/aePronunciation/raw/pairs11_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs11_12.mp3 b/aePronunciation/raw/pairs11_12.mp3 deleted file mode 100755 index 7f0ca10..0000000 Binary files a/aePronunciation/raw/pairs11_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs11_13.mp3 b/aePronunciation/raw/pairs11_13.mp3 deleted file mode 100755 index c90f4a8..0000000 Binary files a/aePronunciation/raw/pairs11_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs11_14.mp3 b/aePronunciation/raw/pairs11_14.mp3 deleted file mode 100755 index e1b81f6..0000000 Binary files a/aePronunciation/raw/pairs11_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs11_15.mp3 b/aePronunciation/raw/pairs11_15.mp3 deleted file mode 100755 index a6f95e6..0000000 Binary files a/aePronunciation/raw/pairs11_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs11_16.mp3 b/aePronunciation/raw/pairs11_16.mp3 deleted file mode 100755 index 3d5dae8..0000000 Binary files a/aePronunciation/raw/pairs11_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs11_17.mp3 b/aePronunciation/raw/pairs11_17.mp3 deleted file mode 100755 index b3c3782..0000000 Binary files a/aePronunciation/raw/pairs11_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs11_18.mp3 b/aePronunciation/raw/pairs11_18.mp3 deleted file mode 100755 index 5423fef..0000000 Binary files a/aePronunciation/raw/pairs11_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs11_19.mp3 b/aePronunciation/raw/pairs11_19.mp3 deleted file mode 100755 index 4f6f553..0000000 Binary files a/aePronunciation/raw/pairs11_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs12_01.mp3 b/aePronunciation/raw/pairs12_01.mp3 deleted file mode 100755 index 2e83be5..0000000 Binary files a/aePronunciation/raw/pairs12_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs12_02.mp3 b/aePronunciation/raw/pairs12_02.mp3 deleted file mode 100755 index 76fbae7..0000000 Binary files a/aePronunciation/raw/pairs12_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs12_03.mp3 b/aePronunciation/raw/pairs12_03.mp3 deleted file mode 100755 index 545da88..0000000 Binary files a/aePronunciation/raw/pairs12_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs12_04.mp3 b/aePronunciation/raw/pairs12_04.mp3 deleted file mode 100755 index b470380..0000000 Binary files a/aePronunciation/raw/pairs12_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs12_05.mp3 b/aePronunciation/raw/pairs12_05.mp3 deleted file mode 100755 index 3650ada..0000000 Binary files a/aePronunciation/raw/pairs12_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs12_06.mp3 b/aePronunciation/raw/pairs12_06.mp3 deleted file mode 100755 index 101a746..0000000 Binary files a/aePronunciation/raw/pairs12_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs12_07.mp3 b/aePronunciation/raw/pairs12_07.mp3 deleted file mode 100755 index 55a1614..0000000 Binary files a/aePronunciation/raw/pairs12_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs12_08.mp3 b/aePronunciation/raw/pairs12_08.mp3 deleted file mode 100755 index fe38e5d..0000000 Binary files a/aePronunciation/raw/pairs12_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs12_09.mp3 b/aePronunciation/raw/pairs12_09.mp3 deleted file mode 100755 index 30b4c8c..0000000 Binary files a/aePronunciation/raw/pairs12_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs12_10.mp3 b/aePronunciation/raw/pairs12_10.mp3 deleted file mode 100755 index 037340d..0000000 Binary files a/aePronunciation/raw/pairs12_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs12_11.mp3 b/aePronunciation/raw/pairs12_11.mp3 deleted file mode 100755 index 50ea5c3..0000000 Binary files a/aePronunciation/raw/pairs12_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs12_12.mp3 b/aePronunciation/raw/pairs12_12.mp3 deleted file mode 100755 index bbff084..0000000 Binary files a/aePronunciation/raw/pairs12_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs12_13.mp3 b/aePronunciation/raw/pairs12_13.mp3 deleted file mode 100755 index 4f47430..0000000 Binary files a/aePronunciation/raw/pairs12_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs12_14.mp3 b/aePronunciation/raw/pairs12_14.mp3 deleted file mode 100755 index b701582..0000000 Binary files a/aePronunciation/raw/pairs12_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs12_15.mp3 b/aePronunciation/raw/pairs12_15.mp3 deleted file mode 100755 index 9362865..0000000 Binary files a/aePronunciation/raw/pairs12_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs12_16.mp3 b/aePronunciation/raw/pairs12_16.mp3 deleted file mode 100755 index 58139f4..0000000 Binary files a/aePronunciation/raw/pairs12_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs12_17.mp3 b/aePronunciation/raw/pairs12_17.mp3 deleted file mode 100755 index f21ca9e..0000000 Binary files a/aePronunciation/raw/pairs12_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs12_18.mp3 b/aePronunciation/raw/pairs12_18.mp3 deleted file mode 100755 index 3fc0f27..0000000 Binary files a/aePronunciation/raw/pairs12_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs12_19.mp3 b/aePronunciation/raw/pairs12_19.mp3 deleted file mode 100755 index b1390e9..0000000 Binary files a/aePronunciation/raw/pairs12_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs13_01.mp3 b/aePronunciation/raw/pairs13_01.mp3 deleted file mode 100755 index cfd2bc1..0000000 Binary files a/aePronunciation/raw/pairs13_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs13_02.mp3 b/aePronunciation/raw/pairs13_02.mp3 deleted file mode 100755 index 5c00e84..0000000 Binary files a/aePronunciation/raw/pairs13_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs13_03.mp3 b/aePronunciation/raw/pairs13_03.mp3 deleted file mode 100755 index 0bcd999..0000000 Binary files a/aePronunciation/raw/pairs13_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs13_04.mp3 b/aePronunciation/raw/pairs13_04.mp3 deleted file mode 100755 index bdb58ee..0000000 Binary files a/aePronunciation/raw/pairs13_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs13_05.mp3 b/aePronunciation/raw/pairs13_05.mp3 deleted file mode 100755 index 00620b3..0000000 Binary files a/aePronunciation/raw/pairs13_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs13_06.mp3 b/aePronunciation/raw/pairs13_06.mp3 deleted file mode 100755 index 69af336..0000000 Binary files a/aePronunciation/raw/pairs13_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs13_07.mp3 b/aePronunciation/raw/pairs13_07.mp3 deleted file mode 100755 index f2c8b43..0000000 Binary files a/aePronunciation/raw/pairs13_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs13_08.mp3 b/aePronunciation/raw/pairs13_08.mp3 deleted file mode 100755 index a695e00..0000000 Binary files a/aePronunciation/raw/pairs13_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs13_09.mp3 b/aePronunciation/raw/pairs13_09.mp3 deleted file mode 100755 index ef0bf35..0000000 Binary files a/aePronunciation/raw/pairs13_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs13_10.mp3 b/aePronunciation/raw/pairs13_10.mp3 deleted file mode 100755 index 31aa637..0000000 Binary files a/aePronunciation/raw/pairs13_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs13_11.mp3 b/aePronunciation/raw/pairs13_11.mp3 deleted file mode 100755 index 422d5f0..0000000 Binary files a/aePronunciation/raw/pairs13_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs13_12.mp3 b/aePronunciation/raw/pairs13_12.mp3 deleted file mode 100755 index 8307f31..0000000 Binary files a/aePronunciation/raw/pairs13_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs13_13.mp3 b/aePronunciation/raw/pairs13_13.mp3 deleted file mode 100755 index 1c6dbab..0000000 Binary files a/aePronunciation/raw/pairs13_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs13_14.mp3 b/aePronunciation/raw/pairs13_14.mp3 deleted file mode 100755 index 88d21b3..0000000 Binary files a/aePronunciation/raw/pairs13_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs13_15.mp3 b/aePronunciation/raw/pairs13_15.mp3 deleted file mode 100755 index de8d4f8..0000000 Binary files a/aePronunciation/raw/pairs13_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs13_16.mp3 b/aePronunciation/raw/pairs13_16.mp3 deleted file mode 100755 index 4747773..0000000 Binary files a/aePronunciation/raw/pairs13_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs13_17.mp3 b/aePronunciation/raw/pairs13_17.mp3 deleted file mode 100755 index f63024e..0000000 Binary files a/aePronunciation/raw/pairs13_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs13_18.mp3 b/aePronunciation/raw/pairs13_18.mp3 deleted file mode 100755 index bc04588..0000000 Binary files a/aePronunciation/raw/pairs13_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs13_19.mp3 b/aePronunciation/raw/pairs13_19.mp3 deleted file mode 100755 index c090873..0000000 Binary files a/aePronunciation/raw/pairs13_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs14_01.mp3 b/aePronunciation/raw/pairs14_01.mp3 deleted file mode 100755 index 2d3a5d9..0000000 Binary files a/aePronunciation/raw/pairs14_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs14_02.mp3 b/aePronunciation/raw/pairs14_02.mp3 deleted file mode 100755 index 620ad5d..0000000 Binary files a/aePronunciation/raw/pairs14_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs14_03.mp3 b/aePronunciation/raw/pairs14_03.mp3 deleted file mode 100755 index 420860f..0000000 Binary files a/aePronunciation/raw/pairs14_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs14_04.mp3 b/aePronunciation/raw/pairs14_04.mp3 deleted file mode 100755 index 5025ecb..0000000 Binary files a/aePronunciation/raw/pairs14_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs14_05.mp3 b/aePronunciation/raw/pairs14_05.mp3 deleted file mode 100755 index 44e48af..0000000 Binary files a/aePronunciation/raw/pairs14_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs14_06.mp3 b/aePronunciation/raw/pairs14_06.mp3 deleted file mode 100755 index ecb602b..0000000 Binary files a/aePronunciation/raw/pairs14_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs14_07.mp3 b/aePronunciation/raw/pairs14_07.mp3 deleted file mode 100755 index d32b54e..0000000 Binary files a/aePronunciation/raw/pairs14_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs14_08.mp3 b/aePronunciation/raw/pairs14_08.mp3 deleted file mode 100755 index 72710a9..0000000 Binary files a/aePronunciation/raw/pairs14_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs14_09.mp3 b/aePronunciation/raw/pairs14_09.mp3 deleted file mode 100755 index 9108b22..0000000 Binary files a/aePronunciation/raw/pairs14_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs14_10.mp3 b/aePronunciation/raw/pairs14_10.mp3 deleted file mode 100755 index 2f6a99f..0000000 Binary files a/aePronunciation/raw/pairs14_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs14_11.mp3 b/aePronunciation/raw/pairs14_11.mp3 deleted file mode 100755 index c071a93..0000000 Binary files a/aePronunciation/raw/pairs14_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs14_12.mp3 b/aePronunciation/raw/pairs14_12.mp3 deleted file mode 100755 index 1205a7d..0000000 Binary files a/aePronunciation/raw/pairs14_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs14_13.mp3 b/aePronunciation/raw/pairs14_13.mp3 deleted file mode 100755 index 3fcb3d3..0000000 Binary files a/aePronunciation/raw/pairs14_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs14_14.mp3 b/aePronunciation/raw/pairs14_14.mp3 deleted file mode 100755 index c6ed532..0000000 Binary files a/aePronunciation/raw/pairs14_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs14_15.mp3 b/aePronunciation/raw/pairs14_15.mp3 deleted file mode 100755 index f9bb0fe..0000000 Binary files a/aePronunciation/raw/pairs14_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs14_16.mp3 b/aePronunciation/raw/pairs14_16.mp3 deleted file mode 100755 index 0efdf73..0000000 Binary files a/aePronunciation/raw/pairs14_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs14_17.mp3 b/aePronunciation/raw/pairs14_17.mp3 deleted file mode 100755 index d46a5b8..0000000 Binary files a/aePronunciation/raw/pairs14_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs14_18.mp3 b/aePronunciation/raw/pairs14_18.mp3 deleted file mode 100755 index 3479906..0000000 Binary files a/aePronunciation/raw/pairs14_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs14_19.mp3 b/aePronunciation/raw/pairs14_19.mp3 deleted file mode 100755 index 855c726..0000000 Binary files a/aePronunciation/raw/pairs14_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs15_01.mp3 b/aePronunciation/raw/pairs15_01.mp3 deleted file mode 100755 index 6ffc291..0000000 Binary files a/aePronunciation/raw/pairs15_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs15_02.mp3 b/aePronunciation/raw/pairs15_02.mp3 deleted file mode 100755 index c070934..0000000 Binary files a/aePronunciation/raw/pairs15_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs15_03.mp3 b/aePronunciation/raw/pairs15_03.mp3 deleted file mode 100755 index 09cbdaf..0000000 Binary files a/aePronunciation/raw/pairs15_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs15_04.mp3 b/aePronunciation/raw/pairs15_04.mp3 deleted file mode 100755 index 93f2208..0000000 Binary files a/aePronunciation/raw/pairs15_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs15_05.mp3 b/aePronunciation/raw/pairs15_05.mp3 deleted file mode 100755 index fc77291..0000000 Binary files a/aePronunciation/raw/pairs15_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs15_06.mp3 b/aePronunciation/raw/pairs15_06.mp3 deleted file mode 100755 index 5bcf19c..0000000 Binary files a/aePronunciation/raw/pairs15_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs15_07.mp3 b/aePronunciation/raw/pairs15_07.mp3 deleted file mode 100755 index 2f4be13..0000000 Binary files a/aePronunciation/raw/pairs15_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs15_08.mp3 b/aePronunciation/raw/pairs15_08.mp3 deleted file mode 100755 index 7125ca5..0000000 Binary files a/aePronunciation/raw/pairs15_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs15_09.mp3 b/aePronunciation/raw/pairs15_09.mp3 deleted file mode 100755 index 3304d67..0000000 Binary files a/aePronunciation/raw/pairs15_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs15_10.mp3 b/aePronunciation/raw/pairs15_10.mp3 deleted file mode 100755 index 5ee040d..0000000 Binary files a/aePronunciation/raw/pairs15_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs15_11.mp3 b/aePronunciation/raw/pairs15_11.mp3 deleted file mode 100755 index dd3d6a1..0000000 Binary files a/aePronunciation/raw/pairs15_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs15_12.mp3 b/aePronunciation/raw/pairs15_12.mp3 deleted file mode 100755 index 6e460b3..0000000 Binary files a/aePronunciation/raw/pairs15_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs15_13.mp3 b/aePronunciation/raw/pairs15_13.mp3 deleted file mode 100755 index 748648f..0000000 Binary files a/aePronunciation/raw/pairs15_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs15_14.mp3 b/aePronunciation/raw/pairs15_14.mp3 deleted file mode 100755 index bd96132..0000000 Binary files a/aePronunciation/raw/pairs15_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs15_15.mp3 b/aePronunciation/raw/pairs15_15.mp3 deleted file mode 100755 index 3ecfdbf..0000000 Binary files a/aePronunciation/raw/pairs15_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs15_16.mp3 b/aePronunciation/raw/pairs15_16.mp3 deleted file mode 100755 index 27faaf5..0000000 Binary files a/aePronunciation/raw/pairs15_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs15_17.mp3 b/aePronunciation/raw/pairs15_17.mp3 deleted file mode 100755 index f1c5223..0000000 Binary files a/aePronunciation/raw/pairs15_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs15_18.mp3 b/aePronunciation/raw/pairs15_18.mp3 deleted file mode 100755 index c05a599..0000000 Binary files a/aePronunciation/raw/pairs15_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs15_19.mp3 b/aePronunciation/raw/pairs15_19.mp3 deleted file mode 100755 index 486646f..0000000 Binary files a/aePronunciation/raw/pairs15_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs16_01.mp3 b/aePronunciation/raw/pairs16_01.mp3 deleted file mode 100755 index 2e44bf0..0000000 Binary files a/aePronunciation/raw/pairs16_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs16_02.mp3 b/aePronunciation/raw/pairs16_02.mp3 deleted file mode 100755 index 6a993e6..0000000 Binary files a/aePronunciation/raw/pairs16_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs16_03.mp3 b/aePronunciation/raw/pairs16_03.mp3 deleted file mode 100755 index 5abc498..0000000 Binary files a/aePronunciation/raw/pairs16_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs16_04.mp3 b/aePronunciation/raw/pairs16_04.mp3 deleted file mode 100755 index 5d11b14..0000000 Binary files a/aePronunciation/raw/pairs16_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs16_05.mp3 b/aePronunciation/raw/pairs16_05.mp3 deleted file mode 100755 index a334533..0000000 Binary files a/aePronunciation/raw/pairs16_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs16_06.mp3 b/aePronunciation/raw/pairs16_06.mp3 deleted file mode 100755 index f89ee26..0000000 Binary files a/aePronunciation/raw/pairs16_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs16_07.mp3 b/aePronunciation/raw/pairs16_07.mp3 deleted file mode 100755 index 97ec76a..0000000 Binary files a/aePronunciation/raw/pairs16_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs16_08.mp3 b/aePronunciation/raw/pairs16_08.mp3 deleted file mode 100755 index dae078f..0000000 Binary files a/aePronunciation/raw/pairs16_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs16_09.mp3 b/aePronunciation/raw/pairs16_09.mp3 deleted file mode 100755 index 801c4ec..0000000 Binary files a/aePronunciation/raw/pairs16_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs16_10.mp3 b/aePronunciation/raw/pairs16_10.mp3 deleted file mode 100755 index ba3ad5d..0000000 Binary files a/aePronunciation/raw/pairs16_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs16_11.mp3 b/aePronunciation/raw/pairs16_11.mp3 deleted file mode 100755 index c996c43..0000000 Binary files a/aePronunciation/raw/pairs16_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs16_12.mp3 b/aePronunciation/raw/pairs16_12.mp3 deleted file mode 100755 index 3ad6b4d..0000000 Binary files a/aePronunciation/raw/pairs16_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs16_13.mp3 b/aePronunciation/raw/pairs16_13.mp3 deleted file mode 100755 index 2712c7b..0000000 Binary files a/aePronunciation/raw/pairs16_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs16_14.mp3 b/aePronunciation/raw/pairs16_14.mp3 deleted file mode 100755 index c581900..0000000 Binary files a/aePronunciation/raw/pairs16_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs16_15.mp3 b/aePronunciation/raw/pairs16_15.mp3 deleted file mode 100755 index 721c968..0000000 Binary files a/aePronunciation/raw/pairs16_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs16_16.mp3 b/aePronunciation/raw/pairs16_16.mp3 deleted file mode 100755 index 86ccb36..0000000 Binary files a/aePronunciation/raw/pairs16_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs16_17.mp3 b/aePronunciation/raw/pairs16_17.mp3 deleted file mode 100755 index cfca752..0000000 Binary files a/aePronunciation/raw/pairs16_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs16_18.mp3 b/aePronunciation/raw/pairs16_18.mp3 deleted file mode 100755 index adfd1c6..0000000 Binary files a/aePronunciation/raw/pairs16_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs16_19.mp3 b/aePronunciation/raw/pairs16_19.mp3 deleted file mode 100755 index eddbda1..0000000 Binary files a/aePronunciation/raw/pairs16_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs17_01.mp3 b/aePronunciation/raw/pairs17_01.mp3 deleted file mode 100755 index ae747db..0000000 Binary files a/aePronunciation/raw/pairs17_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs17_02.mp3 b/aePronunciation/raw/pairs17_02.mp3 deleted file mode 100755 index 34969fc..0000000 Binary files a/aePronunciation/raw/pairs17_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs17_03.mp3 b/aePronunciation/raw/pairs17_03.mp3 deleted file mode 100755 index da70183..0000000 Binary files a/aePronunciation/raw/pairs17_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs17_04.mp3 b/aePronunciation/raw/pairs17_04.mp3 deleted file mode 100755 index 2362dca..0000000 Binary files a/aePronunciation/raw/pairs17_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs17_05.mp3 b/aePronunciation/raw/pairs17_05.mp3 deleted file mode 100755 index f8efd7b..0000000 Binary files a/aePronunciation/raw/pairs17_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs17_06.mp3 b/aePronunciation/raw/pairs17_06.mp3 deleted file mode 100755 index e2c05a0..0000000 Binary files a/aePronunciation/raw/pairs17_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs17_07.mp3 b/aePronunciation/raw/pairs17_07.mp3 deleted file mode 100755 index a2a7404..0000000 Binary files a/aePronunciation/raw/pairs17_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs17_08.mp3 b/aePronunciation/raw/pairs17_08.mp3 deleted file mode 100755 index e8f4703..0000000 Binary files a/aePronunciation/raw/pairs17_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs17_09.mp3 b/aePronunciation/raw/pairs17_09.mp3 deleted file mode 100755 index f52b514..0000000 Binary files a/aePronunciation/raw/pairs17_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs17_10.mp3 b/aePronunciation/raw/pairs17_10.mp3 deleted file mode 100755 index b7b0395..0000000 Binary files a/aePronunciation/raw/pairs17_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs17_11.mp3 b/aePronunciation/raw/pairs17_11.mp3 deleted file mode 100755 index aec66cb..0000000 Binary files a/aePronunciation/raw/pairs17_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs17_12.mp3 b/aePronunciation/raw/pairs17_12.mp3 deleted file mode 100755 index 074fbc9..0000000 Binary files a/aePronunciation/raw/pairs17_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs17_13.mp3 b/aePronunciation/raw/pairs17_13.mp3 deleted file mode 100755 index 80d6034..0000000 Binary files a/aePronunciation/raw/pairs17_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs17_14.mp3 b/aePronunciation/raw/pairs17_14.mp3 deleted file mode 100755 index 380bc10..0000000 Binary files a/aePronunciation/raw/pairs17_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs17_15.mp3 b/aePronunciation/raw/pairs17_15.mp3 deleted file mode 100755 index b9c1a46..0000000 Binary files a/aePronunciation/raw/pairs17_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs17_16.mp3 b/aePronunciation/raw/pairs17_16.mp3 deleted file mode 100755 index a0cfa39..0000000 Binary files a/aePronunciation/raw/pairs17_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs17_17.mp3 b/aePronunciation/raw/pairs17_17.mp3 deleted file mode 100755 index 89164a1..0000000 Binary files a/aePronunciation/raw/pairs17_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs17_18.mp3 b/aePronunciation/raw/pairs17_18.mp3 deleted file mode 100755 index c557fe5..0000000 Binary files a/aePronunciation/raw/pairs17_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs17_19.mp3 b/aePronunciation/raw/pairs17_19.mp3 deleted file mode 100755 index 08bda45..0000000 Binary files a/aePronunciation/raw/pairs17_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs18_01.mp3 b/aePronunciation/raw/pairs18_01.mp3 deleted file mode 100755 index 91ee5ac..0000000 Binary files a/aePronunciation/raw/pairs18_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs18_02.mp3 b/aePronunciation/raw/pairs18_02.mp3 deleted file mode 100755 index ac197e9..0000000 Binary files a/aePronunciation/raw/pairs18_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs18_03.mp3 b/aePronunciation/raw/pairs18_03.mp3 deleted file mode 100755 index f8ce637..0000000 Binary files a/aePronunciation/raw/pairs18_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs18_04.mp3 b/aePronunciation/raw/pairs18_04.mp3 deleted file mode 100755 index 0adb8c6..0000000 Binary files a/aePronunciation/raw/pairs18_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs18_05.mp3 b/aePronunciation/raw/pairs18_05.mp3 deleted file mode 100755 index b8c8172..0000000 Binary files a/aePronunciation/raw/pairs18_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs18_06.mp3 b/aePronunciation/raw/pairs18_06.mp3 deleted file mode 100755 index e3c1c49..0000000 Binary files a/aePronunciation/raw/pairs18_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs18_07.mp3 b/aePronunciation/raw/pairs18_07.mp3 deleted file mode 100755 index 69f7e4e..0000000 Binary files a/aePronunciation/raw/pairs18_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs18_08.mp3 b/aePronunciation/raw/pairs18_08.mp3 deleted file mode 100755 index 88a6c2f..0000000 Binary files a/aePronunciation/raw/pairs18_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs18_09.mp3 b/aePronunciation/raw/pairs18_09.mp3 deleted file mode 100755 index 363c727..0000000 Binary files a/aePronunciation/raw/pairs18_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs18_10.mp3 b/aePronunciation/raw/pairs18_10.mp3 deleted file mode 100755 index ee0c997..0000000 Binary files a/aePronunciation/raw/pairs18_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs18_11.mp3 b/aePronunciation/raw/pairs18_11.mp3 deleted file mode 100755 index b26df6d..0000000 Binary files a/aePronunciation/raw/pairs18_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs18_12.mp3 b/aePronunciation/raw/pairs18_12.mp3 deleted file mode 100755 index 41169be..0000000 Binary files a/aePronunciation/raw/pairs18_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs18_13.mp3 b/aePronunciation/raw/pairs18_13.mp3 deleted file mode 100755 index 4c53539..0000000 Binary files a/aePronunciation/raw/pairs18_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs18_14.mp3 b/aePronunciation/raw/pairs18_14.mp3 deleted file mode 100755 index fdc5f65..0000000 Binary files a/aePronunciation/raw/pairs18_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs18_15.mp3 b/aePronunciation/raw/pairs18_15.mp3 deleted file mode 100755 index b195908..0000000 Binary files a/aePronunciation/raw/pairs18_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs18_16.mp3 b/aePronunciation/raw/pairs18_16.mp3 deleted file mode 100755 index 85e9f4b..0000000 Binary files a/aePronunciation/raw/pairs18_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs18_17.mp3 b/aePronunciation/raw/pairs18_17.mp3 deleted file mode 100755 index 874a57f..0000000 Binary files a/aePronunciation/raw/pairs18_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs18_18.mp3 b/aePronunciation/raw/pairs18_18.mp3 deleted file mode 100755 index e1668e1..0000000 Binary files a/aePronunciation/raw/pairs18_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs18_19.mp3 b/aePronunciation/raw/pairs18_19.mp3 deleted file mode 100755 index c0d70ce..0000000 Binary files a/aePronunciation/raw/pairs18_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs19_01.mp3 b/aePronunciation/raw/pairs19_01.mp3 deleted file mode 100755 index 412021e..0000000 Binary files a/aePronunciation/raw/pairs19_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs19_02.mp3 b/aePronunciation/raw/pairs19_02.mp3 deleted file mode 100755 index 011c75a..0000000 Binary files a/aePronunciation/raw/pairs19_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs19_03.mp3 b/aePronunciation/raw/pairs19_03.mp3 deleted file mode 100755 index f063a9d..0000000 Binary files a/aePronunciation/raw/pairs19_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs19_04.mp3 b/aePronunciation/raw/pairs19_04.mp3 deleted file mode 100755 index db40905..0000000 Binary files a/aePronunciation/raw/pairs19_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs19_05.mp3 b/aePronunciation/raw/pairs19_05.mp3 deleted file mode 100755 index b64f833..0000000 Binary files a/aePronunciation/raw/pairs19_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs19_06.mp3 b/aePronunciation/raw/pairs19_06.mp3 deleted file mode 100755 index 3031cc4..0000000 Binary files a/aePronunciation/raw/pairs19_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs19_07.mp3 b/aePronunciation/raw/pairs19_07.mp3 deleted file mode 100755 index a4eea84..0000000 Binary files a/aePronunciation/raw/pairs19_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs19_08.mp3 b/aePronunciation/raw/pairs19_08.mp3 deleted file mode 100755 index a808185..0000000 Binary files a/aePronunciation/raw/pairs19_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs19_09.mp3 b/aePronunciation/raw/pairs19_09.mp3 deleted file mode 100755 index 58e2081..0000000 Binary files a/aePronunciation/raw/pairs19_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs19_10.mp3 b/aePronunciation/raw/pairs19_10.mp3 deleted file mode 100755 index c5121c5..0000000 Binary files a/aePronunciation/raw/pairs19_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs19_11.mp3 b/aePronunciation/raw/pairs19_11.mp3 deleted file mode 100755 index c54fe71..0000000 Binary files a/aePronunciation/raw/pairs19_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs19_12.mp3 b/aePronunciation/raw/pairs19_12.mp3 deleted file mode 100755 index c058650..0000000 Binary files a/aePronunciation/raw/pairs19_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs19_13.mp3 b/aePronunciation/raw/pairs19_13.mp3 deleted file mode 100755 index f86c5de..0000000 Binary files a/aePronunciation/raw/pairs19_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs19_14.mp3 b/aePronunciation/raw/pairs19_14.mp3 deleted file mode 100755 index 24a4ae4..0000000 Binary files a/aePronunciation/raw/pairs19_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs19_15.mp3 b/aePronunciation/raw/pairs19_15.mp3 deleted file mode 100755 index 0e20346..0000000 Binary files a/aePronunciation/raw/pairs19_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs19_16.mp3 b/aePronunciation/raw/pairs19_16.mp3 deleted file mode 100755 index 22df929..0000000 Binary files a/aePronunciation/raw/pairs19_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs19_17.mp3 b/aePronunciation/raw/pairs19_17.mp3 deleted file mode 100755 index 4d7c23c..0000000 Binary files a/aePronunciation/raw/pairs19_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs19_18.mp3 b/aePronunciation/raw/pairs19_18.mp3 deleted file mode 100755 index dd40f15..0000000 Binary files a/aePronunciation/raw/pairs19_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs19_19.mp3 b/aePronunciation/raw/pairs19_19.mp3 deleted file mode 100755 index 5c10a79..0000000 Binary files a/aePronunciation/raw/pairs19_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs20_01.mp3 b/aePronunciation/raw/pairs20_01.mp3 deleted file mode 100755 index 88c72c2..0000000 Binary files a/aePronunciation/raw/pairs20_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs20_02.mp3 b/aePronunciation/raw/pairs20_02.mp3 deleted file mode 100755 index f24bcbc..0000000 Binary files a/aePronunciation/raw/pairs20_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs20_03.mp3 b/aePronunciation/raw/pairs20_03.mp3 deleted file mode 100755 index b721d26..0000000 Binary files a/aePronunciation/raw/pairs20_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs20_04.mp3 b/aePronunciation/raw/pairs20_04.mp3 deleted file mode 100755 index f3f1d6a..0000000 Binary files a/aePronunciation/raw/pairs20_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs20_05.mp3 b/aePronunciation/raw/pairs20_05.mp3 deleted file mode 100755 index bbb6b37..0000000 Binary files a/aePronunciation/raw/pairs20_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs20_06.mp3 b/aePronunciation/raw/pairs20_06.mp3 deleted file mode 100755 index 012024b..0000000 Binary files a/aePronunciation/raw/pairs20_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs20_07.mp3 b/aePronunciation/raw/pairs20_07.mp3 deleted file mode 100755 index 5a0112e..0000000 Binary files a/aePronunciation/raw/pairs20_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs20_08.mp3 b/aePronunciation/raw/pairs20_08.mp3 deleted file mode 100755 index 421e377..0000000 Binary files a/aePronunciation/raw/pairs20_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs20_09.mp3 b/aePronunciation/raw/pairs20_09.mp3 deleted file mode 100755 index 77e952d..0000000 Binary files a/aePronunciation/raw/pairs20_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs20_10.mp3 b/aePronunciation/raw/pairs20_10.mp3 deleted file mode 100755 index 64309fa..0000000 Binary files a/aePronunciation/raw/pairs20_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs20_11.mp3 b/aePronunciation/raw/pairs20_11.mp3 deleted file mode 100755 index e1bb642..0000000 Binary files a/aePronunciation/raw/pairs20_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs20_12.mp3 b/aePronunciation/raw/pairs20_12.mp3 deleted file mode 100755 index 18dfb47..0000000 Binary files a/aePronunciation/raw/pairs20_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs20_13.mp3 b/aePronunciation/raw/pairs20_13.mp3 deleted file mode 100755 index b87a839..0000000 Binary files a/aePronunciation/raw/pairs20_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs20_14.mp3 b/aePronunciation/raw/pairs20_14.mp3 deleted file mode 100755 index ca7c132..0000000 Binary files a/aePronunciation/raw/pairs20_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs20_15.mp3 b/aePronunciation/raw/pairs20_15.mp3 deleted file mode 100755 index 5e265c9..0000000 Binary files a/aePronunciation/raw/pairs20_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs20_16.mp3 b/aePronunciation/raw/pairs20_16.mp3 deleted file mode 100755 index a068fad..0000000 Binary files a/aePronunciation/raw/pairs20_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs20_17.mp3 b/aePronunciation/raw/pairs20_17.mp3 deleted file mode 100755 index f4f39e9..0000000 Binary files a/aePronunciation/raw/pairs20_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs20_18.mp3 b/aePronunciation/raw/pairs20_18.mp3 deleted file mode 100755 index 796ff16..0000000 Binary files a/aePronunciation/raw/pairs20_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs20_19.mp3 b/aePronunciation/raw/pairs20_19.mp3 deleted file mode 100755 index ae203cd..0000000 Binary files a/aePronunciation/raw/pairs20_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs21_01.mp3 b/aePronunciation/raw/pairs21_01.mp3 deleted file mode 100755 index d98accc..0000000 Binary files a/aePronunciation/raw/pairs21_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs21_02.mp3 b/aePronunciation/raw/pairs21_02.mp3 deleted file mode 100755 index 1477b31..0000000 Binary files a/aePronunciation/raw/pairs21_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs21_03.mp3 b/aePronunciation/raw/pairs21_03.mp3 deleted file mode 100755 index 404fe13..0000000 Binary files a/aePronunciation/raw/pairs21_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs21_04.mp3 b/aePronunciation/raw/pairs21_04.mp3 deleted file mode 100755 index 84bf3f7..0000000 Binary files a/aePronunciation/raw/pairs21_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs21_05.mp3 b/aePronunciation/raw/pairs21_05.mp3 deleted file mode 100755 index 9a8075a..0000000 Binary files a/aePronunciation/raw/pairs21_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs21_06.mp3 b/aePronunciation/raw/pairs21_06.mp3 deleted file mode 100755 index af1371b..0000000 Binary files a/aePronunciation/raw/pairs21_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs21_07.mp3 b/aePronunciation/raw/pairs21_07.mp3 deleted file mode 100755 index 06f5fdd..0000000 Binary files a/aePronunciation/raw/pairs21_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs21_08.mp3 b/aePronunciation/raw/pairs21_08.mp3 deleted file mode 100755 index b893415..0000000 Binary files a/aePronunciation/raw/pairs21_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs21_09.mp3 b/aePronunciation/raw/pairs21_09.mp3 deleted file mode 100755 index 62634ce..0000000 Binary files a/aePronunciation/raw/pairs21_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs21_10.mp3 b/aePronunciation/raw/pairs21_10.mp3 deleted file mode 100755 index 174ce1e..0000000 Binary files a/aePronunciation/raw/pairs21_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs21_11.mp3 b/aePronunciation/raw/pairs21_11.mp3 deleted file mode 100755 index a7bced7..0000000 Binary files a/aePronunciation/raw/pairs21_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs21_12.mp3 b/aePronunciation/raw/pairs21_12.mp3 deleted file mode 100755 index 9a57fc3..0000000 Binary files a/aePronunciation/raw/pairs21_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs21_13.mp3 b/aePronunciation/raw/pairs21_13.mp3 deleted file mode 100755 index ddcdfbf..0000000 Binary files a/aePronunciation/raw/pairs21_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs21_14.mp3 b/aePronunciation/raw/pairs21_14.mp3 deleted file mode 100755 index 6fcf633..0000000 Binary files a/aePronunciation/raw/pairs21_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs21_15.mp3 b/aePronunciation/raw/pairs21_15.mp3 deleted file mode 100755 index daee4cd..0000000 Binary files a/aePronunciation/raw/pairs21_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs21_16.mp3 b/aePronunciation/raw/pairs21_16.mp3 deleted file mode 100755 index 185ba9a..0000000 Binary files a/aePronunciation/raw/pairs21_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs21_17.mp3 b/aePronunciation/raw/pairs21_17.mp3 deleted file mode 100755 index d6ccf09..0000000 Binary files a/aePronunciation/raw/pairs21_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs21_18.mp3 b/aePronunciation/raw/pairs21_18.mp3 deleted file mode 100755 index b13d0c6..0000000 Binary files a/aePronunciation/raw/pairs21_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs21_19.mp3 b/aePronunciation/raw/pairs21_19.mp3 deleted file mode 100755 index ecc3e23..0000000 Binary files a/aePronunciation/raw/pairs21_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs22_01.mp3 b/aePronunciation/raw/pairs22_01.mp3 deleted file mode 100755 index 44e421a..0000000 Binary files a/aePronunciation/raw/pairs22_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs22_02.mp3 b/aePronunciation/raw/pairs22_02.mp3 deleted file mode 100755 index d45310a..0000000 Binary files a/aePronunciation/raw/pairs22_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs22_03.mp3 b/aePronunciation/raw/pairs22_03.mp3 deleted file mode 100755 index ad8e78c..0000000 Binary files a/aePronunciation/raw/pairs22_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs22_04.mp3 b/aePronunciation/raw/pairs22_04.mp3 deleted file mode 100755 index b56c493..0000000 Binary files a/aePronunciation/raw/pairs22_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs22_05.mp3 b/aePronunciation/raw/pairs22_05.mp3 deleted file mode 100755 index 08455ff..0000000 Binary files a/aePronunciation/raw/pairs22_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs22_06.mp3 b/aePronunciation/raw/pairs22_06.mp3 deleted file mode 100755 index 81cb184..0000000 Binary files a/aePronunciation/raw/pairs22_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs22_07.mp3 b/aePronunciation/raw/pairs22_07.mp3 deleted file mode 100755 index c96802c..0000000 Binary files a/aePronunciation/raw/pairs22_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs22_08.mp3 b/aePronunciation/raw/pairs22_08.mp3 deleted file mode 100755 index 33f8ef3..0000000 Binary files a/aePronunciation/raw/pairs22_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs22_09.mp3 b/aePronunciation/raw/pairs22_09.mp3 deleted file mode 100755 index 5a782c6..0000000 Binary files a/aePronunciation/raw/pairs22_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs22_10.mp3 b/aePronunciation/raw/pairs22_10.mp3 deleted file mode 100755 index 88ccbed..0000000 Binary files a/aePronunciation/raw/pairs22_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs22_11.mp3 b/aePronunciation/raw/pairs22_11.mp3 deleted file mode 100755 index c31f92d..0000000 Binary files a/aePronunciation/raw/pairs22_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs22_12.mp3 b/aePronunciation/raw/pairs22_12.mp3 deleted file mode 100755 index ceee5be..0000000 Binary files a/aePronunciation/raw/pairs22_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs22_13.mp3 b/aePronunciation/raw/pairs22_13.mp3 deleted file mode 100755 index 7504d27..0000000 Binary files a/aePronunciation/raw/pairs22_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs22_14.mp3 b/aePronunciation/raw/pairs22_14.mp3 deleted file mode 100755 index 290d63a..0000000 Binary files a/aePronunciation/raw/pairs22_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs22_15.mp3 b/aePronunciation/raw/pairs22_15.mp3 deleted file mode 100755 index eb45d2d..0000000 Binary files a/aePronunciation/raw/pairs22_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs22_16.mp3 b/aePronunciation/raw/pairs22_16.mp3 deleted file mode 100755 index eae6b30..0000000 Binary files a/aePronunciation/raw/pairs22_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs22_17.mp3 b/aePronunciation/raw/pairs22_17.mp3 deleted file mode 100755 index c894c22..0000000 Binary files a/aePronunciation/raw/pairs22_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs22_18.mp3 b/aePronunciation/raw/pairs22_18.mp3 deleted file mode 100755 index 8aee1a4..0000000 Binary files a/aePronunciation/raw/pairs22_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs22_19.mp3 b/aePronunciation/raw/pairs22_19.mp3 deleted file mode 100755 index 15506f5..0000000 Binary files a/aePronunciation/raw/pairs22_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs23_01.mp3 b/aePronunciation/raw/pairs23_01.mp3 deleted file mode 100755 index 20f97bf..0000000 Binary files a/aePronunciation/raw/pairs23_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs23_02.mp3 b/aePronunciation/raw/pairs23_02.mp3 deleted file mode 100755 index c9cc689..0000000 Binary files a/aePronunciation/raw/pairs23_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs23_03.mp3 b/aePronunciation/raw/pairs23_03.mp3 deleted file mode 100755 index 09774c8..0000000 Binary files a/aePronunciation/raw/pairs23_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs23_04.mp3 b/aePronunciation/raw/pairs23_04.mp3 deleted file mode 100755 index aebca52..0000000 Binary files a/aePronunciation/raw/pairs23_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs23_05.mp3 b/aePronunciation/raw/pairs23_05.mp3 deleted file mode 100755 index bade771..0000000 Binary files a/aePronunciation/raw/pairs23_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs23_06.mp3 b/aePronunciation/raw/pairs23_06.mp3 deleted file mode 100755 index 9892c14..0000000 Binary files a/aePronunciation/raw/pairs23_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs23_07.mp3 b/aePronunciation/raw/pairs23_07.mp3 deleted file mode 100755 index c1d1050..0000000 Binary files a/aePronunciation/raw/pairs23_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs23_08.mp3 b/aePronunciation/raw/pairs23_08.mp3 deleted file mode 100755 index 093e8b1..0000000 Binary files a/aePronunciation/raw/pairs23_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs23_09.mp3 b/aePronunciation/raw/pairs23_09.mp3 deleted file mode 100755 index b279139..0000000 Binary files a/aePronunciation/raw/pairs23_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs23_10.mp3 b/aePronunciation/raw/pairs23_10.mp3 deleted file mode 100755 index c4b0f11..0000000 Binary files a/aePronunciation/raw/pairs23_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs23_11.mp3 b/aePronunciation/raw/pairs23_11.mp3 deleted file mode 100755 index 14e1835..0000000 Binary files a/aePronunciation/raw/pairs23_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs23_12.mp3 b/aePronunciation/raw/pairs23_12.mp3 deleted file mode 100755 index b56465b..0000000 Binary files a/aePronunciation/raw/pairs23_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs23_13.mp3 b/aePronunciation/raw/pairs23_13.mp3 deleted file mode 100755 index 5a95760..0000000 Binary files a/aePronunciation/raw/pairs23_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs23_14.mp3 b/aePronunciation/raw/pairs23_14.mp3 deleted file mode 100755 index beb1bb3..0000000 Binary files a/aePronunciation/raw/pairs23_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs23_15.mp3 b/aePronunciation/raw/pairs23_15.mp3 deleted file mode 100755 index 5bd68c5..0000000 Binary files a/aePronunciation/raw/pairs23_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs23_16.mp3 b/aePronunciation/raw/pairs23_16.mp3 deleted file mode 100755 index 49eaf71..0000000 Binary files a/aePronunciation/raw/pairs23_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs23_17.mp3 b/aePronunciation/raw/pairs23_17.mp3 deleted file mode 100755 index 6b4334e..0000000 Binary files a/aePronunciation/raw/pairs23_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs23_18.mp3 b/aePronunciation/raw/pairs23_18.mp3 deleted file mode 100755 index dfd39b3..0000000 Binary files a/aePronunciation/raw/pairs23_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs23_19.mp3 b/aePronunciation/raw/pairs23_19.mp3 deleted file mode 100755 index e58e4de..0000000 Binary files a/aePronunciation/raw/pairs23_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs24_01.mp3 b/aePronunciation/raw/pairs24_01.mp3 deleted file mode 100755 index 6250d22..0000000 Binary files a/aePronunciation/raw/pairs24_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs24_02.mp3 b/aePronunciation/raw/pairs24_02.mp3 deleted file mode 100755 index d99392a..0000000 Binary files a/aePronunciation/raw/pairs24_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs24_03.mp3 b/aePronunciation/raw/pairs24_03.mp3 deleted file mode 100755 index b0ddafc..0000000 Binary files a/aePronunciation/raw/pairs24_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs24_04.mp3 b/aePronunciation/raw/pairs24_04.mp3 deleted file mode 100755 index 02dbc20..0000000 Binary files a/aePronunciation/raw/pairs24_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs24_05.mp3 b/aePronunciation/raw/pairs24_05.mp3 deleted file mode 100755 index 1c3d78d..0000000 Binary files a/aePronunciation/raw/pairs24_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs24_06.mp3 b/aePronunciation/raw/pairs24_06.mp3 deleted file mode 100755 index 2afaff0..0000000 Binary files a/aePronunciation/raw/pairs24_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs24_07.mp3 b/aePronunciation/raw/pairs24_07.mp3 deleted file mode 100755 index 053bd6e..0000000 Binary files a/aePronunciation/raw/pairs24_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs24_08.mp3 b/aePronunciation/raw/pairs24_08.mp3 deleted file mode 100755 index 2831747..0000000 Binary files a/aePronunciation/raw/pairs24_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs24_09.mp3 b/aePronunciation/raw/pairs24_09.mp3 deleted file mode 100755 index 311caa1..0000000 Binary files a/aePronunciation/raw/pairs24_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs24_10.mp3 b/aePronunciation/raw/pairs24_10.mp3 deleted file mode 100755 index 9e1f2d2..0000000 Binary files a/aePronunciation/raw/pairs24_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs24_11.mp3 b/aePronunciation/raw/pairs24_11.mp3 deleted file mode 100755 index 4ff45de..0000000 Binary files a/aePronunciation/raw/pairs24_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs24_12.mp3 b/aePronunciation/raw/pairs24_12.mp3 deleted file mode 100755 index dbc2b95..0000000 Binary files a/aePronunciation/raw/pairs24_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs24_13.mp3 b/aePronunciation/raw/pairs24_13.mp3 deleted file mode 100755 index 061de77..0000000 Binary files a/aePronunciation/raw/pairs24_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs24_14.mp3 b/aePronunciation/raw/pairs24_14.mp3 deleted file mode 100755 index 25a125f..0000000 Binary files a/aePronunciation/raw/pairs24_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs24_15.mp3 b/aePronunciation/raw/pairs24_15.mp3 deleted file mode 100755 index b13aa9b..0000000 Binary files a/aePronunciation/raw/pairs24_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs24_16.mp3 b/aePronunciation/raw/pairs24_16.mp3 deleted file mode 100755 index 9309912..0000000 Binary files a/aePronunciation/raw/pairs24_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs24_17.mp3 b/aePronunciation/raw/pairs24_17.mp3 deleted file mode 100755 index ade03cb..0000000 Binary files a/aePronunciation/raw/pairs24_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs24_18.mp3 b/aePronunciation/raw/pairs24_18.mp3 deleted file mode 100755 index e773897..0000000 Binary files a/aePronunciation/raw/pairs24_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs24_19.mp3 b/aePronunciation/raw/pairs24_19.mp3 deleted file mode 100755 index 1b1854b..0000000 Binary files a/aePronunciation/raw/pairs24_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs25_01.mp3 b/aePronunciation/raw/pairs25_01.mp3 deleted file mode 100755 index ddb5d59..0000000 Binary files a/aePronunciation/raw/pairs25_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs25_02.mp3 b/aePronunciation/raw/pairs25_02.mp3 deleted file mode 100755 index 53bc2d3..0000000 Binary files a/aePronunciation/raw/pairs25_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs25_03.mp3 b/aePronunciation/raw/pairs25_03.mp3 deleted file mode 100755 index 4e12b4b..0000000 Binary files a/aePronunciation/raw/pairs25_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs25_04.mp3 b/aePronunciation/raw/pairs25_04.mp3 deleted file mode 100755 index be9965f..0000000 Binary files a/aePronunciation/raw/pairs25_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs25_05.mp3 b/aePronunciation/raw/pairs25_05.mp3 deleted file mode 100755 index a8ca497..0000000 Binary files a/aePronunciation/raw/pairs25_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs25_06.mp3 b/aePronunciation/raw/pairs25_06.mp3 deleted file mode 100755 index febc09d..0000000 Binary files a/aePronunciation/raw/pairs25_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs25_07.mp3 b/aePronunciation/raw/pairs25_07.mp3 deleted file mode 100755 index 17420f6..0000000 Binary files a/aePronunciation/raw/pairs25_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs25_08.mp3 b/aePronunciation/raw/pairs25_08.mp3 deleted file mode 100755 index 6d07024..0000000 Binary files a/aePronunciation/raw/pairs25_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs25_09.mp3 b/aePronunciation/raw/pairs25_09.mp3 deleted file mode 100755 index ce13bf1..0000000 Binary files a/aePronunciation/raw/pairs25_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs25_10.mp3 b/aePronunciation/raw/pairs25_10.mp3 deleted file mode 100755 index 7f6c106..0000000 Binary files a/aePronunciation/raw/pairs25_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs25_11.mp3 b/aePronunciation/raw/pairs25_11.mp3 deleted file mode 100755 index 8d72f9f..0000000 Binary files a/aePronunciation/raw/pairs25_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs25_12.mp3 b/aePronunciation/raw/pairs25_12.mp3 deleted file mode 100755 index 2a056f1..0000000 Binary files a/aePronunciation/raw/pairs25_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs25_13.mp3 b/aePronunciation/raw/pairs25_13.mp3 deleted file mode 100755 index 600848a..0000000 Binary files a/aePronunciation/raw/pairs25_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs25_14.mp3 b/aePronunciation/raw/pairs25_14.mp3 deleted file mode 100755 index c5a795b..0000000 Binary files a/aePronunciation/raw/pairs25_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs25_15.mp3 b/aePronunciation/raw/pairs25_15.mp3 deleted file mode 100755 index 887b374..0000000 Binary files a/aePronunciation/raw/pairs25_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs25_16.mp3 b/aePronunciation/raw/pairs25_16.mp3 deleted file mode 100755 index 0dc6121..0000000 Binary files a/aePronunciation/raw/pairs25_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs25_17.mp3 b/aePronunciation/raw/pairs25_17.mp3 deleted file mode 100755 index 93a892b..0000000 Binary files a/aePronunciation/raw/pairs25_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs25_18.mp3 b/aePronunciation/raw/pairs25_18.mp3 deleted file mode 100755 index c7c8f1c..0000000 Binary files a/aePronunciation/raw/pairs25_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs25_19.mp3 b/aePronunciation/raw/pairs25_19.mp3 deleted file mode 100755 index 19c775a..0000000 Binary files a/aePronunciation/raw/pairs25_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs26_01.mp3 b/aePronunciation/raw/pairs26_01.mp3 deleted file mode 100755 index 6fc4338..0000000 Binary files a/aePronunciation/raw/pairs26_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs26_02.mp3 b/aePronunciation/raw/pairs26_02.mp3 deleted file mode 100755 index 1d46fc2..0000000 Binary files a/aePronunciation/raw/pairs26_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs26_03.mp3 b/aePronunciation/raw/pairs26_03.mp3 deleted file mode 100755 index a50767c..0000000 Binary files a/aePronunciation/raw/pairs26_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs26_04.mp3 b/aePronunciation/raw/pairs26_04.mp3 deleted file mode 100755 index 6d132a4..0000000 Binary files a/aePronunciation/raw/pairs26_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs26_05.mp3 b/aePronunciation/raw/pairs26_05.mp3 deleted file mode 100755 index b6bda37..0000000 Binary files a/aePronunciation/raw/pairs26_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs26_06.mp3 b/aePronunciation/raw/pairs26_06.mp3 deleted file mode 100755 index 13e9629..0000000 Binary files a/aePronunciation/raw/pairs26_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs26_07.mp3 b/aePronunciation/raw/pairs26_07.mp3 deleted file mode 100755 index 7c8b5a5..0000000 Binary files a/aePronunciation/raw/pairs26_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs26_08.mp3 b/aePronunciation/raw/pairs26_08.mp3 deleted file mode 100755 index 515c396..0000000 Binary files a/aePronunciation/raw/pairs26_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs26_09.mp3 b/aePronunciation/raw/pairs26_09.mp3 deleted file mode 100755 index c63ec1a..0000000 Binary files a/aePronunciation/raw/pairs26_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs26_10.mp3 b/aePronunciation/raw/pairs26_10.mp3 deleted file mode 100755 index 811b36f..0000000 Binary files a/aePronunciation/raw/pairs26_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs26_11.mp3 b/aePronunciation/raw/pairs26_11.mp3 deleted file mode 100755 index 0986500..0000000 Binary files a/aePronunciation/raw/pairs26_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs26_12.mp3 b/aePronunciation/raw/pairs26_12.mp3 deleted file mode 100755 index cbc62c8..0000000 Binary files a/aePronunciation/raw/pairs26_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs26_13.mp3 b/aePronunciation/raw/pairs26_13.mp3 deleted file mode 100755 index c27fc26..0000000 Binary files a/aePronunciation/raw/pairs26_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs26_14.mp3 b/aePronunciation/raw/pairs26_14.mp3 deleted file mode 100755 index 9527f34..0000000 Binary files a/aePronunciation/raw/pairs26_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs26_15.mp3 b/aePronunciation/raw/pairs26_15.mp3 deleted file mode 100755 index 33f9481..0000000 Binary files a/aePronunciation/raw/pairs26_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs26_16.mp3 b/aePronunciation/raw/pairs26_16.mp3 deleted file mode 100755 index 76c6924..0000000 Binary files a/aePronunciation/raw/pairs26_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs26_17.mp3 b/aePronunciation/raw/pairs26_17.mp3 deleted file mode 100755 index 4aab841..0000000 Binary files a/aePronunciation/raw/pairs26_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs26_18.mp3 b/aePronunciation/raw/pairs26_18.mp3 deleted file mode 100755 index f722d69..0000000 Binary files a/aePronunciation/raw/pairs26_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs26_19.mp3 b/aePronunciation/raw/pairs26_19.mp3 deleted file mode 100755 index 2eff860..0000000 Binary files a/aePronunciation/raw/pairs26_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs27_01.mp3 b/aePronunciation/raw/pairs27_01.mp3 deleted file mode 100755 index 96e20f6..0000000 Binary files a/aePronunciation/raw/pairs27_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs27_02.mp3 b/aePronunciation/raw/pairs27_02.mp3 deleted file mode 100755 index b8fee64..0000000 Binary files a/aePronunciation/raw/pairs27_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs27_03.mp3 b/aePronunciation/raw/pairs27_03.mp3 deleted file mode 100755 index 3f11bb2..0000000 Binary files a/aePronunciation/raw/pairs27_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs27_04.mp3 b/aePronunciation/raw/pairs27_04.mp3 deleted file mode 100755 index f0c1f46..0000000 Binary files a/aePronunciation/raw/pairs27_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs27_05.mp3 b/aePronunciation/raw/pairs27_05.mp3 deleted file mode 100755 index 3670bbc..0000000 Binary files a/aePronunciation/raw/pairs27_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs27_06.mp3 b/aePronunciation/raw/pairs27_06.mp3 deleted file mode 100755 index 30eedd2..0000000 Binary files a/aePronunciation/raw/pairs27_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs27_07.mp3 b/aePronunciation/raw/pairs27_07.mp3 deleted file mode 100755 index 874ebc8..0000000 Binary files a/aePronunciation/raw/pairs27_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs27_08.mp3 b/aePronunciation/raw/pairs27_08.mp3 deleted file mode 100755 index 27c9803..0000000 Binary files a/aePronunciation/raw/pairs27_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs27_09.mp3 b/aePronunciation/raw/pairs27_09.mp3 deleted file mode 100755 index d9585dc..0000000 Binary files a/aePronunciation/raw/pairs27_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs27_10.mp3 b/aePronunciation/raw/pairs27_10.mp3 deleted file mode 100755 index f90ca0b..0000000 Binary files a/aePronunciation/raw/pairs27_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs27_11.mp3 b/aePronunciation/raw/pairs27_11.mp3 deleted file mode 100755 index 604d24b..0000000 Binary files a/aePronunciation/raw/pairs27_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs27_12.mp3 b/aePronunciation/raw/pairs27_12.mp3 deleted file mode 100755 index 2833660..0000000 Binary files a/aePronunciation/raw/pairs27_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs27_13.mp3 b/aePronunciation/raw/pairs27_13.mp3 deleted file mode 100755 index 36d0ddd..0000000 Binary files a/aePronunciation/raw/pairs27_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs27_14.mp3 b/aePronunciation/raw/pairs27_14.mp3 deleted file mode 100755 index db00467..0000000 Binary files a/aePronunciation/raw/pairs27_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs27_15.mp3 b/aePronunciation/raw/pairs27_15.mp3 deleted file mode 100755 index 0e43f5f..0000000 Binary files a/aePronunciation/raw/pairs27_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs27_16.mp3 b/aePronunciation/raw/pairs27_16.mp3 deleted file mode 100755 index 43d9bb7..0000000 Binary files a/aePronunciation/raw/pairs27_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs27_17.mp3 b/aePronunciation/raw/pairs27_17.mp3 deleted file mode 100755 index fe24ec0..0000000 Binary files a/aePronunciation/raw/pairs27_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs27_18.mp3 b/aePronunciation/raw/pairs27_18.mp3 deleted file mode 100755 index 068e09d..0000000 Binary files a/aePronunciation/raw/pairs27_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs27_19.mp3 b/aePronunciation/raw/pairs27_19.mp3 deleted file mode 100755 index 6ca141b..0000000 Binary files a/aePronunciation/raw/pairs27_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs28_01.mp3 b/aePronunciation/raw/pairs28_01.mp3 deleted file mode 100755 index 1541ca1..0000000 Binary files a/aePronunciation/raw/pairs28_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs28_02.mp3 b/aePronunciation/raw/pairs28_02.mp3 deleted file mode 100755 index 64f0335..0000000 Binary files a/aePronunciation/raw/pairs28_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs28_03.mp3 b/aePronunciation/raw/pairs28_03.mp3 deleted file mode 100755 index a4f69bf..0000000 Binary files a/aePronunciation/raw/pairs28_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs28_04.mp3 b/aePronunciation/raw/pairs28_04.mp3 deleted file mode 100755 index c7b575b..0000000 Binary files a/aePronunciation/raw/pairs28_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs28_05.mp3 b/aePronunciation/raw/pairs28_05.mp3 deleted file mode 100755 index 78ccdc1..0000000 Binary files a/aePronunciation/raw/pairs28_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs28_06.mp3 b/aePronunciation/raw/pairs28_06.mp3 deleted file mode 100755 index d7a64aa..0000000 Binary files a/aePronunciation/raw/pairs28_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs28_07.mp3 b/aePronunciation/raw/pairs28_07.mp3 deleted file mode 100755 index 3d0a4f0..0000000 Binary files a/aePronunciation/raw/pairs28_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs28_08.mp3 b/aePronunciation/raw/pairs28_08.mp3 deleted file mode 100755 index 189da5c..0000000 Binary files a/aePronunciation/raw/pairs28_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs28_09.mp3 b/aePronunciation/raw/pairs28_09.mp3 deleted file mode 100755 index b131089..0000000 Binary files a/aePronunciation/raw/pairs28_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs28_10.mp3 b/aePronunciation/raw/pairs28_10.mp3 deleted file mode 100755 index b0fced5..0000000 Binary files a/aePronunciation/raw/pairs28_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs28_11.mp3 b/aePronunciation/raw/pairs28_11.mp3 deleted file mode 100755 index 91088a2..0000000 Binary files a/aePronunciation/raw/pairs28_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs28_12.mp3 b/aePronunciation/raw/pairs28_12.mp3 deleted file mode 100755 index f3825ad..0000000 Binary files a/aePronunciation/raw/pairs28_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs28_13.mp3 b/aePronunciation/raw/pairs28_13.mp3 deleted file mode 100755 index 6108e4c..0000000 Binary files a/aePronunciation/raw/pairs28_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs28_14.mp3 b/aePronunciation/raw/pairs28_14.mp3 deleted file mode 100755 index 981afb7..0000000 Binary files a/aePronunciation/raw/pairs28_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs28_15.mp3 b/aePronunciation/raw/pairs28_15.mp3 deleted file mode 100755 index 6ed50cb..0000000 Binary files a/aePronunciation/raw/pairs28_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs28_16.mp3 b/aePronunciation/raw/pairs28_16.mp3 deleted file mode 100755 index 47a7d53..0000000 Binary files a/aePronunciation/raw/pairs28_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs28_17.mp3 b/aePronunciation/raw/pairs28_17.mp3 deleted file mode 100755 index 84916e8..0000000 Binary files a/aePronunciation/raw/pairs28_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs28_18.mp3 b/aePronunciation/raw/pairs28_18.mp3 deleted file mode 100755 index 3e0ffb3..0000000 Binary files a/aePronunciation/raw/pairs28_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs28_19.mp3 b/aePronunciation/raw/pairs28_19.mp3 deleted file mode 100755 index 3c1f9c4..0000000 Binary files a/aePronunciation/raw/pairs28_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs29_01.mp3 b/aePronunciation/raw/pairs29_01.mp3 deleted file mode 100755 index f56b7e3..0000000 Binary files a/aePronunciation/raw/pairs29_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs29_02.mp3 b/aePronunciation/raw/pairs29_02.mp3 deleted file mode 100755 index a7bc7ce..0000000 Binary files a/aePronunciation/raw/pairs29_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs29_03.mp3 b/aePronunciation/raw/pairs29_03.mp3 deleted file mode 100755 index b5af50c..0000000 Binary files a/aePronunciation/raw/pairs29_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs29_04.mp3 b/aePronunciation/raw/pairs29_04.mp3 deleted file mode 100755 index ab5b377..0000000 Binary files a/aePronunciation/raw/pairs29_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs29_05.mp3 b/aePronunciation/raw/pairs29_05.mp3 deleted file mode 100755 index 7145562..0000000 Binary files a/aePronunciation/raw/pairs29_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs29_06.mp3 b/aePronunciation/raw/pairs29_06.mp3 deleted file mode 100755 index f08288f..0000000 Binary files a/aePronunciation/raw/pairs29_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs29_07.mp3 b/aePronunciation/raw/pairs29_07.mp3 deleted file mode 100755 index 05a2b96..0000000 Binary files a/aePronunciation/raw/pairs29_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs29_08.mp3 b/aePronunciation/raw/pairs29_08.mp3 deleted file mode 100755 index bb68008..0000000 Binary files a/aePronunciation/raw/pairs29_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs29_09.mp3 b/aePronunciation/raw/pairs29_09.mp3 deleted file mode 100755 index 1341799..0000000 Binary files a/aePronunciation/raw/pairs29_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs29_10.mp3 b/aePronunciation/raw/pairs29_10.mp3 deleted file mode 100755 index c38212c..0000000 Binary files a/aePronunciation/raw/pairs29_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs29_11.mp3 b/aePronunciation/raw/pairs29_11.mp3 deleted file mode 100755 index 78e2b30..0000000 Binary files a/aePronunciation/raw/pairs29_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs29_12.mp3 b/aePronunciation/raw/pairs29_12.mp3 deleted file mode 100755 index c9df38a..0000000 Binary files a/aePronunciation/raw/pairs29_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs29_13.mp3 b/aePronunciation/raw/pairs29_13.mp3 deleted file mode 100755 index c9c9e41..0000000 Binary files a/aePronunciation/raw/pairs29_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs29_14.mp3 b/aePronunciation/raw/pairs29_14.mp3 deleted file mode 100755 index 807c213..0000000 Binary files a/aePronunciation/raw/pairs29_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs29_15.mp3 b/aePronunciation/raw/pairs29_15.mp3 deleted file mode 100755 index aa5fda0..0000000 Binary files a/aePronunciation/raw/pairs29_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs29_16.mp3 b/aePronunciation/raw/pairs29_16.mp3 deleted file mode 100755 index a89d497..0000000 Binary files a/aePronunciation/raw/pairs29_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs29_17.mp3 b/aePronunciation/raw/pairs29_17.mp3 deleted file mode 100755 index 6cd8f43..0000000 Binary files a/aePronunciation/raw/pairs29_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs29_18.mp3 b/aePronunciation/raw/pairs29_18.mp3 deleted file mode 100755 index 4e1d4c3..0000000 Binary files a/aePronunciation/raw/pairs29_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs29_19.mp3 b/aePronunciation/raw/pairs29_19.mp3 deleted file mode 100755 index 8b2f666..0000000 Binary files a/aePronunciation/raw/pairs29_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs30_01.mp3 b/aePronunciation/raw/pairs30_01.mp3 deleted file mode 100755 index 9c526e6..0000000 Binary files a/aePronunciation/raw/pairs30_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs30_02.mp3 b/aePronunciation/raw/pairs30_02.mp3 deleted file mode 100755 index 45d1d3a..0000000 Binary files a/aePronunciation/raw/pairs30_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs30_03.mp3 b/aePronunciation/raw/pairs30_03.mp3 deleted file mode 100755 index a015d55..0000000 Binary files a/aePronunciation/raw/pairs30_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs30_04.mp3 b/aePronunciation/raw/pairs30_04.mp3 deleted file mode 100755 index e78839c..0000000 Binary files a/aePronunciation/raw/pairs30_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs30_05.mp3 b/aePronunciation/raw/pairs30_05.mp3 deleted file mode 100755 index 4b53877..0000000 Binary files a/aePronunciation/raw/pairs30_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs30_06.mp3 b/aePronunciation/raw/pairs30_06.mp3 deleted file mode 100755 index ac79891..0000000 Binary files a/aePronunciation/raw/pairs30_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs30_07.mp3 b/aePronunciation/raw/pairs30_07.mp3 deleted file mode 100755 index feff2be..0000000 Binary files a/aePronunciation/raw/pairs30_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs30_08.mp3 b/aePronunciation/raw/pairs30_08.mp3 deleted file mode 100755 index 2211bcc..0000000 Binary files a/aePronunciation/raw/pairs30_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs30_09.mp3 b/aePronunciation/raw/pairs30_09.mp3 deleted file mode 100755 index 3cf992a..0000000 Binary files a/aePronunciation/raw/pairs30_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs30_10.mp3 b/aePronunciation/raw/pairs30_10.mp3 deleted file mode 100755 index c99397b..0000000 Binary files a/aePronunciation/raw/pairs30_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs30_11.mp3 b/aePronunciation/raw/pairs30_11.mp3 deleted file mode 100755 index ced34f1..0000000 Binary files a/aePronunciation/raw/pairs30_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs30_12.mp3 b/aePronunciation/raw/pairs30_12.mp3 deleted file mode 100755 index f05e5b7..0000000 Binary files a/aePronunciation/raw/pairs30_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs30_13.mp3 b/aePronunciation/raw/pairs30_13.mp3 deleted file mode 100755 index 85b14bf..0000000 Binary files a/aePronunciation/raw/pairs30_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs30_14.mp3 b/aePronunciation/raw/pairs30_14.mp3 deleted file mode 100755 index 108017d..0000000 Binary files a/aePronunciation/raw/pairs30_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs30_15.mp3 b/aePronunciation/raw/pairs30_15.mp3 deleted file mode 100755 index 44aa667..0000000 Binary files a/aePronunciation/raw/pairs30_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs30_16.mp3 b/aePronunciation/raw/pairs30_16.mp3 deleted file mode 100755 index 48c5fe2..0000000 Binary files a/aePronunciation/raw/pairs30_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs30_17.mp3 b/aePronunciation/raw/pairs30_17.mp3 deleted file mode 100755 index d123267..0000000 Binary files a/aePronunciation/raw/pairs30_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs30_18.mp3 b/aePronunciation/raw/pairs30_18.mp3 deleted file mode 100755 index c02da19..0000000 Binary files a/aePronunciation/raw/pairs30_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs30_19.mp3 b/aePronunciation/raw/pairs30_19.mp3 deleted file mode 100755 index c5b8603..0000000 Binary files a/aePronunciation/raw/pairs30_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs31_01.mp3 b/aePronunciation/raw/pairs31_01.mp3 deleted file mode 100755 index fdc6ead..0000000 Binary files a/aePronunciation/raw/pairs31_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs31_02.mp3 b/aePronunciation/raw/pairs31_02.mp3 deleted file mode 100755 index 494f808..0000000 Binary files a/aePronunciation/raw/pairs31_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs31_03.mp3 b/aePronunciation/raw/pairs31_03.mp3 deleted file mode 100755 index e2f1499..0000000 Binary files a/aePronunciation/raw/pairs31_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs31_04.mp3 b/aePronunciation/raw/pairs31_04.mp3 deleted file mode 100755 index 1e019b6..0000000 Binary files a/aePronunciation/raw/pairs31_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs31_05.mp3 b/aePronunciation/raw/pairs31_05.mp3 deleted file mode 100755 index d34c746..0000000 Binary files a/aePronunciation/raw/pairs31_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs31_06.mp3 b/aePronunciation/raw/pairs31_06.mp3 deleted file mode 100755 index 6a52f2a..0000000 Binary files a/aePronunciation/raw/pairs31_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs31_07.mp3 b/aePronunciation/raw/pairs31_07.mp3 deleted file mode 100755 index 4e63661..0000000 Binary files a/aePronunciation/raw/pairs31_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs31_08.mp3 b/aePronunciation/raw/pairs31_08.mp3 deleted file mode 100755 index 0a8711f..0000000 Binary files a/aePronunciation/raw/pairs31_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs31_09.mp3 b/aePronunciation/raw/pairs31_09.mp3 deleted file mode 100755 index bfd7221..0000000 Binary files a/aePronunciation/raw/pairs31_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs31_10.mp3 b/aePronunciation/raw/pairs31_10.mp3 deleted file mode 100755 index 5a7c5aa..0000000 Binary files a/aePronunciation/raw/pairs31_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs31_11.mp3 b/aePronunciation/raw/pairs31_11.mp3 deleted file mode 100755 index 1ef76ea..0000000 Binary files a/aePronunciation/raw/pairs31_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs31_12.mp3 b/aePronunciation/raw/pairs31_12.mp3 deleted file mode 100755 index cdf5286..0000000 Binary files a/aePronunciation/raw/pairs31_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs31_13.mp3 b/aePronunciation/raw/pairs31_13.mp3 deleted file mode 100755 index 9e7312a..0000000 Binary files a/aePronunciation/raw/pairs31_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs31_14.mp3 b/aePronunciation/raw/pairs31_14.mp3 deleted file mode 100755 index 9f15f2f..0000000 Binary files a/aePronunciation/raw/pairs31_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs31_15.mp3 b/aePronunciation/raw/pairs31_15.mp3 deleted file mode 100755 index f572f20..0000000 Binary files a/aePronunciation/raw/pairs31_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs31_16.mp3 b/aePronunciation/raw/pairs31_16.mp3 deleted file mode 100755 index 0aef244..0000000 Binary files a/aePronunciation/raw/pairs31_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs31_17.mp3 b/aePronunciation/raw/pairs31_17.mp3 deleted file mode 100755 index 38d0518..0000000 Binary files a/aePronunciation/raw/pairs31_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs31_18.mp3 b/aePronunciation/raw/pairs31_18.mp3 deleted file mode 100755 index d8356bf..0000000 Binary files a/aePronunciation/raw/pairs31_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs31_19.mp3 b/aePronunciation/raw/pairs31_19.mp3 deleted file mode 100755 index 709f6ec..0000000 Binary files a/aePronunciation/raw/pairs31_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs32_01.mp3 b/aePronunciation/raw/pairs32_01.mp3 deleted file mode 100755 index 0c4a4fd..0000000 Binary files a/aePronunciation/raw/pairs32_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs32_02.mp3 b/aePronunciation/raw/pairs32_02.mp3 deleted file mode 100755 index ad75bc9..0000000 Binary files a/aePronunciation/raw/pairs32_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs32_03.mp3 b/aePronunciation/raw/pairs32_03.mp3 deleted file mode 100755 index 0d1e06a..0000000 Binary files a/aePronunciation/raw/pairs32_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs32_04.mp3 b/aePronunciation/raw/pairs32_04.mp3 deleted file mode 100755 index 21249c2..0000000 Binary files a/aePronunciation/raw/pairs32_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs32_05.mp3 b/aePronunciation/raw/pairs32_05.mp3 deleted file mode 100755 index 1bf1547..0000000 Binary files a/aePronunciation/raw/pairs32_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs32_06.mp3 b/aePronunciation/raw/pairs32_06.mp3 deleted file mode 100755 index 52e8707..0000000 Binary files a/aePronunciation/raw/pairs32_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs32_07.mp3 b/aePronunciation/raw/pairs32_07.mp3 deleted file mode 100755 index 500ee21..0000000 Binary files a/aePronunciation/raw/pairs32_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs32_08.mp3 b/aePronunciation/raw/pairs32_08.mp3 deleted file mode 100755 index f65dd8a..0000000 Binary files a/aePronunciation/raw/pairs32_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs32_09.mp3 b/aePronunciation/raw/pairs32_09.mp3 deleted file mode 100755 index 098592b..0000000 Binary files a/aePronunciation/raw/pairs32_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs32_10.mp3 b/aePronunciation/raw/pairs32_10.mp3 deleted file mode 100755 index ff1ac0a..0000000 Binary files a/aePronunciation/raw/pairs32_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs32_11.mp3 b/aePronunciation/raw/pairs32_11.mp3 deleted file mode 100755 index 50b506d..0000000 Binary files a/aePronunciation/raw/pairs32_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs32_12.mp3 b/aePronunciation/raw/pairs32_12.mp3 deleted file mode 100755 index 1f8ff7d..0000000 Binary files a/aePronunciation/raw/pairs32_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs32_13.mp3 b/aePronunciation/raw/pairs32_13.mp3 deleted file mode 100755 index ac5b0ed..0000000 Binary files a/aePronunciation/raw/pairs32_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs32_14.mp3 b/aePronunciation/raw/pairs32_14.mp3 deleted file mode 100755 index 0aafcdd..0000000 Binary files a/aePronunciation/raw/pairs32_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs32_15.mp3 b/aePronunciation/raw/pairs32_15.mp3 deleted file mode 100755 index 76c3e59..0000000 Binary files a/aePronunciation/raw/pairs32_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs32_16.mp3 b/aePronunciation/raw/pairs32_16.mp3 deleted file mode 100755 index 3096bfb..0000000 Binary files a/aePronunciation/raw/pairs32_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs32_17.mp3 b/aePronunciation/raw/pairs32_17.mp3 deleted file mode 100755 index 3ac672d..0000000 Binary files a/aePronunciation/raw/pairs32_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs32_18.mp3 b/aePronunciation/raw/pairs32_18.mp3 deleted file mode 100755 index f8701cb..0000000 Binary files a/aePronunciation/raw/pairs32_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs32_19.mp3 b/aePronunciation/raw/pairs32_19.mp3 deleted file mode 100755 index e390b3f..0000000 Binary files a/aePronunciation/raw/pairs32_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs33_01.mp3 b/aePronunciation/raw/pairs33_01.mp3 deleted file mode 100755 index 2394ba9..0000000 Binary files a/aePronunciation/raw/pairs33_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs33_02.mp3 b/aePronunciation/raw/pairs33_02.mp3 deleted file mode 100755 index 0b4783a..0000000 Binary files a/aePronunciation/raw/pairs33_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs33_03.mp3 b/aePronunciation/raw/pairs33_03.mp3 deleted file mode 100755 index 58a172f..0000000 Binary files a/aePronunciation/raw/pairs33_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs33_04.mp3 b/aePronunciation/raw/pairs33_04.mp3 deleted file mode 100755 index db3cf89..0000000 Binary files a/aePronunciation/raw/pairs33_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs33_05.mp3 b/aePronunciation/raw/pairs33_05.mp3 deleted file mode 100755 index 88366e9..0000000 Binary files a/aePronunciation/raw/pairs33_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs33_06.mp3 b/aePronunciation/raw/pairs33_06.mp3 deleted file mode 100755 index 51aeec7..0000000 Binary files a/aePronunciation/raw/pairs33_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs33_07.mp3 b/aePronunciation/raw/pairs33_07.mp3 deleted file mode 100755 index acc4597..0000000 Binary files a/aePronunciation/raw/pairs33_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs33_08.mp3 b/aePronunciation/raw/pairs33_08.mp3 deleted file mode 100755 index f2f24e2..0000000 Binary files a/aePronunciation/raw/pairs33_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs33_09.mp3 b/aePronunciation/raw/pairs33_09.mp3 deleted file mode 100755 index cf54d9c..0000000 Binary files a/aePronunciation/raw/pairs33_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs33_10.mp3 b/aePronunciation/raw/pairs33_10.mp3 deleted file mode 100755 index 87dc6e0..0000000 Binary files a/aePronunciation/raw/pairs33_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs33_11.mp3 b/aePronunciation/raw/pairs33_11.mp3 deleted file mode 100755 index d9422e7..0000000 Binary files a/aePronunciation/raw/pairs33_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs33_12.mp3 b/aePronunciation/raw/pairs33_12.mp3 deleted file mode 100755 index 0b75d7d..0000000 Binary files a/aePronunciation/raw/pairs33_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs33_13.mp3 b/aePronunciation/raw/pairs33_13.mp3 deleted file mode 100755 index a6cc0f6..0000000 Binary files a/aePronunciation/raw/pairs33_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs33_14.mp3 b/aePronunciation/raw/pairs33_14.mp3 deleted file mode 100755 index 5094760..0000000 Binary files a/aePronunciation/raw/pairs33_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs33_15.mp3 b/aePronunciation/raw/pairs33_15.mp3 deleted file mode 100755 index a52a4b1..0000000 Binary files a/aePronunciation/raw/pairs33_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs33_16.mp3 b/aePronunciation/raw/pairs33_16.mp3 deleted file mode 100755 index 3b06763..0000000 Binary files a/aePronunciation/raw/pairs33_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs33_17.mp3 b/aePronunciation/raw/pairs33_17.mp3 deleted file mode 100755 index 73aba8b..0000000 Binary files a/aePronunciation/raw/pairs33_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs33_18.mp3 b/aePronunciation/raw/pairs33_18.mp3 deleted file mode 100755 index 73cbec9..0000000 Binary files a/aePronunciation/raw/pairs33_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs33_19.mp3 b/aePronunciation/raw/pairs33_19.mp3 deleted file mode 100755 index 62ca103..0000000 Binary files a/aePronunciation/raw/pairs33_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs34_01.mp3 b/aePronunciation/raw/pairs34_01.mp3 deleted file mode 100755 index 7872c84..0000000 Binary files a/aePronunciation/raw/pairs34_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs34_02.mp3 b/aePronunciation/raw/pairs34_02.mp3 deleted file mode 100755 index 1c0868a..0000000 Binary files a/aePronunciation/raw/pairs34_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs34_03.mp3 b/aePronunciation/raw/pairs34_03.mp3 deleted file mode 100755 index 27f90c7..0000000 Binary files a/aePronunciation/raw/pairs34_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs34_04.mp3 b/aePronunciation/raw/pairs34_04.mp3 deleted file mode 100755 index 439a24c..0000000 Binary files a/aePronunciation/raw/pairs34_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs34_05.mp3 b/aePronunciation/raw/pairs34_05.mp3 deleted file mode 100755 index 1cfd6c6..0000000 Binary files a/aePronunciation/raw/pairs34_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs34_06.mp3 b/aePronunciation/raw/pairs34_06.mp3 deleted file mode 100755 index 5b94595..0000000 Binary files a/aePronunciation/raw/pairs34_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs34_07.mp3 b/aePronunciation/raw/pairs34_07.mp3 deleted file mode 100755 index ec4a7ea..0000000 Binary files a/aePronunciation/raw/pairs34_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs34_08.mp3 b/aePronunciation/raw/pairs34_08.mp3 deleted file mode 100755 index 7a6c9d9..0000000 Binary files a/aePronunciation/raw/pairs34_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs34_09.mp3 b/aePronunciation/raw/pairs34_09.mp3 deleted file mode 100755 index dc11434..0000000 Binary files a/aePronunciation/raw/pairs34_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs34_10.mp3 b/aePronunciation/raw/pairs34_10.mp3 deleted file mode 100755 index 8bba39a..0000000 Binary files a/aePronunciation/raw/pairs34_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs34_11.mp3 b/aePronunciation/raw/pairs34_11.mp3 deleted file mode 100755 index 36f5c3e..0000000 Binary files a/aePronunciation/raw/pairs34_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs34_12.mp3 b/aePronunciation/raw/pairs34_12.mp3 deleted file mode 100755 index 9f711c9..0000000 Binary files a/aePronunciation/raw/pairs34_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs34_13.mp3 b/aePronunciation/raw/pairs34_13.mp3 deleted file mode 100755 index 5be83d0..0000000 Binary files a/aePronunciation/raw/pairs34_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs34_14.mp3 b/aePronunciation/raw/pairs34_14.mp3 deleted file mode 100755 index 4f9e924..0000000 Binary files a/aePronunciation/raw/pairs34_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs34_15.mp3 b/aePronunciation/raw/pairs34_15.mp3 deleted file mode 100755 index bd4c104..0000000 Binary files a/aePronunciation/raw/pairs34_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs34_16.mp3 b/aePronunciation/raw/pairs34_16.mp3 deleted file mode 100755 index d73ce5f..0000000 Binary files a/aePronunciation/raw/pairs34_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs34_17.mp3 b/aePronunciation/raw/pairs34_17.mp3 deleted file mode 100755 index 14e9d24..0000000 Binary files a/aePronunciation/raw/pairs34_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs34_18.mp3 b/aePronunciation/raw/pairs34_18.mp3 deleted file mode 100755 index 7d99f2a..0000000 Binary files a/aePronunciation/raw/pairs34_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs34_19.mp3 b/aePronunciation/raw/pairs34_19.mp3 deleted file mode 100755 index 3cdce9e..0000000 Binary files a/aePronunciation/raw/pairs34_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs35_01.mp3 b/aePronunciation/raw/pairs35_01.mp3 deleted file mode 100755 index 547e946..0000000 Binary files a/aePronunciation/raw/pairs35_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs35_02.mp3 b/aePronunciation/raw/pairs35_02.mp3 deleted file mode 100755 index a28d250..0000000 Binary files a/aePronunciation/raw/pairs35_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs35_03.mp3 b/aePronunciation/raw/pairs35_03.mp3 deleted file mode 100755 index 5996f81..0000000 Binary files a/aePronunciation/raw/pairs35_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs35_04.mp3 b/aePronunciation/raw/pairs35_04.mp3 deleted file mode 100755 index 693c69f..0000000 Binary files a/aePronunciation/raw/pairs35_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs35_05.mp3 b/aePronunciation/raw/pairs35_05.mp3 deleted file mode 100755 index 0e9acd6..0000000 Binary files a/aePronunciation/raw/pairs35_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs35_06.mp3 b/aePronunciation/raw/pairs35_06.mp3 deleted file mode 100755 index 9886115..0000000 Binary files a/aePronunciation/raw/pairs35_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs35_07.mp3 b/aePronunciation/raw/pairs35_07.mp3 deleted file mode 100755 index 13b49a8..0000000 Binary files a/aePronunciation/raw/pairs35_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs35_08.mp3 b/aePronunciation/raw/pairs35_08.mp3 deleted file mode 100755 index a31e092..0000000 Binary files a/aePronunciation/raw/pairs35_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs35_09.mp3 b/aePronunciation/raw/pairs35_09.mp3 deleted file mode 100755 index 79084c0..0000000 Binary files a/aePronunciation/raw/pairs35_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs35_10.mp3 b/aePronunciation/raw/pairs35_10.mp3 deleted file mode 100755 index 3d19b58..0000000 Binary files a/aePronunciation/raw/pairs35_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs35_11.mp3 b/aePronunciation/raw/pairs35_11.mp3 deleted file mode 100755 index 43146b6..0000000 Binary files a/aePronunciation/raw/pairs35_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs35_12.mp3 b/aePronunciation/raw/pairs35_12.mp3 deleted file mode 100755 index 2877d22..0000000 Binary files a/aePronunciation/raw/pairs35_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs35_13.mp3 b/aePronunciation/raw/pairs35_13.mp3 deleted file mode 100755 index 3fb2525..0000000 Binary files a/aePronunciation/raw/pairs35_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs35_14.mp3 b/aePronunciation/raw/pairs35_14.mp3 deleted file mode 100755 index c80c355..0000000 Binary files a/aePronunciation/raw/pairs35_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs35_15.mp3 b/aePronunciation/raw/pairs35_15.mp3 deleted file mode 100755 index ced3e4f..0000000 Binary files a/aePronunciation/raw/pairs35_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs35_16.mp3 b/aePronunciation/raw/pairs35_16.mp3 deleted file mode 100755 index 8c45ccc..0000000 Binary files a/aePronunciation/raw/pairs35_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs35_17.mp3 b/aePronunciation/raw/pairs35_17.mp3 deleted file mode 100755 index 7135798..0000000 Binary files a/aePronunciation/raw/pairs35_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs35_18.mp3 b/aePronunciation/raw/pairs35_18.mp3 deleted file mode 100755 index d9e0d33..0000000 Binary files a/aePronunciation/raw/pairs35_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs35_19.mp3 b/aePronunciation/raw/pairs35_19.mp3 deleted file mode 100755 index c980c82..0000000 Binary files a/aePronunciation/raw/pairs35_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs36_01.mp3 b/aePronunciation/raw/pairs36_01.mp3 deleted file mode 100755 index 773fb9c..0000000 Binary files a/aePronunciation/raw/pairs36_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs36_02.mp3 b/aePronunciation/raw/pairs36_02.mp3 deleted file mode 100755 index eb4d155..0000000 Binary files a/aePronunciation/raw/pairs36_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs36_03.mp3 b/aePronunciation/raw/pairs36_03.mp3 deleted file mode 100755 index 5682f21..0000000 Binary files a/aePronunciation/raw/pairs36_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs36_04.mp3 b/aePronunciation/raw/pairs36_04.mp3 deleted file mode 100755 index e912265..0000000 Binary files a/aePronunciation/raw/pairs36_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs36_05.mp3 b/aePronunciation/raw/pairs36_05.mp3 deleted file mode 100755 index 9169a88..0000000 Binary files a/aePronunciation/raw/pairs36_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs36_06.mp3 b/aePronunciation/raw/pairs36_06.mp3 deleted file mode 100755 index 24c1e90..0000000 Binary files a/aePronunciation/raw/pairs36_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs36_07.mp3 b/aePronunciation/raw/pairs36_07.mp3 deleted file mode 100755 index 509f0c4..0000000 Binary files a/aePronunciation/raw/pairs36_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs36_08.mp3 b/aePronunciation/raw/pairs36_08.mp3 deleted file mode 100755 index 0d221e2..0000000 Binary files a/aePronunciation/raw/pairs36_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs36_09.mp3 b/aePronunciation/raw/pairs36_09.mp3 deleted file mode 100755 index e7f066c..0000000 Binary files a/aePronunciation/raw/pairs36_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs36_10.mp3 b/aePronunciation/raw/pairs36_10.mp3 deleted file mode 100755 index aa03ce8..0000000 Binary files a/aePronunciation/raw/pairs36_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs36_11.mp3 b/aePronunciation/raw/pairs36_11.mp3 deleted file mode 100755 index cc8d2d3..0000000 Binary files a/aePronunciation/raw/pairs36_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs36_12.mp3 b/aePronunciation/raw/pairs36_12.mp3 deleted file mode 100755 index db04b4f..0000000 Binary files a/aePronunciation/raw/pairs36_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs36_13.mp3 b/aePronunciation/raw/pairs36_13.mp3 deleted file mode 100755 index 745677d..0000000 Binary files a/aePronunciation/raw/pairs36_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs36_14.mp3 b/aePronunciation/raw/pairs36_14.mp3 deleted file mode 100755 index 94ee270..0000000 Binary files a/aePronunciation/raw/pairs36_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs36_15.mp3 b/aePronunciation/raw/pairs36_15.mp3 deleted file mode 100755 index 1d080bd..0000000 Binary files a/aePronunciation/raw/pairs36_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs36_16.mp3 b/aePronunciation/raw/pairs36_16.mp3 deleted file mode 100755 index 20b7032..0000000 Binary files a/aePronunciation/raw/pairs36_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs36_17.mp3 b/aePronunciation/raw/pairs36_17.mp3 deleted file mode 100755 index e0413fd..0000000 Binary files a/aePronunciation/raw/pairs36_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs36_18.mp3 b/aePronunciation/raw/pairs36_18.mp3 deleted file mode 100755 index 9ad01b0..0000000 Binary files a/aePronunciation/raw/pairs36_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs36_19.mp3 b/aePronunciation/raw/pairs36_19.mp3 deleted file mode 100755 index 46d19ae..0000000 Binary files a/aePronunciation/raw/pairs36_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs37_01.mp3 b/aePronunciation/raw/pairs37_01.mp3 deleted file mode 100755 index 2a5c7ed..0000000 Binary files a/aePronunciation/raw/pairs37_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs37_02.mp3 b/aePronunciation/raw/pairs37_02.mp3 deleted file mode 100755 index 007ab3f..0000000 Binary files a/aePronunciation/raw/pairs37_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs37_03.mp3 b/aePronunciation/raw/pairs37_03.mp3 deleted file mode 100755 index b0a4ef1..0000000 Binary files a/aePronunciation/raw/pairs37_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs37_04.mp3 b/aePronunciation/raw/pairs37_04.mp3 deleted file mode 100755 index 190b19f..0000000 Binary files a/aePronunciation/raw/pairs37_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs37_05.mp3 b/aePronunciation/raw/pairs37_05.mp3 deleted file mode 100755 index 3781503..0000000 Binary files a/aePronunciation/raw/pairs37_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs37_06.mp3 b/aePronunciation/raw/pairs37_06.mp3 deleted file mode 100755 index b0d38f8..0000000 Binary files a/aePronunciation/raw/pairs37_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs37_07.mp3 b/aePronunciation/raw/pairs37_07.mp3 deleted file mode 100755 index 9617824..0000000 Binary files a/aePronunciation/raw/pairs37_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs37_08.mp3 b/aePronunciation/raw/pairs37_08.mp3 deleted file mode 100755 index 64908ee..0000000 Binary files a/aePronunciation/raw/pairs37_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs37_09.mp3 b/aePronunciation/raw/pairs37_09.mp3 deleted file mode 100755 index 152da8b..0000000 Binary files a/aePronunciation/raw/pairs37_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs37_10.mp3 b/aePronunciation/raw/pairs37_10.mp3 deleted file mode 100755 index 7a1f853..0000000 Binary files a/aePronunciation/raw/pairs37_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs37_11.mp3 b/aePronunciation/raw/pairs37_11.mp3 deleted file mode 100755 index e5982aa..0000000 Binary files a/aePronunciation/raw/pairs37_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs37_12.mp3 b/aePronunciation/raw/pairs37_12.mp3 deleted file mode 100755 index 2cdbe62..0000000 Binary files a/aePronunciation/raw/pairs37_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs37_13.mp3 b/aePronunciation/raw/pairs37_13.mp3 deleted file mode 100755 index a8b7ebb..0000000 Binary files a/aePronunciation/raw/pairs37_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs37_14.mp3 b/aePronunciation/raw/pairs37_14.mp3 deleted file mode 100755 index e87e723..0000000 Binary files a/aePronunciation/raw/pairs37_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs37_15.mp3 b/aePronunciation/raw/pairs37_15.mp3 deleted file mode 100755 index 9428920..0000000 Binary files a/aePronunciation/raw/pairs37_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs37_16.mp3 b/aePronunciation/raw/pairs37_16.mp3 deleted file mode 100755 index 92a3dde..0000000 Binary files a/aePronunciation/raw/pairs37_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs37_17.mp3 b/aePronunciation/raw/pairs37_17.mp3 deleted file mode 100755 index 587f01a..0000000 Binary files a/aePronunciation/raw/pairs37_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs37_18.mp3 b/aePronunciation/raw/pairs37_18.mp3 deleted file mode 100755 index 49557b5..0000000 Binary files a/aePronunciation/raw/pairs37_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs37_19.mp3 b/aePronunciation/raw/pairs37_19.mp3 deleted file mode 100755 index 56b15bb..0000000 Binary files a/aePronunciation/raw/pairs37_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs38_01.mp3 b/aePronunciation/raw/pairs38_01.mp3 deleted file mode 100755 index 86d901b..0000000 Binary files a/aePronunciation/raw/pairs38_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs38_02.mp3 b/aePronunciation/raw/pairs38_02.mp3 deleted file mode 100755 index d4d9a94..0000000 Binary files a/aePronunciation/raw/pairs38_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs38_03.mp3 b/aePronunciation/raw/pairs38_03.mp3 deleted file mode 100755 index a040cbb..0000000 Binary files a/aePronunciation/raw/pairs38_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs38_04.mp3 b/aePronunciation/raw/pairs38_04.mp3 deleted file mode 100755 index 76f7010..0000000 Binary files a/aePronunciation/raw/pairs38_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs38_05.mp3 b/aePronunciation/raw/pairs38_05.mp3 deleted file mode 100755 index 67185b7..0000000 Binary files a/aePronunciation/raw/pairs38_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs38_06.mp3 b/aePronunciation/raw/pairs38_06.mp3 deleted file mode 100755 index f6de5b7..0000000 Binary files a/aePronunciation/raw/pairs38_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs38_07.mp3 b/aePronunciation/raw/pairs38_07.mp3 deleted file mode 100755 index f09faf2..0000000 Binary files a/aePronunciation/raw/pairs38_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs38_08.mp3 b/aePronunciation/raw/pairs38_08.mp3 deleted file mode 100755 index 104021a..0000000 Binary files a/aePronunciation/raw/pairs38_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs38_09.mp3 b/aePronunciation/raw/pairs38_09.mp3 deleted file mode 100755 index 42604ba..0000000 Binary files a/aePronunciation/raw/pairs38_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs38_10.mp3 b/aePronunciation/raw/pairs38_10.mp3 deleted file mode 100755 index 6e139ed..0000000 Binary files a/aePronunciation/raw/pairs38_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs38_11.mp3 b/aePronunciation/raw/pairs38_11.mp3 deleted file mode 100755 index 84bfff0..0000000 Binary files a/aePronunciation/raw/pairs38_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs38_12.mp3 b/aePronunciation/raw/pairs38_12.mp3 deleted file mode 100755 index 3d2ff15..0000000 Binary files a/aePronunciation/raw/pairs38_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs38_13.mp3 b/aePronunciation/raw/pairs38_13.mp3 deleted file mode 100755 index 4afb0b1..0000000 Binary files a/aePronunciation/raw/pairs38_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs38_14.mp3 b/aePronunciation/raw/pairs38_14.mp3 deleted file mode 100755 index d439f30..0000000 Binary files a/aePronunciation/raw/pairs38_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs38_15.mp3 b/aePronunciation/raw/pairs38_15.mp3 deleted file mode 100755 index 680eae3..0000000 Binary files a/aePronunciation/raw/pairs38_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs38_16.mp3 b/aePronunciation/raw/pairs38_16.mp3 deleted file mode 100755 index 18560de..0000000 Binary files a/aePronunciation/raw/pairs38_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs38_17.mp3 b/aePronunciation/raw/pairs38_17.mp3 deleted file mode 100755 index e0b533e..0000000 Binary files a/aePronunciation/raw/pairs38_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs38_18.mp3 b/aePronunciation/raw/pairs38_18.mp3 deleted file mode 100755 index 1d68b71..0000000 Binary files a/aePronunciation/raw/pairs38_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs38_19.mp3 b/aePronunciation/raw/pairs38_19.mp3 deleted file mode 100755 index 549c020..0000000 Binary files a/aePronunciation/raw/pairs38_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs39_01.mp3 b/aePronunciation/raw/pairs39_01.mp3 deleted file mode 100755 index 24456f1..0000000 Binary files a/aePronunciation/raw/pairs39_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs39_02.mp3 b/aePronunciation/raw/pairs39_02.mp3 deleted file mode 100755 index 658d5a6..0000000 Binary files a/aePronunciation/raw/pairs39_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs39_03.mp3 b/aePronunciation/raw/pairs39_03.mp3 deleted file mode 100755 index 07c61f9..0000000 Binary files a/aePronunciation/raw/pairs39_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs39_04.mp3 b/aePronunciation/raw/pairs39_04.mp3 deleted file mode 100755 index fdcca46..0000000 Binary files a/aePronunciation/raw/pairs39_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs39_05.mp3 b/aePronunciation/raw/pairs39_05.mp3 deleted file mode 100755 index 547f6bc..0000000 Binary files a/aePronunciation/raw/pairs39_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs39_06.mp3 b/aePronunciation/raw/pairs39_06.mp3 deleted file mode 100755 index e7b7652..0000000 Binary files a/aePronunciation/raw/pairs39_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs39_07.mp3 b/aePronunciation/raw/pairs39_07.mp3 deleted file mode 100755 index 8086aa8..0000000 Binary files a/aePronunciation/raw/pairs39_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs39_08.mp3 b/aePronunciation/raw/pairs39_08.mp3 deleted file mode 100755 index cecb561..0000000 Binary files a/aePronunciation/raw/pairs39_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs39_09.mp3 b/aePronunciation/raw/pairs39_09.mp3 deleted file mode 100755 index e9f4d71..0000000 Binary files a/aePronunciation/raw/pairs39_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs39_10.mp3 b/aePronunciation/raw/pairs39_10.mp3 deleted file mode 100755 index 365740f..0000000 Binary files a/aePronunciation/raw/pairs39_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs39_11.mp3 b/aePronunciation/raw/pairs39_11.mp3 deleted file mode 100755 index f57b19a..0000000 Binary files a/aePronunciation/raw/pairs39_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs39_12.mp3 b/aePronunciation/raw/pairs39_12.mp3 deleted file mode 100755 index abad4c0..0000000 Binary files a/aePronunciation/raw/pairs39_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs39_13.mp3 b/aePronunciation/raw/pairs39_13.mp3 deleted file mode 100755 index 699ae8d..0000000 Binary files a/aePronunciation/raw/pairs39_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs39_14.mp3 b/aePronunciation/raw/pairs39_14.mp3 deleted file mode 100755 index b54188a..0000000 Binary files a/aePronunciation/raw/pairs39_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs39_15.mp3 b/aePronunciation/raw/pairs39_15.mp3 deleted file mode 100755 index 191c782..0000000 Binary files a/aePronunciation/raw/pairs39_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs39_16.mp3 b/aePronunciation/raw/pairs39_16.mp3 deleted file mode 100755 index 0ea0ade..0000000 Binary files a/aePronunciation/raw/pairs39_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs39_17.mp3 b/aePronunciation/raw/pairs39_17.mp3 deleted file mode 100755 index c823d45..0000000 Binary files a/aePronunciation/raw/pairs39_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs39_18.mp3 b/aePronunciation/raw/pairs39_18.mp3 deleted file mode 100755 index 19fb34e..0000000 Binary files a/aePronunciation/raw/pairs39_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs39_19.mp3 b/aePronunciation/raw/pairs39_19.mp3 deleted file mode 100755 index 4ac0868..0000000 Binary files a/aePronunciation/raw/pairs39_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs40_01.mp3 b/aePronunciation/raw/pairs40_01.mp3 deleted file mode 100755 index 128a799..0000000 Binary files a/aePronunciation/raw/pairs40_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs40_02.mp3 b/aePronunciation/raw/pairs40_02.mp3 deleted file mode 100755 index 7f05262..0000000 Binary files a/aePronunciation/raw/pairs40_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs40_03.mp3 b/aePronunciation/raw/pairs40_03.mp3 deleted file mode 100755 index 655a67b..0000000 Binary files a/aePronunciation/raw/pairs40_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs40_04.mp3 b/aePronunciation/raw/pairs40_04.mp3 deleted file mode 100755 index 0b50037..0000000 Binary files a/aePronunciation/raw/pairs40_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs40_05.mp3 b/aePronunciation/raw/pairs40_05.mp3 deleted file mode 100755 index 79eb987..0000000 Binary files a/aePronunciation/raw/pairs40_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs40_06.mp3 b/aePronunciation/raw/pairs40_06.mp3 deleted file mode 100755 index a0fd07a..0000000 Binary files a/aePronunciation/raw/pairs40_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs40_07.mp3 b/aePronunciation/raw/pairs40_07.mp3 deleted file mode 100755 index 6bca02a..0000000 Binary files a/aePronunciation/raw/pairs40_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs40_08.mp3 b/aePronunciation/raw/pairs40_08.mp3 deleted file mode 100755 index 26bded2..0000000 Binary files a/aePronunciation/raw/pairs40_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs40_09.mp3 b/aePronunciation/raw/pairs40_09.mp3 deleted file mode 100755 index f0228ec..0000000 Binary files a/aePronunciation/raw/pairs40_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs40_10.mp3 b/aePronunciation/raw/pairs40_10.mp3 deleted file mode 100755 index c214e9e..0000000 Binary files a/aePronunciation/raw/pairs40_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs40_11.mp3 b/aePronunciation/raw/pairs40_11.mp3 deleted file mode 100755 index 7b096a8..0000000 Binary files a/aePronunciation/raw/pairs40_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs40_12.mp3 b/aePronunciation/raw/pairs40_12.mp3 deleted file mode 100755 index 949db7e..0000000 Binary files a/aePronunciation/raw/pairs40_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs40_13.mp3 b/aePronunciation/raw/pairs40_13.mp3 deleted file mode 100755 index 67b3aa8..0000000 Binary files a/aePronunciation/raw/pairs40_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs40_14.mp3 b/aePronunciation/raw/pairs40_14.mp3 deleted file mode 100755 index 2c0ecd5..0000000 Binary files a/aePronunciation/raw/pairs40_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs40_15.mp3 b/aePronunciation/raw/pairs40_15.mp3 deleted file mode 100755 index 47115f6..0000000 Binary files a/aePronunciation/raw/pairs40_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs40_16.mp3 b/aePronunciation/raw/pairs40_16.mp3 deleted file mode 100755 index 4ddd67d..0000000 Binary files a/aePronunciation/raw/pairs40_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs40_17.mp3 b/aePronunciation/raw/pairs40_17.mp3 deleted file mode 100755 index e1c0baf..0000000 Binary files a/aePronunciation/raw/pairs40_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs40_18.mp3 b/aePronunciation/raw/pairs40_18.mp3 deleted file mode 100755 index bbbd28b..0000000 Binary files a/aePronunciation/raw/pairs40_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs40_19.mp3 b/aePronunciation/raw/pairs40_19.mp3 deleted file mode 100755 index 151385b..0000000 Binary files a/aePronunciation/raw/pairs40_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs41_01.mp3 b/aePronunciation/raw/pairs41_01.mp3 deleted file mode 100755 index 581a26b..0000000 Binary files a/aePronunciation/raw/pairs41_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs41_02.mp3 b/aePronunciation/raw/pairs41_02.mp3 deleted file mode 100755 index aa0b8ee..0000000 Binary files a/aePronunciation/raw/pairs41_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs41_03.mp3 b/aePronunciation/raw/pairs41_03.mp3 deleted file mode 100755 index f70964b..0000000 Binary files a/aePronunciation/raw/pairs41_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs41_04.mp3 b/aePronunciation/raw/pairs41_04.mp3 deleted file mode 100755 index 54610ba..0000000 Binary files a/aePronunciation/raw/pairs41_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs41_05.mp3 b/aePronunciation/raw/pairs41_05.mp3 deleted file mode 100755 index 1c002db..0000000 Binary files a/aePronunciation/raw/pairs41_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs41_06.mp3 b/aePronunciation/raw/pairs41_06.mp3 deleted file mode 100755 index d85e0d5..0000000 Binary files a/aePronunciation/raw/pairs41_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs41_07.mp3 b/aePronunciation/raw/pairs41_07.mp3 deleted file mode 100755 index 1c54426..0000000 Binary files a/aePronunciation/raw/pairs41_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs41_08.mp3 b/aePronunciation/raw/pairs41_08.mp3 deleted file mode 100755 index f7da1e2..0000000 Binary files a/aePronunciation/raw/pairs41_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs41_09.mp3 b/aePronunciation/raw/pairs41_09.mp3 deleted file mode 100755 index 58e717f..0000000 Binary files a/aePronunciation/raw/pairs41_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs41_10.mp3 b/aePronunciation/raw/pairs41_10.mp3 deleted file mode 100755 index 6805277..0000000 Binary files a/aePronunciation/raw/pairs41_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs41_11.mp3 b/aePronunciation/raw/pairs41_11.mp3 deleted file mode 100755 index 0f0ae44..0000000 Binary files a/aePronunciation/raw/pairs41_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs41_12.mp3 b/aePronunciation/raw/pairs41_12.mp3 deleted file mode 100755 index c8e4689..0000000 Binary files a/aePronunciation/raw/pairs41_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs41_13.mp3 b/aePronunciation/raw/pairs41_13.mp3 deleted file mode 100755 index 2c1d159..0000000 Binary files a/aePronunciation/raw/pairs41_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs41_14.mp3 b/aePronunciation/raw/pairs41_14.mp3 deleted file mode 100755 index c0e9831..0000000 Binary files a/aePronunciation/raw/pairs41_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs41_15.mp3 b/aePronunciation/raw/pairs41_15.mp3 deleted file mode 100755 index f4983c5..0000000 Binary files a/aePronunciation/raw/pairs41_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs41_16.mp3 b/aePronunciation/raw/pairs41_16.mp3 deleted file mode 100755 index 51908a2..0000000 Binary files a/aePronunciation/raw/pairs41_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs41_17.mp3 b/aePronunciation/raw/pairs41_17.mp3 deleted file mode 100755 index 3ee252b..0000000 Binary files a/aePronunciation/raw/pairs41_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs41_18.mp3 b/aePronunciation/raw/pairs41_18.mp3 deleted file mode 100755 index 812cda7..0000000 Binary files a/aePronunciation/raw/pairs41_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs41_19.mp3 b/aePronunciation/raw/pairs41_19.mp3 deleted file mode 100755 index 4a441d1..0000000 Binary files a/aePronunciation/raw/pairs41_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs42_01.mp3 b/aePronunciation/raw/pairs42_01.mp3 deleted file mode 100755 index 6deb7bd..0000000 Binary files a/aePronunciation/raw/pairs42_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs42_02.mp3 b/aePronunciation/raw/pairs42_02.mp3 deleted file mode 100755 index a79b1dc..0000000 Binary files a/aePronunciation/raw/pairs42_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs42_03.mp3 b/aePronunciation/raw/pairs42_03.mp3 deleted file mode 100755 index acd13be..0000000 Binary files a/aePronunciation/raw/pairs42_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs42_04.mp3 b/aePronunciation/raw/pairs42_04.mp3 deleted file mode 100755 index 10b45fb..0000000 Binary files a/aePronunciation/raw/pairs42_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs42_05.mp3 b/aePronunciation/raw/pairs42_05.mp3 deleted file mode 100755 index 582f805..0000000 Binary files a/aePronunciation/raw/pairs42_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs42_06.mp3 b/aePronunciation/raw/pairs42_06.mp3 deleted file mode 100755 index c0ed0a1..0000000 Binary files a/aePronunciation/raw/pairs42_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs42_07.mp3 b/aePronunciation/raw/pairs42_07.mp3 deleted file mode 100755 index d2a73ef..0000000 Binary files a/aePronunciation/raw/pairs42_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs42_08.mp3 b/aePronunciation/raw/pairs42_08.mp3 deleted file mode 100755 index 95d7434..0000000 Binary files a/aePronunciation/raw/pairs42_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs42_09.mp3 b/aePronunciation/raw/pairs42_09.mp3 deleted file mode 100755 index 2c37ee3..0000000 Binary files a/aePronunciation/raw/pairs42_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs42_10.mp3 b/aePronunciation/raw/pairs42_10.mp3 deleted file mode 100755 index 7835e3c..0000000 Binary files a/aePronunciation/raw/pairs42_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs42_11.mp3 b/aePronunciation/raw/pairs42_11.mp3 deleted file mode 100755 index 73eb9c2..0000000 Binary files a/aePronunciation/raw/pairs42_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs42_12.mp3 b/aePronunciation/raw/pairs42_12.mp3 deleted file mode 100755 index 091df79..0000000 Binary files a/aePronunciation/raw/pairs42_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs42_13.mp3 b/aePronunciation/raw/pairs42_13.mp3 deleted file mode 100755 index 01d7b58..0000000 Binary files a/aePronunciation/raw/pairs42_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs42_14.mp3 b/aePronunciation/raw/pairs42_14.mp3 deleted file mode 100755 index af9bd57..0000000 Binary files a/aePronunciation/raw/pairs42_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs42_15.mp3 b/aePronunciation/raw/pairs42_15.mp3 deleted file mode 100755 index 32a1b2f..0000000 Binary files a/aePronunciation/raw/pairs42_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs42_16.mp3 b/aePronunciation/raw/pairs42_16.mp3 deleted file mode 100755 index 0dcd92c..0000000 Binary files a/aePronunciation/raw/pairs42_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs42_17.mp3 b/aePronunciation/raw/pairs42_17.mp3 deleted file mode 100755 index 0bc003d..0000000 Binary files a/aePronunciation/raw/pairs42_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs42_18.mp3 b/aePronunciation/raw/pairs42_18.mp3 deleted file mode 100755 index 7946d33..0000000 Binary files a/aePronunciation/raw/pairs42_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs42_19.mp3 b/aePronunciation/raw/pairs42_19.mp3 deleted file mode 100755 index d1c81e4..0000000 Binary files a/aePronunciation/raw/pairs42_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs43_01.mp3 b/aePronunciation/raw/pairs43_01.mp3 deleted file mode 100755 index bd26cc1..0000000 Binary files a/aePronunciation/raw/pairs43_01.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs43_02.mp3 b/aePronunciation/raw/pairs43_02.mp3 deleted file mode 100755 index 3ffb301..0000000 Binary files a/aePronunciation/raw/pairs43_02.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs43_03.mp3 b/aePronunciation/raw/pairs43_03.mp3 deleted file mode 100755 index 345486d..0000000 Binary files a/aePronunciation/raw/pairs43_03.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs43_04.mp3 b/aePronunciation/raw/pairs43_04.mp3 deleted file mode 100755 index b917243..0000000 Binary files a/aePronunciation/raw/pairs43_04.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs43_05.mp3 b/aePronunciation/raw/pairs43_05.mp3 deleted file mode 100755 index e18546e..0000000 Binary files a/aePronunciation/raw/pairs43_05.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs43_06.mp3 b/aePronunciation/raw/pairs43_06.mp3 deleted file mode 100755 index a52fa2a..0000000 Binary files a/aePronunciation/raw/pairs43_06.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs43_07.mp3 b/aePronunciation/raw/pairs43_07.mp3 deleted file mode 100755 index a629e53..0000000 Binary files a/aePronunciation/raw/pairs43_07.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs43_08.mp3 b/aePronunciation/raw/pairs43_08.mp3 deleted file mode 100755 index 9f39175..0000000 Binary files a/aePronunciation/raw/pairs43_08.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs43_09.mp3 b/aePronunciation/raw/pairs43_09.mp3 deleted file mode 100755 index 9e4a320..0000000 Binary files a/aePronunciation/raw/pairs43_09.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs43_10.mp3 b/aePronunciation/raw/pairs43_10.mp3 deleted file mode 100755 index a6a137d..0000000 Binary files a/aePronunciation/raw/pairs43_10.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs43_11.mp3 b/aePronunciation/raw/pairs43_11.mp3 deleted file mode 100755 index 739a372..0000000 Binary files a/aePronunciation/raw/pairs43_11.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs43_12.mp3 b/aePronunciation/raw/pairs43_12.mp3 deleted file mode 100755 index 3548c91..0000000 Binary files a/aePronunciation/raw/pairs43_12.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs43_13.mp3 b/aePronunciation/raw/pairs43_13.mp3 deleted file mode 100755 index 41c7e13..0000000 Binary files a/aePronunciation/raw/pairs43_13.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs43_14.mp3 b/aePronunciation/raw/pairs43_14.mp3 deleted file mode 100755 index e0f6b7c..0000000 Binary files a/aePronunciation/raw/pairs43_14.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs43_15.mp3 b/aePronunciation/raw/pairs43_15.mp3 deleted file mode 100755 index 2080d55..0000000 Binary files a/aePronunciation/raw/pairs43_15.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs43_16.mp3 b/aePronunciation/raw/pairs43_16.mp3 deleted file mode 100755 index d748f40..0000000 Binary files a/aePronunciation/raw/pairs43_16.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs43_17.mp3 b/aePronunciation/raw/pairs43_17.mp3 deleted file mode 100755 index ba102ed..0000000 Binary files a/aePronunciation/raw/pairs43_17.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs43_18.mp3 b/aePronunciation/raw/pairs43_18.mp3 deleted file mode 100755 index d5747fa..0000000 Binary files a/aePronunciation/raw/pairs43_18.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pairs43_19.mp3 b/aePronunciation/raw/pairs43_19.mp3 deleted file mode 100755 index e2283d4..0000000 Binary files a/aePronunciation/raw/pairs43_19.mp3 and /dev/null differ diff --git a/aePronunciation/raw/panda.mp3 b/aePronunciation/raw/panda.mp3 deleted file mode 100755 index 110ac8e..0000000 Binary files a/aePronunciation/raw/panda.mp3 and /dev/null differ diff --git a/aePronunciation/raw/part.mp3 b/aePronunciation/raw/part.mp3 deleted file mode 100755 index 387d3c5..0000000 Binary files a/aePronunciation/raw/part.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pass.mp3 b/aePronunciation/raw/pass.mp3 deleted file mode 100755 index b702c4e..0000000 Binary files a/aePronunciation/raw/pass.mp3 and /dev/null differ diff --git a/aePronunciation/raw/perform.mp3 b/aePronunciation/raw/perform.mp3 deleted file mode 100755 index 75bbe98..0000000 Binary files a/aePronunciation/raw/perform.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pig.mp3 b/aePronunciation/raw/pig.mp3 deleted file mode 100755 index a09c0d6..0000000 Binary files a/aePronunciation/raw/pig.mp3 and /dev/null differ diff --git a/aePronunciation/raw/pleasure.mp3 b/aePronunciation/raw/pleasure.mp3 deleted file mode 100755 index 9d492dd..0000000 Binary files a/aePronunciation/raw/pleasure.mp3 and /dev/null differ diff --git a/aePronunciation/raw/put.mp3 b/aePronunciation/raw/put.mp3 deleted file mode 100755 index b2cadc1..0000000 Binary files a/aePronunciation/raw/put.mp3 and /dev/null differ diff --git a/aePronunciation/raw/put_glottal.mp3 b/aePronunciation/raw/put_glottal.mp3 deleted file mode 100755 index bbe1519..0000000 Binary files a/aePronunciation/raw/put_glottal.mp3 and /dev/null differ diff --git a/aePronunciation/raw/raced.mp3 b/aePronunciation/raw/raced.mp3 deleted file mode 100755 index f71d15b..0000000 Binary files a/aePronunciation/raw/raced.mp3 and /dev/null differ diff --git a/aePronunciation/raw/raised.mp3 b/aePronunciation/raw/raised.mp3 deleted file mode 100755 index 6925006..0000000 Binary files a/aePronunciation/raw/raised.mp3 and /dev/null differ diff --git a/aePronunciation/raw/read.mp3 b/aePronunciation/raw/read.mp3 deleted file mode 100755 index 48511ba..0000000 Binary files a/aePronunciation/raw/read.mp3 and /dev/null differ diff --git a/aePronunciation/raw/real.mp3 b/aePronunciation/raw/real.mp3 deleted file mode 100755 index 6b0aa1c..0000000 Binary files a/aePronunciation/raw/real.mp3 and /dev/null differ diff --git a/aePronunciation/raw/rib.mp3 b/aePronunciation/raw/rib.mp3 deleted file mode 100755 index d4b33d0..0000000 Binary files a/aePronunciation/raw/rib.mp3 and /dev/null differ diff --git a/aePronunciation/raw/ringing.mp3 b/aePronunciation/raw/ringing.mp3 deleted file mode 100755 index bb0d704..0000000 Binary files a/aePronunciation/raw/ringing.mp3 and /dev/null differ diff --git a/aePronunciation/raw/roar.mp3 b/aePronunciation/raw/roar.mp3 deleted file mode 100755 index aaf23b4..0000000 Binary files a/aePronunciation/raw/roar.mp3 and /dev/null differ diff --git a/aePronunciation/raw/safe.mp3 b/aePronunciation/raw/safe.mp3 deleted file mode 100755 index 16bb89c..0000000 Binary files a/aePronunciation/raw/safe.mp3 and /dev/null differ diff --git a/aePronunciation/raw/said.mp3 b/aePronunciation/raw/said.mp3 deleted file mode 100755 index b32297b..0000000 Binary files a/aePronunciation/raw/said.mp3 and /dev/null differ diff --git a/aePronunciation/raw/saw.mp3 b/aePronunciation/raw/saw.mp3 deleted file mode 100755 index df74ea8..0000000 Binary files a/aePronunciation/raw/saw.mp3 and /dev/null differ diff --git a/aePronunciation/raw/set.mp3 b/aePronunciation/raw/set.mp3 deleted file mode 100755 index 59377f7..0000000 Binary files a/aePronunciation/raw/set.mp3 and /dev/null differ diff --git a/aePronunciation/raw/shoot.mp3 b/aePronunciation/raw/shoot.mp3 deleted file mode 100755 index 120621d..0000000 Binary files a/aePronunciation/raw/shoot.mp3 and /dev/null differ diff --git a/aePronunciation/raw/should.mp3 b/aePronunciation/raw/should.mp3 deleted file mode 100755 index f69bf35..0000000 Binary files a/aePronunciation/raw/should.mp3 and /dev/null differ diff --git a/aePronunciation/raw/single_a.mp3 b/aePronunciation/raw/single_a.mp3 index 59f73e9..790eb28 100755 Binary files a/aePronunciation/raw/single_a.mp3 and b/aePronunciation/raw/single_a.mp3 differ diff --git a/aePronunciation/raw/single_ae.mp3 b/aePronunciation/raw/single_ae.mp3 index e2fac8d..780d525 100755 Binary files a/aePronunciation/raw/single_ae.mp3 and b/aePronunciation/raw/single_ae.mp3 differ diff --git a/aePronunciation/raw/single_ai.mp3 b/aePronunciation/raw/single_ai.mp3 index f50e617..68f4dcc 100755 Binary files a/aePronunciation/raw/single_ai.mp3 and b/aePronunciation/raw/single_ai.mp3 differ diff --git a/aePronunciation/raw/single_ar.mp3 b/aePronunciation/raw/single_ar.mp3 index 4558aeb..99d4cf0 100755 Binary files a/aePronunciation/raw/single_ar.mp3 and b/aePronunciation/raw/single_ar.mp3 differ diff --git a/aePronunciation/raw/single_au.mp3 b/aePronunciation/raw/single_au.mp3 index 73fe02f..533b6a4 100755 Binary files a/aePronunciation/raw/single_au.mp3 and b/aePronunciation/raw/single_au.mp3 differ diff --git a/aePronunciation/raw/single_b.mp3 b/aePronunciation/raw/single_b.mp3 index 81381ca..4367053 100755 Binary files a/aePronunciation/raw/single_b.mp3 and b/aePronunciation/raw/single_b.mp3 differ diff --git a/aePronunciation/raw/single_c_backwards.mp3 b/aePronunciation/raw/single_c_backwards.mp3 index 668760b..6fc37c0 100755 Binary files a/aePronunciation/raw/single_c_backwards.mp3 and b/aePronunciation/raw/single_c_backwards.mp3 differ diff --git a/aePronunciation/raw/single_ch.mp3 b/aePronunciation/raw/single_ch.mp3 index 6cb2b03..30aab32 100755 Binary files a/aePronunciation/raw/single_ch.mp3 and b/aePronunciation/raw/single_ch.mp3 differ diff --git a/aePronunciation/raw/single_d.mp3 b/aePronunciation/raw/single_d.mp3 index 8050daa..b582f64 100755 Binary files a/aePronunciation/raw/single_d.mp3 and b/aePronunciation/raw/single_d.mp3 differ diff --git a/aePronunciation/raw/single_dzh.mp3 b/aePronunciation/raw/single_dzh.mp3 index e7ace01..3c48664 100755 Binary files a/aePronunciation/raw/single_dzh.mp3 and b/aePronunciation/raw/single_dzh.mp3 differ diff --git a/aePronunciation/raw/single_e.mp3 b/aePronunciation/raw/single_e.mp3 index c5a406b..139a4c6 100755 Binary files a/aePronunciation/raw/single_e.mp3 and b/aePronunciation/raw/single_e.mp3 differ diff --git a/aePronunciation/raw/single_e_short.mp3 b/aePronunciation/raw/single_e_short.mp3 deleted file mode 100755 index 835c41e..0000000 Binary files a/aePronunciation/raw/single_e_short.mp3 and /dev/null differ diff --git a/aePronunciation/raw/single_ei.mp3 b/aePronunciation/raw/single_ei.mp3 new file mode 100755 index 0000000..5fe03b8 Binary files /dev/null and b/aePronunciation/raw/single_ei.mp3 differ diff --git a/aePronunciation/raw/single_er.mp3 b/aePronunciation/raw/single_er.mp3 index 57db676..2cd3d44 100755 Binary files a/aePronunciation/raw/single_er.mp3 and b/aePronunciation/raw/single_er.mp3 differ diff --git a/aePronunciation/raw/single_er_stressed.mp3 b/aePronunciation/raw/single_er_stressed.mp3 index 9205cd4..786ba0a 100755 Binary files a/aePronunciation/raw/single_er_stressed.mp3 and b/aePronunciation/raw/single_er_stressed.mp3 differ diff --git a/aePronunciation/raw/single_er_unstressed.mp3 b/aePronunciation/raw/single_er_unstressed.mp3 index 71affde..a2503cc 100755 Binary files a/aePronunciation/raw/single_er_unstressed.mp3 and b/aePronunciation/raw/single_er_unstressed.mp3 differ diff --git a/aePronunciation/raw/single_f.mp3 b/aePronunciation/raw/single_f.mp3 index 3652652..adc329b 100755 Binary files a/aePronunciation/raw/single_f.mp3 and b/aePronunciation/raw/single_f.mp3 differ diff --git a/aePronunciation/raw/single_flap_t.mp3 b/aePronunciation/raw/single_flap_t.mp3 index f0a2126..3880dcf 100755 Binary files a/aePronunciation/raw/single_flap_t.mp3 and b/aePronunciation/raw/single_flap_t.mp3 differ diff --git a/aePronunciation/raw/single_g.mp3 b/aePronunciation/raw/single_g.mp3 index 3c9198f..4a70a6a 100755 Binary files a/aePronunciation/raw/single_g.mp3 and b/aePronunciation/raw/single_g.mp3 differ diff --git a/aePronunciation/raw/single_glottal_stop.mp3 b/aePronunciation/raw/single_glottal_stop.mp3 index 0ef7261..afc0761 100755 Binary files a/aePronunciation/raw/single_glottal_stop.mp3 and b/aePronunciation/raw/single_glottal_stop.mp3 differ diff --git a/aePronunciation/raw/single_h.mp3 b/aePronunciation/raw/single_h.mp3 index 0e1100b..132e392 100755 Binary files a/aePronunciation/raw/single_h.mp3 and b/aePronunciation/raw/single_h.mp3 differ diff --git a/aePronunciation/raw/single_i.mp3 b/aePronunciation/raw/single_i.mp3 new file mode 100755 index 0000000..e8d2195 Binary files /dev/null and b/aePronunciation/raw/single_i.mp3 differ diff --git a/aePronunciation/raw/single_i_long.mp3 b/aePronunciation/raw/single_i_long.mp3 deleted file mode 100755 index cdabbd9..0000000 Binary files a/aePronunciation/raw/single_i_long.mp3 and /dev/null differ diff --git a/aePronunciation/raw/single_i_short.mp3 b/aePronunciation/raw/single_i_short.mp3 index fdec9de..de0a5b5 100755 Binary files a/aePronunciation/raw/single_i_short.mp3 and b/aePronunciation/raw/single_i_short.mp3 differ diff --git a/aePronunciation/raw/single_ir.mp3 b/aePronunciation/raw/single_ir.mp3 index 8201a5f..c1d3a51 100755 Binary files a/aePronunciation/raw/single_ir.mp3 and b/aePronunciation/raw/single_ir.mp3 differ diff --git a/aePronunciation/raw/single_j.mp3 b/aePronunciation/raw/single_j.mp3 index fb0b6fa..32a6a4a 100755 Binary files a/aePronunciation/raw/single_j.mp3 and b/aePronunciation/raw/single_j.mp3 differ diff --git a/aePronunciation/raw/single_k.mp3 b/aePronunciation/raw/single_k.mp3 index 86af111..276889b 100755 Binary files a/aePronunciation/raw/single_k.mp3 and b/aePronunciation/raw/single_k.mp3 differ diff --git a/aePronunciation/raw/single_l.mp3 b/aePronunciation/raw/single_l.mp3 index da69f9a..4f5bfb9 100755 Binary files a/aePronunciation/raw/single_l.mp3 and b/aePronunciation/raw/single_l.mp3 differ diff --git a/aePronunciation/raw/single_m.mp3 b/aePronunciation/raw/single_m.mp3 index 100ef82..ce722a1 100755 Binary files a/aePronunciation/raw/single_m.mp3 and b/aePronunciation/raw/single_m.mp3 differ diff --git a/aePronunciation/raw/single_n.mp3 b/aePronunciation/raw/single_n.mp3 index a40c49a..611eae3 100755 Binary files a/aePronunciation/raw/single_n.mp3 and b/aePronunciation/raw/single_n.mp3 differ diff --git a/aePronunciation/raw/single_ng.mp3 b/aePronunciation/raw/single_ng.mp3 index bf6c360..3850375 100755 Binary files a/aePronunciation/raw/single_ng.mp3 and b/aePronunciation/raw/single_ng.mp3 differ diff --git a/aePronunciation/raw/single_o.mp3 b/aePronunciation/raw/single_o.mp3 deleted file mode 100755 index c5fd536..0000000 Binary files a/aePronunciation/raw/single_o.mp3 and /dev/null differ diff --git a/aePronunciation/raw/single_oi.mp3 b/aePronunciation/raw/single_oi.mp3 index 7b9d2c5..ff5a245 100755 Binary files a/aePronunciation/raw/single_oi.mp3 and b/aePronunciation/raw/single_oi.mp3 differ diff --git a/aePronunciation/raw/single_or.mp3 b/aePronunciation/raw/single_or.mp3 index de9297d..027f7ba 100755 Binary files a/aePronunciation/raw/single_or.mp3 and b/aePronunciation/raw/single_or.mp3 differ diff --git a/aePronunciation/raw/single_ou.mp3 b/aePronunciation/raw/single_ou.mp3 new file mode 100755 index 0000000..1f246cd Binary files /dev/null and b/aePronunciation/raw/single_ou.mp3 differ diff --git a/aePronunciation/raw/single_p.mp3 b/aePronunciation/raw/single_p.mp3 index c1a0702..e402d5e 100755 Binary files a/aePronunciation/raw/single_p.mp3 and b/aePronunciation/raw/single_p.mp3 differ diff --git a/aePronunciation/raw/single_r.mp3 b/aePronunciation/raw/single_r.mp3 index 14c7fc9..0025566 100755 Binary files a/aePronunciation/raw/single_r.mp3 and b/aePronunciation/raw/single_r.mp3 differ diff --git a/aePronunciation/raw/single_s.mp3 b/aePronunciation/raw/single_s.mp3 index 39bac85..d6008b8 100755 Binary files a/aePronunciation/raw/single_s.mp3 and b/aePronunciation/raw/single_s.mp3 differ diff --git a/aePronunciation/raw/single_schwa.mp3 b/aePronunciation/raw/single_schwa.mp3 deleted file mode 100755 index ce0940c..0000000 Binary files a/aePronunciation/raw/single_schwa.mp3 and /dev/null differ diff --git a/aePronunciation/raw/single_sh.mp3 b/aePronunciation/raw/single_sh.mp3 index 28a87fc..7f0ff9e 100755 Binary files a/aePronunciation/raw/single_sh.mp3 and b/aePronunciation/raw/single_sh.mp3 differ diff --git a/aePronunciation/raw/single_shwua.mp3 b/aePronunciation/raw/single_shwua.mp3 new file mode 100755 index 0000000..17e0b47 Binary files /dev/null and b/aePronunciation/raw/single_shwua.mp3 differ diff --git a/aePronunciation/raw/single_t.mp3 b/aePronunciation/raw/single_t.mp3 index 88b9932..a204692 100755 Binary files a/aePronunciation/raw/single_t.mp3 and b/aePronunciation/raw/single_t.mp3 differ diff --git a/aePronunciation/raw/single_th_voiced.mp3 b/aePronunciation/raw/single_th_voiced.mp3 index dbca226..c399bbe 100755 Binary files a/aePronunciation/raw/single_th_voiced.mp3 and b/aePronunciation/raw/single_th_voiced.mp3 differ diff --git a/aePronunciation/raw/single_th_voiceless.mp3 b/aePronunciation/raw/single_th_voiceless.mp3 index 3118923..91cf156 100755 Binary files a/aePronunciation/raw/single_th_voiceless.mp3 and b/aePronunciation/raw/single_th_voiceless.mp3 differ diff --git a/aePronunciation/raw/single_u.mp3 b/aePronunciation/raw/single_u.mp3 index 90d3491..d1d0403 100755 Binary files a/aePronunciation/raw/single_u.mp3 and b/aePronunciation/raw/single_u.mp3 differ diff --git a/aePronunciation/raw/single_u_short.mp3 b/aePronunciation/raw/single_u_short.mp3 index dd8c7d1..57db4e4 100755 Binary files a/aePronunciation/raw/single_u_short.mp3 and b/aePronunciation/raw/single_u_short.mp3 differ diff --git a/aePronunciation/raw/single_v.mp3 b/aePronunciation/raw/single_v.mp3 index 6c6a70e..3e8161f 100755 Binary files a/aePronunciation/raw/single_v.mp3 and b/aePronunciation/raw/single_v.mp3 differ diff --git a/aePronunciation/raw/single_v_upsidedown.mp3 b/aePronunciation/raw/single_v_upsidedown.mp3 index 11d0872..9f810e1 100755 Binary files a/aePronunciation/raw/single_v_upsidedown.mp3 and b/aePronunciation/raw/single_v_upsidedown.mp3 differ diff --git a/aePronunciation/raw/single_w.mp3 b/aePronunciation/raw/single_w.mp3 index 09b6a58..49a6fd9 100755 Binary files a/aePronunciation/raw/single_w.mp3 and b/aePronunciation/raw/single_w.mp3 differ diff --git a/aePronunciation/raw/single_z.mp3 b/aePronunciation/raw/single_z.mp3 index 4a545c6..0588656 100755 Binary files a/aePronunciation/raw/single_z.mp3 and b/aePronunciation/raw/single_z.mp3 differ diff --git a/aePronunciation/raw/single_zh.mp3 b/aePronunciation/raw/single_zh.mp3 index d16249e..2170412 100755 Binary files a/aePronunciation/raw/single_zh.mp3 and b/aePronunciation/raw/single_zh.mp3 differ diff --git a/aePronunciation/raw/skill.mp3 b/aePronunciation/raw/skill.mp3 deleted file mode 100755 index f99c5b7..0000000 Binary files a/aePronunciation/raw/skill.mp3 and /dev/null differ diff --git a/aePronunciation/raw/speak.mp3 b/aePronunciation/raw/speak.mp3 deleted file mode 100755 index e793533..0000000 Binary files a/aePronunciation/raw/speak.mp3 and /dev/null differ diff --git a/aePronunciation/raw/sting.mp3 b/aePronunciation/raw/sting.mp3 deleted file mode 100755 index c8598a6..0000000 Binary files a/aePronunciation/raw/sting.mp3 and /dev/null differ diff --git a/aePronunciation/raw/stop.mp3 b/aePronunciation/raw/stop.mp3 deleted file mode 100755 index 1351031..0000000 Binary files a/aePronunciation/raw/stop.mp3 and /dev/null differ diff --git a/aePronunciation/raw/sun.mp3 b/aePronunciation/raw/sun.mp3 deleted file mode 100755 index 61e64d4..0000000 Binary files a/aePronunciation/raw/sun.mp3 and /dev/null differ diff --git a/aePronunciation/raw/sung.mp3 b/aePronunciation/raw/sung.mp3 deleted file mode 100755 index b732bf6..0000000 Binary files a/aePronunciation/raw/sung.mp3 and /dev/null differ diff --git a/aePronunciation/raw/there.mp3 b/aePronunciation/raw/there.mp3 deleted file mode 100755 index 8017200..0000000 Binary files a/aePronunciation/raw/there.mp3 and /dev/null differ diff --git a/aePronunciation/raw/think.mp3 b/aePronunciation/raw/think.mp3 deleted file mode 100755 index 54da7a7..0000000 Binary files a/aePronunciation/raw/think.mp3 and /dev/null differ diff --git a/aePronunciation/raw/thirty.mp3 b/aePronunciation/raw/thirty.mp3 deleted file mode 100755 index 3a45ad4..0000000 Binary files a/aePronunciation/raw/thirty.mp3 and /dev/null differ diff --git a/aePronunciation/raw/toad.mp3 b/aePronunciation/raw/toad.mp3 deleted file mode 100755 index 1fce503..0000000 Binary files a/aePronunciation/raw/toad.mp3 and /dev/null differ diff --git a/aePronunciation/raw/twelve.mp3 b/aePronunciation/raw/twelve.mp3 deleted file mode 100755 index 354c795..0000000 Binary files a/aePronunciation/raw/twelve.mp3 and /dev/null differ diff --git a/aePronunciation/raw/uhhuh.mp3 b/aePronunciation/raw/uhhuh.mp3 deleted file mode 100755 index 1362279..0000000 Binary files a/aePronunciation/raw/uhhuh.mp3 and /dev/null differ diff --git a/aePronunciation/raw/uhoh.mp3 b/aePronunciation/raw/uhoh.mp3 deleted file mode 100755 index 8fb6942..0000000 Binary files a/aePronunciation/raw/uhoh.mp3 and /dev/null differ diff --git a/aePronunciation/raw/up.mp3 b/aePronunciation/raw/up.mp3 deleted file mode 100755 index 0e5a197..0000000 Binary files a/aePronunciation/raw/up.mp3 and /dev/null differ diff --git a/aePronunciation/raw/usually.mp3 b/aePronunciation/raw/usually.mp3 deleted file mode 100755 index 95d76aa..0000000 Binary files a/aePronunciation/raw/usually.mp3 and /dev/null differ diff --git a/aePronunciation/raw/v_a.mp4 b/aePronunciation/raw/v_a.mp4 new file mode 100755 index 0000000..d7afd2b Binary files /dev/null and b/aePronunciation/raw/v_a.mp4 differ diff --git a/aePronunciation/raw/v_ae.mp4 b/aePronunciation/raw/v_ae.mp4 new file mode 100755 index 0000000..3768b2b Binary files /dev/null and b/aePronunciation/raw/v_ae.mp4 differ diff --git a/aePronunciation/raw/v_ai.mp4 b/aePronunciation/raw/v_ai.mp4 new file mode 100755 index 0000000..28f5aea Binary files /dev/null and b/aePronunciation/raw/v_ai.mp4 differ diff --git a/aePronunciation/raw/v_ar.mp4 b/aePronunciation/raw/v_ar.mp4 new file mode 100755 index 0000000..a0c5d0b Binary files /dev/null and b/aePronunciation/raw/v_ar.mp4 differ diff --git a/aePronunciation/raw/v_au.mp4 b/aePronunciation/raw/v_au.mp4 new file mode 100755 index 0000000..f84bd7a Binary files /dev/null and b/aePronunciation/raw/v_au.mp4 differ diff --git a/aePronunciation/raw/v_b.mp4 b/aePronunciation/raw/v_b.mp4 new file mode 100755 index 0000000..8997188 Binary files /dev/null and b/aePronunciation/raw/v_b.mp4 differ diff --git a/aePronunciation/raw/v_c_backwards.mp4 b/aePronunciation/raw/v_c_backwards.mp4 new file mode 100755 index 0000000..539d659 Binary files /dev/null and b/aePronunciation/raw/v_c_backwards.mp4 differ diff --git a/aePronunciation/raw/v_ch.mp4 b/aePronunciation/raw/v_ch.mp4 new file mode 100755 index 0000000..280f7c8 Binary files /dev/null and b/aePronunciation/raw/v_ch.mp4 differ diff --git a/aePronunciation/raw/v_d.mp4 b/aePronunciation/raw/v_d.mp4 new file mode 100755 index 0000000..e2e78f6 Binary files /dev/null and b/aePronunciation/raw/v_d.mp4 differ diff --git a/aePronunciation/raw/v_dzh.mp4 b/aePronunciation/raw/v_dzh.mp4 new file mode 100755 index 0000000..9ca4799 Binary files /dev/null and b/aePronunciation/raw/v_dzh.mp4 differ diff --git a/aePronunciation/raw/v_e_short.mp4 b/aePronunciation/raw/v_e_short.mp4 new file mode 100755 index 0000000..faf73f3 Binary files /dev/null and b/aePronunciation/raw/v_e_short.mp4 differ diff --git a/aePronunciation/raw/v_ei.mp4 b/aePronunciation/raw/v_ei.mp4 new file mode 100755 index 0000000..e1b7e54 Binary files /dev/null and b/aePronunciation/raw/v_ei.mp4 differ diff --git a/aePronunciation/raw/v_er.mp4 b/aePronunciation/raw/v_er.mp4 new file mode 100755 index 0000000..f5598c7 Binary files /dev/null and b/aePronunciation/raw/v_er.mp4 differ diff --git a/aePronunciation/raw/v_er_stressed.mp4 b/aePronunciation/raw/v_er_stressed.mp4 new file mode 100755 index 0000000..b058742 Binary files /dev/null and b/aePronunciation/raw/v_er_stressed.mp4 differ diff --git a/aePronunciation/raw/v_er_unstressed.mp4 b/aePronunciation/raw/v_er_unstressed.mp4 new file mode 100755 index 0000000..588cc59 Binary files /dev/null and b/aePronunciation/raw/v_er_unstressed.mp4 differ diff --git a/aePronunciation/raw/v_f.mp4 b/aePronunciation/raw/v_f.mp4 new file mode 100755 index 0000000..2948b52 Binary files /dev/null and b/aePronunciation/raw/v_f.mp4 differ diff --git a/aePronunciation/raw/v_flap_t.mp4 b/aePronunciation/raw/v_flap_t.mp4 new file mode 100755 index 0000000..2428345 Binary files /dev/null and b/aePronunciation/raw/v_flap_t.mp4 differ diff --git a/aePronunciation/raw/v_g.mp4 b/aePronunciation/raw/v_g.mp4 new file mode 100755 index 0000000..fa00c8a Binary files /dev/null and b/aePronunciation/raw/v_g.mp4 differ diff --git a/aePronunciation/raw/v_glottal_stop.mp4 b/aePronunciation/raw/v_glottal_stop.mp4 new file mode 100755 index 0000000..7c35435 Binary files /dev/null and b/aePronunciation/raw/v_glottal_stop.mp4 differ diff --git a/aePronunciation/raw/v_h.mp4 b/aePronunciation/raw/v_h.mp4 new file mode 100755 index 0000000..398e419 Binary files /dev/null and b/aePronunciation/raw/v_h.mp4 differ diff --git a/aePronunciation/raw/v_i.mp4 b/aePronunciation/raw/v_i.mp4 new file mode 100755 index 0000000..f80e7c9 Binary files /dev/null and b/aePronunciation/raw/v_i.mp4 differ diff --git a/aePronunciation/raw/v_i_short.mp4 b/aePronunciation/raw/v_i_short.mp4 new file mode 100755 index 0000000..fa53a7f Binary files /dev/null and b/aePronunciation/raw/v_i_short.mp4 differ diff --git a/aePronunciation/raw/v_ir.mp4 b/aePronunciation/raw/v_ir.mp4 new file mode 100755 index 0000000..fe41446 Binary files /dev/null and b/aePronunciation/raw/v_ir.mp4 differ diff --git a/aePronunciation/raw/v_j.mp4 b/aePronunciation/raw/v_j.mp4 new file mode 100755 index 0000000..43272a9 Binary files /dev/null and b/aePronunciation/raw/v_j.mp4 differ diff --git a/aePronunciation/raw/v_k.mp4 b/aePronunciation/raw/v_k.mp4 new file mode 100755 index 0000000..8cb7731 Binary files /dev/null and b/aePronunciation/raw/v_k.mp4 differ diff --git a/aePronunciation/raw/v_l.mp4 b/aePronunciation/raw/v_l.mp4 new file mode 100755 index 0000000..84a5c9d Binary files /dev/null and b/aePronunciation/raw/v_l.mp4 differ diff --git a/aePronunciation/raw/v_m.mp4 b/aePronunciation/raw/v_m.mp4 new file mode 100755 index 0000000..a893ba5 Binary files /dev/null and b/aePronunciation/raw/v_m.mp4 differ diff --git a/aePronunciation/raw/v_n.mp4 b/aePronunciation/raw/v_n.mp4 new file mode 100755 index 0000000..87488f8 Binary files /dev/null and b/aePronunciation/raw/v_n.mp4 differ diff --git a/aePronunciation/raw/v_ng.mp4 b/aePronunciation/raw/v_ng.mp4 new file mode 100755 index 0000000..ccbc13b Binary files /dev/null and b/aePronunciation/raw/v_ng.mp4 differ diff --git a/aePronunciation/raw/v_oi.mp4 b/aePronunciation/raw/v_oi.mp4 new file mode 100755 index 0000000..c6d06a5 Binary files /dev/null and b/aePronunciation/raw/v_oi.mp4 differ diff --git a/aePronunciation/raw/v_or.mp4 b/aePronunciation/raw/v_or.mp4 new file mode 100755 index 0000000..c5cb3dd Binary files /dev/null and b/aePronunciation/raw/v_or.mp4 differ diff --git a/aePronunciation/raw/v_ou.mp4 b/aePronunciation/raw/v_ou.mp4 new file mode 100755 index 0000000..d31e688 Binary files /dev/null and b/aePronunciation/raw/v_ou.mp4 differ diff --git a/aePronunciation/raw/v_p.mp4 b/aePronunciation/raw/v_p.mp4 new file mode 100755 index 0000000..ab5459b Binary files /dev/null and b/aePronunciation/raw/v_p.mp4 differ diff --git a/aePronunciation/raw/v_r.mp4 b/aePronunciation/raw/v_r.mp4 new file mode 100755 index 0000000..ff6e7aa Binary files /dev/null and b/aePronunciation/raw/v_r.mp4 differ diff --git a/aePronunciation/raw/v_s.mp4 b/aePronunciation/raw/v_s.mp4 new file mode 100755 index 0000000..47aaf0d Binary files /dev/null and b/aePronunciation/raw/v_s.mp4 differ diff --git a/aePronunciation/raw/v_schwa.mp4 b/aePronunciation/raw/v_schwa.mp4 new file mode 100755 index 0000000..f3074b5 Binary files /dev/null and b/aePronunciation/raw/v_schwa.mp4 differ diff --git a/aePronunciation/raw/v_sh.mp4 b/aePronunciation/raw/v_sh.mp4 new file mode 100755 index 0000000..35f160e Binary files /dev/null and b/aePronunciation/raw/v_sh.mp4 differ diff --git a/aePronunciation/raw/v_t.mp4 b/aePronunciation/raw/v_t.mp4 new file mode 100755 index 0000000..a72e04b Binary files /dev/null and b/aePronunciation/raw/v_t.mp4 differ diff --git a/aePronunciation/raw/v_th_voiced.mp4 b/aePronunciation/raw/v_th_voiced.mp4 new file mode 100755 index 0000000..baa41c9 Binary files /dev/null and b/aePronunciation/raw/v_th_voiced.mp4 differ diff --git a/aePronunciation/raw/v_th_voiceless.mp4 b/aePronunciation/raw/v_th_voiceless.mp4 new file mode 100755 index 0000000..2c13a48 Binary files /dev/null and b/aePronunciation/raw/v_th_voiceless.mp4 differ diff --git a/aePronunciation/raw/v_u.mp4 b/aePronunciation/raw/v_u.mp4 new file mode 100755 index 0000000..ae3df22 Binary files /dev/null and b/aePronunciation/raw/v_u.mp4 differ diff --git a/aePronunciation/raw/v_u_short.mp4 b/aePronunciation/raw/v_u_short.mp4 new file mode 100755 index 0000000..6ed2344 Binary files /dev/null and b/aePronunciation/raw/v_u_short.mp4 differ diff --git a/aePronunciation/raw/v_v.mp4 b/aePronunciation/raw/v_v.mp4 new file mode 100755 index 0000000..00ea397 Binary files /dev/null and b/aePronunciation/raw/v_v.mp4 differ diff --git a/aePronunciation/raw/v_v_upsidedown.mp4 b/aePronunciation/raw/v_v_upsidedown.mp4 new file mode 100755 index 0000000..861da9e Binary files /dev/null and b/aePronunciation/raw/v_v_upsidedown.mp4 differ diff --git a/aePronunciation/raw/v_w.mp4 b/aePronunciation/raw/v_w.mp4 new file mode 100755 index 0000000..22858db Binary files /dev/null and b/aePronunciation/raw/v_w.mp4 differ diff --git a/aePronunciation/raw/v_z.mp4 b/aePronunciation/raw/v_z.mp4 new file mode 100755 index 0000000..296d76f Binary files /dev/null and b/aePronunciation/raw/v_z.mp4 differ diff --git a/aePronunciation/raw/v_zh.mp4 b/aePronunciation/raw/v_zh.mp4 new file mode 100755 index 0000000..dca3dd7 Binary files /dev/null and b/aePronunciation/raw/v_zh.mp4 differ diff --git a/aePronunciation/raw/very.mp3 b/aePronunciation/raw/very.mp3 deleted file mode 100755 index 67794b6..0000000 Binary files a/aePronunciation/raw/very.mp3 and /dev/null differ diff --git a/aePronunciation/raw/voice.mp3 b/aePronunciation/raw/voice.mp3 deleted file mode 100755 index 46c7ec9..0000000 Binary files a/aePronunciation/raw/voice.mp3 and /dev/null differ diff --git a/aePronunciation/raw/wary.mp3 b/aePronunciation/raw/wary.mp3 deleted file mode 100755 index e4eca12..0000000 Binary files a/aePronunciation/raw/wary.mp3 and /dev/null differ diff --git a/aePronunciation/raw/water.mp3 b/aePronunciation/raw/water.mp3 deleted file mode 100755 index d017f9b..0000000 Binary files a/aePronunciation/raw/water.mp3 and /dev/null differ diff --git a/aePronunciation/raw/week.mp3 b/aePronunciation/raw/week.mp3 deleted file mode 100755 index 13bb305..0000000 Binary files a/aePronunciation/raw/week.mp3 and /dev/null differ diff --git a/aePronunciation/raw/weird.mp3 b/aePronunciation/raw/weird.mp3 deleted file mode 100755 index d116d8e..0000000 Binary files a/aePronunciation/raw/weird.mp3 and /dev/null differ diff --git a/aePronunciation/raw/what.mp3 b/aePronunciation/raw/what.mp3 deleted file mode 100755 index 44cc02d..0000000 Binary files a/aePronunciation/raw/what.mp3 and /dev/null differ diff --git a/aePronunciation/raw/wished.mp3 b/aePronunciation/raw/wished.mp3 deleted file mode 100755 index ec25666..0000000 Binary files a/aePronunciation/raw/wished.mp3 and /dev/null differ diff --git a/aePronunciation/raw/wonderful.mp3 b/aePronunciation/raw/wonderful.mp3 deleted file mode 100755 index 6284d98..0000000 Binary files a/aePronunciation/raw/wonderful.mp3 and /dev/null differ diff --git a/aePronunciation/raw/word_above.mp3 b/aePronunciation/raw/word_above.mp3 new file mode 100755 index 0000000..41350ca Binary files /dev/null and b/aePronunciation/raw/word_above.mp3 differ diff --git a/aePronunciation/raw/word_again.mp3 b/aePronunciation/raw/word_again.mp3 new file mode 100755 index 0000000..6c29b12 Binary files /dev/null and b/aePronunciation/raw/word_again.mp3 differ diff --git a/aePronunciation/raw/word_age.mp3 b/aePronunciation/raw/word_age.mp3 new file mode 100755 index 0000000..5888f3a Binary files /dev/null and b/aePronunciation/raw/word_age.mp3 differ diff --git a/aePronunciation/raw/word_agile.mp3 b/aePronunciation/raw/word_agile.mp3 new file mode 100755 index 0000000..e009403 Binary files /dev/null and b/aePronunciation/raw/word_agile.mp3 differ diff --git a/aePronunciation/raw/word_ahead.mp3 b/aePronunciation/raw/word_ahead.mp3 new file mode 100755 index 0000000..4f68a50 Binary files /dev/null and b/aePronunciation/raw/word_ahead.mp3 differ diff --git a/aePronunciation/raw/word_aired.mp3 b/aePronunciation/raw/word_aired.mp3 new file mode 100755 index 0000000..73d3a2c Binary files /dev/null and b/aePronunciation/raw/word_aired.mp3 differ diff --git a/aePronunciation/raw/word_arm.mp3 b/aePronunciation/raw/word_arm.mp3 new file mode 100755 index 0000000..cbe4a6c Binary files /dev/null and b/aePronunciation/raw/word_arm.mp3 differ diff --git a/aePronunciation/raw/word_ash.mp3 b/aePronunciation/raw/word_ash.mp3 new file mode 100755 index 0000000..ebafea7 Binary files /dev/null and b/aePronunciation/raw/word_ash.mp3 differ diff --git a/aePronunciation/raw/word_bad.mp3 b/aePronunciation/raw/word_bad.mp3 new file mode 100755 index 0000000..f89b9bc Binary files /dev/null and b/aePronunciation/raw/word_bad.mp3 differ diff --git a/aePronunciation/raw/word_bat.mp3 b/aePronunciation/raw/word_bat.mp3 new file mode 100755 index 0000000..595136e Binary files /dev/null and b/aePronunciation/raw/word_bat.mp3 differ diff --git a/aePronunciation/raw/word_bathe.mp3 b/aePronunciation/raw/word_bathe.mp3 new file mode 100755 index 0000000..566bb4e Binary files /dev/null and b/aePronunciation/raw/word_bathe.mp3 differ diff --git a/aePronunciation/raw/word_beige.mp3 b/aePronunciation/raw/word_beige.mp3 new file mode 100755 index 0000000..9d29204 Binary files /dev/null and b/aePronunciation/raw/word_beige.mp3 differ diff --git a/aePronunciation/raw/word_bill.mp3 b/aePronunciation/raw/word_bill.mp3 new file mode 100755 index 0000000..1728fc4 Binary files /dev/null and b/aePronunciation/raw/word_bill.mp3 differ diff --git a/aePronunciation/raw/word_birthday.mp3 b/aePronunciation/raw/word_birthday.mp3 new file mode 100755 index 0000000..a62f34f Binary files /dev/null and b/aePronunciation/raw/word_birthday.mp3 differ diff --git a/aePronunciation/raw/word_bite.mp3 b/aePronunciation/raw/word_bite.mp3 new file mode 100755 index 0000000..8c05759 Binary files /dev/null and b/aePronunciation/raw/word_bite.mp3 differ diff --git a/aePronunciation/raw/word_blue.mp3 b/aePronunciation/raw/word_blue.mp3 new file mode 100755 index 0000000..a0cc121 Binary files /dev/null and b/aePronunciation/raw/word_blue.mp3 differ diff --git a/aePronunciation/raw/word_boy.mp3 b/aePronunciation/raw/word_boy.mp3 new file mode 100755 index 0000000..4c0223f Binary files /dev/null and b/aePronunciation/raw/word_boy.mp3 differ diff --git a/aePronunciation/raw/word_button.mp3 b/aePronunciation/raw/word_button.mp3 new file mode 100755 index 0000000..a9c0f61 Binary files /dev/null and b/aePronunciation/raw/word_button.mp3 differ diff --git a/aePronunciation/raw/word_call.mp3 b/aePronunciation/raw/word_call.mp3 new file mode 100755 index 0000000..86d7440 Binary files /dev/null and b/aePronunciation/raw/word_call.mp3 differ diff --git a/aePronunciation/raw/word_car.mp3 b/aePronunciation/raw/word_car.mp3 new file mode 100755 index 0000000..bdc7369 Binary files /dev/null and b/aePronunciation/raw/word_car.mp3 differ diff --git a/aePronunciation/raw/word_card.mp3 b/aePronunciation/raw/word_card.mp3 new file mode 100755 index 0000000..b45052c Binary files /dev/null and b/aePronunciation/raw/word_card.mp3 differ diff --git a/aePronunciation/raw/word_cards.mp3 b/aePronunciation/raw/word_cards.mp3 new file mode 100755 index 0000000..7f62bb2 Binary files /dev/null and b/aePronunciation/raw/word_cards.mp3 differ diff --git a/aePronunciation/raw/word_cars.mp3 b/aePronunciation/raw/word_cars.mp3 new file mode 100755 index 0000000..16f85cf Binary files /dev/null and b/aePronunciation/raw/word_cars.mp3 differ diff --git a/aePronunciation/raw/word_chairs.mp3 b/aePronunciation/raw/word_chairs.mp3 new file mode 100755 index 0000000..239b197 Binary files /dev/null and b/aePronunciation/raw/word_chairs.mp3 differ diff --git a/aePronunciation/raw/word_church.mp3 b/aePronunciation/raw/word_church.mp3 new file mode 100755 index 0000000..dc8d4f3 Binary files /dev/null and b/aePronunciation/raw/word_church.mp3 differ diff --git a/aePronunciation/raw/word_cool.mp3 b/aePronunciation/raw/word_cool.mp3 new file mode 100755 index 0000000..871ebbb Binary files /dev/null and b/aePronunciation/raw/word_cool.mp3 differ diff --git a/aePronunciation/raw/word_cove.mp3 b/aePronunciation/raw/word_cove.mp3 new file mode 100755 index 0000000..fa433c9 Binary files /dev/null and b/aePronunciation/raw/word_cove.mp3 differ diff --git a/aePronunciation/raw/word_cow.mp3 b/aePronunciation/raw/word_cow.mp3 new file mode 100755 index 0000000..2f08e68 Binary files /dev/null and b/aePronunciation/raw/word_cow.mp3 differ diff --git a/aePronunciation/raw/word_cube.mp3 b/aePronunciation/raw/word_cube.mp3 new file mode 100755 index 0000000..3931830 Binary files /dev/null and b/aePronunciation/raw/word_cube.mp3 differ diff --git a/aePronunciation/raw/word_delicious.mp3 b/aePronunciation/raw/word_delicious.mp3 new file mode 100755 index 0000000..adab8a8 Binary files /dev/null and b/aePronunciation/raw/word_delicious.mp3 differ diff --git a/aePronunciation/raw/word_each.mp3 b/aePronunciation/raw/word_each.mp3 new file mode 100755 index 0000000..5e36447 Binary files /dev/null and b/aePronunciation/raw/word_each.mp3 differ diff --git a/aePronunciation/raw/word_eachof.mp3 b/aePronunciation/raw/word_eachof.mp3 new file mode 100755 index 0000000..01cbfcc Binary files /dev/null and b/aePronunciation/raw/word_eachof.mp3 differ diff --git a/aePronunciation/raw/word_ear.mp3 b/aePronunciation/raw/word_ear.mp3 new file mode 100755 index 0000000..fa25191 Binary files /dev/null and b/aePronunciation/raw/word_ear.mp3 differ diff --git a/aePronunciation/raw/word_earth.mp3 b/aePronunciation/raw/word_earth.mp3 new file mode 100755 index 0000000..a33270d Binary files /dev/null and b/aePronunciation/raw/word_earth.mp3 differ diff --git a/aePronunciation/raw/word_edge.mp3 b/aePronunciation/raw/word_edge.mp3 new file mode 100755 index 0000000..6e7e8e7 Binary files /dev/null and b/aePronunciation/raw/word_edge.mp3 differ diff --git a/aePronunciation/raw/word_every.mp3 b/aePronunciation/raw/word_every.mp3 new file mode 100755 index 0000000..4af9253 Binary files /dev/null and b/aePronunciation/raw/word_every.mp3 differ diff --git a/aePronunciation/raw/word_father.mp3 b/aePronunciation/raw/word_father.mp3 new file mode 100755 index 0000000..5082ba8 Binary files /dev/null and b/aePronunciation/raw/word_father.mp3 differ diff --git a/aePronunciation/raw/word_fly.mp3 b/aePronunciation/raw/word_fly.mp3 new file mode 100755 index 0000000..68f7f13 Binary files /dev/null and b/aePronunciation/raw/word_fly.mp3 differ diff --git a/aePronunciation/raw/word_gift.mp3 b/aePronunciation/raw/word_gift.mp3 new file mode 100755 index 0000000..6e25c80 Binary files /dev/null and b/aePronunciation/raw/word_gift.mp3 differ diff --git a/aePronunciation/raw/word_good.mp3 b/aePronunciation/raw/word_good.mp3 new file mode 100755 index 0000000..f5fac47 Binary files /dev/null and b/aePronunciation/raw/word_good.mp3 differ diff --git a/aePronunciation/raw/word_have.mp3 b/aePronunciation/raw/word_have.mp3 new file mode 100755 index 0000000..231c90c Binary files /dev/null and b/aePronunciation/raw/word_have.mp3 differ diff --git a/aePronunciation/raw/word_her.mp3 b/aePronunciation/raw/word_her.mp3 new file mode 100755 index 0000000..93796b2 Binary files /dev/null and b/aePronunciation/raw/word_her.mp3 differ diff --git a/aePronunciation/raw/word_here.mp3 b/aePronunciation/raw/word_here.mp3 new file mode 100755 index 0000000..8341bb8 Binary files /dev/null and b/aePronunciation/raw/word_here.mp3 differ diff --git a/aePronunciation/raw/word_him.mp3 b/aePronunciation/raw/word_him.mp3 new file mode 100755 index 0000000..25b104c Binary files /dev/null and b/aePronunciation/raw/word_him.mp3 differ diff --git a/aePronunciation/raw/word_if.mp3 b/aePronunciation/raw/word_if.mp3 index f2f99e3..8da1cc1 100755 Binary files a/aePronunciation/raw/word_if.mp3 and b/aePronunciation/raw/word_if.mp3 differ diff --git a/aePronunciation/raw/word_im.mp3 b/aePronunciation/raw/word_im.mp3 new file mode 100755 index 0000000..99cfae4 Binary files /dev/null and b/aePronunciation/raw/word_im.mp3 differ diff --git a/aePronunciation/raw/word_it.mp3 b/aePronunciation/raw/word_it.mp3 new file mode 100755 index 0000000..a7f6443 Binary files /dev/null and b/aePronunciation/raw/word_it.mp3 differ diff --git a/aePronunciation/raw/word_jonathan.mp3 b/aePronunciation/raw/word_jonathan.mp3 new file mode 100755 index 0000000..99f7f00 Binary files /dev/null and b/aePronunciation/raw/word_jonathan.mp3 differ diff --git a/aePronunciation/raw/word_jump.mp3 b/aePronunciation/raw/word_jump.mp3 new file mode 100755 index 0000000..b6816ee Binary files /dev/null and b/aePronunciation/raw/word_jump.mp3 differ diff --git a/aePronunciation/raw/word_little.mp3 b/aePronunciation/raw/word_little.mp3 new file mode 100755 index 0000000..6ef2865 Binary files /dev/null and b/aePronunciation/raw/word_little.mp3 differ diff --git a/aePronunciation/raw/word_loud.mp3 b/aePronunciation/raw/word_loud.mp3 new file mode 100755 index 0000000..16892ca Binary files /dev/null and b/aePronunciation/raw/word_loud.mp3 differ diff --git a/aePronunciation/raw/word_low.mp3 b/aePronunciation/raw/word_low.mp3 new file mode 100755 index 0000000..efb5365 Binary files /dev/null and b/aePronunciation/raw/word_low.mp3 differ diff --git a/aePronunciation/raw/word_ma.mp3 b/aePronunciation/raw/word_ma.mp3 new file mode 100755 index 0000000..165a73e Binary files /dev/null and b/aePronunciation/raw/word_ma.mp3 differ diff --git a/aePronunciation/raw/word_may.mp3 b/aePronunciation/raw/word_may.mp3 new file mode 100755 index 0000000..0b2ee60 Binary files /dev/null and b/aePronunciation/raw/word_may.mp3 differ diff --git a/aePronunciation/raw/word_me.mp3 b/aePronunciation/raw/word_me.mp3 new file mode 100755 index 0000000..bf99049 Binary files /dev/null and b/aePronunciation/raw/word_me.mp3 differ diff --git a/aePronunciation/raw/word_mother.mp3 b/aePronunciation/raw/word_mother.mp3 new file mode 100755 index 0000000..c659364 Binary files /dev/null and b/aePronunciation/raw/word_mother.mp3 differ diff --git a/aePronunciation/raw/word_new.mp3 b/aePronunciation/raw/word_new.mp3 index 35640eb..8d5e58a 100755 Binary files a/aePronunciation/raw/word_new.mp3 and b/aePronunciation/raw/word_new.mp3 differ diff --git a/aePronunciation/raw/word_north.mp3 b/aePronunciation/raw/word_north.mp3 new file mode 100755 index 0000000..fa9819b Binary files /dev/null and b/aePronunciation/raw/word_north.mp3 differ diff --git a/aePronunciation/raw/word_oars.mp3 b/aePronunciation/raw/word_oars.mp3 new file mode 100755 index 0000000..06ad88e Binary files /dev/null and b/aePronunciation/raw/word_oars.mp3 differ diff --git a/aePronunciation/raw/word_oath.mp3 b/aePronunciation/raw/word_oath.mp3 new file mode 100755 index 0000000..244d3da Binary files /dev/null and b/aePronunciation/raw/word_oath.mp3 differ diff --git a/aePronunciation/raw/word_oil.mp3 b/aePronunciation/raw/word_oil.mp3 new file mode 100755 index 0000000..f5a6480 Binary files /dev/null and b/aePronunciation/raw/word_oil.mp3 differ diff --git a/aePronunciation/raw/word_on.mp3 b/aePronunciation/raw/word_on.mp3 new file mode 100755 index 0000000..4e034f4 Binary files /dev/null and b/aePronunciation/raw/word_on.mp3 differ diff --git a/aePronunciation/raw/word_ooze.mp3 b/aePronunciation/raw/word_ooze.mp3 new file mode 100755 index 0000000..40a17a5 Binary files /dev/null and b/aePronunciation/raw/word_ooze.mp3 differ diff --git a/aePronunciation/raw/word_ought.mp3 b/aePronunciation/raw/word_ought.mp3 new file mode 100755 index 0000000..1fb903d Binary files /dev/null and b/aePronunciation/raw/word_ought.mp3 differ diff --git a/aePronunciation/raw/word_out.mp3 b/aePronunciation/raw/word_out.mp3 new file mode 100755 index 0000000..a370011 Binary files /dev/null and b/aePronunciation/raw/word_out.mp3 differ diff --git a/aePronunciation/raw/word_panda.mp3 b/aePronunciation/raw/word_panda.mp3 new file mode 100755 index 0000000..92c3c0e Binary files /dev/null and b/aePronunciation/raw/word_panda.mp3 differ diff --git a/aePronunciation/raw/word_part.mp3 b/aePronunciation/raw/word_part.mp3 new file mode 100755 index 0000000..329c434 Binary files /dev/null and b/aePronunciation/raw/word_part.mp3 differ diff --git a/aePronunciation/raw/word_pass.mp3 b/aePronunciation/raw/word_pass.mp3 new file mode 100755 index 0000000..c17d577 Binary files /dev/null and b/aePronunciation/raw/word_pass.mp3 differ diff --git a/aePronunciation/raw/word_perform.mp3 b/aePronunciation/raw/word_perform.mp3 new file mode 100755 index 0000000..d30effa Binary files /dev/null and b/aePronunciation/raw/word_perform.mp3 differ diff --git a/aePronunciation/raw/word_pig.mp3 b/aePronunciation/raw/word_pig.mp3 new file mode 100755 index 0000000..896d723 Binary files /dev/null and b/aePronunciation/raw/word_pig.mp3 differ diff --git a/aePronunciation/raw/word_pleasure.mp3 b/aePronunciation/raw/word_pleasure.mp3 new file mode 100755 index 0000000..4eee632 Binary files /dev/null and b/aePronunciation/raw/word_pleasure.mp3 differ diff --git a/aePronunciation/raw/word_put.mp3 b/aePronunciation/raw/word_put.mp3 new file mode 100755 index 0000000..9016e9d Binary files /dev/null and b/aePronunciation/raw/word_put.mp3 differ diff --git a/aePronunciation/raw/word_put_glottal.mp3 b/aePronunciation/raw/word_put_glottal.mp3 new file mode 100755 index 0000000..a54bdc7 Binary files /dev/null and b/aePronunciation/raw/word_put_glottal.mp3 differ diff --git a/aePronunciation/raw/word_raced.mp3 b/aePronunciation/raw/word_raced.mp3 new file mode 100755 index 0000000..b048727 Binary files /dev/null and b/aePronunciation/raw/word_raced.mp3 differ diff --git a/aePronunciation/raw/word_raised.mp3 b/aePronunciation/raw/word_raised.mp3 new file mode 100755 index 0000000..c375ee6 Binary files /dev/null and b/aePronunciation/raw/word_raised.mp3 differ diff --git a/aePronunciation/raw/word_read.mp3 b/aePronunciation/raw/word_read.mp3 new file mode 100755 index 0000000..04caa48 Binary files /dev/null and b/aePronunciation/raw/word_read.mp3 differ diff --git a/aePronunciation/raw/word_real.mp3 b/aePronunciation/raw/word_real.mp3 new file mode 100755 index 0000000..13c76f7 Binary files /dev/null and b/aePronunciation/raw/word_real.mp3 differ diff --git a/aePronunciation/raw/word_rib.mp3 b/aePronunciation/raw/word_rib.mp3 new file mode 100755 index 0000000..ee9848c Binary files /dev/null and b/aePronunciation/raw/word_rib.mp3 differ diff --git a/aePronunciation/raw/word_ringing.mp3 b/aePronunciation/raw/word_ringing.mp3 new file mode 100755 index 0000000..4cba554 Binary files /dev/null and b/aePronunciation/raw/word_ringing.mp3 differ diff --git a/aePronunciation/raw/word_roar.mp3 b/aePronunciation/raw/word_roar.mp3 new file mode 100755 index 0000000..e019adb Binary files /dev/null and b/aePronunciation/raw/word_roar.mp3 differ diff --git a/aePronunciation/raw/word_safe.mp3 b/aePronunciation/raw/word_safe.mp3 new file mode 100755 index 0000000..9819351 Binary files /dev/null and b/aePronunciation/raw/word_safe.mp3 differ diff --git a/aePronunciation/raw/word_said.mp3 b/aePronunciation/raw/word_said.mp3 new file mode 100755 index 0000000..75400b2 Binary files /dev/null and b/aePronunciation/raw/word_said.mp3 differ diff --git a/aePronunciation/raw/word_saw.mp3 b/aePronunciation/raw/word_saw.mp3 new file mode 100755 index 0000000..72c800b Binary files /dev/null and b/aePronunciation/raw/word_saw.mp3 differ diff --git a/aePronunciation/raw/word_set.mp3 b/aePronunciation/raw/word_set.mp3 new file mode 100755 index 0000000..b12283a Binary files /dev/null and b/aePronunciation/raw/word_set.mp3 differ diff --git a/aePronunciation/raw/word_shoot.mp3 b/aePronunciation/raw/word_shoot.mp3 new file mode 100755 index 0000000..1edaa02 Binary files /dev/null and b/aePronunciation/raw/word_shoot.mp3 differ diff --git a/aePronunciation/raw/word_should.mp3 b/aePronunciation/raw/word_should.mp3 new file mode 100755 index 0000000..a256c65 Binary files /dev/null and b/aePronunciation/raw/word_should.mp3 differ diff --git a/aePronunciation/raw/word_skill.mp3 b/aePronunciation/raw/word_skill.mp3 new file mode 100755 index 0000000..5331794 Binary files /dev/null and b/aePronunciation/raw/word_skill.mp3 differ diff --git a/aePronunciation/raw/word_speak.mp3 b/aePronunciation/raw/word_speak.mp3 new file mode 100755 index 0000000..7baddd4 Binary files /dev/null and b/aePronunciation/raw/word_speak.mp3 differ diff --git a/aePronunciation/raw/word_sting.mp3 b/aePronunciation/raw/word_sting.mp3 new file mode 100755 index 0000000..163ae4c Binary files /dev/null and b/aePronunciation/raw/word_sting.mp3 differ diff --git a/aePronunciation/raw/word_stop.mp3 b/aePronunciation/raw/word_stop.mp3 new file mode 100755 index 0000000..d5ba6bf Binary files /dev/null and b/aePronunciation/raw/word_stop.mp3 differ diff --git a/aePronunciation/raw/word_sun.mp3 b/aePronunciation/raw/word_sun.mp3 new file mode 100755 index 0000000..d001153 Binary files /dev/null and b/aePronunciation/raw/word_sun.mp3 differ diff --git a/aePronunciation/raw/word_sung.mp3 b/aePronunciation/raw/word_sung.mp3 new file mode 100755 index 0000000..da4ddcb Binary files /dev/null and b/aePronunciation/raw/word_sung.mp3 differ diff --git a/aePronunciation/raw/word_there.mp3 b/aePronunciation/raw/word_there.mp3 new file mode 100755 index 0000000..d359aac Binary files /dev/null and b/aePronunciation/raw/word_there.mp3 differ diff --git a/aePronunciation/raw/word_think.mp3 b/aePronunciation/raw/word_think.mp3 new file mode 100755 index 0000000..87e67a7 Binary files /dev/null and b/aePronunciation/raw/word_think.mp3 differ diff --git a/aePronunciation/raw/word_thirty.mp3 b/aePronunciation/raw/word_thirty.mp3 new file mode 100755 index 0000000..41aad43 Binary files /dev/null and b/aePronunciation/raw/word_thirty.mp3 differ diff --git a/aePronunciation/raw/word_toad.mp3 b/aePronunciation/raw/word_toad.mp3 new file mode 100755 index 0000000..b4683e3 Binary files /dev/null and b/aePronunciation/raw/word_toad.mp3 differ diff --git a/aePronunciation/raw/word_twelve.mp3 b/aePronunciation/raw/word_twelve.mp3 new file mode 100755 index 0000000..ff8cf1b Binary files /dev/null and b/aePronunciation/raw/word_twelve.mp3 differ diff --git a/aePronunciation/raw/word_uhhuh.mp3 b/aePronunciation/raw/word_uhhuh.mp3 new file mode 100755 index 0000000..849dd58 Binary files /dev/null and b/aePronunciation/raw/word_uhhuh.mp3 differ diff --git a/aePronunciation/raw/word_uhoh.mp3 b/aePronunciation/raw/word_uhoh.mp3 new file mode 100755 index 0000000..1c61ad5 Binary files /dev/null and b/aePronunciation/raw/word_uhoh.mp3 differ diff --git a/aePronunciation/raw/word_up.mp3 b/aePronunciation/raw/word_up.mp3 new file mode 100755 index 0000000..2b1440a Binary files /dev/null and b/aePronunciation/raw/word_up.mp3 differ diff --git a/aePronunciation/raw/word_usually.mp3 b/aePronunciation/raw/word_usually.mp3 new file mode 100755 index 0000000..4da8342 Binary files /dev/null and b/aePronunciation/raw/word_usually.mp3 differ diff --git a/aePronunciation/raw/word_very.mp3 b/aePronunciation/raw/word_very.mp3 new file mode 100755 index 0000000..0d10b17 Binary files /dev/null and b/aePronunciation/raw/word_very.mp3 differ diff --git a/aePronunciation/raw/word_voice.mp3 b/aePronunciation/raw/word_voice.mp3 new file mode 100755 index 0000000..ecad24b Binary files /dev/null and b/aePronunciation/raw/word_voice.mp3 differ diff --git a/aePronunciation/raw/word_wary.mp3 b/aePronunciation/raw/word_wary.mp3 new file mode 100755 index 0000000..60a6aaa Binary files /dev/null and b/aePronunciation/raw/word_wary.mp3 differ diff --git a/aePronunciation/raw/word_water.mp3 b/aePronunciation/raw/word_water.mp3 new file mode 100755 index 0000000..54c829a Binary files /dev/null and b/aePronunciation/raw/word_water.mp3 differ diff --git a/aePronunciation/raw/word_week.mp3 b/aePronunciation/raw/word_week.mp3 new file mode 100755 index 0000000..6ee5a94 Binary files /dev/null and b/aePronunciation/raw/word_week.mp3 differ diff --git a/aePronunciation/raw/word_weird.mp3 b/aePronunciation/raw/word_weird.mp3 new file mode 100755 index 0000000..d18c381 Binary files /dev/null and b/aePronunciation/raw/word_weird.mp3 differ diff --git a/aePronunciation/raw/word_what.mp3 b/aePronunciation/raw/word_what.mp3 new file mode 100755 index 0000000..e4ecff7 Binary files /dev/null and b/aePronunciation/raw/word_what.mp3 differ diff --git a/aePronunciation/raw/word_wished.mp3 b/aePronunciation/raw/word_wished.mp3 new file mode 100755 index 0000000..3e049ac Binary files /dev/null and b/aePronunciation/raw/word_wished.mp3 differ diff --git a/aePronunciation/raw/word_wonderful.mp3 b/aePronunciation/raw/word_wonderful.mp3 new file mode 100755 index 0000000..23119f0 Binary files /dev/null and b/aePronunciation/raw/word_wonderful.mp3 differ diff --git a/aePronunciation/raw/word_year.mp3 b/aePronunciation/raw/word_year.mp3 new file mode 100755 index 0000000..e0d4afa Binary files /dev/null and b/aePronunciation/raw/word_year.mp3 differ diff --git a/aePronunciation/raw/word_yellow.mp3 b/aePronunciation/raw/word_yellow.mp3 new file mode 100755 index 0000000..d9cfa27 Binary files /dev/null and b/aePronunciation/raw/word_yellow.mp3 differ diff --git a/aePronunciation/raw/word_zoo.mp3 b/aePronunciation/raw/word_zoo.mp3 new file mode 100755 index 0000000..b6e0d81 Binary files /dev/null and b/aePronunciation/raw/word_zoo.mp3 differ diff --git a/aePronunciation/raw/year.mp3 b/aePronunciation/raw/year.mp3 deleted file mode 100755 index 540d36a..0000000 Binary files a/aePronunciation/raw/year.mp3 and /dev/null differ diff --git a/aePronunciation/raw/yellow.mp3 b/aePronunciation/raw/yellow.mp3 deleted file mode 100755 index 1a806d6..0000000 Binary files a/aePronunciation/raw/yellow.mp3 and /dev/null differ diff --git a/aePronunciation/raw/zoo.mp3 b/aePronunciation/raw/zoo.mp3 deleted file mode 100755 index 77a1b3e..0000000 Binary files a/aePronunciation/raw/zoo.mp3 and /dev/null differ diff --git a/aePronunciation/zh-Hans.lproj/InfoPlist.strings b/aePronunciation/zh-Hans.lproj/InfoPlist.strings new file mode 100644 index 0000000..8106dca --- /dev/null +++ b/aePronunciation/zh-Hans.lproj/InfoPlist.strings @@ -0,0 +1,4 @@ +/* Localized versions of Info.plist keys */ + +CFBundleName = "美式英语发音"; +CFBundleDisplayName = "美式发音"; diff --git a/aePronunciation/zh-Hans.lproj/LaunchScreen.strings b/aePronunciation/zh-Hans.lproj/LaunchScreen.strings new file mode 100644 index 0000000..9047f88 --- /dev/null +++ b/aePronunciation/zh-Hans.lproj/LaunchScreen.strings @@ -0,0 +1,6 @@ + +/* Class = "UILabel"; text = "American\nEnglish\nPronunciation"; ObjectID = "9oa-IR-YQO"; */ +"9oa-IR-YQO.text" = "American\nEnglish\nPronunciation"; + +/* Class = "UILabel"; text = "Version 1.1.0"; ObjectID = "pmB-iq-gA2"; */ +"pmB-iq-gA2.text" = "版本2.0.0"; diff --git a/aePronunciation/zh-Hans.lproj/Localizable.strings b/aePronunciation/zh-Hans.lproj/Localizable.strings new file mode 100644 index 0000000..83d18a4 --- /dev/null +++ b/aePronunciation/zh-Hans.lproj/Localizable.strings @@ -0,0 +1,295 @@ +/* + Simplified Chinese +*/ + +"locale" = "zh_Hans"; + +// new for iOS version +"main_tab_more" = "更多选择"; +"main_tab_more_history_section_title" = "历史记录"; +"main_tab_more_total_time" = "总时长"; +"main_tab_more_tests" = "测试"; +"main_tab_more_about_section_title" = "关于应用"; +"main_tab_more_app" = "应用"; +"main_tab_more_contact" = "联系方式"; + +"test_results_back_button" = "完成"; + +///////////////////////////// +// Non-Translated strings // +///////////////////////////// + +// +"tell_me_button" = "\?"; + +// +"test_results_percent" = "%d%%"; + +// +"history_tests_item_score" = "%d%%"; + + +// +"p_example1" = "pass\n/pæs/"; +"p_example2" = "speak\n/spik/"; +"p_example3" = "stop\n/stɑp/"; +"t_example1" = "toad\n/tod/"; +"t_example2" = "sting\n/stɪŋ/"; +"t_example3" = "it\n/ɪt/"; +"k_example1" = "cool\n/kul/"; +"k_example2" = "skill\n/skɪl/"; +"k_example3" = "week\n/wik/"; +"ch_example1" = "chairs\n/ʧɛrz/"; +"ch_example2" = "each of\n/\'iʧəv/"; +"ch_example3" = "church\n/ʧɝʧ/"; +"f_example1" = "father\n/\'fɑðɚ/"; +"f_example2" = "gift\n/gɪft/"; +"f_example3" = "if\n/ɪf/"; +"th_voiceless_example1" = "think\n/θɪŋk/"; +"th_voiceless_example2" = "Jonathan\n/\'ʤɑnəθən/"; +"th_voiceless_example3" = "earth\n/ɝθ/"; +"s_example1" = "set\n/sɛt/"; +"s_example2" = "raced\n/rest/"; +"s_example3" = "pass\n/pæs/"; +"sh_example1" = "shoot\n/ʃut/"; +"sh_example2" = "wished\n/wɪʃt/"; +"sh_example3" = "ash\n/æʃ/"; +"b_example1" = "bill\n/bɪl/"; +"b_example2" = "above\n/ə\'bʌv/"; +"b_example3" = "rib\n/rɪb/"; +"d_example1" = "delicious\n/də\'lɪʃəs/"; +"d_example2" = "cards\n/kɑrdz/"; +"d_example3" = "card\n/kɑrd/"; +"g_example1" = "good\n/gʊd/"; +"g_example2" = "again\n/ə\'gɛn/"; +"g_example3" = "pig\n/pɪg/"; +"dzh_example1" = "jump\n/ʤʌmp/"; +"dzh_example2" = "agile\n/\'æʤəl/"; +"dzh_example3" = "edge\n/ɛʤ/"; +"v_example1" = "very\n/\'vɛri/"; +"v_example2" = "every\n/\'ɛvri/"; +"v_example3" = "have\n/hæv/"; +"th_voiced_example1" = "they\'re\n/ðɛr/"; +"th_voiced_example2" = "father\n/fɑðɚ/"; +"th_voiced_example3" = "bathe\n/beð/"; +"z_example1" = "zoo\n/zu/"; +"z_example2" = "raised\n/rezd/"; +"z_example3" = "cars\n/kɑrz/"; +"zh_example1" = "usually\n/\'juʒli/"; +"zh_example2" = "pleasure\n/\'plɛʒɚ/"; +"zh_example3" = "beige\n/beʒ/"; +"m_example1" = "me\n/mi/"; +"m_example2" = "jump\n/ʤʌmp/"; +"m_example3" = "arm\n/ɑrm/"; +"n_example1" = "new\n/nu/"; +"n_example2" = "panda\n/\'pændə/"; +"n_example3" = "sun\n/sʌn/"; +"ng_example1" = "ringing\n/\'rɪŋɪŋ/"; +"ng_example2" = "think\n/θɪŋk/"; +"ng_example3" = "sung\n/sʌŋ/"; +"l_example1" = "loud\n/laʊd/"; +"l_example2" = "cool\n/kul/"; +"l_example3" = "bill\n/bɪl/"; +"w_example1" = "wary\n/\'wɛri/"; +"w_example2" = "twelve\n/twɛlv/"; +"w_example3" = "what\n/wʌt/"; +"j_example1" = "year\n/jɪr/"; +"j_example2" = "cube\n/kjub/"; +"j_example3" = "yellow\n/\'jɛlo/"; +"h_example1" = "her\n/hɝ/"; +"h_example2" = "have\n/hæv/"; +"h_example3" = "ahead\n/ə\'hɛd/"; +"r_example1" = "real\n/ril/"; +"r_example2" = "rib\n/rɪb/"; +"r_example3" = "roar\n/rɔr/"; +"i_example1" = "each\n/iʧ/"; +"i_example2" = "read\n/rid/"; +"i_example3" = "me\n/mi/"; +"i_short_example1" = "it\n/ɪt/"; +"i_short_example2" = "him\n/hɪm/"; +"i_short_example3" = "rib\n/rɪb/"; +"e_short_example1" = "edge\n/ɛʤ/"; +"e_short_example2" = "set\n/sɛt/"; +"e_short_example3" = "said\n/sɛd/"; +"ae_example1" = "ash\n/æʃ/"; +"ae_example2" = "bad\n/bæd/"; +"ae_example3" = "bat\n/bæt/"; +"a_example1" = "on\n/ɑn/"; +"a_example2" = "father\n/\'fɑðɚ/"; +"a_example3" = "ma\n/mɑ/"; +"c_backwards_example1" = "ought\n/ɔt/"; +"c_backwards_example2" = "call\n/kɔl/"; +"c_backwards_example3" = "saw\n/sɔ/"; +"u_short_example1" = "put\n/pʊt/"; +"u_short_example2" = "good\n/gʊd/"; +"u_short_example3" = "should\n/ʃʊd/"; +"u_example1" = "ooze\n/uz/"; +"u_example2" = "shoot\n/ʃut/"; +"u_example3" = "blue\n/blu/"; +"v_upsidedown_example1" = "up\n/ʌp/"; +"v_upsidedown_example2" = "sun\n/sʌn/"; +"v_upsidedown_example3" = "uh-huh\n/ə\'hʌ/"; +"schwa_example1" = "above\n/ə\'bʌv/"; +"schwa_example2" = "delicious\n/də\'lɪʃəs/"; +"schwa_example3" = "panda\n/\'pændə/"; +"ei_example1" = "age\n/eʤ/"; +"ei_example2" = "safe\n/sef/"; +"ei_example3" = "may\n/me/"; +"ai_example1" = "I\'m\n/aɪm/"; +"ai_example2" = "bite\n/baɪt/"; +"ai_example3" = "fly\n/flaɪ/"; +"au_example1" = "out\n/aʊt/"; +"au_example2" = "loud\n/laʊd/"; +"au_example3" = "cow\n/kaʊ/"; +"oi_example1" = "oil\n/ɔɪl/"; +"oi_example2" = "voice\n/vɔɪs/"; +"oi_example3" = "boy\n/bɔɪ/"; +"ou_example1" = "oath\n/oθ/"; +"ou_example2" = "cove\n/kov/"; +"ou_example3" = "low\n/lo/"; +"er_stressed_example1" = "earth\n/ɝθ/"; +"er_stressed_example2" = "birthday\n/\'bɝθde/"; +"er_stressed_example3" = "her\n/hɝ/"; +"er_unstressed_example1" = "mother\n/\'mʌðɚ/"; +"er_unstressed_example2" = "perform\n/pɚ\'fɔrm/"; +"er_unstressed_example3" = "wonderful\n/\'wʌndɚfəl/"; +"ar_example1" = "arm\n/ɑrm/"; +"ar_example2" = "part\n/pɑrt/"; +"ar_example3" = "car\n/kɑr/"; +"er_example1" = "aired\n/ɛrd/"; +"er_example2" = "chairs\n/ʧɛrz/"; +"er_example3" = "there\n/ðɛr/"; +"ir_example1" = "ear\n/ɪr/"; +"ir_example2" = "weird\n/wɪrd/"; +"ir_example3" = "here\n/hɪr/"; +"or_example1" = "oars\n/ɔrz/"; +"or_example2" = "north\n/nɔrθ/"; +"or_example3" = "roar\n/rɔr/"; +"glottal_stop_example1" = "put\n/pʊʔ/"; +"glottal_stop_example2" = "button\n/\'bʌʔn/"; +"glottal_stop_example3" = "uh-oh\n/\'ʌʔo/"; +"flap_t_example1" = "water\n/\'wɑɾɚ/"; +"flap_t_example2" = "little\n/\'lɪɾəl/"; +"flap_t_example3" = "thirty\n/\'θɝɾi/"; + +///////////////////////////// +// Translated strings ////// +///////////////////////////// + +"i_description" = "在英式英语中/i/音标通常写作/i:/,两个点代表发长音。但是在美式发音中加点与不加点没多大区别。所以美式音标不加两个点。它在浊辅音前发长音,清辅音前发短音。"; +"a_description" = "在英式英语中/ɑ/音标通常写作/ɑː/。注意在美式英语中它的发音与/ʌ/有很大区别。还有/ɑ/与汉语拼音中\"a\"也不同。(在国际音标中,汉语拼音的\"a\"写作/a/)。"; +"u_description" = "在英式英语中/u/音标通常写作/uː/,但是像/iː/、/aː/、/ɔː/这些长元音的点在美式英语中不必加。美式英语中所有重读的元音在浊辅音前发长音,清辅音前发短音。"; +"i_short_description" = "/ɪ/与/i/发音不同。在长音与短音方面区别不是很大,最主要的区别是你嘴型的大小和舌头的位置。跟/i/音相比,嘴要稍微再咧开一点,舌头的放置要靠后一点。"; +"u_short_description" = "/ʊ/与/u/发音不同。在长音与短音方面区别不是很大,而是嘴型的大小和舌头的位置。"; +"v_upsidedown_description" = "/ʌ/与/ɑ/读音不同。在长音与短音方面区别不是很大,而是嘴型的大小和舌头的位置。注意它的发音与英式英语/ʌ/音标的发音稍微有所不同。当/ʌ/不读成重音时,通常写成/ə/。"; +"e_short_description" = "英式英语的音标中使用/e/音标来表示这个发音。实际上,根据标准国际音标它应该被写成/ɛ/。嘴张开的程度比/æ/小,舌尖更靠前一点。"; +"ae_description" = "发/æ/音时,嘴张开的程度要像/ɑ/一样大,嘴角像/ɛ/那样拉向两边,但舌头应该比/ɛ/更往后一些。"; +"c_backwards_description" = "根据国际音标,美式英语中使用的/ɔ/这个音标应该被写成/ɒ/,但为了和大多数词典保持一致,我们使用了/ɔ/。(注意,/ɔː/用于英式音标时发音是不一样的,英式音标的/ɔː/是标准国际音标。)大约40%的美国人不发这个音,他们用/ɑ/代替,上述的例子可以这样发音:/ɑt/,/kɑt/,和/sɑ/。"; +"schwa_description" = "元音/ə/是美式发音中最常见的一个音。它常用于非重读音节的单词。当此元音重读时通常写成/ʌ/。"; +"ei_description" = "/eɪ/是双元音。它由/e/和/ɪ/两个单音组成。在有些美式发音的词典中有时也写成/e/。不要与英式音标/e/混淆,事实上它发/ɛ/音,美式英语中带/eɪ/音的词,英式英语中的发音应该为/ɛi/。但是它们依旧都写成/eɪ/。"; +"ai_description" = "/aɪ/是双元音。它由/a/和/ɪ/两个单音组成。注意:/aɪ/与/æ/发音不同。"; +"au_description" = "/aʊ/是双元音。它由/a/和/ʊ/两个单音组成。注意:/aʊ/与/ɔ/发音不同。还要注意/aʊ/与汉语拼音中\"ao\"发音也不同。"; +"oi_description" = "/ɔɪ/是双元音。它由/ɔ/和/ɪ/两个单音组成。/ɔɪ/中的ɔ与此应用中的/ɔ/发音不同。(这是因为在美式英语中,/ɔ/应该写为/ɒ/。)读/ɔɪ/时,口型由小而圆开始。"; +"ou_description" = "/oʊ/是双元音。它由/o/和/ʊ/两个单音组成。在有些美式发音的词典中有时也写成/o/。注意它与英式发音/əʊ/有轻微的不同。"; +"er_stressed_description" = "/ɝ/音有时候写为/ər/或/əɹ/。这是在重读音节或单音节词中的发音。当/ɝ/非重读时,写成/ɚ/。英式英语中没有/ɝ/音,美国人发/ɝ/的单词中英国人发/ɜː/音。"; +"er_unstressed_description" = "/ɚ/的发音与/ɝ/相同,/ɚ/用于轻读的音节,而/ɝ/用于重读的音节。它有时写为/ər/或/əɹ/。英式英语中没有/ɚ/音,美国人发/ɚ/的单词中英国人发/ə/音。"; +"ar_description" = "根据国际音标更加正确地写法是/ɑɹ/或者/ɑɚ/。英式英语中没有/ɑr/音,美国人发/ɑr/的单词中英国人发/ɑː/音。"; +"er_description" = "根据国际音标更加正确的写法是/ɛɹ/或者/ɛɚ/。英式英语中没有/ɛr/音,美国人发/ɛr/的单词中英国人发/eə/音。"; +"ir_description" = "根据国际音标更加正确的写法是/ɪɹ/或者/ɪɚ/。英式英语中没有/ɪr/音,美国人发/ɑr/的单词中英国人发/ɪr/音。"; +"or_description" = "根据国际音标更加正确的写法是/ɔɹ/或者/ɔɚ/。/ɔr/中的ɔ与此应用中的/ɔ/发音不同。(这是因为在美式英语中,/ɔ/应该写为/ɒ/。)读/ɔr/时,口型由小而圆开始。英式英语中没有/ɔr/音,美国人发/ɔr/的单词中英国人发/ɔ:/音。"; +"p_description" = "位于词首时是送气音[pʰ],但在字母s后和词尾时是非送气的[p](跟汉语拼音的\"b\"音一样)。注意不要把第三个例子读成/stapə/。"; +"t_description" = "位于词首时是送气音[tʰ],但在字母s后和词尾时是非送气的[t](跟汉语拼音的\"d\"音一样)。注意不要把第三个例子读成/ɪtə/,/ɪts/或/ɪtʰ/,还要注意\"t\"在美式英语发音中经常改变发音,像/ɾ/和/ʔ/。"; +"k_description" = "位于词首时是送气音[kʰ],但在字母s后和词尾时是非送气的[k](跟汉语拼音的\"g\"音一样)。注意不要把第三个例子读成/wikə/。"; +"b_description" = "注意/b/在单词词尾的发音,不要把第三个例子读成/rɪbə/或者是/rɪp/。英语中的/b/和汉语拼音中的\"b\"不同。"; +"d_description" = "注意/d/在单词词尾的发音,不要把第三个例子读成/kɑrdə/或者是/kɑrt/。英语中的/d/和汉语拼音中的\"d\"不同。"; +"g_description" = "注意/g/在单词词尾的发音,不要把第三个例子读成/pɪgə/或者是/pɪk/。英语中的/g/和汉语拼音中的\"g\"不同。"; +"f_description" = "注意/f/在单词词尾的发音,不要把第三个例子读成/ɪfə/。"; +"s_description" = "注意/s/在单词词尾的发音,不要把第三个例子读成/pæsə/。"; +"ch_description" = "注意/ʧ/在单词词尾的发音,不要把第三个例子读成/ʧɝʧə/。英语中的/ʧ/和汉语拼音中的\"ch\"、\"q\"不同。(在国际音标中,汉语拼音的\"ch\"是[ʈʂʰ]音,\"q\"是[tɕʰ]音。)"; +"sh_description" = "注意/ʃ/在单词词尾的发音,不要把第三个例子读成/æʃə/。英语中的/ʃ/和汉语拼音中的\"sh\"、\"x\"不同。(在国际音标中,汉语拼音的\"sh\"是[ʂ]音,\"x\"是[ɕ]音。)"; +"dzh_description" = "注意/ʤ/在单词词尾的发音,不要把第三个例子读成/ɛʤə/。英语中的/ʤ/和汉语拼音中的\"zh\"、\"j\"不同。(在国际音标中,汉语拼音的\"zh\"是[ʈʂ]音,\"j\"是[tɕ]音。)"; +"v_description" = "/v/和/f/口型相同。唯一的不同之处就是/v/是浊音。注意/v/与/w/两者发音的不同。发/v/音时,上齿要轻轻接触下唇。还要注意第三个例子不要读成/hævə/。"; +"z_description" = "/z/和/s/口型相同。唯一的不同之处就是/z/是浊音。不要读成/dz/。英语中的/z/和汉语拼音中的\"z\"不同。(在国际音标中,汉语拼音的\"z\"是[ts]音,\"c\"是[tsʰ]音。)"; +"zh_description" = "/ʒ/和/ʃ/口型相同。唯一的不同之处就是/ʒ/是浊音。注意区别/r/和/ʒ/。"; +"th_voiced_description" = "/ð/和/θ/口型相同,最主要的区别就是/ð/是浊音。发/ð/时舌头轻触上齿的底部。"; +"th_voiceless_description" = "这个音标的发音,舌头轻微触到上齿底部,不要读成/s/。"; +"m_description" = "注意/m/在单词词尾的发音,不要把第三个例子读成/ɑrmə/。"; +"n_description" = "注意/n/在单词词尾的发音,不要把第三个例子读成/sʌnə/。"; +"ng_description" = "这个音不会出现在英语单词的词首。"; +"w_description" = "这个音不会出现在英语单词的词尾。注意/w/和/v/的不同之处。读/w/音时,嘴唇要形成一个小圆且不要触碰牙齿。一小部分美国人将\"wh\"音发成/hw/(在国际音标中是/ʍ/)。"; +"j_description" = "这个音不会出现在英语单词的词尾。注意year和ear的不同之处。"; +"h_description" = "这个音不会出现在英语单词的词尾。注意英语中的/h/与汉语拼音中的\"h\"不同。(在国际音标中,汉语拼音的\"h\"是[x]音。)"; +"l_description" = "当/l/在单词开头时,它就读国际音标中本身的音标。当字母l在单词词尾时发音有所不同,它就发国际音标的[ɫ]音。但是在这个应用的练习和考试中,我们用/l/音标代替[ɫ]音(在许多课本和词典中也是如此)。第二个例子也能写成/kuəl/,不要把最后俩个例子读成/kuo/或/bɪo/。你的嘴唇应该放松且不能移动。"; +"r_description" = "根据国际音标,这个音应该写为/ɹ/。(国际音标中的/r/实际上是颤音,就像蒙语中的\"r\")。然而,为了与许多课本和词典保持一致,在这里使用/r/音标。要注意/r/和/ʒ/的不同之处,也要注意英语中的/r/与汉语拼音中的\"r\"的不同之处。(在国际音标中,汉语拼音的\"r\"是/ɻ/音。)"; +"glottal_stop_description" = "这个音被称作为声门塞音。在中国的英语课本中通常不讲,但是它在美式发音中非常重要。注意例一put的不同发音,/pʊt/与/pʊʔ/。/ʔ/音经常代替/t/音,特别是在单词词尾和句子中间。"; +"flap_t_description" = "这个音标叫做齿龈闪音,在中国英语课本中通常不教,但是它在美式发音中非常重要。当/t/音出现在非重读的音节中并在两个元音之间,/ɾ/音通常会代替/t/音。尽管不准确,但是/ɾ/音标也可以写成/d/。这种情况下,上述例子应该被写成/ˈwɑdɚ/,/ˈlɪdəl/和/\'θɝdi/。"; +"app_name" = "美式发音"; +"app_name_long" = "美式英语发音"; +"main_menu_keyboard" = "输入音标"; +"main_menu_about" = "关于应用"; +"main_menu_history" = "历史记录"; +"title_activity_learn_double" = "/%@/的延伸"; +"practice_mode_double" = "双音标"; +"select_sounds_title" = "选择音标"; +"select_sounds_radio_double" = "双音标"; +"select_sounds_radio_single" = "单音标"; +"select_sounds_positive_button" = "确定"; +"dialog_cancel_button" = "取消"; +"select_sounds_cb_consonants" = "辅音"; +"select_sounds_cb_vowels" = "元音"; +"test_setup_name" = "姓名"; +"test_setup_number_of_questions" = "数量:"; +"test_setup_begin_button" = "开始"; +"test_setup_double" = "双音标"; +"test_setup_single" = "单音标"; +"test_setup_type" = "类型:"; +"title_activity_test" = "测试"; +"title_activity_test_results" = "考试结果"; +"test_results_right" = "正确: %d"; +"test_results_wrong" = "错误: %d"; +"test_results_time" = "用时: %@"; +"test_results_practice_difficult_button" = "纠错练习"; +"title_activity_history" = "历史记录"; +"history_time_title" = "总时长"; +"history_test_title" = "最佳记录"; +"history_details" = "详情"; +"title_activity_history_time" = "时间详情"; +"title_activity_history_tests" = "测试详情"; +"about_app_name" = "美式发音"; +"title_activity_about" = "关于应用"; +"about_content" = "如果你有任何问题或者建议,请联系我们。"; +"about_contact" = "联系方式"; +"about_contact_url" = "http://www.aepronunciation.com/app/"; +"keyboard_input_toast_text_copied" = "已复制"; +"keyboard_menu_clear" = "删除"; +"keyboard_menu_copy" = "复制"; +"keyboard_menu_share" = "分享"; +"keyboard_menu_share_chooser_title" = "分享到"; +"title_activity_keyboard_input" = "输入音标"; +"title_activity_history_test_details" = "测试详情"; +"keyboard_menu_alert_message" = "确定要全部删除吗?"; +"keyboard_menu_alert_clear_all_button" = "删除"; +"error_final_r" = "在此应用以r结尾的只有这5个(ɝ,ɑr,ɛr,ɪr,ɔr),不需要另外加工。"; +"error_two_consonants" = "你输入的是%@和%@(两个辅音)。你应该输入一个元音和一个辅音。"; +"error_two_vowels" = "你输入的是%@和%@(两个元音)。你应该输入一个元音和一个辅音。"; +"error_final_wjh" = "你输入的是%@和%@。但是%@不会出现在单词结尾。"; +"error_initial_ng" = "你输入的是%@和%@。但是在英语中,%@不会出现在单词开头。"; +"error_dialog_ok_button" = "知道了"; +"learn_single_show_doubles" = "更多示例"; +"main_tab_learn" = "学习"; +"main_tab_practice" = "练习"; +"main_tab_test" = "测试"; +"practice_mode_single" = "单音标"; +"history_test_details_type_double" = "双音标 (%d)"; +"history_test_details_type_single" = "单音标 (%d)"; +"history_tests_type_double" = "双音标: %d%%"; +"history_tests_type_single" = "单音标: %d%%"; +"history_test_details_specific_test_number_of_questions" = "数量: %d"; +"about_app_version" = "版本%@"; +"history_time_details_learning" = "学习时长"; +"history_time_details_practicing" = "练习时长"; +"history_time_details_testing" = "考试时长"; +"history_time_details_total" = "总时长"; +"history_time_details_type_double" = "双音标"; +"history_time_details_type_single" = "单音标"; +"test_default_name" = "无名"; diff --git a/aePronunciation/zh-Hans.lproj/Main.strings b/aePronunciation/zh-Hans.lproj/Main.strings new file mode 100644 index 0000000..047dc5a --- /dev/null +++ b/aePronunciation/zh-Hans.lproj/Main.strings @@ -0,0 +1,237 @@ + +/* Class = "UILabel"; text = "Right: 20"; ObjectID = "13T-OP-RcX"; */ +"13T-OP-RcX.text" = "Right: 20"; + +/* Class = "UIBarButtonItem"; title = " "; ObjectID = "1wR-2j-ymD"; */ +"1wR-2j-ymD.title" = " "; + +/* Class = "UILabel"; text = "App"; ObjectID = "3JE-2a-Xih"; */ +"3JE-2a-Xih.text" = "App"; + +/* Class = "UITabBarItem"; title = "Test"; ObjectID = "49K-ff-gzd"; */ +"49K-ff-gzd.title" = "Test"; + +/* Class = "UIButton"; normalTitle = "more..."; ObjectID = "5uR-8T-Nlc"; */ +"5uR-8T-Nlc.normalTitle" = "more..."; + +/* Class = "UILabel"; text = "x"; ObjectID = "6cc-FV-0RL"; */ +"6cc-FV-0RL.text" = "x"; + +/* Class = "UITableViewSection"; headerTitle = "About"; ObjectID = "6d3-U8-0HJ"; */ +"6d3-U8-0HJ.headerTitle" = "About"; + +/* Class = "UINavigationItem"; title = "Practice Single Sounds"; ObjectID = "6gM-6j-yO8"; */ +"6gM-6j-yO8.title" = "Practice Single Sounds"; + +/* Class = "UILabel"; text = "Sally"; ObjectID = "6z0-bv-0Jb"; */ +"6z0-bv-0Jb.text" = "Sally"; + +/* Class = "UILabel"; text = "October 20, 2015"; ObjectID = "8KU-Pa-dTO"; */ +"8KU-Pa-dTO.text" = "October 20, 2015"; + +/* Class = "UILabel"; text = "Singles"; ObjectID = "8jj-7H-dMn"; */ +"8jj-7H-dMn.text" = "Singles"; + +/* Class = "UILabel"; text = " "; ObjectID = "96L-oX-rKC"; */ +"96L-oX-rKC.text" = " "; + +/* Class = "UILabel"; text = "Version 2.0.0"; ObjectID = "BGu-Fl-fVM"; */ +"BGu-Fl-fVM.text" = "Version 2.0.0"; + +/* Class = "UIBarButtonItem"; title = " "; ObjectID = "BdL-gT-Jta"; */ +"BdL-gT-Jta.title" = " "; + +/* Class = "UITableViewSection"; headerTitle = "History"; ObjectID = "CKi-In-8L4"; */ +"CKi-In-8L4.headerTitle" = "History"; + +/* Class = "UILabel"; text = "Total time"; ObjectID = "ElN-Dh-NSm"; */ +"ElN-Dh-NSm.text" = "Total time"; + +/* Class = "UILabel"; text = "Single Sounds"; ObjectID = "GyD-J4-c5i"; */ +"GyD-J4-c5i.text" = "Single Sounds"; + +/* Class = "UILabel"; text = "Time length: 0:02:45"; ObjectID = "HBt-79-wem"; */ +"HBt-79-wem.text" = "Time length: 0:02:45"; + +/* Class = "UILabel"; text = "Type:"; ObjectID = "I4Q-sc-lUB"; */ +"I4Q-sc-lUB.text" = "Type:"; + +/* Class = "UILabel"; text = " "; ObjectID = "J5Q-C1-QF6"; */ +"J5Q-C1-QF6.text" = " "; + +/* Class = "UILabel"; text = " "; ObjectID = "L5e-x1-g9j"; */ +"L5e-x1-g9j.text" = " "; + +/* Class = "UILabel"; text = "Doubes"; ObjectID = "M1D-WS-a6W"; */ +"M1D-WS-a6W.text" = "Doubes"; + +/* Class = "UILabel"; text = "87%"; ObjectID = "M5Q-zg-wER"; */ +"M5Q-zg-wER.text" = "87%"; + +/* Class = "UILabel"; text = "5"; ObjectID = "Mwm-2Q-gTq"; */ +"Mwm-2Q-gTq.text" = "5"; + +/* Class = "UILabel"; text = "name"; ObjectID = "O1e-K8-Kt3"; */ +"O1e-K8-Kt3.text" = "name"; + +/* Class = "UILabel"; text = " "; ObjectID = "OJN-tY-Dqe"; */ +"OJN-tY-Dqe.text" = " "; + +/* Class = "UILabel"; text = "Doubles"; ObjectID = "PXO-4g-yb0"; */ +"PXO-4g-yb0.text" = "Doubles"; + +/* Class = "UILabel"; text = " "; ObjectID = "Pqf-FY-B1J"; */ +"Pqf-FY-B1J.text" = " "; + +/* Class = "UILabel"; text = "Single Sounds"; ObjectID = "Q18-YE-vYF"; */ +"Q18-YE-vYF.text" = "Single Sounds"; + +/* Class = "UINavigationItem"; title = "Learn Single Sounds"; ObjectID = "QMt-tm-syM"; */ +"QMt-tm-syM.title" = "Learn Single Sounds"; + +/* Class = "UISegmentedControl"; RgW-sX-lep.segmentTitles[0] = "5"; ObjectID = "RgW-sX-lep"; */ +"RgW-sX-lep.segmentTitles[0]" = "5"; + +/* Class = "UISegmentedControl"; RgW-sX-lep.segmentTitles[1] = "10"; ObjectID = "RgW-sX-lep"; */ +"RgW-sX-lep.segmentTitles[1]" = "10"; + +/* Class = "UISegmentedControl"; RgW-sX-lep.segmentTitles[2] = "25"; ObjectID = "RgW-sX-lep"; */ +"RgW-sX-lep.segmentTitles[2]" = "25"; + +/* Class = "UISegmentedControl"; RgW-sX-lep.segmentTitles[3] = "50"; ObjectID = "RgW-sX-lep"; */ +"RgW-sX-lep.segmentTitles[3]" = "50"; + +/* Class = "UISegmentedControl"; RgW-sX-lep.segmentTitles[4] = "100"; ObjectID = "RgW-sX-lep"; */ +"RgW-sX-lep.segmentTitles[4]" = "100"; + +/* Class = "UIBarButtonItem"; title = " "; ObjectID = "Rm8-2S-t7s"; */ +"Rm8-2S-t7s.title" = " "; + +/* Class = "UILabel"; text = "97%"; ObjectID = "T7Y-sf-3Zq"; */ +"T7Y-sf-3Zq.text" = "97%"; + +/* Class = "UILabel"; text = "Tests"; ObjectID = "Tsg-Nw-ycT"; */ +"Tsg-Nw-ycT.text" = "Tests"; + +/* Class = "UILabel"; text = " "; ObjectID = "Uax-Io-2yb"; */ +"Uax-Io-2yb.text" = " "; + +/* Class = "UILabel"; text = "Vowels"; ObjectID = "Xgl-bk-DdZ"; */ +"Xgl-bk-DdZ.text" = "Vowels"; + +/* Class = "UITabBarItem"; title = "More"; ObjectID = "YLT-vm-KdY"; */ +"YLT-vm-KdY.title" = "More"; + +/* Class = "UITabBarItem"; title = "Learn"; ObjectID = "acW-dT-cKf"; */ +"acW-dT-cKf.title" = "Learn"; + +/* Class = "UILabel"; text = "23"; ObjectID = "b0I-Ug-9BE"; */ +"b0I-Ug-9BE.text" = "23"; + +/* Class = "UILabel"; text = "Number of questions:"; ObjectID = "c4H-XM-Skx"; */ +"c4H-XM-Skx.text" = "Number of questions:"; + +/* Class = "UITabBarItem"; title = "Practice"; ObjectID = "cPa-gy-q4n"; */ +"cPa-gy-q4n.title" = "Practice"; + +/* Class = "UIButton"; normalTitle = "Example 1"; ObjectID = "fWm-5R-0Px"; */ +"fWm-5R-0Px.normalTitle" = "Example 1"; + +/* Class = "UILabel"; text = "Time Practicing"; ObjectID = "gFD-cR-qct"; */ +"gFD-cR-qct.text" = "Time Practicing"; + +/* Class = "UILabel"; text = "a"; ObjectID = "h2o-DD-V8z"; */ +"h2o-DD-V8z.text" = "a"; + +/* Class = "UILabel"; text = "Total Time"; ObjectID = "hBG-jm-agd"; */ +"hBG-jm-agd.text" = "Total Time"; + +/* Class = "UILabel"; text = " "; ObjectID = "ha6-xx-hNh"; */ +"ha6-xx-hNh.text" = " "; + +/* Class = "UILabel"; text = "96%"; ObjectID = "iYK-Az-59l"; */ +"iYK-Az-59l.text" = "96%"; + +/* Class = "UILabel"; text = "American\nEnglish\nPronunciation"; ObjectID = "iiO-iN-o5H"; */ +"iiO-iN-o5H.text" = "American\nEnglish\nPronunciation"; + +/* Class = "UILabel"; text = "Single (50)"; ObjectID = "jP1-UR-iJa"; */ +"jP1-UR-iJa.text" = "Single (50)"; + +/* Class = "UILabel"; text = "A"; ObjectID = "jl0-Ik-Qri"; */ +"jl0-Ik-Qri.text" = "A"; + +/* Class = "UIButton"; normalTitle = "Example 3"; ObjectID = "lHf-se-lYr"; */ +"lHf-se-lYr.normalTitle" = "Example 3"; + +/* Class = "UITextView"; text = "Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda."; ObjectID = "nMN-F4-UWg"; */ +"nMN-F4-UWg.text" = "Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda."; + +/* Class = "UILabel"; text = "a"; ObjectID = "nOQ-BZ-4ik"; */ +"nOQ-BZ-4ik.text" = "a"; + +/* Class = "UILabel"; text = " "; ObjectID = "ntq-R0-R4f"; */ +"ntq-R0-R4f.text" = " "; + +/* Class = "UILabel"; text = "Consonants"; ObjectID = "ocp-nT-sdi"; */ +"ocp-nT-sdi.text" = "Consonants"; + +/* Class = "UILabel"; text = "Singles"; ObjectID = "oq6-vQ-XBM"; */ +"oq6-vQ-XBM.text" = "Singles"; + +/* Class = "UILabel"; text = " "; ObjectID = "qI7-6y-LDh"; */ +"qI7-6y-LDh.text" = " "; + +/* Class = "UILabel"; text = "Doubles"; ObjectID = "sKt-Zk-pu2"; */ +"sKt-Zk-pu2.text" = "Doubles"; + +/* Class = "UILabel"; text = "Singles"; ObjectID = "sQb-Wn-gkK"; */ +"sQb-Wn-gkK.text" = "Singles"; + +/* Class = "UILabel"; text = "Time learning"; ObjectID = "tx2-Av-K8N"; */ +"tx2-Av-K8N.text" = "Time learning"; + +/* Class = "UILabel"; text = " "; ObjectID = "u4O-fx-1IW"; */ +"u4O-fx-1IW.text" = " "; + +/* Class = "UILabel"; text = "5"; ObjectID = "uih-6n-HgL"; */ +"uih-6n-HgL.text" = "5"; + +/* Class = "UILabel"; text = "Contact"; ObjectID = "v0u-qb-YCw"; */ +"v0u-qb-YCw.text" = "Contact"; + +/* Class = "UISegmentedControl"; vMo-xo-sDK.segmentTitles[0] = "Single"; ObjectID = "vMo-xo-sDK"; */ +"vMo-xo-sDK.segmentTitles[0]" = "Single"; + +/* Class = "UISegmentedControl"; vMo-xo-sDK.segmentTitles[1] = "Double"; ObjectID = "vMo-xo-sDK"; */ +"vMo-xo-sDK.segmentTitles[1]" = "Double"; + +/* Class = "UILabel"; text = "23"; ObjectID = "xLN-vD-eb6"; */ +"xLN-vD-eb6.text" = "23"; + +/* Class = "UISegmentedControl"; xPa-DK-qhp.segmentTitles[0] = "First"; ObjectID = "xPa-DK-qhp"; */ +"xPa-DK-qhp.segmentTitles[0]" = "First"; + +/* Class = "UISegmentedControl"; xPa-DK-qhp.segmentTitles[1] = "Second"; ObjectID = "xPa-DK-qhp"; */ +"xPa-DK-qhp.segmentTitles[1]" = "Second"; + +/* Class = "UILabel"; text = "Wrong: 2"; ObjectID = "yLF-3O-Lbo"; */ +"yLF-3O-Lbo.text" = "Wrong: 2"; + +/* Class = "UINavigationItem"; title = "Test Setup"; ObjectID = "yW7-yZ-Ucj"; */ +"yW7-yZ-Ucj.title" = "Test Setup"; + +/* Class = "UIBarButtonItem"; title = " "; ObjectID = "ycJ-o2-zDZ"; */ +"ycJ-o2-zDZ.title" = " "; + +/* Class = "UILabel"; text = "Time Testing"; ObjectID = "yf6-gE-vv6"; */ +"yf6-gE-vv6.text" = "Time Testing"; + +/* Class = "UIButton"; normalTitle = "Begin"; ObjectID = "yvz-To-sYT"; */ +"yvz-To-sYT.normalTitle" = "Begin"; + +/* Class = "UILabel"; text = "date"; ObjectID = "yxb-k7-21x"; */ +"yxb-k7-21x.text" = "date"; + +/* Class = "UIButton"; normalTitle = "Example 2"; ObjectID = "zH7-Rg-MTT"; */ +"zH7-Rg-MTT.normalTitle" = "Example 2"; diff --git a/aePronunciation/zh-Hant.lproj/InfoPlist.strings b/aePronunciation/zh-Hant.lproj/InfoPlist.strings new file mode 100644 index 0000000..1892777 --- /dev/null +++ b/aePronunciation/zh-Hant.lproj/InfoPlist.strings @@ -0,0 +1,4 @@ +/* Localized versions of Info.plist keys */ + +CFBundleName = "美式英語發音"; +CFBundleDisplayName = "美式發音"; diff --git a/aePronunciation/zh-Hant.lproj/LaunchScreen.strings b/aePronunciation/zh-Hant.lproj/LaunchScreen.strings new file mode 100644 index 0000000..9047f88 --- /dev/null +++ b/aePronunciation/zh-Hant.lproj/LaunchScreen.strings @@ -0,0 +1,6 @@ + +/* Class = "UILabel"; text = "American\nEnglish\nPronunciation"; ObjectID = "9oa-IR-YQO"; */ +"9oa-IR-YQO.text" = "American\nEnglish\nPronunciation"; + +/* Class = "UILabel"; text = "Version 1.1.0"; ObjectID = "pmB-iq-gA2"; */ +"pmB-iq-gA2.text" = "版本2.0.0"; diff --git a/aePronunciation/zh-Hant.lproj/Localizable.strings b/aePronunciation/zh-Hant.lproj/Localizable.strings new file mode 100644 index 0000000..ba3d2c8 --- /dev/null +++ b/aePronunciation/zh-Hant.lproj/Localizable.strings @@ -0,0 +1,294 @@ +/* + Traditional Chinese + */ + +"locale" = "zh_Hant"; + +// new for iOS version +"main_tab_more" = "更多選擇"; +"main_tab_more_history_section_title" = "歷史記錄"; +"main_tab_more_total_time" = "總時長"; +"main_tab_more_tests" = "測試"; +"main_tab_more_about_section_title" = "關於應用"; +"main_tab_more_app" = "應用"; +"main_tab_more_contact" = "聯繫方式"; + +"test_results_back_button" = "完成"; + +///////////////////////////// +// Non-Translated strings // +///////////////////////////// + +// +"tell_me_button" = "\?"; + +// +"test_results_percent" = "%d%%"; + +// +"history_tests_item_score" = "%d%%"; + +// +"p_example1" = "pass\n/pæs/"; +"p_example2" = "speak\n/spik/"; +"p_example3" = "stop\n/stɑp/"; +"t_example1" = "toad\n/tod/"; +"t_example2" = "sting\n/stɪŋ/"; +"t_example3" = "it\n/ɪt/"; +"k_example1" = "cool\n/kul/"; +"k_example2" = "skill\n/skɪl/"; +"k_example3" = "week\n/wik/"; +"ch_example1" = "chairs\n/ʧɛrz/"; +"ch_example2" = "each of\n/\'iʧəv/"; +"ch_example3" = "church\n/ʧɝʧ/"; +"f_example1" = "father\n/\'fɑðɚ/"; +"f_example2" = "gift\n/gɪft/"; +"f_example3" = "if\n/ɪf/"; +"th_voiceless_example1" = "think\n/θɪŋk/"; +"th_voiceless_example2" = "Jonathan\n/\'ʤɑnəθən/"; +"th_voiceless_example3" = "earth\n/ɝθ/"; +"s_example1" = "set\n/sɛt/"; +"s_example2" = "raced\n/rest/"; +"s_example3" = "pass\n/pæs/"; +"sh_example1" = "shoot\n/ʃut/"; +"sh_example2" = "wished\n/wɪʃt/"; +"sh_example3" = "ash\n/æʃ/"; +"b_example1" = "bill\n/bɪl/"; +"b_example2" = "above\n/ə\'bʌv/"; +"b_example3" = "rib\n/rɪb/"; +"d_example1" = "delicious\n/də\'lɪʃəs/"; +"d_example2" = "cards\n/kɑrdz/"; +"d_example3" = "card\n/kɑrd/"; +"g_example1" = "good\n/gʊd/"; +"g_example2" = "again\n/ə\'gɛn/"; +"g_example3" = "pig\n/pɪg/"; +"dzh_example1" = "jump\n/ʤʌmp/"; +"dzh_example2" = "agile\n/\'æʤəl/"; +"dzh_example3" = "edge\n/ɛʤ/"; +"v_example1" = "very\n/\'vɛri/"; +"v_example2" = "every\n/\'ɛvri/"; +"v_example3" = "have\n/hæv/"; +"th_voiced_example1" = "they\'re\n/ðɛr/"; +"th_voiced_example2" = "father\n/fɑðɚ/"; +"th_voiced_example3" = "bathe\n/beð/"; +"z_example1" = "zoo\n/zu/"; +"z_example2" = "raised\n/rezd/"; +"z_example3" = "cars\n/kɑrz/"; +"zh_example1" = "usually\n/\'juʒli/"; +"zh_example2" = "pleasure\n/\'plɛʒɚ/"; +"zh_example3" = "beige\n/beʒ/"; +"m_example1" = "me\n/mi/"; +"m_example2" = "jump\n/ʤʌmp/"; +"m_example3" = "arm\n/ɑrm/"; +"n_example1" = "new\n/nu/"; +"n_example2" = "panda\n/\'pændə/"; +"n_example3" = "sun\n/sʌn/"; +"ng_example1" = "ringing\n/\'rɪŋɪŋ/"; +"ng_example2" = "think\n/θɪŋk/"; +"ng_example3" = "sung\n/sʌŋ/"; +"l_example1" = "loud\n/laʊd/"; +"l_example2" = "cool\n/kul/"; +"l_example3" = "bill\n/bɪl/"; +"w_example1" = "wary\n/\'wɛri/"; +"w_example2" = "twelve\n/twɛlv/"; +"w_example3" = "what\n/wʌt/"; +"j_example1" = "year\n/jɪr/"; +"j_example2" = "cube\n/kjub/"; +"j_example3" = "yellow\n/\'jɛlo/"; +"h_example1" = "her\n/hɝ/"; +"h_example2" = "have\n/hæv/"; +"h_example3" = "ahead\n/ə\'hɛd/"; +"r_example1" = "real\n/ril/"; +"r_example2" = "rib\n/rɪb/"; +"r_example3" = "roar\n/rɔr/"; +"i_example1" = "each\n/iʧ/"; +"i_example2" = "read\n/rid/"; +"i_example3" = "me\n/mi/"; +"i_short_example1" = "it\n/ɪt/"; +"i_short_example2" = "him\n/hɪm/"; +"i_short_example3" = "rib\n/rɪb/"; +"e_short_example1" = "edge\n/ɛʤ/"; +"e_short_example2" = "set\n/sɛt/"; +"e_short_example3" = "said\n/sɛd/"; +"ae_example1" = "ash\n/æʃ/"; +"ae_example2" = "bad\n/bæd/"; +"ae_example3" = "bat\n/bæt/"; +"a_example1" = "on\n/ɑn/"; +"a_example2" = "father\n/\'fɑðɚ/"; +"a_example3" = "ma\n/mɑ/"; +"c_backwards_example1" = "ought\n/ɔt/"; +"c_backwards_example2" = "call\n/kɔl/"; +"c_backwards_example3" = "saw\n/sɔ/"; +"u_short_example1" = "put\n/pʊt/"; +"u_short_example2" = "good\n/gʊd/"; +"u_short_example3" = "should\n/ʃʊd/"; +"u_example1" = "ooze\n/uz/"; +"u_example2" = "shoot\n/ʃut/"; +"u_example3" = "blue\n/blu/"; +"v_upsidedown_example1" = "up\n/ʌp/"; +"v_upsidedown_example2" = "sun\n/sʌn/"; +"v_upsidedown_example3" = "uh-huh\n/ə\'hʌ/"; +"schwa_example1" = "above\n/ə\'bʌv/"; +"schwa_example2" = "delicious\n/də\'lɪʃəs/"; +"schwa_example3" = "panda\n/\'pændə/"; +"ei_example1" = "age\n/eʤ/"; +"ei_example2" = "safe\n/sef/"; +"ei_example3" = "may\n/me/"; +"ai_example1" = "I\'m\n/aɪm/"; +"ai_example2" = "bite\n/baɪt/"; +"ai_example3" = "fly\n/flaɪ/"; +"au_example1" = "out\n/aʊt/"; +"au_example2" = "loud\n/laʊd/"; +"au_example3" = "cow\n/kaʊ/"; +"oi_example1" = "oil\n/ɔɪl/"; +"oi_example2" = "voice\n/vɔɪs/"; +"oi_example3" = "boy\n/bɔɪ/"; +"ou_example1" = "oath\n/oθ/"; +"ou_example2" = "cove\n/kov/"; +"ou_example3" = "low\n/lo/"; +"er_stressed_example1" = "earth\n/ɝθ/"; +"er_stressed_example2" = "birthday\n/\'bɝθde/"; +"er_stressed_example3" = "her\n/hɝ/"; +"er_unstressed_example1" = "mother\n/\'mʌðɚ/"; +"er_unstressed_example2" = "perform\n/pɚ\'fɔrm/"; +"er_unstressed_example3" = "wonderful\n/\'wʌndɚfəl/"; +"ar_example1" = "arm\n/ɑrm/"; +"ar_example2" = "part\n/pɑrt/"; +"ar_example3" = "car\n/kɑr/"; +"er_example1" = "aired\n/ɛrd/"; +"er_example2" = "chairs\n/ʧɛrz/"; +"er_example3" = "there\n/ðɛr/"; +"ir_example1" = "ear\n/ɪr/"; +"ir_example2" = "weird\n/wɪrd/"; +"ir_example3" = "here\n/hɪr/"; +"or_example1" = "oars\n/ɔrz/"; +"or_example2" = "north\n/nɔrθ/"; +"or_example3" = "roar\n/rɔr/"; +"glottal_stop_example1" = "put\n/pʊʔ/"; +"glottal_stop_example2" = "button\n/\'bʌʔn/"; +"glottal_stop_example3" = "uh-oh\n/\'ʌʔo/"; +"flap_t_example1" = "water\n/\'wɑɾɚ/"; +"flap_t_example2" = "little\n/\'lɪɾəl/"; +"flap_t_example3" = "thirty\n/\'θɝɾi/"; + +///////////////////////////// +// Translated strings ////// +///////////////////////////// + +"i_description" = "在英式英語中/i/音標通常寫作/i:/,兩個點代表發長音。但是在美式發音中加點與不加點沒多大區別。所以美式音標不加兩個點。它在濁輔音前發長音,清輔音前發短音。"; +"a_description" = "在英式英語中/ɑ/音標通常寫作/ɑː/。注意在美式英語中它的發音與/ʌ/有很大區別。還有/ɑ/與漢語拼音中\"a\"也不同。(在國際音標中,漢語拼音的\"a\"寫作/a/)。"; +"u_description" = "在英式英語中/u/音標通常寫作/uː/,但是像/iː/、/aː/、/ɔː/這些長元音的點在美式英語中不必加。美式英語中所有重讀的元音在濁輔音前發長音,清輔音前發短音。"; +"i_short_description" = "/ɪ/與/i/發音不同。在長音與短音方面區別不是很大,最主要的區別是你嘴型的大小和舌頭的位置。跟/i/音相比,嘴要稍微再咧開一點,舌頭的放置要靠後一點。"; +"u_short_description" = "/ʊ/與/u/發音不同。在長音與短音方面區別不是很大,而是嘴型的大小和舌頭的位置。"; +"v_upsidedown_description" = "/ʌ/與/ɑ/讀音不同。在長音與短音方面區別不是很大,而是嘴型的大小和舌頭的位置。注意它的發音與英式英語/ʌ/音標的發音稍微有所不同。當/ʌ/不讀成重音時,通常寫成/ə/。"; +"e_short_description" = "英式英語的音標中使用/e/音標來表示這個發音。實際上,根據標準國際音標它應該被寫成/ɛ/。嘴張開的程度比/æ/小,舌尖更靠前一點。"; +"ae_description" = "發/æ/音時,嘴張開的程度要像/ɑ/一樣大,嘴角像/ɛ/那樣拉向兩邊,但舌頭應該比/ɛ/更往後一些。"; +"c_backwards_description" = "根據國際音標,美式英語中使用的/ɔ/這個音標應該被寫成/ɒ/,但為了和大多數詞典保持一致,我們使用了/ɔ/。(注意,/ɔː/用於英式音標時發音是不一樣的,英式音標的/ɔː/是標準國際音標。)大約40%的美國人不發這個音,他們用/ɑ/代替,上述的例子可以這樣發音:/ɑt/,/kɑt/,和/sɑ/。"; +"schwa_description" = "元音/ə/是美式發音中最常見的一個音。它常用於非重讀音節的單詞。當此元音重讀時通常寫成/ʌ/。"; +"ei_description" = "/eɪ/是雙元音。它由/e/和/ɪ/兩個單音組成。在有些美式發音的詞典中有時也寫成/e/。不要與英式音標/e/混淆,事實上它發/ɛ/音,美式英語中帶/eɪ/音的詞,英式英語中的發音應該為/ɛi/。但是它們依舊都寫成/eɪ/。"; +"ai_description" = "/aɪ/是雙元音。它由/a/和/ɪ/兩個單音組成。注意:/aɪ/與/æ/發音不同。"; +"au_description" = "/aʊ/是雙元音。它由/a/和/ʊ/兩個單音組成。注意:/aʊ/與/ɔ/發音不同。還要注意/aʊ/與漢語拼音中\"ao\"發音也不同。"; +"oi_description" = "/ɔɪ/是雙元音。它由/ɔ/和/ɪ/兩個單音組成。/ɔɪ/中的ɔ與此應用中的/ɔ/發音不同。(這是因為在美式英語中,/ɔ/應該寫為/ɒ/。)讀/ɔɪ/時,口型由小而圓開始。"; +"ou_description" = "/oʊ/是雙元音。它由/o/和/ʊ/兩個單音組成。在有些美式發音的詞典中有時也寫成/o/。注意它與英式發音/əʊ/有輕微的不同。"; +"er_stressed_description" = "/ɝ/音有時候寫為/ər/或/əɹ/。這是在重讀音節或單音節詞中的發音。當/ɝ/非重讀時,寫成/ɚ/。英式英語中沒有/ɝ​​/音,美國人發/ɝ/的單詞中英國人發/ɜː/音。"; +"er_unstressed_description" = "/ɚ/的發音與/ɝ/相同,/ɚ/用於輕讀的音節,而/ɝ/用於重讀的音節。它有時寫為/ər/或/əɹ/。英式英語中沒有/ɚ/音,美國人發/ɚ/的單詞中英國人發/ə/音。"; +"ar_description" = "根據國際音標更加正確地寫法是/ɑɹ/或者/ɑɚ/。英式英語中沒有/ɑr/音,美國人發/ɑr/的單詞中英國人發/ɑː/音。"; +"er_description" = "根據國際音標更加正確的寫法是/ɛɹ/或者/ɛɚ/。英式英語中沒有/ɛr/音,美國人發/ɛr/的單詞中英國人發/eə/音。"; +"ir_description" = "根據國際音標更加正確的寫法是/ɪɹ/或者/ɪɚ/。英式英語中沒有/ɪr/音,美國人發/ɑr/的單詞中英國人發/ɪr/音。"; +"or_description" = "根據國際音標更加正確的寫法是/ɔɹ/或者/ɔɚ/。/ɔr/中的ɔ與此應用中的/ɔ/發音不同。(這是因為在美式英語中,/ɔ/應該寫為/ɒ/。)讀/ɔr/時,口型由小而圓開始。英式英語中沒有/ɔr/音,美國人發/ɔr/的單詞中英國人發/ɔ:/音。"; +"p_description" = "位於詞首時是送氣音[pʰ],但在字母s後和詞尾時是非送氣的[p](跟漢語拼音的\"b\"音一樣)。注意不要把第三個例子讀成/stapə/。"; +"t_description" = "位於詞首時是送氣音[tʰ],但在字母s後和詞尾時是非送氣的[t](跟漢語拼音的\"d\"音一樣)。注意不要把第三個例子讀成/ɪtə/,/ɪts/或/ɪtʰ/,還要注意\"t\"在美式英語發音中經常改變發音,像/ɾ/和/ʔ/。"; +"k_description" = "位於詞首時是送氣音[kʰ],但在字母s後和詞尾時是非送氣的[k](跟漢語拼音的\"g\"音一樣)。注意不要把第三個例子讀成/wikə/。"; +"b_description" = "注意/b/在單詞詞尾的發音,不要把第三個例子讀成/rɪbə/或者是/rɪp/。英語中的/b/和漢語拼音中的\"b\"不同。"; +"d_description" = "注意/d/在單詞詞尾的發音,不要把第三個例子讀成/kɑrdə/或者是/kɑrt/。英語中的/d/和漢語拼音中的\"d\"不同。"; +"g_description" = "注意/g/在單詞詞尾的發音,不要把第三個例子讀成/pɪgə/或者是/pɪk/。英語中的/g/和漢語拼音中的\"g\"不同。"; +"f_description" = "注意/f/在單詞詞尾的發音,不要把第三個例子讀成/ɪfə/。"; +"s_description" = "注意/s/在單詞詞尾的發音,不要把第三個例子讀成/pæsə/。"; +"ch_description" = "注意/ʧ/在單詞詞尾的發音,不要把第三個例子讀成/ʧɝʧə/。英語中的/ʧ/和漢語拼音中的\"ch\"、\"q\"不同。(在國際音標中,漢語拼音的\"ch\"是[ʈʂʰ]音,\"q\"是[tɕʰ]音。)"; +"sh_description" = "注意/ʃ/在單詞詞尾的發音,不要把第三個例子讀成/æʃə/。英語中的/ʃ/和漢語拼音中的\"sh\"、\"x\"不同。(在國際音標中,漢語拼音的\"sh\"是[ʂ]音,\"x\"是[ɕ]音。)"; +"dzh_description" = "注意/ʤ/在單詞詞尾的發音,不要把第三個例子讀成/ɛʤə/。英語中的/ʤ/和漢語拼音中的\"zh\"、\"j\"不同。(在國際音標中,漢語拼音的\"zh\"是[ʈʂ]音,\"j\"是[tɕ]音。)"; +"v_description" = "/v/和/f/口型相同。唯一的不同之處就是/v/是濁音。注意/v/與/w/兩者發音的不同。發/v/音時,上齒要輕輕接觸下唇。還要注意第三個例子不要讀成/hævə/。"; +"z_description" = "/z/和/s/口型相同。唯一的不同之處就是/z/是濁音。不要讀成/dz/。英語中的/z/和漢語拼音中的\"z\"不同。(在國際音標中,漢語拼音的\"z\"是[ts]音,\"c\"是[tsʰ]音。)"; +"zh_description" = "/ʒ/和/ʃ/口型相同。唯一的不同之處就是/ʒ/是濁音。注意區別/r/和/ʒ/。"; +"th_voiced_description" = "/ð/和/θ/口型相同,最主要的區別就是/ð/是濁音。發/ð/時舌頭輕觸上齒的底部。"; +"th_voiceless_description" = "這個音標的發音,舌頭輕微觸到上齒底部,不要讀成/s/。"; +"m_description" = "注意/m/在單詞詞尾的發音,不要把第三個例子讀成/ɑrmə/。"; +"n_description" = "注意/n/在單詞詞尾的發音,不要把第三個例子讀成/sʌnə/。"; +"ng_description" = "這個音不會出現在英語單詞的詞首。"; +"w_description" = "這個音不會出現在英語單詞的詞尾。注意/w/和/v/的不同之處。讀/w/音時,嘴唇要形成一個小圓且不要觸碰牙齒。一小部分美國人將\"wh\"音發成/hw/(在國際音標中是/ʍ/)。"; +"j_description" = "這個音不會出現在英語單詞的詞尾。注意year和ear的不同之處。"; +"h_description" = "這個音不會出現在英語單詞的詞尾。注意英語中的/h/與漢語拼音中的\"h\"不同。(在國際音標中,漢語拼音的\"h\"是[x]音。)"; +"l_description" = "當/l/在單詞開頭時,它就讀國際音標中本身的音標。當字母l在單詞詞尾時發音有所不同,它就發國際音標的[ɫ]音。但是在這個應用的練習和考試中,我們用/l/音標代替[ɫ]音(在許多課本和詞典中也是如此)。第二個例子也能寫成/kuəl/,不要把最後倆個例子讀成/kuo/或/bɪo/。你的嘴唇應該放鬆且不能移動。"; +"r_description" = "根據國際音標,這個音應該寫為/ɹ/。(國際音標中的/r/實際上是顫音,就像蒙語中的\"r\")。然而,為了與許多課本和詞典保持一致,在這裡使用/r/音標。要注意/r/和/ʒ/的不同之處,也要注意英語中的/r/與漢語拼音中的\"r\"的不同之處。(在國際音標中,漢語拼音的\"r\"是/ɻ/音。)"; +"glottal_stop_description" = "這個音被稱作為聲門塞音。在中國的英語課本中通常不講,但是它在美式發音中非常重要。注意例一put的不同發音,/pʊt/與/pʊʔ/。/ʔ/音經常代替/t/音,特別是在單詞詞尾和句子中間。"; +"flap_t_description" = "這個音標叫做齒齦閃音,在中國英語課本中通常不教,但是它在美式發音中非常重要。當/t/音出現在非重讀的音節中並在兩個元音之間,/ɾ/音通常會代替/t/音。儘管不準確,但是/ɾ/音標也可以寫成/d/。這種情況下,上述例子應該被寫成/ˈwɑdɚ/,/ˈlɪdəl/和/\'θɝdi/。"; +"app_name" = "美式發音"; +"app_name_long" = "美式英語發音"; +"main_menu_keyboard" = "輸入音標"; +"main_menu_about" = "關於應用"; +"main_menu_history" = "歷史記錄"; +"title_activity_learn_double" = "/%@/的延伸"; +"practice_mode_double" = "雙音標"; +"select_sounds_title" = "選擇音標"; +"select_sounds_radio_double" = "雙音標"; +"select_sounds_radio_single" = "單音標"; +"select_sounds_positive_button" = "確定"; +"dialog_cancel_button" = "取消"; +"select_sounds_cb_consonants" = "輔音"; +"select_sounds_cb_vowels" = "元音"; +"test_setup_name" = "姓名"; +"test_setup_number_of_questions" = "數量:"; +"test_setup_begin_button" = "開始"; +"test_setup_double" = "雙音標"; +"test_setup_single" = "單音標"; +"test_setup_type" = "類型:"; +"title_activity_test" = "測試"; +"title_activity_test_results" = "考試結果"; +"test_results_right" = "正確: %d"; +"test_results_wrong" = "錯誤: %d"; +"test_results_time" = "用時: %@"; +"test_results_practice_difficult_button" = "糾錯練習"; +"title_activity_history" = "歷史記錄"; +"history_time_title" = "總時長"; +"history_test_title" = "最佳記錄"; +"history_details" = "詳情"; +"title_activity_history_time" = "時間詳情"; +"title_activity_history_tests" = "測試詳情"; +"about_app_name" = "美式發音"; +"title_activity_about" = "關於應用"; +"about_content" = "如果你有任何問題或者建議,請聯繫我們。"; +"about_contact" = "聯繫方式"; +"about_contact_url" = "http://www.aepronunciation.com/app/"; +"keyboard_input_toast_text_copied" = "已複製"; +"keyboard_menu_clear" = "刪除"; +"keyboard_menu_copy" = "複製"; +"keyboard_menu_share" = "分享"; +"keyboard_menu_share_chooser_title" = "分享到"; +"title_activity_keyboard_input" = "輸入音標"; +"title_activity_history_test_details" = "測試詳情"; +"keyboard_menu_alert_message" = "確定要全部刪除嗎?"; +"keyboard_menu_alert_clear_all_button" = "刪除"; +"error_final_r" = "在此應用以r結尾的只有這5個(ɝ,ɑr,ɛr,ɪr,ɔr),不需要另外加工。"; +"error_two_consonants" = "你輸入的是%@和%@(兩個輔音)。你應該輸入一個元音和一個輔音。"; +"error_two_vowels" = "你輸入的是%@和%@(兩個元音)。你應該輸入一個元音和一個輔音。"; +"error_final_wjh" = "你輸入的是%@和%@。但是%@不會出現在單詞結尾。"; +"error_initial_ng" = "你輸入的是%@和%@。但是在英語中,%@不會出現在單詞開頭。"; +"error_dialog_ok_button" = "知道了"; +"learn_single_show_doubles" = "更多示例"; +"main_tab_learn" = "學習"; +"main_tab_practice" = "練習"; +"main_tab_test" = "測試"; +"practice_mode_single" = "單音標"; +"history_test_details_type_double" = "雙音標 (%d)"; +"history_test_details_type_single" = "單音標 (%d)"; +"history_tests_type_double" = "雙音標: %d%%"; +"history_tests_type_single" = "單音標: %d%%"; +"history_test_details_specific_test_number_of_questions" = "數量: %d"; +"about_app_version" = "版本%@"; +"history_time_details_learning" = "學習時長"; +"history_time_details_practicing" = "練習時長"; +"history_time_details_testing" = "考試時長"; +"history_time_details_total" = "總時長"; +"history_time_details_type_double" = "雙音標"; +"history_time_details_type_single" = "單音標"; +"test_default_name" = "無名"; diff --git a/aePronunciation/zh-Hant.lproj/Main.strings b/aePronunciation/zh-Hant.lproj/Main.strings new file mode 100644 index 0000000..047dc5a --- /dev/null +++ b/aePronunciation/zh-Hant.lproj/Main.strings @@ -0,0 +1,237 @@ + +/* Class = "UILabel"; text = "Right: 20"; ObjectID = "13T-OP-RcX"; */ +"13T-OP-RcX.text" = "Right: 20"; + +/* Class = "UIBarButtonItem"; title = " "; ObjectID = "1wR-2j-ymD"; */ +"1wR-2j-ymD.title" = " "; + +/* Class = "UILabel"; text = "App"; ObjectID = "3JE-2a-Xih"; */ +"3JE-2a-Xih.text" = "App"; + +/* Class = "UITabBarItem"; title = "Test"; ObjectID = "49K-ff-gzd"; */ +"49K-ff-gzd.title" = "Test"; + +/* Class = "UIButton"; normalTitle = "more..."; ObjectID = "5uR-8T-Nlc"; */ +"5uR-8T-Nlc.normalTitle" = "more..."; + +/* Class = "UILabel"; text = "x"; ObjectID = "6cc-FV-0RL"; */ +"6cc-FV-0RL.text" = "x"; + +/* Class = "UITableViewSection"; headerTitle = "About"; ObjectID = "6d3-U8-0HJ"; */ +"6d3-U8-0HJ.headerTitle" = "About"; + +/* Class = "UINavigationItem"; title = "Practice Single Sounds"; ObjectID = "6gM-6j-yO8"; */ +"6gM-6j-yO8.title" = "Practice Single Sounds"; + +/* Class = "UILabel"; text = "Sally"; ObjectID = "6z0-bv-0Jb"; */ +"6z0-bv-0Jb.text" = "Sally"; + +/* Class = "UILabel"; text = "October 20, 2015"; ObjectID = "8KU-Pa-dTO"; */ +"8KU-Pa-dTO.text" = "October 20, 2015"; + +/* Class = "UILabel"; text = "Singles"; ObjectID = "8jj-7H-dMn"; */ +"8jj-7H-dMn.text" = "Singles"; + +/* Class = "UILabel"; text = " "; ObjectID = "96L-oX-rKC"; */ +"96L-oX-rKC.text" = " "; + +/* Class = "UILabel"; text = "Version 2.0.0"; ObjectID = "BGu-Fl-fVM"; */ +"BGu-Fl-fVM.text" = "Version 2.0.0"; + +/* Class = "UIBarButtonItem"; title = " "; ObjectID = "BdL-gT-Jta"; */ +"BdL-gT-Jta.title" = " "; + +/* Class = "UITableViewSection"; headerTitle = "History"; ObjectID = "CKi-In-8L4"; */ +"CKi-In-8L4.headerTitle" = "History"; + +/* Class = "UILabel"; text = "Total time"; ObjectID = "ElN-Dh-NSm"; */ +"ElN-Dh-NSm.text" = "Total time"; + +/* Class = "UILabel"; text = "Single Sounds"; ObjectID = "GyD-J4-c5i"; */ +"GyD-J4-c5i.text" = "Single Sounds"; + +/* Class = "UILabel"; text = "Time length: 0:02:45"; ObjectID = "HBt-79-wem"; */ +"HBt-79-wem.text" = "Time length: 0:02:45"; + +/* Class = "UILabel"; text = "Type:"; ObjectID = "I4Q-sc-lUB"; */ +"I4Q-sc-lUB.text" = "Type:"; + +/* Class = "UILabel"; text = " "; ObjectID = "J5Q-C1-QF6"; */ +"J5Q-C1-QF6.text" = " "; + +/* Class = "UILabel"; text = " "; ObjectID = "L5e-x1-g9j"; */ +"L5e-x1-g9j.text" = " "; + +/* Class = "UILabel"; text = "Doubes"; ObjectID = "M1D-WS-a6W"; */ +"M1D-WS-a6W.text" = "Doubes"; + +/* Class = "UILabel"; text = "87%"; ObjectID = "M5Q-zg-wER"; */ +"M5Q-zg-wER.text" = "87%"; + +/* Class = "UILabel"; text = "5"; ObjectID = "Mwm-2Q-gTq"; */ +"Mwm-2Q-gTq.text" = "5"; + +/* Class = "UILabel"; text = "name"; ObjectID = "O1e-K8-Kt3"; */ +"O1e-K8-Kt3.text" = "name"; + +/* Class = "UILabel"; text = " "; ObjectID = "OJN-tY-Dqe"; */ +"OJN-tY-Dqe.text" = " "; + +/* Class = "UILabel"; text = "Doubles"; ObjectID = "PXO-4g-yb0"; */ +"PXO-4g-yb0.text" = "Doubles"; + +/* Class = "UILabel"; text = " "; ObjectID = "Pqf-FY-B1J"; */ +"Pqf-FY-B1J.text" = " "; + +/* Class = "UILabel"; text = "Single Sounds"; ObjectID = "Q18-YE-vYF"; */ +"Q18-YE-vYF.text" = "Single Sounds"; + +/* Class = "UINavigationItem"; title = "Learn Single Sounds"; ObjectID = "QMt-tm-syM"; */ +"QMt-tm-syM.title" = "Learn Single Sounds"; + +/* Class = "UISegmentedControl"; RgW-sX-lep.segmentTitles[0] = "5"; ObjectID = "RgW-sX-lep"; */ +"RgW-sX-lep.segmentTitles[0]" = "5"; + +/* Class = "UISegmentedControl"; RgW-sX-lep.segmentTitles[1] = "10"; ObjectID = "RgW-sX-lep"; */ +"RgW-sX-lep.segmentTitles[1]" = "10"; + +/* Class = "UISegmentedControl"; RgW-sX-lep.segmentTitles[2] = "25"; ObjectID = "RgW-sX-lep"; */ +"RgW-sX-lep.segmentTitles[2]" = "25"; + +/* Class = "UISegmentedControl"; RgW-sX-lep.segmentTitles[3] = "50"; ObjectID = "RgW-sX-lep"; */ +"RgW-sX-lep.segmentTitles[3]" = "50"; + +/* Class = "UISegmentedControl"; RgW-sX-lep.segmentTitles[4] = "100"; ObjectID = "RgW-sX-lep"; */ +"RgW-sX-lep.segmentTitles[4]" = "100"; + +/* Class = "UIBarButtonItem"; title = " "; ObjectID = "Rm8-2S-t7s"; */ +"Rm8-2S-t7s.title" = " "; + +/* Class = "UILabel"; text = "97%"; ObjectID = "T7Y-sf-3Zq"; */ +"T7Y-sf-3Zq.text" = "97%"; + +/* Class = "UILabel"; text = "Tests"; ObjectID = "Tsg-Nw-ycT"; */ +"Tsg-Nw-ycT.text" = "Tests"; + +/* Class = "UILabel"; text = " "; ObjectID = "Uax-Io-2yb"; */ +"Uax-Io-2yb.text" = " "; + +/* Class = "UILabel"; text = "Vowels"; ObjectID = "Xgl-bk-DdZ"; */ +"Xgl-bk-DdZ.text" = "Vowels"; + +/* Class = "UITabBarItem"; title = "More"; ObjectID = "YLT-vm-KdY"; */ +"YLT-vm-KdY.title" = "More"; + +/* Class = "UITabBarItem"; title = "Learn"; ObjectID = "acW-dT-cKf"; */ +"acW-dT-cKf.title" = "Learn"; + +/* Class = "UILabel"; text = "23"; ObjectID = "b0I-Ug-9BE"; */ +"b0I-Ug-9BE.text" = "23"; + +/* Class = "UILabel"; text = "Number of questions:"; ObjectID = "c4H-XM-Skx"; */ +"c4H-XM-Skx.text" = "Number of questions:"; + +/* Class = "UITabBarItem"; title = "Practice"; ObjectID = "cPa-gy-q4n"; */ +"cPa-gy-q4n.title" = "Practice"; + +/* Class = "UIButton"; normalTitle = "Example 1"; ObjectID = "fWm-5R-0Px"; */ +"fWm-5R-0Px.normalTitle" = "Example 1"; + +/* Class = "UILabel"; text = "Time Practicing"; ObjectID = "gFD-cR-qct"; */ +"gFD-cR-qct.text" = "Time Practicing"; + +/* Class = "UILabel"; text = "a"; ObjectID = "h2o-DD-V8z"; */ +"h2o-DD-V8z.text" = "a"; + +/* Class = "UILabel"; text = "Total Time"; ObjectID = "hBG-jm-agd"; */ +"hBG-jm-agd.text" = "Total Time"; + +/* Class = "UILabel"; text = " "; ObjectID = "ha6-xx-hNh"; */ +"ha6-xx-hNh.text" = " "; + +/* Class = "UILabel"; text = "96%"; ObjectID = "iYK-Az-59l"; */ +"iYK-Az-59l.text" = "96%"; + +/* Class = "UILabel"; text = "American\nEnglish\nPronunciation"; ObjectID = "iiO-iN-o5H"; */ +"iiO-iN-o5H.text" = "American\nEnglish\nPronunciation"; + +/* Class = "UILabel"; text = "Single (50)"; ObjectID = "jP1-UR-iJa"; */ +"jP1-UR-iJa.text" = "Single (50)"; + +/* Class = "UILabel"; text = "A"; ObjectID = "jl0-Ik-Qri"; */ +"jl0-Ik-Qri.text" = "A"; + +/* Class = "UIButton"; normalTitle = "Example 3"; ObjectID = "lHf-se-lYr"; */ +"lHf-se-lYr.normalTitle" = "Example 3"; + +/* Class = "UITextView"; text = "Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda."; ObjectID = "nMN-F4-UWg"; */ +"nMN-F4-UWg.text" = "Lorem ipsum dolor sit er elit lamet, consectetaur cillium adipisicing pecu, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua. Ut enim ad minim veniam, quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat. Duis aute irure dolor in reprehenderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur. Excepteur sint occaecat cupidatat non proident, sunt in culpa qui officia deserunt mollit anim id est laborum. Nam liber te conscient to factor tum poen legum odioque civiuda."; + +/* Class = "UILabel"; text = "a"; ObjectID = "nOQ-BZ-4ik"; */ +"nOQ-BZ-4ik.text" = "a"; + +/* Class = "UILabel"; text = " "; ObjectID = "ntq-R0-R4f"; */ +"ntq-R0-R4f.text" = " "; + +/* Class = "UILabel"; text = "Consonants"; ObjectID = "ocp-nT-sdi"; */ +"ocp-nT-sdi.text" = "Consonants"; + +/* Class = "UILabel"; text = "Singles"; ObjectID = "oq6-vQ-XBM"; */ +"oq6-vQ-XBM.text" = "Singles"; + +/* Class = "UILabel"; text = " "; ObjectID = "qI7-6y-LDh"; */ +"qI7-6y-LDh.text" = " "; + +/* Class = "UILabel"; text = "Doubles"; ObjectID = "sKt-Zk-pu2"; */ +"sKt-Zk-pu2.text" = "Doubles"; + +/* Class = "UILabel"; text = "Singles"; ObjectID = "sQb-Wn-gkK"; */ +"sQb-Wn-gkK.text" = "Singles"; + +/* Class = "UILabel"; text = "Time learning"; ObjectID = "tx2-Av-K8N"; */ +"tx2-Av-K8N.text" = "Time learning"; + +/* Class = "UILabel"; text = " "; ObjectID = "u4O-fx-1IW"; */ +"u4O-fx-1IW.text" = " "; + +/* Class = "UILabel"; text = "5"; ObjectID = "uih-6n-HgL"; */ +"uih-6n-HgL.text" = "5"; + +/* Class = "UILabel"; text = "Contact"; ObjectID = "v0u-qb-YCw"; */ +"v0u-qb-YCw.text" = "Contact"; + +/* Class = "UISegmentedControl"; vMo-xo-sDK.segmentTitles[0] = "Single"; ObjectID = "vMo-xo-sDK"; */ +"vMo-xo-sDK.segmentTitles[0]" = "Single"; + +/* Class = "UISegmentedControl"; vMo-xo-sDK.segmentTitles[1] = "Double"; ObjectID = "vMo-xo-sDK"; */ +"vMo-xo-sDK.segmentTitles[1]" = "Double"; + +/* Class = "UILabel"; text = "23"; ObjectID = "xLN-vD-eb6"; */ +"xLN-vD-eb6.text" = "23"; + +/* Class = "UISegmentedControl"; xPa-DK-qhp.segmentTitles[0] = "First"; ObjectID = "xPa-DK-qhp"; */ +"xPa-DK-qhp.segmentTitles[0]" = "First"; + +/* Class = "UISegmentedControl"; xPa-DK-qhp.segmentTitles[1] = "Second"; ObjectID = "xPa-DK-qhp"; */ +"xPa-DK-qhp.segmentTitles[1]" = "Second"; + +/* Class = "UILabel"; text = "Wrong: 2"; ObjectID = "yLF-3O-Lbo"; */ +"yLF-3O-Lbo.text" = "Wrong: 2"; + +/* Class = "UINavigationItem"; title = "Test Setup"; ObjectID = "yW7-yZ-Ucj"; */ +"yW7-yZ-Ucj.title" = "Test Setup"; + +/* Class = "UIBarButtonItem"; title = " "; ObjectID = "ycJ-o2-zDZ"; */ +"ycJ-o2-zDZ.title" = " "; + +/* Class = "UILabel"; text = "Time Testing"; ObjectID = "yf6-gE-vv6"; */ +"yf6-gE-vv6.text" = "Time Testing"; + +/* Class = "UIButton"; normalTitle = "Begin"; ObjectID = "yvz-To-sYT"; */ +"yvz-To-sYT.normalTitle" = "Begin"; + +/* Class = "UILabel"; text = "date"; ObjectID = "yxb-k7-21x"; */ +"yxb-k7-21x.text" = "date"; + +/* Class = "UIButton"; normalTitle = "Example 2"; ObjectID = "zH7-Rg-MTT"; */ +"zH7-Rg-MTT.normalTitle" = "Example 2"; diff --git a/aePronunciationTests/Info.plist b/aePronunciationTests/Info.plist index ba72822..6c40a6c 100644 --- a/aePronunciationTests/Info.plist +++ b/aePronunciationTests/Info.plist @@ -3,7 +3,7 @@ CFBundleDevelopmentRegion - en + $(DEVELOPMENT_LANGUAGE) CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -16,8 +16,6 @@ BNDL CFBundleShortVersionString 1.0 - CFBundleSignature - ???? CFBundleVersion 1 diff --git a/aePronunciationTests/aePronunciationTests.swift b/aePronunciationTests/aePronunciationTests.swift index b2ef10f..cf87935 100644 --- a/aePronunciationTests/aePronunciationTests.swift +++ b/aePronunciationTests/aePronunciationTests.swift @@ -2,36 +2,34 @@ // aePronunciationTests.swift // aePronunciationTests // -// Created by MongolSuragch on 9/28/15. -// Copyright © 2015 Suragch. All rights reserved. +// Created by MongolSuragch on 11/20/17. +// Copyright © 2017 Suragch. All rights reserved. // -//import XCTest -//@testable import aePronunciation -// -//class aePronunciationTests: XCTestCase { -// -// override func setUp() { -// super.setUp() -// // Put setup code here. This method is called before the invocation of each test method in the class. -// } -// -// override func tearDown() { -// // Put teardown code here. This method is called after the invocation of each test method in the class. -// super.tearDown() -// } -// -// func testExample() { -// // This is an example of a functional test case. -// // Use XCTAssert and related functions to verify your tests produce the correct results. -// } -// -// func testPerformanceExample() { -// // This is an example of a performance test case. -// self.measure { -// // Put the code you want to measure the time of here. -// } -// } -// -//} +import XCTest +class aePronunciationTests: XCTestCase { + + override func setUp() { + super.setUp() + // Put setup code here. This method is called before the invocation of each test method in the class. + } + + override func tearDown() { + // Put teardown code here. This method is called after the invocation of each test method in the class. + super.tearDown() + } + + func testExample() { + // This is an example of a functional test case. + // Use XCTAssert and related functions to verify your tests produce the correct results. + } + + func testPerformanceExample() { + // This is an example of a performance test case. + self.measure { + // Put the code you want to measure the time of here. + } + } + +} diff --git a/aePronunciationUITests/Info.plist b/aePronunciationUITests/Info.plist index ba72822..6c40a6c 100644 --- a/aePronunciationUITests/Info.plist +++ b/aePronunciationUITests/Info.plist @@ -3,7 +3,7 @@ CFBundleDevelopmentRegion - en + $(DEVELOPMENT_LANGUAGE) CFBundleExecutable $(EXECUTABLE_NAME) CFBundleIdentifier @@ -16,8 +16,6 @@ BNDL CFBundleShortVersionString 1.0 - CFBundleSignature - ???? CFBundleVersion 1 diff --git a/aePronunciationUITests/aePronunciationUITests.swift b/aePronunciationUITests/aePronunciationUITests.swift index 4ef3144..2142781 100644 --- a/aePronunciationUITests/aePronunciationUITests.swift +++ b/aePronunciationUITests/aePronunciationUITests.swift @@ -2,8 +2,8 @@ // aePronunciationUITests.swift // aePronunciationUITests // -// Created by MongolSuragch on 9/28/15. -// Copyright © 2015 Suragch. All rights reserved. +// Created by MongolSuragch on 11/20/17. +// Copyright © 2017 Suragch. All rights reserved. // import XCTest @@ -31,9 +31,6 @@ class aePronunciationUITests: XCTestCase { func testExample() { // Use recording to get started writing UI tests. // Use XCTAssert and related functions to verify your tests produce the correct results. - - - } }