xmp_toolkit_ruby 0.0.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (183) hide show
  1. checksums.yaml +7 -0
  2. data/.idea/.gitignore +8 -0
  3. data/.rspec +3 -0
  4. data/.rubocop.yml +88 -0
  5. data/.ruby-gemset +1 -0
  6. data/.ruby-version +1 -0
  7. data/AGENTS.md +72 -0
  8. data/CHANGELOG.md +45 -0
  9. data/LICENSE.txt +21 -0
  10. data/README.md +287 -0
  11. data/Rakefile +25 -0
  12. data/cliff.toml +138 -0
  13. data/docker/Dockerfile +87 -0
  14. data/docker/ProductConfig.cmake.patch +11 -0
  15. data/docker/ToolchainGCC.cmake.patch +11 -0
  16. data/exe/xmp_toolkit_ruby +8 -0
  17. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/LICENSE +31 -0
  18. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/build/XMP_BuildInfo.h +17 -0
  19. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/TXMPFiles.hpp +853 -0
  20. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/TXMPIterator.hpp +234 -0
  21. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/TXMPMeta.hpp +1753 -0
  22. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/TXMPUtils.hpp +967 -0
  23. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMP.hpp +98 -0
  24. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMP.incl_cpp +69 -0
  25. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Interfaces/BaseInterfaces/IConfigurable.h +225 -0
  26. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Interfaces/BaseInterfaces/ISharedObject.h +71 -0
  27. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Interfaces/BaseInterfaces/IThreadSafe.h +76 -0
  28. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Interfaces/BaseInterfaces/IVersionable.h +71 -0
  29. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Interfaces/IConfigurationManager.h +167 -0
  30. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Interfaces/IError.h +377 -0
  31. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Interfaces/IErrorNotifier.h +52 -0
  32. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Interfaces/IMemoryAllocator.h +65 -0
  33. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Interfaces/IObjectFactory.h +90 -0
  34. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Interfaces/IUTF8String.h +504 -0
  35. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Utilities/TWrapperFunctions.h +252 -0
  36. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/Utilities/TWrapperFunctions2.h +564 -0
  37. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/XMPCommonDefines.h +194 -0
  38. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/XMPCommonErrorCodes.h +114 -0
  39. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/XMPCommonFwdDeclarations.h +158 -0
  40. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/XMPCommonLatestInterfaceVersions.h +51 -0
  41. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/source/IConfigurable.cpp +204 -0
  42. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/source/IConfigurationManager.cpp +92 -0
  43. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/source/IError.cpp +207 -0
  44. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/source/IErrorNotifier.cpp +26 -0
  45. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCommon/source/IUTF8String.cpp +299 -0
  46. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IArrayNode.h +303 -0
  47. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IClientDOMParser.h +88 -0
  48. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IClientDOMSerializer.h +94 -0
  49. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/ICompositeNode.h +331 -0
  50. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/ICoreConfigurationManager.h +107 -0
  51. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/ICoreObjectFactory.h +279 -0
  52. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IDOMImplementationRegistry.h +150 -0
  53. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IDOMParser.h +181 -0
  54. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IDOMSerializer.h +120 -0
  55. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IMetadata.h +145 -0
  56. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IMetadataConverterUtils.h +116 -0
  57. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/INameSpacePrefixMap.h +236 -0
  58. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/INode.h +582 -0
  59. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/INodeIterator.h +193 -0
  60. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IPath.h +212 -0
  61. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IPathSegment.h +225 -0
  62. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/ISimpleNode.h +150 -0
  63. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/Interfaces/IStructureNode.h +306 -0
  64. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/XMPCoreDefines.h +94 -0
  65. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/XMPCoreErrorCodes.h +116 -0
  66. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/XMPCoreFwdDeclarations.h +325 -0
  67. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/XMPCoreLatestInterfaceVersions.h +97 -0
  68. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IArrayNode.cpp +163 -0
  69. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IClientDOMParser.cpp +76 -0
  70. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IClientDOMSerializer.cpp +73 -0
  71. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/ICompositeNode.cpp +121 -0
  72. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/ICoreConfigurationManager.cpp +88 -0
  73. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/ICoreObjectFactory.cpp +83 -0
  74. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IDOMImplementationRegistry.cpp +122 -0
  75. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IDOMParser.cpp +116 -0
  76. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IDOMSerializer.cpp +109 -0
  77. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IMetadata.cpp +113 -0
  78. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IMetadataConverterUtils.cpp +92 -0
  79. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/INameSpacePrefixMap.cpp +187 -0
  80. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/INode.cpp +377 -0
  81. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/INodeIterator.cpp +105 -0
  82. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IPath.cpp +157 -0
  83. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IPathSegment.cpp +146 -0
  84. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/ISimpleNode.cpp +111 -0
  85. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMPCore/source/IStructureNode.cpp +104 -0
  86. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMP_Const.h +1590 -0
  87. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMP_Environment.h +223 -0
  88. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMP_IO.hpp +169 -0
  89. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/XMP_Version.h +52 -0
  90. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/client-glue/TXMPFiles.incl_cpp +484 -0
  91. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/client-glue/TXMPIterator.incl_cpp +223 -0
  92. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/client-glue/TXMPMeta.incl_cpp +917 -0
  93. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/client-glue/TXMPUtils.incl_cpp +445 -0
  94. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/client-glue/WXMPFiles.hpp +281 -0
  95. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/client-glue/WXMPIterator.hpp +74 -0
  96. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/client-glue/WXMPMeta.hpp +635 -0
  97. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/client-glue/WXMPUtils.hpp +314 -0
  98. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/include/client-glue/WXMP_Common.hpp +132 -0
  99. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/libraries/i80386linux_x64/debug/libXMPCore.so +0 -0
  100. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/libraries/i80386linux_x64/debug/libXMPCoreStatic.a +0 -0
  101. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/libraries/i80386linux_x64/debug/libXMPFiles.so +0 -0
  102. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/libraries/i80386linux_x64/debug/libXMPFilesStatic.a +0 -0
  103. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/libraries/macintosh/universal/Debug/libXMPCoreStatic.a +0 -0
  104. data/ext/xmp_toolkit_ruby/XMP-Toolkit-SDK/public/libraries/macintosh/universal/Debug/libXMPFilesStatic.a +0 -0
  105. data/ext/xmp_toolkit_ruby/extconf.rb +101 -0
  106. data/ext/xmp_toolkit_ruby/xmp_toolkit.cpp +321 -0
  107. data/ext/xmp_toolkit_ruby/xmp_toolkit.hpp +69 -0
  108. data/ext/xmp_toolkit_ruby/xmp_toolkit_ruby.cpp +44 -0
  109. data/lib/xmp_toolkit_ruby/cli.rb +95 -0
  110. data/lib/xmp_toolkit_ruby/namespaces.rb +77 -0
  111. data/lib/xmp_toolkit_ruby/plugins/LICENSE +31 -0
  112. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/i80386linux/i80386linux/PDF_Handler.resources/MODULE_IDENTIFIER.txt +1 -0
  113. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/i80386linux/i80386linux/PDF_Handler.resources/XMPPLUGINUIDS.txt +31 -0
  114. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/i80386linux/i80386linux/PDF_Handler.xpi +0 -0
  115. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/i80386linux/i80386linux/libMiniPDFL.so +0 -0
  116. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/i80386linux/i80386linux_x64/PDF_Handler.resources/MODULE_IDENTIFIER.txt +1 -0
  117. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/i80386linux/i80386linux_x64/PDF_Handler.resources/XMPPLUGINUIDS.txt +31 -0
  118. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/i80386linux/i80386linux_x64/PDF_Handler.xpi +0 -0
  119. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/i80386linux/i80386linux_x64/libMiniPDFL.so +0 -0
  120. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/PDF_Handler +0 -0
  121. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/Info.plist +52 -0
  122. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MODULE_IDENTIFIER.txt +1 -0
  123. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/MiniPDFL +0 -0
  124. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/Resources/English.lproj/InfoPlist.strings +0 -0
  125. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/Resources/Info.plist +35 -0
  126. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/Versions/A/MiniPDFL +0 -0
  127. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/Versions/A/Resources/English.lproj/InfoPlist.strings +0 -0
  128. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/Versions/A/Resources/Info.plist +35 -0
  129. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/Versions/A/_CodeSignature/CodeResources +146 -0
  130. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/Versions/Current/MiniPDFL +0 -0
  131. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/Versions/Current/Resources/English.lproj/InfoPlist.strings +0 -0
  132. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/Versions/Current/Resources/Info.plist +35 -0
  133. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/MiniPDFL.framework/Versions/Current/_CodeSignature/CodeResources +146 -0
  134. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Resources/XMPPLUGINUIDS.txt +31 -0
  135. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/PDF_Handler +0 -0
  136. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/Info.plist +52 -0
  137. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MODULE_IDENTIFIER.txt +1 -0
  138. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/MiniPDFL +0 -0
  139. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/Resources/English.lproj/InfoPlist.strings +0 -0
  140. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/Resources/Info.plist +35 -0
  141. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/Versions/A/MiniPDFL +0 -0
  142. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/Versions/A/Resources/English.lproj/InfoPlist.strings +0 -0
  143. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/Versions/A/Resources/Info.plist +35 -0
  144. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/Versions/A/_CodeSignature/CodeResources +146 -0
  145. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/Versions/Current/MiniPDFL +0 -0
  146. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/Versions/Current/Resources/English.lproj/InfoPlist.strings +0 -0
  147. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/Versions/Current/Resources/Info.plist +35 -0
  148. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/MiniPDFL.framework/Versions/Current/_CodeSignature/CodeResources +146 -0
  149. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/Resources/XMPPLUGINUIDS.txt +31 -0
  150. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/A/_CodeSignature/CodeResources +216 -0
  151. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/PDF_Handler +0 -0
  152. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/Info.plist +52 -0
  153. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MODULE_IDENTIFIER.txt +1 -0
  154. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/MiniPDFL +0 -0
  155. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/Resources/English.lproj/InfoPlist.strings +0 -0
  156. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/Resources/Info.plist +35 -0
  157. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/Versions/A/MiniPDFL +0 -0
  158. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/Versions/A/Resources/English.lproj/InfoPlist.strings +0 -0
  159. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/Versions/A/Resources/Info.plist +35 -0
  160. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/Versions/A/_CodeSignature/CodeResources +146 -0
  161. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/Versions/Current/MiniPDFL +0 -0
  162. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/Versions/Current/Resources/English.lproj/InfoPlist.strings +0 -0
  163. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/Versions/Current/Resources/Info.plist +35 -0
  164. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/MiniPDFL.framework/Versions/Current/_CodeSignature/CodeResources +146 -0
  165. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/Resources/XMPPLUGINUIDS.txt +31 -0
  166. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/macintosh/universal/PDF_Handler.xpi/Versions/Current/_CodeSignature/CodeResources +216 -0
  167. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/resource/linux/PDF_Handler.exp +11 -0
  168. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/resource/mac/PDF_Handler.exp +2 -0
  169. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/resource/mac/PDF_Handler.plist +28 -0
  170. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/resource/mac/PDF_HandlerPList.h +12 -0
  171. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/resource/win/CopyPDFL.bat +14 -0
  172. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/resource/win/PDF_Handler-32.rc +8 -0
  173. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/resource/win/PDF_Handler-64.rc +8 -0
  174. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/resource/win/PDF_Handler.def +9 -0
  175. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/windows/windows_x64/MiniPDFL.dll +0 -0
  176. data/lib/xmp_toolkit_ruby/plugins/PDF_Handler/windows/windows_x64/PDF_Handler.xpi +0 -0
  177. data/lib/xmp_toolkit_ruby/version.rb +5 -0
  178. data/lib/xmp_toolkit_ruby/xmp_file_format.rb +87 -0
  179. data/lib/xmp_toolkit_ruby/xmp_file_handler_flags.rb +49 -0
  180. data/lib/xmp_toolkit_ruby.rb +237 -0
  181. data/sig/xmp_toolkit_ruby.rbs +4 -0
  182. data/tasks/changelog.rake +29 -0
  183. metadata +357 -0
@@ -0,0 +1,445 @@
1
+ // =================================================================================================
2
+ // ADOBE SYSTEMS INCORPORATED
3
+ // Copyright 2002 Adobe Systems Incorporated
4
+ // All Rights Reserved
5
+ //
6
+ // NOTICE: Adobe permits you to use, modify, and distribute this file in accordance with the terms
7
+ // of the Adobe license agreement accompanying it.
8
+ // =================================================================================================
9
+
10
+ // ================================================================================================
11
+ /// \file TXMPUtils.incl_cpp
12
+ /// \brief The implementation of the TXMPUtils template class.
13
+
14
+ #include "XMP.hpp"
15
+ #include "client-glue/WXMP_Common.hpp"
16
+ #include "client-glue/WXMPUtils.hpp"
17
+
18
+ // =================================================================================================
19
+ // Implementation Guidelines
20
+ // =========================
21
+ //
22
+ // The implementations of the template functions are very stylized. ...
23
+ //
24
+ // =================================================================================================
25
+
26
+ XMP_MethodIntro(TXMPUtils,void)::
27
+ SetClientString ( void * clientPtr, XMP_StringPtr valuePtr, XMP_StringLen valueLen )
28
+ {
29
+ tStringObj * clientStr = (tStringObj*) clientPtr;
30
+ clientStr->assign ( valuePtr, valueLen );
31
+ }
32
+
33
+ // -------------------------------------------------------------------------------------------------
34
+
35
+ XMP_MethodIntro(TXMPUtils,void)::
36
+ ComposeArrayItemPath ( XMP_StringPtr schemaNS,
37
+ XMP_StringPtr arrayName,
38
+ XMP_Index itemIndex,
39
+ tStringObj * fullPath )
40
+ {
41
+ WrapCheckVoid ( zXMPUtils_ComposeArrayItemPath_1 ( schemaNS, arrayName, itemIndex, fullPath, SetClientString ) );
42
+ }
43
+
44
+ // -------------------------------------------------------------------------------------------------
45
+
46
+ XMP_MethodIntro(TXMPUtils,void)::
47
+ ComposeStructFieldPath ( XMP_StringPtr schemaNS,
48
+ XMP_StringPtr structName,
49
+ XMP_StringPtr fieldNS,
50
+ XMP_StringPtr fieldName,
51
+ tStringObj * fullPath )
52
+ {
53
+ WrapCheckVoid ( zXMPUtils_ComposeStructFieldPath_1 ( schemaNS, structName, fieldNS, fieldName, fullPath, SetClientString ) );
54
+ }
55
+
56
+ // -------------------------------------------------------------------------------------------------
57
+
58
+ XMP_MethodIntro(TXMPUtils,void)::
59
+ ComposeQualifierPath ( XMP_StringPtr schemaNS,
60
+ XMP_StringPtr propName,
61
+ XMP_StringPtr qualNS,
62
+ XMP_StringPtr qualName,
63
+ tStringObj * fullPath )
64
+ {
65
+ WrapCheckVoid ( zXMPUtils_ComposeQualifierPath_1 ( schemaNS, propName, qualNS, qualName, fullPath, SetClientString ) );
66
+ }
67
+
68
+ // -------------------------------------------------------------------------------------------------
69
+
70
+ XMP_MethodIntro(TXMPUtils,void)::
71
+ ComposeLangSelector ( XMP_StringPtr schemaNS,
72
+ XMP_StringPtr arrayName,
73
+ XMP_StringPtr langName,
74
+ tStringObj * fullPath )
75
+ {
76
+ WrapCheckVoid ( zXMPUtils_ComposeLangSelector_1 ( schemaNS, arrayName, langName, fullPath, SetClientString ) );
77
+ }
78
+
79
+ // -------------------------------------------------------------------------------------------------
80
+
81
+ XMP_MethodIntro(TXMPUtils,void)::
82
+ ComposeLangSelector ( XMP_StringPtr schemaNS,
83
+ XMP_StringPtr arrayName,
84
+ const tStringObj & langName,
85
+ tStringObj * fullPath )
86
+ {
87
+ TXMPUtils::ComposeLangSelector ( schemaNS, arrayName, langName.c_str(), fullPath );
88
+ }
89
+
90
+ // -------------------------------------------------------------------------------------------------
91
+
92
+ XMP_MethodIntro(TXMPUtils,void)::
93
+ ComposeFieldSelector ( XMP_StringPtr schemaNS,
94
+ XMP_StringPtr arrayName,
95
+ XMP_StringPtr fieldNS,
96
+ XMP_StringPtr fieldName,
97
+ XMP_StringPtr fieldValue,
98
+ tStringObj * fullPath )
99
+ {
100
+ WrapCheckVoid ( zXMPUtils_ComposeFieldSelector_1 ( schemaNS, arrayName, fieldNS, fieldName, fieldValue, fullPath, SetClientString ) );
101
+ }
102
+
103
+ // -------------------------------------------------------------------------------------------------
104
+
105
+ XMP_MethodIntro(TXMPUtils,void)::
106
+ ComposeFieldSelector ( XMP_StringPtr schemaNS,
107
+ XMP_StringPtr arrayName,
108
+ XMP_StringPtr fieldNS,
109
+ XMP_StringPtr fieldName,
110
+ const tStringObj & fieldValue,
111
+ tStringObj * fullPath )
112
+ {
113
+ TXMPUtils::ComposeFieldSelector ( schemaNS, arrayName, fieldNS, fieldName, fieldValue.c_str(), fullPath );
114
+ }
115
+
116
+ // -------------------------------------------------------------------------------------------------
117
+ // -------------------------------------------------------------------------------------------------
118
+
119
+ XMP_MethodIntro(TXMPUtils,void)::
120
+ ConvertFromBool ( bool binValue,
121
+ tStringObj * strValue )
122
+ {
123
+ WrapCheckVoid ( zXMPUtils_ConvertFromBool_1 ( binValue, strValue, SetClientString ) );
124
+ }
125
+
126
+ // -------------------------------------------------------------------------------------------------
127
+
128
+ XMP_MethodIntro(TXMPUtils,void)::
129
+ ConvertFromInt ( long binValue,
130
+ XMP_StringPtr format,
131
+ tStringObj * strValue )
132
+ {
133
+ #if (XMP_MacBuild || XMP_iOSBuild) & XMP_64 // This is checked because on Mac 64 bit environment, long is of 64 bit and hence gives a warning during implicit
134
+ // typecasting to XMP_Int32. Now doing it explicitly in that case. Doing the same for iOS.
135
+ WrapCheckVoid ( zXMPUtils_ConvertFromInt_1 ( (XMP_Int32)binValue, format, strValue, SetClientString ) );
136
+ #else
137
+ WrapCheckVoid ( zXMPUtils_ConvertFromInt_1 ( binValue, format, strValue, SetClientString ) );
138
+ #endif
139
+ }
140
+
141
+ // -------------------------------------------------------------------------------------------------
142
+
143
+ XMP_MethodIntro(TXMPUtils,void)::
144
+ ConvertFromInt64 ( long long binValue,
145
+ XMP_StringPtr format,
146
+ tStringObj * strValue )
147
+ {
148
+ WrapCheckVoid ( zXMPUtils_ConvertFromInt64_1 ( binValue, format, strValue, SetClientString ) );
149
+ }
150
+
151
+ // -------------------------------------------------------------------------------------------------
152
+
153
+ XMP_MethodIntro(TXMPUtils,void)::
154
+ ConvertFromFloat ( double binValue,
155
+ XMP_StringPtr format,
156
+ tStringObj * strValue )
157
+ {
158
+ WrapCheckVoid ( zXMPUtils_ConvertFromFloat_1 ( binValue, format, strValue, SetClientString ) );
159
+ }
160
+
161
+ // -------------------------------------------------------------------------------------------------
162
+
163
+ XMP_MethodIntro(TXMPUtils,void)::
164
+ ConvertFromDate ( const XMP_DateTime & binValue,
165
+ tStringObj * strValue )
166
+ {
167
+ WrapCheckVoid ( zXMPUtils_ConvertFromDate_1 ( binValue, strValue, SetClientString ) );
168
+ }
169
+
170
+ // -------------------------------------------------------------------------------------------------
171
+
172
+ XMP_MethodIntro(TXMPUtils,bool)::
173
+ ConvertToBool ( XMP_StringPtr strValue )
174
+ {
175
+ WrapCheckBool ( value, zXMPUtils_ConvertToBool_1 ( strValue ) );
176
+ return value;
177
+ }
178
+
179
+ // -------------------------------------------------------------------------------------------------
180
+
181
+ XMP_MethodIntro(TXMPUtils,bool)::
182
+ ConvertToBool ( const tStringObj & strValue )
183
+ {
184
+ return TXMPUtils::ConvertToBool ( strValue.c_str() );
185
+ }
186
+
187
+ // -------------------------------------------------------------------------------------------------
188
+
189
+ XMP_MethodIntro(TXMPUtils,long)::
190
+ ConvertToInt ( XMP_StringPtr strValue )
191
+ {
192
+ WrapCheckInt32 ( value, zXMPUtils_ConvertToInt_1 ( strValue ) );
193
+ return value;
194
+ }
195
+
196
+ // -------------------------------------------------------------------------------------------------
197
+
198
+ XMP_MethodIntro(TXMPUtils,long)::
199
+ ConvertToInt ( const tStringObj & strValue )
200
+ {
201
+ return TXMPUtils::ConvertToInt ( strValue.c_str() );
202
+ }
203
+
204
+ // -------------------------------------------------------------------------------------------------
205
+
206
+ XMP_MethodIntro(TXMPUtils,long long)::
207
+ ConvertToInt64 ( XMP_StringPtr strValue )
208
+ {
209
+ WrapCheckInt64 ( value, zXMPUtils_ConvertToInt64_1 ( strValue ) );
210
+ return value;
211
+ }
212
+
213
+ // -------------------------------------------------------------------------------------------------
214
+
215
+ XMP_MethodIntro(TXMPUtils,long long)::
216
+ ConvertToInt64 ( const tStringObj & strValue )
217
+ {
218
+ return TXMPUtils::ConvertToInt64 ( strValue.c_str() );
219
+ }
220
+
221
+ // -------------------------------------------------------------------------------------------------
222
+
223
+ XMP_MethodIntro(TXMPUtils,double)::
224
+ ConvertToFloat ( XMP_StringPtr strValue )
225
+ {
226
+ WrapCheckFloat ( value, zXMPUtils_ConvertToFloat_1 ( strValue ) );
227
+ return value;
228
+ }
229
+
230
+ // -------------------------------------------------------------------------------------------------
231
+
232
+ XMP_MethodIntro(TXMPUtils,double)::
233
+ ConvertToFloat ( const tStringObj & strValue )
234
+ {
235
+ return TXMPUtils::ConvertToFloat ( strValue.c_str() );
236
+ }
237
+
238
+ // -------------------------------------------------------------------------------------------------
239
+
240
+ XMP_MethodIntro(TXMPUtils,void)::
241
+ ConvertToDate ( XMP_StringPtr strValue,
242
+ XMP_DateTime * binValue )
243
+ {
244
+ WrapCheckVoid ( zXMPUtils_ConvertToDate_1 ( strValue, binValue ) );
245
+ }
246
+
247
+ // -------------------------------------------------------------------------------------------------
248
+
249
+ XMP_MethodIntro(TXMPUtils,void)::
250
+ ConvertToDate ( const tStringObj & strValue,
251
+ XMP_DateTime * binValue )
252
+ {
253
+ TXMPUtils::ConvertToDate ( strValue.c_str(), binValue );
254
+ }
255
+
256
+ // -------------------------------------------------------------------------------------------------
257
+ // -------------------------------------------------------------------------------------------------
258
+
259
+ XMP_MethodIntro(TXMPUtils,void)::
260
+ CurrentDateTime ( XMP_DateTime * time )
261
+ {
262
+ WrapCheckVoid ( zXMPUtils_CurrentDateTime_1 ( time ) );
263
+ }
264
+
265
+ // -------------------------------------------------------------------------------------------------
266
+
267
+ XMP_MethodIntro(TXMPUtils,void)::
268
+ SetTimeZone ( XMP_DateTime * time )
269
+ {
270
+ WrapCheckVoid ( zXMPUtils_SetTimeZone_1 ( time ) );
271
+ }
272
+
273
+ // -------------------------------------------------------------------------------------------------
274
+
275
+ XMP_MethodIntro(TXMPUtils,void)::
276
+ ConvertToUTCTime ( XMP_DateTime * time )
277
+ {
278
+ WrapCheckVoid ( zXMPUtils_ConvertToUTCTime_1 ( time ) );
279
+ }
280
+
281
+ // -------------------------------------------------------------------------------------------------
282
+
283
+ XMP_MethodIntro(TXMPUtils,void)::
284
+ ConvertToLocalTime ( XMP_DateTime * time )
285
+ {
286
+ WrapCheckVoid ( zXMPUtils_ConvertToLocalTime_1 ( time ) );
287
+ }
288
+
289
+ // -------------------------------------------------------------------------------------------------
290
+
291
+ XMP_MethodIntro(TXMPUtils,int)::
292
+ CompareDateTime ( const XMP_DateTime & left,
293
+ const XMP_DateTime & right )
294
+ {
295
+ WrapCheckInt32 ( result, zXMPUtils_CompareDateTime_1 ( left, right ) );
296
+ return result;
297
+ }
298
+
299
+ // -------------------------------------------------------------------------------------------------
300
+ // -------------------------------------------------------------------------------------------------
301
+
302
+ XMP_MethodIntro(TXMPUtils,void)::
303
+ EncodeToBase64 ( XMP_StringPtr rawStr,
304
+ XMP_StringLen rawLen,
305
+ tStringObj * encodedStr )
306
+ {
307
+ WrapCheckVoid ( zXMPUtils_EncodeToBase64_1 ( rawStr, rawLen, encodedStr, SetClientString ) );
308
+ }
309
+
310
+ // -------------------------------------------------------------------------------------------------
311
+
312
+ XMP_MethodIntro(TXMPUtils,void)::
313
+ EncodeToBase64 ( const tStringObj & rawStr,
314
+ tStringObj * encodedStr )
315
+ {
316
+ TXMPUtils::EncodeToBase64 ( rawStr.c_str(), (XMP_StringLen)rawStr.size(), encodedStr );
317
+ }
318
+
319
+ // -------------------------------------------------------------------------------------------------
320
+
321
+ XMP_MethodIntro(TXMPUtils,void)::
322
+ DecodeFromBase64 ( XMP_StringPtr encodedStr,
323
+ XMP_StringLen encodedLen,
324
+ tStringObj * rawStr )
325
+ {
326
+ WrapCheckVoid ( zXMPUtils_DecodeFromBase64_1 ( encodedStr, encodedLen, rawStr, SetClientString ) );
327
+ }
328
+
329
+ // -------------------------------------------------------------------------------------------------
330
+
331
+ XMP_MethodIntro(TXMPUtils,void)::
332
+ DecodeFromBase64 ( const tStringObj & encodedStr,
333
+ tStringObj * rawStr )
334
+ {
335
+ TXMPUtils::DecodeFromBase64 ( encodedStr.c_str(), (XMP_StringLen)encodedStr.size(), rawStr );
336
+ }
337
+
338
+ // -------------------------------------------------------------------------------------------------
339
+ // -------------------------------------------------------------------------------------------------
340
+
341
+ // -------------------------------------------------------------------------------------------------
342
+
343
+ XMP_MethodIntro(TXMPUtils,void)::
344
+ PackageForJPEG ( const TXMPMeta<tStringObj> & xmpObj,
345
+ tStringObj * standardXMP,
346
+ tStringObj * extendedXMP,
347
+ tStringObj * extendedDigest )
348
+ {
349
+ WrapCheckVoid ( zXMPUtils_PackageForJPEG_1 ( xmpObj.GetInternalRef(), standardXMP, extendedXMP, extendedDigest, SetClientString ) );
350
+ }
351
+
352
+ // -------------------------------------------------------------------------------------------------
353
+
354
+ XMP_MethodIntro(TXMPUtils,void)::
355
+ MergeFromJPEG ( TXMPMeta<tStringObj> * fullXMP,
356
+ const TXMPMeta<tStringObj> & extendedXMP )
357
+ {
358
+ WrapCheckVoid ( zXMPUtils_MergeFromJPEG_1 ( fullXMP->GetInternalRef(), extendedXMP.GetInternalRef() ) );
359
+ }
360
+
361
+ // -------------------------------------------------------------------------------------------------
362
+ // -------------------------------------------------------------------------------------------------
363
+
364
+ XMP_MethodIntro(TXMPUtils,void)::
365
+ CatenateArrayItems ( const TXMPMeta<tStringObj> & xmpObj,
366
+ XMP_StringPtr schemaNS,
367
+ XMP_StringPtr arrayName,
368
+ XMP_StringPtr separator,
369
+ XMP_StringPtr quotes,
370
+ XMP_OptionBits options,
371
+ tStringObj * catedStr )
372
+ {
373
+ WrapCheckVoid ( zXMPUtils_CatenateArrayItems_1 ( xmpObj.GetInternalRef(), schemaNS, arrayName,
374
+ separator, quotes, options, catedStr, SetClientString ) );
375
+ }
376
+
377
+ // -------------------------------------------------------------------------------------------------
378
+
379
+ XMP_MethodIntro(TXMPUtils,void)::
380
+ SeparateArrayItems ( TXMPMeta<tStringObj> * xmpObj,
381
+ XMP_StringPtr schemaNS,
382
+ XMP_StringPtr arrayName,
383
+ XMP_OptionBits options,
384
+ XMP_StringPtr catedStr )
385
+ {
386
+ if ( xmpObj == 0 ) throw XMP_Error ( kXMPErr_BadParam, "Null output SXMPMeta pointer" );
387
+ WrapCheckVoid ( zXMPUtils_SeparateArrayItems_1 ( xmpObj->GetInternalRef(), schemaNS, arrayName, options, catedStr ) );
388
+ }
389
+
390
+ // -------------------------------------------------------------------------------------------------
391
+
392
+ XMP_MethodIntro(TXMPUtils,void)::
393
+ SeparateArrayItems ( TXMPMeta<tStringObj> * xmpObj,
394
+ XMP_StringPtr schemaNS,
395
+ XMP_StringPtr arrayName,
396
+ XMP_OptionBits options,
397
+ const tStringObj & catedStr )
398
+ {
399
+ TXMPUtils::SeparateArrayItems ( xmpObj, schemaNS, arrayName, options, catedStr.c_str() );
400
+ }
401
+
402
+ // -------------------------------------------------------------------------------------------------
403
+
404
+ XMP_MethodIntro(TXMPUtils,void)::
405
+ ApplyTemplate ( TXMPMeta<tStringObj> * workingXMP,
406
+ const TXMPMeta<tStringObj> & templateXMP,
407
+ XMP_OptionBits actions )
408
+ {
409
+ if ( workingXMP == 0 ) throw XMP_Error ( kXMPErr_BadParam, "Null working SXMPMeta pointer" );
410
+ WrapCheckVoid ( zXMPUtils_ApplyTemplate_1 ( workingXMP->GetInternalRef(), templateXMP.GetInternalRef(), actions ) );
411
+ }
412
+
413
+ // -------------------------------------------------------------------------------------------------
414
+
415
+ XMP_MethodIntro(TXMPUtils,void)::
416
+ RemoveProperties ( TXMPMeta<tStringObj> * xmpObj,
417
+ XMP_StringPtr schemaNS /* = 0 */,
418
+ XMP_StringPtr propName /* = 0 */,
419
+ XMP_OptionBits options /* = 0 */ )
420
+ {
421
+ if ( xmpObj == 0 ) throw XMP_Error ( kXMPErr_BadParam, "Null output SXMPMeta pointer" );
422
+ WrapCheckVoid ( zXMPUtils_RemoveProperties_1 ( xmpObj->GetInternalRef(), schemaNS, propName, options ) );
423
+ }
424
+
425
+ // -------------------------------------------------------------------------------------------------
426
+
427
+ // -------------------------------------------------------------------------------------------------
428
+
429
+ XMP_MethodIntro(TXMPUtils,void)::
430
+ DuplicateSubtree ( const TXMPMeta<tStringObj> & source,
431
+ TXMPMeta<tStringObj> * dest,
432
+ XMP_StringPtr sourceNS,
433
+ XMP_StringPtr sourceRoot,
434
+ XMP_StringPtr destNS /*= 0 */,
435
+ XMP_StringPtr destRoot /* = 0 */,
436
+ XMP_OptionBits options /* = 0 */ )
437
+ {
438
+ if ( dest == 0 ) throw XMP_Error ( kXMPErr_BadParam, "Null output SXMPMeta pointer" );
439
+ WrapCheckVoid ( zXMPUtils_DuplicateSubtree_1 ( source.GetInternalRef(), dest->GetInternalRef(),
440
+ sourceNS, sourceRoot, destNS, destRoot, options ) );
441
+ }
442
+
443
+ // =================================================================================================
444
+
445
+ // =================================================================================================