cesium 0.15.0 → 0.16.0

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 (596) hide show
  1. data/app/assets/javascripts/Cesium.js +7 -7
  2. data/app/assets/javascripts/Core/BoundingRectangle.js +1 -1
  3. data/app/assets/javascripts/Core/BoundingSphere.js +12 -5
  4. data/app/assets/javascripts/Core/BoxTessellator.js +11 -8
  5. data/app/assets/javascripts/Core/CatmullRomSpline.js +23 -21
  6. data/app/assets/javascripts/Core/Clock.js +1 -1
  7. data/app/assets/javascripts/Core/Color.js +51 -0
  8. data/app/assets/javascripts/Core/CubeMapEllipsoidTessellator.js +3 -1
  9. data/app/assets/javascripts/Core/EarthOrientationParameters.js +1 -1
  10. data/app/assets/javascripts/Core/EllipsoidalOccluder.js +15 -12
  11. data/app/assets/javascripts/Core/Extent.js +37 -0
  12. data/app/assets/javascripts/Core/ExtentTessellator.js +33 -25
  13. data/app/assets/javascripts/Core/HermitePolynomialApproximation.js +18 -19
  14. data/app/assets/javascripts/Core/HermiteSpline.js +49 -49
  15. data/app/assets/javascripts/Core/Iau2006XysData.js +4 -5
  16. data/app/assets/javascripts/Core/LagrangePolynomialApproximation.js +10 -20
  17. data/app/assets/javascripts/Core/LinearApproximation.js +19 -23
  18. data/app/assets/javascripts/Core/Math.js +15 -3
  19. data/app/assets/javascripts/Core/Matrix4.js +186 -2
  20. data/app/assets/javascripts/Core/MeshFilters.js +13 -13
  21. data/app/assets/javascripts/Core/OrientationInterpolator.js +19 -19
  22. data/app/assets/javascripts/Core/PlaneTessellator.js +8 -6
  23. data/app/assets/javascripts/Core/PolygonPipeline.js +21 -21
  24. data/app/assets/javascripts/Core/PolylinePipeline.js +17 -25
  25. data/app/assets/javascripts/Core/ScreenSpaceEventHandler.js +187 -185
  26. data/app/assets/javascripts/Core/Shapes.js +8 -4
  27. data/app/assets/javascripts/Core/Simon1994PlanetaryPositions.js +521 -0
  28. data/app/assets/javascripts/Core/Spherical.js +36 -9
  29. data/app/assets/javascripts/Core/TaskProcessor.js +42 -5
  30. data/app/assets/javascripts/Core/TimeIntervalCollection.js +5 -5
  31. data/app/assets/javascripts/Core/Tipsify.js +21 -16
  32. data/app/assets/javascripts/Core/Transforms.js +11 -11
  33. data/app/assets/javascripts/Core/TridiagonalSystemSolver.js +4 -4
  34. data/app/assets/javascripts/Core/clone.js +25 -8
  35. data/app/assets/javascripts/Core/defaultValue.js +10 -1
  36. data/app/assets/javascripts/Core/isCrossOriginUrl.js +32 -0
  37. data/app/assets/javascripts/Core/jsonp.js +2 -2
  38. data/app/assets/javascripts/Core/loadImage.js +13 -6
  39. data/app/assets/javascripts/Core/loadJson.js +4 -1
  40. data/app/assets/javascripts/Core/pointInsideTriangle2D.js +1 -1
  41. data/app/assets/javascripts/Core/writeTextToCanvas.js +1 -3
  42. data/app/assets/javascripts/DynamicScene/CzmlBoolean.js +7 -4
  43. data/app/assets/javascripts/DynamicScene/CzmlCartesian2.js +1 -1
  44. data/app/assets/javascripts/DynamicScene/CzmlCartesian3.js +1 -1
  45. data/app/assets/javascripts/DynamicScene/CzmlColor.js +1 -1
  46. data/app/assets/javascripts/DynamicScene/CzmlHorizontalOrigin.js +6 -5
  47. data/app/assets/javascripts/DynamicScene/CzmlImage.js +8 -3
  48. data/app/assets/javascripts/DynamicScene/CzmlLabelStyle.js +6 -5
  49. data/app/assets/javascripts/DynamicScene/CzmlNumber.js +6 -4
  50. data/app/assets/javascripts/DynamicScene/CzmlPosition.js +166 -0
  51. data/app/assets/javascripts/DynamicScene/CzmlString.js +6 -4
  52. data/app/assets/javascripts/DynamicScene/CzmlUnitCartesian3.js +1 -1
  53. data/app/assets/javascripts/DynamicScene/CzmlUnitQuaternion.js +1 -1
  54. data/app/assets/javascripts/DynamicScene/CzmlUnitSpherical.js +1 -1
  55. data/app/assets/javascripts/DynamicScene/CzmlVerticalOrigin.js +6 -5
  56. data/app/assets/javascripts/DynamicScene/DynamicGridMaterial.js +202 -0
  57. data/app/assets/javascripts/DynamicScene/DynamicMaterialProperty.js +5 -3
  58. data/app/assets/javascripts/DynamicScene/DynamicObject.js +1 -2
  59. data/app/assets/javascripts/DynamicScene/DynamicPathVisualizer.js +19 -15
  60. data/app/assets/javascripts/DynamicScene/DynamicPointVisualizer.js +12 -10
  61. data/app/assets/javascripts/DynamicScene/DynamicPolylineVisualizer.js +17 -10
  62. data/app/assets/javascripts/DynamicScene/DynamicPositionProperty.js +39 -90
  63. data/app/assets/javascripts/DynamicScene/DynamicProperty.js +19 -6
  64. data/app/assets/javascripts/DynamicScene/ReferenceProperty.js +6 -4
  65. data/app/assets/javascripts/DynamicScene/VisualizerCollection.js +10 -11
  66. data/app/assets/javascripts/Renderer/ClearCommand.js +60 -9
  67. data/app/assets/javascripts/Renderer/Context.js +234 -575
  68. data/app/assets/javascripts/Renderer/DrawCommand.js +15 -3
  69. data/app/assets/javascripts/Renderer/PassState.js +55 -0
  70. data/app/assets/javascripts/Renderer/PickFramebuffer.js +47 -77
  71. data/app/assets/javascripts/Renderer/RenderState.js +541 -0
  72. data/app/assets/javascripts/Renderer/ShaderCache.js +34 -1
  73. data/app/assets/javascripts/Renderer/ShaderProgram.js +112 -6
  74. data/app/assets/javascripts/Renderer/TextureAtlas.js +63 -67
  75. data/app/assets/javascripts/Renderer/UniformState.js +59 -30
  76. data/app/assets/javascripts/Renderer/VertexArray.js +9 -7
  77. data/app/assets/javascripts/Renderer/VertexArrayFacade.js +28 -27
  78. data/app/assets/javascripts/Renderer/createPickFragmentShaderSource.js +53 -0
  79. data/app/assets/javascripts/Renderer/loadCubeMap.js +10 -11
  80. data/app/assets/javascripts/Scene/AnimationCollection.js +48 -44
  81. data/app/assets/javascripts/Scene/Billboard.js +8 -2
  82. data/app/assets/javascripts/Scene/BillboardCollection.js +66 -62
  83. data/app/assets/javascripts/Scene/Camera.js +3 -0
  84. data/app/assets/javascripts/Scene/CameraController.js +3 -3
  85. data/app/assets/javascripts/Scene/CameraFlightPath.js +9 -6
  86. data/app/assets/javascripts/Scene/CentralBody.js +47 -65
  87. data/app/assets/javascripts/Scene/CentralBodySurface.js +9 -6
  88. data/app/assets/javascripts/Scene/CentralBodySurfaceShaderSet.js +5 -9
  89. data/app/assets/javascripts/Scene/CompositePrimitive.js +8 -8
  90. data/app/assets/javascripts/Scene/CustomSensorVolume.js +66 -55
  91. data/app/assets/javascripts/Scene/EllipsoidPrimitive.js +26 -27
  92. data/app/assets/javascripts/Scene/FrameState.js +15 -4
  93. data/app/assets/javascripts/Scene/GridImageryProvider.js +266 -0
  94. data/app/assets/javascripts/Scene/ImageryLayer.js +44 -19
  95. data/app/assets/javascripts/Scene/ImageryLayerCollection.js +3 -0
  96. data/app/assets/javascripts/Scene/ImageryProvider.js +3 -0
  97. data/app/assets/javascripts/Scene/Label.js +4 -4
  98. data/app/assets/javascripts/Scene/LabelCollection.js +2 -9
  99. data/app/assets/javascripts/Scene/Material.js +97 -8
  100. data/app/assets/javascripts/Scene/OrthographicFrustum.js +2 -2
  101. data/app/assets/javascripts/Scene/PerformanceDisplay.js +17 -10
  102. data/app/assets/javascripts/Scene/PerspectiveOffCenterFrustum.js +2 -2
  103. data/app/assets/javascripts/Scene/Polygon.js +30 -56
  104. data/app/assets/javascripts/Scene/Polyline.js +93 -227
  105. data/app/assets/javascripts/Scene/PolylineCollection.js +685 -757
  106. data/app/assets/javascripts/Scene/Projections.js +2 -2
  107. data/app/assets/javascripts/Scene/RectangularPyramidSensorVolume.js +21 -16
  108. data/app/assets/javascripts/Scene/Scene.js +40 -32
  109. data/app/assets/javascripts/Scene/SceneTransitioner.js +8 -56
  110. data/app/assets/javascripts/Scene/SensorVolumeCollection.js +6 -20
  111. data/app/assets/javascripts/Scene/SkyAtmosphere.js +0 -11
  112. data/app/assets/javascripts/Scene/SkyBox.js +0 -11
  113. data/app/assets/javascripts/Scene/VRTheWorldTerrainProvider.js +3 -2
  114. data/app/assets/javascripts/Scene/ViewportQuad.js +8 -8
  115. data/app/assets/javascripts/Shaders/BillboardCollectionVS.glsl +0 -2
  116. data/app/assets/javascripts/Shaders/BillboardCollectionVS.js +0 -2
  117. data/app/assets/javascripts/Shaders/BuiltinFunctions.glsl +517 -3
  118. data/app/assets/javascripts/Shaders/BuiltinFunctions.js +535 -4
  119. data/app/assets/javascripts/Shaders/CentralBodyFS.glsl +11 -24
  120. data/app/assets/javascripts/Shaders/CentralBodyFS.js +11 -24
  121. data/app/assets/javascripts/Shaders/CentralBodyVS.glsl +1 -3
  122. data/app/assets/javascripts/Shaders/CentralBodyVS.js +1 -3
  123. data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.glsl +14 -33
  124. data/app/assets/javascripts/Shaders/CustomSensorVolumeFS.js +14 -33
  125. data/app/assets/javascripts/Shaders/EllipsoidFS.glsl +0 -1
  126. data/app/assets/javascripts/Shaders/EllipsoidFS.js +0 -1
  127. data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.glsl +1 -11
  128. data/app/assets/javascripts/Shaders/Materials/CheckerboardMaterial.js +1 -11
  129. data/app/assets/javascripts/Shaders/Materials/FadeMaterial.glsl +36 -0
  130. data/app/assets/javascripts/Shaders/Materials/FadeMaterial.js +42 -0
  131. data/app/assets/javascripts/Shaders/Materials/GridMaterial.glsl +9 -1
  132. data/app/assets/javascripts/Shaders/Materials/GridMaterial.js +9 -1
  133. data/app/assets/javascripts/Shaders/Materials/PolylineArrowMaterial.glsl +60 -0
  134. data/app/assets/javascripts/Shaders/Materials/PolylineArrowMaterial.js +66 -0
  135. data/app/assets/javascripts/Shaders/Materials/PolylineGlowMaterial.glsl +17 -0
  136. data/app/assets/javascripts/Shaders/Materials/PolylineGlowMaterial.js +23 -0
  137. data/app/assets/javascripts/Shaders/Materials/PolylineOutlineMaterial.glsl +28 -0
  138. data/app/assets/javascripts/Shaders/Materials/PolylineOutlineMaterial.js +34 -0
  139. data/app/assets/javascripts/Shaders/Materials/StripeMaterial.glsl +4 -10
  140. data/app/assets/javascripts/Shaders/Materials/StripeMaterial.js +4 -10
  141. data/app/assets/javascripts/Shaders/PolygonFS.glsl +0 -3
  142. data/app/assets/javascripts/Shaders/PolygonFS.js +1 -4
  143. data/app/assets/javascripts/Shaders/PolygonVS.glsl +3 -4
  144. data/app/assets/javascripts/Shaders/PolygonVS.js +3 -4
  145. data/app/assets/javascripts/Shaders/PolylineFS.glsl +9 -2
  146. data/app/assets/javascripts/Shaders/PolylineFS.js +9 -2
  147. data/app/assets/javascripts/Shaders/PolylineVS.glsl +131 -14
  148. data/app/assets/javascripts/Shaders/PolylineVS.js +131 -14
  149. data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.glsl +1 -19
  150. data/app/assets/javascripts/Shaders/ReprojectWebMercatorFS.js +1 -19
  151. data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.glsl +9 -1
  152. data/app/assets/javascripts/Shaders/ReprojectWebMercatorVS.js +9 -1
  153. data/app/assets/javascripts/Shaders/SkyAtmosphereFS.glsl +1 -3
  154. data/app/assets/javascripts/Shaders/SkyAtmosphereFS.js +1 -3
  155. data/app/assets/javascripts/Shaders/SkyBoxFS.glsl +1 -2
  156. data/app/assets/javascripts/Shaders/SkyBoxFS.js +1 -2
  157. data/app/assets/javascripts/Widgets/Animation/Animation.js +8 -5
  158. data/app/assets/javascripts/Widgets/Dojo/CesiumViewerWidget.js +19 -1
  159. data/app/assets/javascripts/Widgets/Timeline/Timeline.js +19 -2
  160. data/lib/cesium/version.rb +1 -1
  161. data/test/dummy/app/assets/javascripts/application.js.coffee +10 -10
  162. data/test/dummy/log/development.log +28285 -0
  163. data/test/dummy/tmp/cache/assets/BAF/370/sprockets%2F799a74598087f7719313562f44828061 +0 -0
  164. data/test/dummy/tmp/cache/assets/BF8/BC0/sprockets%2F1982805b53487d15554f20955019b8c4 +0 -0
  165. data/test/dummy/tmp/cache/assets/C12/030/sprockets%2Fbd84b00d783150a219825433401a7946 +0 -0
  166. data/test/dummy/tmp/cache/assets/C1F/BE0/sprockets%2F9ff195723d3a539023420682a372f561 +0 -0
  167. data/test/dummy/tmp/cache/assets/C23/060/sprockets%2F0844038b70e644bef4539389305680a3 +0 -0
  168. data/test/dummy/tmp/cache/assets/C27/DA0/sprockets%2Fe49200d07769d24f54f721d890142818 +0 -0
  169. data/test/dummy/tmp/cache/assets/C37/EB0/sprockets%2F410166e528f769c35999d061f6552d57 +0 -0
  170. data/test/dummy/tmp/cache/assets/C38/870/sprockets%2F3c244a5393086f3b95954f4675f29458 +0 -0
  171. data/test/dummy/tmp/cache/assets/C44/870/sprockets%2Fc7607e52811e723312c83d096c611c32 +0 -0
  172. data/test/dummy/tmp/cache/assets/C46/770/sprockets%2F9b6c82d0454ab5ba8727173860060324 +0 -0
  173. data/test/dummy/tmp/cache/assets/C46/E60/sprockets%2F151028e967f13248ca6121c9407242cf +0 -0
  174. data/test/dummy/tmp/cache/assets/C48/360/sprockets%2Fc966013651008025255f5b53b1d63f9e +0 -0
  175. data/test/dummy/tmp/cache/assets/C49/6B0/sprockets%2Ff15d3a84028c48073d820c51575157a4 +0 -0
  176. data/test/dummy/tmp/cache/assets/C4A/020/sprockets%2F162d504e77459f0304b964139300cfe3 +0 -0
  177. data/test/dummy/tmp/cache/assets/C4A/2B0/sprockets%2F821c1d08482a9b936b661a56444551b3 +0 -0
  178. data/test/dummy/tmp/cache/assets/C4F/630/sprockets%2F8935f51ad832c341c838751031a827f2 +0 -0
  179. data/test/dummy/tmp/cache/assets/C51/170/sprockets%2F7121148c53e447e867b886592e11ad00 +0 -0
  180. data/test/dummy/tmp/cache/assets/C53/040/sprockets%2F52411d26c4863636c7ae5b5090690f94 +0 -0
  181. data/test/dummy/tmp/cache/assets/C57/D10/sprockets%2F784e21cb5b634a598629115ef4685213 +0 -0
  182. data/test/dummy/tmp/cache/assets/C59/810/sprockets%2Fc37183f61d9511d324983656cd9375a1 +0 -0
  183. data/test/dummy/tmp/cache/assets/C61/2F0/sprockets%2Fe7f511982b4799474ab391f714d39630 +0 -0
  184. data/test/dummy/tmp/cache/assets/C64/730/sprockets%2F78fd706ba991f21a399070866616c297 +0 -0
  185. data/test/dummy/tmp/cache/assets/C65/0E0/sprockets%2F8303e4555c14f5f62cd2979665f50578 +0 -0
  186. data/test/dummy/tmp/cache/assets/C6C/C90/sprockets%2Fad7947b2492467a62388859219a92de9 +0 -0
  187. data/test/dummy/tmp/cache/assets/C70/900/sprockets%2F8dc34820f1167ed79c121111a0696c03 +0 -0
  188. data/test/dummy/tmp/cache/assets/C72/450/sprockets%2F12725ceae78656537003a1240f640ed4 +0 -0
  189. data/test/dummy/tmp/cache/assets/C73/0F0/sprockets%2F8a6a50d9b866140c720b6a48307c4116 +0 -0
  190. data/test/dummy/tmp/cache/assets/C75/F50/sprockets%2F52991c5c131fb0049279124ef17047ba +0 -0
  191. data/test/dummy/tmp/cache/assets/C76/F10/sprockets%2F536e031c5d9a257b602d38f8711480a2 +0 -0
  192. data/test/dummy/tmp/cache/assets/C7E/EA0/sprockets%2F2504a119ab66f79d8d296032e957a023 +0 -0
  193. data/test/dummy/tmp/cache/assets/C7F/860/sprockets%2F7646acf5464f211440d12d09847e7c43 +0 -0
  194. data/test/dummy/tmp/cache/assets/C80/150/sprockets%2F0d3881005b0646df783d5c24683d34f5 +0 -0
  195. data/test/dummy/tmp/cache/assets/C80/780/sprockets%2F49930c35001a30c38745b89a6a86cf74 +0 -0
  196. data/test/dummy/tmp/cache/assets/C82/060/sprockets%2Fb043f48276a50489714f9ec04525e26a +0 -0
  197. data/test/dummy/tmp/cache/assets/C82/580/sprockets%2F8118f4526088ba8fd441f20317475d6b +0 -0
  198. data/test/dummy/tmp/cache/assets/C82/AA0/sprockets%2Fd83006c52345d7fe51216f1e577a8185 +0 -0
  199. data/test/dummy/tmp/cache/assets/C83/A50/sprockets%2F26b151f7490286ff7059ff9a411e1027 +0 -0
  200. data/test/dummy/tmp/cache/assets/C84/E00/sprockets%2F49d13d786c17ba7650b374646455a6b3 +0 -0
  201. data/test/dummy/tmp/cache/assets/C85/310/sprockets%2Fc638d86c720815e5b635e0a3646e2186 +0 -0
  202. data/test/dummy/tmp/cache/assets/C87/1B0/sprockets%2F58524f16545fa54ea39c3c1270d06799 +0 -0
  203. data/test/dummy/tmp/cache/assets/C88/960/sprockets%2F50655bc2c86c7c3007756af818375e64 +0 -0
  204. data/test/dummy/tmp/cache/assets/C89/9E0/sprockets%2Fbc5d891273e7d61e56762000337868bf +0 -0
  205. data/test/dummy/tmp/cache/assets/C8A/680/sprockets%2F401d94c3b6643cb7764590d5765197ea +0 -0
  206. data/test/dummy/tmp/cache/assets/C8B/0F0/sprockets%2F3317c35ce7597681091ac91985d08bb5 +0 -0
  207. data/test/dummy/tmp/cache/assets/C8B/A30/sprockets%2Fe20153c26552232703d0f4a5a60b10ed +0 -0
  208. data/test/dummy/tmp/cache/assets/C8D/FC0/sprockets%2Fab1b1b654d968822069892e844f5244f +0 -0
  209. data/test/dummy/tmp/cache/assets/C8E/1A0/sprockets%2F7937090f77385164f68c0ee252b26be5 +0 -0
  210. data/test/dummy/tmp/cache/assets/C8E/1B0/sprockets%2F3309cd849788a2b736f12369ad4e4851 +0 -0
  211. data/test/dummy/tmp/cache/assets/C8E/D50/sprockets%2F687d2438d13763a733287fc4a2e5f746 +0 -0
  212. data/test/dummy/tmp/cache/assets/C8E/E40/sprockets%2F96aaf9af5e7906347880902610773bc5 +0 -0
  213. data/test/dummy/tmp/cache/assets/C8F/370/sprockets%2Ff794170ec844d49b57216a088c0297d7 +0 -0
  214. data/test/dummy/tmp/cache/assets/C91/F00/sprockets%2F0f611f4f95811990472ff1b6f95383d5 +0 -0
  215. data/test/dummy/tmp/cache/assets/C98/D30/sprockets%2F3f2411651caa9b4fd0833085b001f490 +0 -0
  216. data/test/dummy/tmp/cache/assets/CA9/5A0/sprockets%2F8282351dd11504a68cbc8500b7786cf2 +0 -0
  217. data/test/dummy/tmp/cache/assets/CA9/E20/sprockets%2F1ca84c82be52603a0c947256a38a0598 +0 -0
  218. data/test/dummy/tmp/cache/assets/CAA/3C0/sprockets%2F75ce813900f222ce7892711f61db04d3 +0 -0
  219. data/test/dummy/tmp/cache/assets/CAA/400/sprockets%2F5c330e413aa8e6769050215b5366c7ef +0 -0
  220. data/test/dummy/tmp/cache/assets/CAA/A60/sprockets%2F76b467bc7a2344e208653c4261f8ab15 +0 -0
  221. data/test/dummy/tmp/cache/assets/CAA/D90/sprockets%2Fd477a5c2046351a0c462bb945e3954e5 +0 -0
  222. data/test/dummy/tmp/cache/assets/CAB/670/sprockets%2F678e67cae28828b42b010381be1f1247 +0 -0
  223. data/test/dummy/tmp/cache/assets/CAC/000/sprockets%2F39720f0080e70a954d9956acd571d0b2 +0 -0
  224. data/test/dummy/tmp/cache/assets/CAC/220/sprockets%2Fe9d921c5251a11d0a6296974975dbb20 +0 -0
  225. data/test/dummy/tmp/cache/assets/CAD/B20/sprockets%2F4c087829240d4b69e0a47e39bb8124d0 +0 -0
  226. data/test/dummy/tmp/cache/assets/CAD/CF0/sprockets%2F25811882cd57a31606348eb7b16f4f0d +0 -0
  227. data/test/dummy/tmp/cache/assets/CAE/0D0/sprockets%2F02345f5b06f3a25b588ed66b8e167034 +0 -0
  228. data/test/dummy/tmp/cache/assets/CAF/AD0/sprockets%2Fec228a94364d0d686876d02550ed15c1 +0 -0
  229. data/test/dummy/tmp/cache/assets/CB4/D20/sprockets%2F94c251de5c21293f227709479c4f32be +0 -0
  230. data/test/dummy/tmp/cache/assets/CB5/4C0/sprockets%2F446522846ac4ed6619268b3e00fd497a +0 -0
  231. data/test/dummy/tmp/cache/assets/CB7/FA0/sprockets%2F62d364e38ba9b500f8b1633367f782b9 +0 -0
  232. data/test/dummy/tmp/cache/assets/CB8/180/sprockets%2Fe66eae8997e04c4bf70531e166511662 +0 -0
  233. data/test/dummy/tmp/cache/assets/CB8/E20/sprockets%2Fcb0a5df9573576546972b95a14d8f112 +0 -0
  234. data/test/dummy/tmp/cache/assets/CB8/EA0/sprockets%2F9e63d365e2159c725d111698cc04a7e7 +0 -0
  235. data/test/dummy/tmp/cache/assets/CB9/680/sprockets%2F9bad6dc04875e04891351521b9795f5a +0 -0
  236. data/test/dummy/tmp/cache/assets/CBA/250/sprockets%2F39bb3860405888c9f3b4b35c738b940c +0 -0
  237. data/test/dummy/tmp/cache/assets/CBB/E80/sprockets%2F43b17645e39f018bc195bc9828f4b357 +0 -0
  238. data/test/dummy/tmp/cache/assets/CBC/6C0/sprockets%2F6f494cff47ee245d30168217542c66d6 +0 -0
  239. data/test/dummy/tmp/cache/assets/CBE/6B0/sprockets%2F285b1ec717d1c4c725758951c8785b2f +0 -0
  240. data/test/dummy/tmp/cache/assets/CBE/F20/sprockets%2F7610efc00f29935606275944978fbabf +0 -0
  241. data/test/dummy/tmp/cache/assets/CBF/3A0/sprockets%2Fc7b6a2891626c77607ea2881dc84d475 +0 -0
  242. data/test/dummy/tmp/cache/assets/CBF/8B0/sprockets%2F5c98534d57c1e7f7d2926173d27e4d14 +0 -0
  243. data/test/dummy/tmp/cache/assets/CC0/E60/sprockets%2F9731b0739ec7356b2e484cb427d6955f +0 -0
  244. data/test/dummy/tmp/cache/assets/CC1/600/sprockets%2F322629f082c9e743f47a32edd58874b8 +0 -0
  245. data/test/dummy/tmp/cache/assets/CC4/950/sprockets%2F697670d712a9a24f564f9e62b5ed1389 +0 -0
  246. data/test/dummy/tmp/cache/assets/CC4/B10/sprockets%2F55b1a4137e59cad5520e1f012eb29021 +0 -0
  247. data/test/dummy/tmp/cache/assets/CC4/B80/sprockets%2F5b090557c9468f93cc1ab77898ba2629 +0 -0
  248. data/test/dummy/tmp/cache/assets/CC7/0B0/sprockets%2Fa26009e31f9e68672f4fc7f873909a64 +0 -0
  249. data/test/dummy/tmp/cache/assets/CC9/D20/sprockets%2F372172a3ef18b8cac40a5c410f748021 +0 -0
  250. data/test/dummy/tmp/cache/assets/CCD/9B0/sprockets%2F0b3845e705c1a2c20c80b56c9c8a2246 +0 -0
  251. data/test/dummy/tmp/cache/assets/CCF/7E0/sprockets%2F3d478e2550d0140a8da13a229735bcd7 +0 -0
  252. data/test/dummy/tmp/cache/assets/CD0/990/sprockets%2F3027964ce732931bb70c158aa61ab08d +0 -0
  253. data/test/dummy/tmp/cache/assets/CD1/590/sprockets%2F2f99067423113c4aebb30a4dd3643b85 +0 -0
  254. data/test/dummy/tmp/cache/assets/CD3/250/sprockets%2F9982c13eacaf46622739beab50120614 +0 -0
  255. data/test/dummy/tmp/cache/assets/CD3/DB0/sprockets%2F38ec8b4912b23f2b31322570d56c9c2b +0 -0
  256. data/test/dummy/tmp/cache/assets/CD8/5E0/sprockets%2Ffd127b418d9dc4cc3d196672811a6112 +0 -0
  257. data/test/dummy/tmp/cache/assets/CD8/D40/sprockets%2F73570572f17300ebf2dda1ef2635149e +0 -0
  258. data/test/dummy/tmp/cache/assets/CD9/B20/sprockets%2F65698070c3bce81f5ee4eb101722b741 +0 -0
  259. data/test/dummy/tmp/cache/assets/CD9/D90/sprockets%2F87979893cfde1b28afc60797a9948345 +0 -0
  260. data/test/dummy/tmp/cache/assets/CDA/DA0/sprockets%2F13e6789dd595b2b5033b335bbd1472f2 +0 -0
  261. data/test/dummy/tmp/cache/assets/CDB/4D0/sprockets%2Ffb9182b4d13b796b245db8153324f4d2 +0 -0
  262. data/test/dummy/tmp/cache/assets/CDB/630/sprockets%2Fc48aca3d09504ff1811d9234c8267f50 +0 -0
  263. data/test/dummy/tmp/cache/assets/CDC/B50/sprockets%2F0f1e213595a02089df9735ec41c3ee80 +0 -0
  264. data/test/dummy/tmp/cache/assets/CDF/380/sprockets%2F39695e0a1726566c80281aab8d9a51cc +0 -0
  265. data/test/dummy/tmp/cache/assets/CDF/710/sprockets%2F16d775d6707a066df80d10cd1528ff33 +0 -0
  266. data/test/dummy/tmp/cache/assets/CDF/CA0/sprockets%2F3d5b2c400b7877c15ec29575d95b613b +0 -0
  267. data/test/dummy/tmp/cache/assets/CE0/420/sprockets%2F5b3a1508216cb6b968313beae256f788 +0 -0
  268. data/test/dummy/tmp/cache/assets/CE1/A00/sprockets%2F168b4bf7364dfd883a5930302e0f554c +0 -0
  269. data/test/dummy/tmp/cache/assets/CE4/F60/sprockets%2Fbc3490162e3489bf88aab055d19397f0 +0 -0
  270. data/test/dummy/tmp/cache/assets/CE5/F10/sprockets%2Fe9cf045465025d8527c83c3b93625fca +0 -0
  271. data/test/dummy/tmp/cache/assets/CE5/F90/sprockets%2F31557450886bf9c124f2fdb42704ce8e +0 -0
  272. data/test/dummy/tmp/cache/assets/CE5/FE0/sprockets%2F627e4127557531a3f8471cfbc718ed2f +0 -0
  273. data/test/dummy/tmp/cache/assets/CE6/4A0/sprockets%2F9c04b8b8df7217a708732da4982a5f61 +0 -0
  274. data/test/dummy/tmp/cache/assets/CE7/650/sprockets%2F834b60044436456eefb9ce5cf7144d38 +0 -0
  275. data/test/dummy/tmp/cache/assets/CE7/A40/sprockets%2F2974c4aef7a04f06738c8f6a2066e292 +0 -0
  276. data/test/dummy/tmp/cache/assets/CE7/C70/sprockets%2F8627e999f207ce7214e0ab06afe86412 +0 -0
  277. data/test/dummy/tmp/cache/assets/CE8/AA0/sprockets%2Fd569f5f91016b77401782ef3b42de6a6 +0 -0
  278. data/test/dummy/tmp/cache/assets/CE8/DC0/sprockets%2F49324064376deb60c942b7d85a3e7d9b +0 -0
  279. data/test/dummy/tmp/cache/assets/CEA/6D0/sprockets%2F1da842257a051a9e871c739d29b7d77f +0 -0
  280. data/test/dummy/tmp/cache/assets/CEA/E10/sprockets%2F888c18a6b36ca5e51363b7b21c29f877 +0 -0
  281. data/test/dummy/tmp/cache/assets/CEB/520/sprockets%2Fe99130a4204fac5e0b886885339af7c8 +0 -0
  282. data/test/dummy/tmp/cache/assets/CEB/C10/sprockets%2F6cadb28080126992d76e5e35ba79088e +0 -0
  283. data/test/dummy/tmp/cache/assets/CEC/2B0/sprockets%2F917af8a56c884b3d5c6a03593d95a365 +0 -0
  284. data/test/dummy/tmp/cache/assets/CEC/7A0/sprockets%2F1ccee406d881875c559b82932a25e7d4 +0 -0
  285. data/test/dummy/tmp/cache/assets/CEE/920/sprockets%2F97c97b08d42738b583ed92b55c540a4f +0 -0
  286. data/test/dummy/tmp/cache/assets/CEF/F00/sprockets%2F8ac77338a1dc57bb32999653c561e74e +0 -0
  287. data/test/dummy/tmp/cache/assets/CF0/950/sprockets%2Fd08f99c34c161881adb05d342e8984f9 +0 -0
  288. data/test/dummy/tmp/cache/assets/CF1/000/sprockets%2Fa779ae7d9f80d3098529264b91dd405d +0 -0
  289. data/test/dummy/tmp/cache/assets/CF1/5B0/sprockets%2F46e4886602bb924fc5c638865b6bf4f2 +0 -0
  290. data/test/dummy/tmp/cache/assets/CF5/2E0/sprockets%2F14513ab2f3a0311abd083e70c99bd293 +0 -0
  291. data/test/dummy/tmp/cache/assets/CF5/5C0/sprockets%2F64a4190014fe00d17e708fc02dfc2a32 +0 -0
  292. data/test/dummy/tmp/cache/assets/CF6/4E0/sprockets%2Ff9c27df89c8173d41850b9c40e766a85 +0 -0
  293. data/test/dummy/tmp/cache/assets/CF6/710/sprockets%2Fe53fe9369ad5f26285ab27754a943c88 +0 -0
  294. data/test/dummy/tmp/cache/assets/CF9/B70/sprockets%2F8144ebf49f85b18c46d90b897239b56e +0 -0
  295. data/test/dummy/tmp/cache/assets/CFB/540/sprockets%2Fc40fe1438edc416788894df8b834f944 +0 -0
  296. data/test/dummy/tmp/cache/assets/CFC/7F0/sprockets%2F6158d3ff6993e4c114a894dd371999ec +0 -0
  297. data/test/dummy/tmp/cache/assets/CFD/EA0/sprockets%2Fe43051fb1f2752c010e292ccbc53399b +0 -0
  298. data/test/dummy/tmp/cache/assets/CFD/F60/sprockets%2Fb5776671dd7cf557332f7720f49c9c9f +0 -0
  299. data/test/dummy/tmp/cache/assets/CFD/F80/sprockets%2Fe2b02979764013ad04e2f2b23d28e2ca +0 -0
  300. data/test/dummy/tmp/cache/assets/D00/690/sprockets%2F488324fb426a1e3cb3ca16488caf4004 +0 -0
  301. data/test/dummy/tmp/cache/assets/D01/A00/sprockets%2F5704bfb588da51f6053f30abd310b458 +0 -0
  302. data/test/dummy/tmp/cache/assets/D02/4C0/sprockets%2F6386d72b2c51c911a7fd84ba612430cc +0 -0
  303. data/test/dummy/tmp/cache/assets/D02/6E0/sprockets%2F886e897f07ee48ec4e9f640643440dd9 +0 -0
  304. data/test/dummy/tmp/cache/assets/D03/EF0/sprockets%2F4799db40f9cc57f50689f6da487464f5 +0 -0
  305. data/test/dummy/tmp/cache/assets/D04/530/sprockets%2Fc14ce481964a025c2501a5c907c65fce +0 -0
  306. data/test/dummy/tmp/cache/assets/D06/590/sprockets%2F19c899c20cf5d9b8629878e3add89708 +0 -0
  307. data/test/dummy/tmp/cache/assets/D06/A70/sprockets%2Ff5da4e04222a35db9d267255424bf5c6 +0 -0
  308. data/test/dummy/tmp/cache/assets/D07/330/sprockets%2F3b24c0c589b1004b399d108ae5d6ef81 +0 -0
  309. data/test/dummy/tmp/cache/assets/D07/7F0/sprockets%2F3fb0ed6b32aa83a6878d12a209c38824 +0 -0
  310. data/test/dummy/tmp/cache/assets/D08/530/sprockets%2F311d9ba15b34718d1e60ddc95a84194d +0 -0
  311. data/test/dummy/tmp/cache/assets/D08/D80/sprockets%2F388df4f82d11657bb0b4024448b6af2b +0 -0
  312. data/test/dummy/tmp/cache/assets/D09/7F0/sprockets%2Fa2d67c31222348f16a9812df26da3e8d +0 -0
  313. data/test/dummy/tmp/cache/assets/D09/E40/sprockets%2Fc2693927bc52084b4d2b89373aaa0ac9 +0 -0
  314. data/test/dummy/tmp/cache/assets/D0A/830/sprockets%2F3155dcf93a62cf601a0d48b2806b599b +0 -0
  315. data/test/dummy/tmp/cache/assets/D0A/830/sprockets%2F830cdfb33202453675d55d8de703fa2f +0 -0
  316. data/test/dummy/tmp/cache/assets/D0B/3E0/sprockets%2F66c11f02337c8851bfab67bbb3b94916 +0 -0
  317. data/test/dummy/tmp/cache/assets/D0C/2E0/sprockets%2Fecb35ec370e250a63784c2f508b76a38 +0 -0
  318. data/test/dummy/tmp/cache/assets/D0E/010/sprockets%2F797b9e08c55a2106f8e2dace455710d0 +0 -0
  319. data/test/dummy/tmp/cache/assets/D0E/180/sprockets%2F045e183281dfc37485db513d585c5bdb +0 -0
  320. data/test/dummy/tmp/cache/assets/D0E/EA0/sprockets%2F1d36a1420cf4558fb3c793316ae89ca7 +0 -0
  321. data/test/dummy/tmp/cache/assets/D0F/7E0/sprockets%2F45f0d1bae6783a949cd01767d4c7e212 +0 -0
  322. data/test/dummy/tmp/cache/assets/D0F/9E0/sprockets%2F1536c04e487ca1a768d90a68513c3cff +0 -0
  323. data/test/dummy/tmp/cache/assets/D10/750/sprockets%2F4c4a696e3e0b905d75ed60f9042cd227 +0 -0
  324. data/test/dummy/tmp/cache/assets/D11/FC0/sprockets%2F9bd6c83d367423fe05ef6c3338143aa6 +0 -0
  325. data/test/dummy/tmp/cache/assets/D11/FD0/sprockets%2Fa7872e06fd015c19f48f4c350d63cc19 +0 -0
  326. data/test/dummy/tmp/cache/assets/D12/1C0/sprockets%2F5901cb9faf1725dd2e472ca2965b4287 +0 -0
  327. data/test/dummy/tmp/cache/assets/D12/BE0/sprockets%2Ff01aaa83ff0f19584cb671837a7d7444 +0 -0
  328. data/test/dummy/tmp/cache/assets/D13/6B0/sprockets%2F0975ed2a9d299bf1c719b3b1137e581b +0 -0
  329. data/test/dummy/tmp/cache/assets/D14/340/sprockets%2F4d057c80e80694c2c4d637ecd538bc08 +0 -0
  330. data/test/dummy/tmp/cache/assets/D14/BD0/sprockets%2Ffc2255112852fb55d96d41a92f8fb6b6 +0 -0
  331. data/test/dummy/tmp/cache/assets/D14/DA0/sprockets%2F54a7d7c2a544df07d57173cda79e9700 +0 -0
  332. data/test/dummy/tmp/cache/assets/D15/A20/sprockets%2F46b5881e463b09c7f61736e5ec2aeb16 +0 -0
  333. data/test/dummy/tmp/cache/assets/D15/A20/sprockets%2F9e52b9b230f4aa1d0e1a74699d82e983 +0 -0
  334. data/test/dummy/tmp/cache/assets/D16/2A0/sprockets%2F3739709cf73c9a32b521b45677cd4bde +0 -0
  335. data/test/dummy/tmp/cache/assets/D17/6C0/sprockets%2F69144d8b21e495ac17e4994fdfa3a803 +0 -0
  336. data/test/dummy/tmp/cache/assets/D19/680/sprockets%2Fcd3a545b89d274cfd328f4d341f96272 +0 -0
  337. data/test/dummy/tmp/cache/assets/D19/E90/sprockets%2F16cd7e58935dd8d1d376f10be6b50368 +0 -0
  338. data/test/dummy/tmp/cache/assets/D1A/0C0/sprockets%2Fa606399c0ce2e298b58fec46777024ad +0 -0
  339. data/test/dummy/tmp/cache/assets/D1B/C80/sprockets%2F835147dfca8c918a99182e9e2e600f1c +0 -0
  340. data/test/dummy/tmp/cache/assets/D1C/070/sprockets%2F19aa6be16056890e435d65d4c84cf69e +0 -0
  341. data/test/dummy/tmp/cache/assets/D1D/700/sprockets%2F72d9824da671eff2338d52de93b83a56 +0 -0
  342. data/test/dummy/tmp/cache/assets/D1D/C60/sprockets%2F54364ea078190fbd4168336feef963fc +0 -0
  343. data/test/dummy/tmp/cache/assets/D1F/5F0/sprockets%2Ff8cb248d9fc90758124cd284e17e3b66 +0 -0
  344. data/test/dummy/tmp/cache/assets/D21/EF0/sprockets%2F935d9ee3ec37515493a293c3785dadc8 +0 -0
  345. data/test/dummy/tmp/cache/assets/D22/0B0/sprockets%2F9dfda36b032e59892637b875d7af392b +0 -0
  346. data/test/dummy/tmp/cache/assets/D22/2C0/sprockets%2Fe42d5d90d467a803999bdec116955f8b +0 -0
  347. data/test/dummy/tmp/cache/assets/D23/610/sprockets%2F0e51cca080cc65e62e080941b232a1ed +0 -0
  348. data/test/dummy/tmp/cache/assets/D23/EB0/sprockets%2Fe26ee953fe7e3172d737e6e67a96332a +0 -0
  349. data/test/dummy/tmp/cache/assets/D25/C00/sprockets%2Ff63d097054df34bc660bdf98f7661b99 +0 -0
  350. data/test/dummy/tmp/cache/assets/D26/470/sprockets%2F1e9b32c11057bc537b0021de4f1f1fc6 +0 -0
  351. data/test/dummy/tmp/cache/assets/D29/910/sprockets%2Fe51f36e9fde73e3928070a96fcf77571 +0 -0
  352. data/test/dummy/tmp/cache/assets/D2A/E10/sprockets%2F2d2a1cfcc28a38330d30434fd8c1077c +0 -0
  353. data/test/dummy/tmp/cache/assets/D2B/210/sprockets%2F67aaa6c903e6b15c74de39af0002a451 +0 -0
  354. data/test/dummy/tmp/cache/assets/D2B/CF0/sprockets%2F70b2adc5e73b271342371aaad257b76d +0 -0
  355. data/test/dummy/tmp/cache/assets/D2D/E40/sprockets%2Faf21fa3d26ad3f68a23532178e20fb15 +0 -0
  356. data/test/dummy/tmp/cache/assets/D2F/100/sprockets%2F8c0286ee70744ca12c7c12a563de4b2a +0 -0
  357. data/test/dummy/tmp/cache/assets/D32/3E0/sprockets%2Fc9f2c6b93b29fa3b0d5420b751903eb1 +0 -0
  358. data/test/dummy/tmp/cache/assets/D32/6E0/sprockets%2Fb4f78f31b9aab6dbd2911b07076d4601 +0 -0
  359. data/test/dummy/tmp/cache/assets/D32/A80/sprockets%2Fb12fb26042f73cf3b2796abc2836ee20 +0 -0
  360. data/test/dummy/tmp/cache/assets/D36/7F0/sprockets%2F78e0c63f0043ae6e6536ec504cc23a9b +0 -0
  361. data/test/dummy/tmp/cache/assets/D36/E70/sprockets%2F69b00a4118d012bf6d7cf293b5f316ff +0 -0
  362. data/test/dummy/tmp/cache/assets/D37/070/sprockets%2F59e3be9a13634f3b3d0cab4ad0889063 +0 -0
  363. data/test/dummy/tmp/cache/assets/D39/740/sprockets%2Fd4834d921f293e5dcc04bea2b3917d51 +0 -0
  364. data/test/dummy/tmp/cache/assets/D3A/520/sprockets%2F7193d867aa217d4a306848dbcc1d9c0b +0 -0
  365. data/test/dummy/tmp/cache/assets/D3A/670/sprockets%2F0db6624d07920a5f4decb479718da33c +0 -0
  366. data/test/dummy/tmp/cache/assets/D3A/690/sprockets%2Fb5058a82d02b84df6210af598cfa644c +0 -0
  367. data/test/dummy/tmp/cache/assets/D3A/A00/sprockets%2F1077cd94fef55fbb01ce529612180bd5 +0 -0
  368. data/test/dummy/tmp/cache/assets/D3A/ED0/sprockets%2F5ae1cf0266d63b8eb0647535ca93b63d +0 -0
  369. data/test/dummy/tmp/cache/assets/D3C/640/sprockets%2F42e7a70bb8be9398385afb3c4742aa04 +0 -0
  370. data/test/dummy/tmp/cache/assets/D3C/E40/sprockets%2Fba57600a2dd2f6da96613de37f27930f +0 -0
  371. data/test/dummy/tmp/cache/assets/D3D/4E0/sprockets%2F7d37b8c27a3f3b1a02c4fe17643de865 +0 -0
  372. data/test/dummy/tmp/cache/assets/D3E/940/sprockets%2F5ed82a03c1de5c34135b67ff053787ec +0 -0
  373. data/test/dummy/tmp/cache/assets/D3E/F80/sprockets%2Fa146a4bfc3b8cb08334b9b14fe379756 +0 -0
  374. data/test/dummy/tmp/cache/assets/D3F/050/sprockets%2Fab4aa96dbce1e6b359f2658118291d90 +0 -0
  375. data/test/dummy/tmp/cache/assets/D3F/590/sprockets%2F13a259ba93c919fa5a47ba9cf10569f1 +0 -0
  376. data/test/dummy/tmp/cache/assets/D3F/E10/sprockets%2Ff8492202733ea4a4f67065c95eec1beb +0 -0
  377. data/test/dummy/tmp/cache/assets/D40/6C0/sprockets%2Fafe496eaca27b82020893b81383e8b6b +0 -0
  378. data/test/dummy/tmp/cache/assets/D40/D10/sprockets%2F7af151c9b6080d9285fe058ae6d40c4d +0 -0
  379. data/test/dummy/tmp/cache/assets/D40/E50/sprockets%2F278df3df34e9573cbd9a402e42d1193b +0 -0
  380. data/test/dummy/tmp/cache/assets/D41/220/sprockets%2Fafb511e47c76bf448b6f7072c8d3118c +0 -0
  381. data/test/dummy/tmp/cache/assets/D41/770/sprockets%2F271c5f12457864bbb0c6646c9ebf1f3f +0 -0
  382. data/test/dummy/tmp/cache/assets/D41/8A0/sprockets%2Fbc7ce77806517ea173350e6a4d8c55db +0 -0
  383. data/test/dummy/tmp/cache/assets/D41/D70/sprockets%2F48b33bbf96854b502b0eaf902e69d55c +0 -0
  384. data/test/dummy/tmp/cache/assets/D41/FE0/sprockets%2F2901ba969f333cc19393afd2f0fc7c64 +0 -0
  385. data/test/dummy/tmp/cache/assets/D42/970/sprockets%2Fe27c8084b9cf2eaa063f585e92064c5a +0 -0
  386. data/test/dummy/tmp/cache/assets/D43/F70/sprockets%2F2c844357dd8de7db147f80c3539b0ee0 +0 -0
  387. data/test/dummy/tmp/cache/assets/D44/6D0/sprockets%2F4d7032af47bfce2d4a8564830f8a6a96 +0 -0
  388. data/test/dummy/tmp/cache/assets/D45/1C0/sprockets%2F7e052d17bd4b749ba373bea97380c8f6 +0 -0
  389. data/test/dummy/tmp/cache/assets/D45/3B0/sprockets%2Fd26b5a0d570ef57d06df6f032e9b8980 +0 -0
  390. data/test/dummy/tmp/cache/assets/D46/770/sprockets%2F96355435f9ab8090c2d3e4f0ddd9b7c3 +0 -0
  391. data/test/dummy/tmp/cache/assets/D46/8E0/sprockets%2F1a4f07bd2741629bdd572848dccf773e +0 -0
  392. data/test/dummy/tmp/cache/assets/D47/2B0/sprockets%2Ff3d8c4ca1a44044d98395b36b770fcf9 +0 -0
  393. data/test/dummy/tmp/cache/assets/D47/8F0/sprockets%2F1cc6e49382be4f74cbb97821ae1928c4 +0 -0
  394. data/test/dummy/tmp/cache/assets/D47/AC0/sprockets%2Fcb9189183de4d74faa04d6ad1347964f +0 -0
  395. data/test/dummy/tmp/cache/assets/D48/1D0/sprockets%2Fbff4201c0944eaf31a2f6a0110cbd224 +0 -0
  396. data/test/dummy/tmp/cache/assets/D48/2F0/sprockets%2F6b79e4839df89b4abb51c2c6105d15e8 +0 -0
  397. data/test/dummy/tmp/cache/assets/D48/960/sprockets%2F90e2c11ff8fd31e591b9fd39932631bf +0 -0
  398. data/test/dummy/tmp/cache/assets/D4A/C80/sprockets%2F0289519826ada458af4b9a728fdfcf31 +0 -0
  399. data/test/dummy/tmp/cache/assets/D4B/C20/sprockets%2Fc28f3c4d6cd98dbb784830d7c6214d65 +0 -0
  400. data/test/dummy/tmp/cache/assets/D4B/E90/sprockets%2F51d49f9bc2549684e6da91a4e0bc379b +0 -0
  401. data/test/dummy/tmp/cache/assets/D4C/490/sprockets%2F7e207e1654e5343a964fd6cf3fefb447 +0 -0
  402. data/test/dummy/tmp/cache/assets/D4C/BD0/sprockets%2F4ac9d1aa903d4731edf18fe2b9589829 +0 -0
  403. data/test/dummy/tmp/cache/assets/D4E/640/sprockets%2Fdaab3d2130266b5b7a2f1d04b8c4322e +0 -0
  404. data/test/dummy/tmp/cache/assets/D4E/6C0/sprockets%2Fedd9cf282af0f00637e5273c8c3888b9 +0 -0
  405. data/test/dummy/tmp/cache/assets/D4E/D00/sprockets%2F1a6846f0a837ae2524e2f9ec89e6ef43 +0 -0
  406. data/test/dummy/tmp/cache/assets/D4F/410/sprockets%2F1377bb2e86073ae3a688e5a6c499a9df +0 -0
  407. data/test/dummy/tmp/cache/assets/D50/E10/sprockets%2F28698bc0c536fe5e97a2935e3bb929bb +0 -0
  408. data/test/dummy/tmp/cache/assets/D51/230/sprockets%2F742ba6ca9f84d98ffc38ca5687c05155 +0 -0
  409. data/test/dummy/tmp/cache/assets/D53/440/sprockets%2F2def445147b9f5d6363f6f6d497d2f0e +0 -0
  410. data/test/dummy/tmp/cache/assets/D53/DE0/sprockets%2F7736b51cb3bf8679b8bdc8ab9d184954 +0 -0
  411. data/test/dummy/tmp/cache/assets/D54/0D0/sprockets%2F448752db3a53dd453db1b01de121ebd2 +0 -0
  412. data/test/dummy/tmp/cache/assets/D56/1F0/sprockets%2F291fcb7a26ff3aac6bc1404e0a247242 +0 -0
  413. data/test/dummy/tmp/cache/assets/D57/DF0/sprockets%2F8d06b94587d49e037e77f8afcb6802cf +0 -0
  414. data/test/dummy/tmp/cache/assets/D59/070/sprockets%2F822cd47e69d40ba87f95181fdd698ed5 +0 -0
  415. data/test/dummy/tmp/cache/assets/D5A/070/sprockets%2Fe7159b621a21a7a0ebd81a32912e8faa +0 -0
  416. data/test/dummy/tmp/cache/assets/D5A/D80/sprockets%2F28dc9152e2ead49ae414a5b82d04a1a2 +0 -0
  417. data/test/dummy/tmp/cache/assets/D5C/660/sprockets%2F5baf6a64b3151ae6bf40155e90db6e03 +0 -0
  418. data/test/dummy/tmp/cache/assets/D5C/E00/sprockets%2F92930d4e993eb8bd3498b699dccf9a33 +0 -0
  419. data/test/dummy/tmp/cache/assets/D5E/3D0/sprockets%2F5f786d832b4e0ba05f6abc3ea314901a +0 -0
  420. data/test/dummy/tmp/cache/assets/D5F/7F0/sprockets%2Fabbcc55042a82b42c900c09d59de4c29 +0 -0
  421. data/test/dummy/tmp/cache/assets/D60/2A0/sprockets%2Fcd5c12269b6c414bf722c6c2dc0e18c4 +0 -0
  422. data/test/dummy/tmp/cache/assets/D62/140/sprockets%2F7e5a724c4c00951a0da7ec767ce19aa1 +0 -0
  423. data/test/dummy/tmp/cache/assets/D62/2E0/sprockets%2F51a06ddef9bd05b405fd605d37be3154 +0 -0
  424. data/test/dummy/tmp/cache/assets/D63/B00/sprockets%2F2672399dfcdd2b6b61536cab3d800bc1 +0 -0
  425. data/test/dummy/tmp/cache/assets/D63/D60/sprockets%2Ff791df22a3d7e2f4ef01ad0742f370c1 +0 -0
  426. data/test/dummy/tmp/cache/assets/D63/DC0/sprockets%2Fc298c2b66150c7f11d95cecf450bb14a +0 -0
  427. data/test/dummy/tmp/cache/assets/D63/DE0/sprockets%2F73c9e04acfc930681ab170b3e4bfc453 +0 -0
  428. data/test/dummy/tmp/cache/assets/D64/670/sprockets%2F7dc8c0ad36d436eb56a0824a46e0eb08 +0 -0
  429. data/test/dummy/tmp/cache/assets/D64/B50/sprockets%2F7ac06eacb363b85744337c0ea88e2b0c +0 -0
  430. data/test/dummy/tmp/cache/assets/D65/990/sprockets%2Fa2965ca374a00aaceb747e60b654e2f8 +0 -0
  431. data/test/dummy/tmp/cache/assets/D66/360/sprockets%2Fc94d86aa0bc1a44817a1fd3db0873a87 +0 -0
  432. data/test/dummy/tmp/cache/assets/D66/6C0/sprockets%2F1b63a7f0e3fb2a7f3124f198d0ff462b +0 -0
  433. data/test/dummy/tmp/cache/assets/D67/8E0/sprockets%2Ffd0eaaf36da9805e6c4ec303534162f5 +0 -0
  434. data/test/dummy/tmp/cache/assets/D67/C10/sprockets%2Ffb4b4451c110f07957c2ecacf854c5d4 +0 -0
  435. data/test/dummy/tmp/cache/assets/D68/000/sprockets%2F39c01fa5c01830f3558eb1c97c4dfb6b +0 -0
  436. data/test/dummy/tmp/cache/assets/D68/0C0/sprockets%2F6c628ddf1ba5c680e04ad54a476f163b +0 -0
  437. data/test/dummy/tmp/cache/assets/D68/210/sprockets%2Fdc284967860db06c2cb2e1da78bab156 +0 -0
  438. data/test/dummy/tmp/cache/assets/D6A/2E0/sprockets%2Fc3a3a8e66c9b58b52b1db3ad754c9423 +0 -0
  439. data/test/dummy/tmp/cache/assets/D6B/BA0/sprockets%2F8293eb343aead8dda54496532fb24fa1 +0 -0
  440. data/test/dummy/tmp/cache/assets/D6C/AD0/sprockets%2Fdabce05f6e4419832e20d6b7420fe9a7 +0 -0
  441. data/test/dummy/tmp/cache/assets/D6D/080/sprockets%2F3cc7b7355591babda1661e6c5e9f8c20 +0 -0
  442. data/test/dummy/tmp/cache/assets/D6D/690/sprockets%2Fd288d7215df092fdc70b3b8216dce2f3 +0 -0
  443. data/test/dummy/tmp/cache/assets/D6D/7A0/sprockets%2Fff4be901f55528b85b2b1fc73ebc4352 +0 -0
  444. data/test/dummy/tmp/cache/assets/D6D/E80/sprockets%2F9ef00ee94e3b0eed7c4e45b342085d51 +0 -0
  445. data/test/dummy/tmp/cache/assets/D6E/940/sprockets%2Fb19f43bd8383eeb5e26a4d2b79f1240e +0 -0
  446. data/test/dummy/tmp/cache/assets/D6E/9F0/sprockets%2F15f61ad82d9ca6cce6a0e42b7249662f +0 -0
  447. data/test/dummy/tmp/cache/assets/D6E/AD0/sprockets%2F4441be9946083b61e75f7bf1a1cca5cf +0 -0
  448. data/test/dummy/tmp/cache/assets/D73/3F0/sprockets%2F09b4a9c1131740eba5d85fcf9c86b97a +0 -0
  449. data/test/dummy/tmp/cache/assets/D76/030/sprockets%2F7e8689ec6a9f3754a4aa660e303cbf4a +0 -0
  450. data/test/dummy/tmp/cache/assets/D76/C80/sprockets%2F952307811ad5e9e8b540cf5e9cf08cea +0 -0
  451. data/test/dummy/tmp/cache/assets/D76/CA0/sprockets%2F797920cdabaf2f8431968a34c2cbae79 +0 -0
  452. data/test/dummy/tmp/cache/assets/D77/B70/sprockets%2Fa02f64f352cfa69d33983fd15e8ea3d7 +0 -0
  453. data/test/dummy/tmp/cache/assets/D77/FF0/sprockets%2F126c2e2ca6f5e8477c9525f46cdba7d5 +0 -0
  454. data/test/dummy/tmp/cache/assets/D79/2F0/sprockets%2F4b9fd617fe0d6c7e5eb934a139507e3d +0 -0
  455. data/test/dummy/tmp/cache/assets/D79/E80/sprockets%2F7d329345d1b9f914c87fc5e07ea9ab4b +0 -0
  456. data/test/dummy/tmp/cache/assets/D7A/5C0/sprockets%2F6e2b202ee971a68c1e78eddf5658e53a +0 -0
  457. data/test/dummy/tmp/cache/assets/D7A/8C0/sprockets%2Fc477a2d0aa5d658fd7294d6f6c5a484e +0 -0
  458. data/test/dummy/tmp/cache/assets/D7C/160/sprockets%2F6847e66cdafb094701f479a515ede5dd +0 -0
  459. data/test/dummy/tmp/cache/assets/D7C/750/sprockets%2F1f76d236fdf42a817bd84da719fde069 +0 -0
  460. data/test/dummy/tmp/cache/assets/D7C/B90/sprockets%2Fc89b5af12387ee80ca80e3f2ac776c79 +0 -0
  461. data/test/dummy/tmp/cache/assets/D7E/2A0/sprockets%2F1ce479f9423e748690a75abbabf8af84 +0 -0
  462. data/test/dummy/tmp/cache/assets/D7F/A60/sprockets%2F5c683951503f673cceffa6ba76f38b8d +0 -0
  463. data/test/dummy/tmp/cache/assets/D81/120/sprockets%2F75c7f18e61fa042b776ce2e5c3ff786f +0 -0
  464. data/test/dummy/tmp/cache/assets/D82/560/sprockets%2Fcb5875caef3f569f08878b13cdd991a2 +0 -0
  465. data/test/dummy/tmp/cache/assets/D84/0A0/sprockets%2F07fc0bfe2237a171b813aa147f3ced1a +0 -0
  466. data/test/dummy/tmp/cache/assets/D85/050/sprockets%2Fa9b35663e7dc78eacde8d84ae3599163 +0 -0
  467. data/test/dummy/tmp/cache/assets/D85/5A0/sprockets%2Fc2cbee1b5160e0e8b022933feb36ea30 +0 -0
  468. data/test/dummy/tmp/cache/assets/D87/6D0/sprockets%2F51df69aad9a6f892254deb9d4c1992f8 +0 -0
  469. data/test/dummy/tmp/cache/assets/D88/1B0/sprockets%2Fb5bb04fc812b607ce046a4b702be4c4f +0 -0
  470. data/test/dummy/tmp/cache/assets/D88/7E0/sprockets%2Fe9fedb2c5be893a15939dc65f684196b +0 -0
  471. data/test/dummy/tmp/cache/assets/D8A/2C0/sprockets%2F6ec8da0142f240ce8a7e0b46aea363c1 +0 -0
  472. data/test/dummy/tmp/cache/assets/D8A/370/sprockets%2Fb4600d72a29aba7a39c2ec58aa04f18b +0 -0
  473. data/test/dummy/tmp/cache/assets/D8A/B90/sprockets%2F7506f75d60f93f9e8405ffb9cf85ddb2 +0 -0
  474. data/test/dummy/tmp/cache/assets/D8A/BF0/sprockets%2F1967ce66d464496a6fab44ff8be55ef6 +0 -0
  475. data/test/dummy/tmp/cache/assets/D8C/9C0/sprockets%2F2e7c2cd86215800a37c4d4b1bf0bea5f +0 -0
  476. data/test/dummy/tmp/cache/assets/D8E/910/sprockets%2Fbbf8e4c05ca721c1cd18c17902256ade +0 -0
  477. data/test/dummy/tmp/cache/assets/D8F/C40/sprockets%2Fa76260381aff4aa0c8beea0404e95de2 +0 -0
  478. data/test/dummy/tmp/cache/assets/D93/3B0/sprockets%2Fd0fb3bdcf317425a433a125c986b3dff +0 -0
  479. data/test/dummy/tmp/cache/assets/D94/1A0/sprockets%2Fb4748c092e8a4c127bcfacb06cdc2735 +0 -0
  480. data/test/dummy/tmp/cache/assets/D94/AD0/sprockets%2Fa1ac4bf342006e1f98def10cf9d7d234 +0 -0
  481. data/test/dummy/tmp/cache/assets/D95/430/sprockets%2Fcf054ac65aa2c4b72d661fc32c898aa5 +0 -0
  482. data/test/dummy/tmp/cache/assets/D96/C10/sprockets%2F620f6865aeb0de3c5cf8b305b13c7cb7 +0 -0
  483. data/test/dummy/tmp/cache/assets/D97/2B0/sprockets%2F16a899a4b20af5f53cdd2870e1b0aed8 +0 -0
  484. data/test/dummy/tmp/cache/assets/D97/4C0/sprockets%2F4d4aea86610bc9652c70455a6beafc4d +0 -0
  485. data/test/dummy/tmp/cache/assets/D99/330/sprockets%2Ff01679ca9c88dd0a3eb6922b0b8f3bc0 +0 -0
  486. data/test/dummy/tmp/cache/assets/D99/B10/sprockets%2F4aa8fece5b18d820a44dc266a89d50e0 +0 -0
  487. data/test/dummy/tmp/cache/assets/D99/CD0/sprockets%2Ffe0c5f4b8b52baa0f91870da12599a6d +0 -0
  488. data/test/dummy/tmp/cache/assets/D9D/170/sprockets%2F37f702f1f3ad35b9022fc87fdce7de02 +0 -0
  489. data/test/dummy/tmp/cache/assets/D9E/C90/sprockets%2F9cd75b38f1c1f85bbdac2576ca9106b5 +0 -0
  490. data/test/dummy/tmp/cache/assets/D9F/6F0/sprockets%2Fff261c15e6b97bf57e372f0de1ad571a +0 -0
  491. data/test/dummy/tmp/cache/assets/D9F/800/sprockets%2F5c722d8150c68e6eacad70fb64e5e1f5 +0 -0
  492. data/test/dummy/tmp/cache/assets/DA0/1B0/sprockets%2F71e2cd8803aac9fb0bb4c47593cf17e8 +0 -0
  493. data/test/dummy/tmp/cache/assets/DA1/530/sprockets%2F88a8bb9debb752ba06f07909db83e02d +0 -0
  494. data/test/dummy/tmp/cache/assets/DA3/9F0/sprockets%2F5122955dfe6694bdc6b69cbea09d2cd1 +0 -0
  495. data/test/dummy/tmp/cache/assets/DA4/450/sprockets%2F6f2bd50f9f1551ed8e00fd8b84f37c2c +0 -0
  496. data/test/dummy/tmp/cache/assets/DA5/0E0/sprockets%2Fe61590dc98f1e532ea20e296c5fce7bd +0 -0
  497. data/test/dummy/tmp/cache/assets/DA6/FC0/sprockets%2F900ed66847c0ec1eff94ad75fc26f11e +0 -0
  498. data/test/dummy/tmp/cache/assets/DAB/B00/sprockets%2F5286678a74e7bcc66e0d3c7c7d2db5fb +0 -0
  499. data/test/dummy/tmp/cache/assets/DAD/810/sprockets%2Fcfb7db145b0d0a3010f5d0cd7a08fb15 +0 -0
  500. data/test/dummy/tmp/cache/assets/DAE/A40/sprockets%2F7fefa2cd6e72f17c926159c9b7c3a95a +0 -0
  501. data/test/dummy/tmp/cache/assets/DB0/BF0/sprockets%2F52e4cdf37aa489ff6c138dedf036588d +0 -0
  502. data/test/dummy/tmp/cache/assets/DB1/C80/sprockets%2Fa2d1a10a3cc780fd30127b2be96ddfa2 +0 -0
  503. data/test/dummy/tmp/cache/assets/DB2/850/sprockets%2F9d6e12a0e28cc9ded4e859613cf75f6e +0 -0
  504. data/test/dummy/tmp/cache/assets/DB6/710/sprockets%2Ff53e9d96ae4808ad0f9e09ab4ef78f80 +0 -0
  505. data/test/dummy/tmp/cache/assets/DBA/7F0/sprockets%2F4f7fd7b68b8bc29c67fa996e37eaf512 +0 -0
  506. data/test/dummy/tmp/cache/assets/DBD/080/sprockets%2F039ace5986a3cbf4cca0b0a753bc71a6 +0 -0
  507. data/test/dummy/tmp/cache/assets/DBE/210/sprockets%2Fa12ca5480c3e2b9cf44ab4ef32e813ec +0 -0
  508. data/test/dummy/tmp/cache/assets/DBE/DF0/sprockets%2F6d1f018e11ee2240a8dd1df920c6cddd +0 -0
  509. data/test/dummy/tmp/cache/assets/DC0/760/sprockets%2Fb7e4cf2efcf48d0dcc420131fd30d454 +0 -0
  510. data/test/dummy/tmp/cache/assets/DC1/C20/sprockets%2Fb60b7b3aeb56bd55b67183b6f151ecca +0 -0
  511. data/test/dummy/tmp/cache/assets/DC5/5F0/sprockets%2F9d4cc0ae7ac214bb22c7cf455d06b9c9 +0 -0
  512. data/test/dummy/tmp/cache/assets/DC5/660/sprockets%2F637431e1c8fffeaafc23f021bd49fa06 +0 -0
  513. data/test/dummy/tmp/cache/assets/DC6/7C0/sprockets%2Fb408df7a822c70a0924e0cdf6c8fe2ca +0 -0
  514. data/test/dummy/tmp/cache/assets/DC8/2F0/sprockets%2F15c5ad9491aa5ef9fe4aef6333fa12c0 +0 -0
  515. data/test/dummy/tmp/cache/assets/DC8/C70/sprockets%2Fbb5351434afe5616cbe7e4a6cea95a6b +0 -0
  516. data/test/dummy/tmp/cache/assets/DCC/F40/sprockets%2Fdc3342c548fc7d3c4f4e27732b5acfea +0 -0
  517. data/test/dummy/tmp/cache/assets/DCD/390/sprockets%2Fdcd461b67aec99b76eea270a9ad2c046 +0 -0
  518. data/test/dummy/tmp/cache/assets/DCD/730/sprockets%2Fe577d2f2df0ce1516b2bdfa9fe0909e0 +0 -0
  519. data/test/dummy/tmp/cache/assets/DCD/8D0/sprockets%2Fbf36f09be83b4d0986ad23ea4d1f32df +0 -0
  520. data/test/dummy/tmp/cache/assets/DCE/1C0/sprockets%2F58cc5eb1cb2a47c8067c940caecf449d +0 -0
  521. data/test/dummy/tmp/cache/assets/DCE/BA0/sprockets%2F57c5ecddc82aa706b1e64691a8a5bcc9 +0 -0
  522. data/test/dummy/tmp/cache/assets/DCF/4A0/sprockets%2F3efd01a56bae3ae99fd13085f75b9e0d +0 -0
  523. data/test/dummy/tmp/cache/assets/DD1/4A0/sprockets%2Fd1fd81d46b69d255ebc7ab7f3f96a03a +0 -0
  524. data/test/dummy/tmp/cache/assets/DD2/380/sprockets%2F7972dab64d4a2a8007c3ecfd887ace4e +0 -0
  525. data/test/dummy/tmp/cache/assets/DD2/D90/sprockets%2Facc08ab37871b8576bfcb992aedaf228 +0 -0
  526. data/test/dummy/tmp/cache/assets/DD3/FE0/sprockets%2Fd19b0f09a29f8558a8d1f5cfc02acec9 +0 -0
  527. data/test/dummy/tmp/cache/assets/DD8/5C0/sprockets%2F9dd7bcb46a4b58ee446353a9cdaf93f2 +0 -0
  528. data/test/dummy/tmp/cache/assets/DD9/AA0/sprockets%2Ff96cdb075b4fc5b6eabb92832f6ad758 +0 -0
  529. data/test/dummy/tmp/cache/assets/DD9/F90/sprockets%2Ff09bdb745c8fa4987aa1ffcd6370c94b +0 -0
  530. data/test/dummy/tmp/cache/assets/DDB/140/sprockets%2F7815fdf1a6a74db4fca71ff6537ced67 +0 -0
  531. data/test/dummy/tmp/cache/assets/DDD/E10/sprockets%2Fd7292f5eb3a7b1f583efbf05aef567d9 +0 -0
  532. data/test/dummy/tmp/cache/assets/DDE/C00/sprockets%2Ffb5947d8ea5a7d6c08c71b3c9d7a88cb +0 -0
  533. data/test/dummy/tmp/cache/assets/DE7/3B0/sprockets%2F55fc91edc7ee6e5f818993cbddb6b707 +0 -0
  534. data/test/dummy/tmp/cache/assets/DE7/550/sprockets%2Ffff04b0980f1fbe9ece54cd8ca779867 +0 -0
  535. data/test/dummy/tmp/cache/assets/DE8/980/sprockets%2Fea9daa72d1acd0886cc064d0ea6c4a30 +0 -0
  536. data/test/dummy/tmp/cache/assets/DEF/140/sprockets%2F0182a5cba9d2df2eabb3783cf53a1ea9 +0 -0
  537. data/test/dummy/tmp/cache/assets/DF5/0C0/sprockets%2Faf8105cfdb7ceae04b099c4a2f654ce1 +0 -0
  538. data/test/dummy/tmp/cache/assets/DF5/4D0/sprockets%2Fa1a06ee61db75c3c0bed4caad288789b +0 -0
  539. data/test/dummy/tmp/cache/assets/DF7/110/sprockets%2F0654cdd8dfa5adb61e2029fefe5f50c0 +0 -0
  540. data/test/dummy/tmp/cache/assets/DF7/D40/sprockets%2F38cdcfc274accc45023affa7be98350c +0 -0
  541. data/test/dummy/tmp/cache/assets/DF8/570/sprockets%2Fd956ef1a15caba08edb2fc63c569f20d +0 -0
  542. data/test/dummy/tmp/cache/assets/DFB/E90/sprockets%2Ff7bd5fbb19ef32fc5a396d8012fac3f0 +0 -0
  543. data/test/dummy/tmp/cache/assets/DFC/9D0/sprockets%2F38fd8e0a2fde3b853f2a24571cd2dfdd +0 -0
  544. data/test/dummy/tmp/cache/assets/DFE/3C0/sprockets%2Fe7c824dbbee345aa5a66a56ebe82a29e +0 -0
  545. data/test/dummy/tmp/cache/assets/DFF/560/sprockets%2F5c1cedb5538de9d0c4dc9fdb62554fa1 +0 -0
  546. data/test/dummy/tmp/cache/assets/E02/B00/sprockets%2F723ccdfbeacf6c4176de34f371c91af9 +0 -0
  547. data/test/dummy/tmp/cache/assets/E02/DA0/sprockets%2F9829dec75de6c2a52fdc20d428d2edae +0 -0
  548. data/test/dummy/tmp/cache/assets/E04/860/sprockets%2F972757dbdbdfabfeac8ecb8a15520793 +0 -0
  549. data/test/dummy/tmp/cache/assets/E05/A70/sprockets%2F7a4daf48a8b7fba4f7bd770048b37fbf +0 -0
  550. data/test/dummy/tmp/cache/assets/E07/5B0/sprockets%2F75fdbfc0584a9cb9dda6428a66dec4b5 +0 -0
  551. data/test/dummy/tmp/cache/assets/E0C/810/sprockets%2Fe74897a12cedd8efea5a559354bd5bfc +0 -0
  552. data/test/dummy/tmp/cache/assets/E0F/B40/sprockets%2Ff5dfabed7f563e53d4735ef9c4b7a0e9 +0 -0
  553. data/test/dummy/tmp/cache/assets/E11/400/sprockets%2Ff6a9c23ee9f2ed728efa077ea66dfb55 +0 -0
  554. data/test/dummy/tmp/cache/assets/E11/4E0/sprockets%2F86e145a39f85cceeaffdff91ebb61449 +0 -0
  555. data/test/dummy/tmp/cache/assets/E11/C70/sprockets%2Fe5ad970d57c66489f9eebacb8e3a5ae5 +0 -0
  556. data/test/dummy/tmp/cache/assets/E13/B10/sprockets%2Fafbb0a11dcbf1c86ee74a1f22f2c173a +0 -0
  557. data/test/dummy/tmp/cache/assets/E14/0B0/sprockets%2F8bffda6f68fc139ee329bc86f6b7d2f1 +0 -0
  558. data/test/dummy/tmp/cache/assets/E1E/DE0/sprockets%2F84b3baefc2c0a8c2c9c0a92eacc3557b +0 -0
  559. data/test/dummy/tmp/cache/assets/E1F/5E0/sprockets%2Fedacf71afed14b1da329d30fcaf84091 +0 -0
  560. data/test/dummy/tmp/cache/assets/E21/330/sprockets%2F816aead61cd3e240f2bbe1e78da1fdb7 +0 -0
  561. data/test/dummy/tmp/cache/assets/E27/540/sprockets%2F3507970b2c1ccbf7b6bc37d61efadfeb +0 -0
  562. data/test/dummy/tmp/cache/assets/E2A/030/sprockets%2Fc8ab33fc707f5fb9b8befd27b142b3cb +0 -0
  563. data/test/dummy/tmp/cache/assets/E2C/EA0/sprockets%2Fcb15d5ff97502cc7dfe8a2e06ab16efb +0 -0
  564. data/test/dummy/tmp/cache/assets/E2F/3D0/sprockets%2Ff740ae8eecbaedadc3c664c62b83e925 +0 -0
  565. data/test/dummy/tmp/cache/assets/E30/C50/sprockets%2Fdaad6c4c7b1429f8de49d81fac6ad18b +0 -0
  566. data/test/dummy/tmp/cache/assets/E32/FD0/sprockets%2Fce7d29b07b2f0d14ef1add992dfafa89 +0 -0
  567. data/test/dummy/tmp/cache/assets/E36/230/sprockets%2F56aec75c7f17ef3509d4cadcf2e6fc3d +0 -0
  568. data/test/dummy/tmp/cache/assets/E37/6B0/sprockets%2Fce49aa1fbe8185b07e78cf9b9eee22ab +0 -0
  569. data/test/dummy/tmp/cache/assets/E3B/DD0/sprockets%2F8cb9fef1ee4f6bcbb80758f5c675db1a +0 -0
  570. data/test/dummy/tmp/cache/assets/E3C/680/sprockets%2Fd057ba99f8cc7b032da8ed9e8c0dff7c +0 -0
  571. data/test/dummy/tmp/cache/assets/E3E/270/sprockets%2F426e7ee1f8aeb990a55fdf8d6eefbd04 +0 -0
  572. data/test/dummy/tmp/cache/assets/E54/0F0/sprockets%2Fddbe86c2b19c9b2c5d0bca8e248a1fcb +0 -0
  573. data/test/dummy/tmp/cache/assets/E83/3A0/sprockets%2Ffdb5f7dc3aba4ce1edb8fd4bd1b42923 +0 -0
  574. data/test/dummy/tmp/cache/assets/E89/BE0/sprockets%2F9bfc41fee1adbc5e0ab3e58eafb550f9 +0 -0
  575. data/test/dummy/tmp/cache/assets/E93/2E0/sprockets%2Fba1eb3cc84f5e1fd789bf5f61a8ecdbc +0 -0
  576. metadata +90 -24
  577. data/app/assets/javascripts/Core/computeSunPosition.js +0 -116
  578. data/app/assets/javascripts/DynamicScene/CzmlCartographic.js +0 -125
  579. data/app/assets/javascripts/DynamicScene/DynamicConeVisualizer.js +0 -350
  580. data/app/assets/javascripts/Scene/ComplexConicSensorVolume.js +0 -511
  581. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeFS.glsl +0 -448
  582. data/app/assets/javascripts/Shaders/ComplexConicSensorVolumeVS.glsl +0 -19
  583. data/app/assets/javascripts/Shaders/ConstructiveSolidGeometry.glsl +0 -886
  584. data/app/assets/javascripts/Shaders/Noise.glsl +0 -453
  585. data/app/assets/javascripts/Shaders/PolygonFSPick.glsl +0 -6
  586. data/app/assets/javascripts/Shaders/PolygonVSPick.glsl +0 -30
  587. data/app/assets/javascripts/Shaders/Ray.glsl +0 -532
  588. data/app/assets/javascripts/Widgets/Animation/darker.css +0 -69
  589. data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.html +0 -4
  590. data/app/assets/javascripts/Widgets/Dojo/CesiumWidget.js +0 -348
  591. data/app/assets/javascripts/Widgets/Fullscreen/darker.css +0 -14
  592. data/app/assets/javascripts/Widgets/Images/enterFullscreen-darker.svg +0 -18
  593. data/app/assets/javascripts/Widgets/Images/exitFullscreen-darker.svg +0 -18
  594. data/app/assets/javascripts/Widgets/Images/viewControlBar.png +0 -0
  595. data/app/assets/javascripts/Widgets/Timeline/darker.css +0 -20
  596. data/app/assets/javascripts/Workers/package.json +0 -6
@@ -1,886 +0,0 @@
1
- float _czm_addWithCancellationCheck(float left, float right, float tolerance)
2
- {
3
- float difference = left + right;
4
- if ((sign(left) != sign(right)) && abs(difference / max(abs(left), abs(right))) < tolerance)
5
- {
6
- return 0.0;
7
- }
8
- else
9
- {
10
- return difference;
11
- }
12
- }
13
-
14
- /**
15
- * DOC_TBA
16
- *
17
- * @name czm_quadraticRoots
18
- * @glslStruct
19
- */
20
- struct czm_quadraticRoots
21
- {
22
- int numberOfRoots;
23
- float root0;
24
- float root1;
25
- };
26
-
27
- /**
28
- * Computes the real-valued roots of the 2nd order polynomial function of one variable with only real coefficients.
29
- *
30
- * @name czm_quadraticRealPolynomialRealRoots
31
- * @glslFunction
32
- *
33
- * @param {float} a The coefficient of the 2nd order monomial.
34
- * @param {float} b The coefficient of the 1st order monomial.
35
- * @param {float} c The coefficient of the 0th order monomial.
36
- *
37
- * @returns {czm_quadraticRoots} Zero, one, or two real-valued roots.
38
- *
39
- * @example
40
- * czm_quadraticRoots r = czm_quadraticRealPolynomialRealRoots(2.0, -4.0, -6.0); // 2(x + 1)(x - 3)
41
- * // The result is r.numberOfRoots = 2, r.root0 = -1.0, and r.root1 = 3.0.
42
- */
43
- czm_quadraticRoots czm_quadraticRealPolynomialRealRoots(float a, float b, float c)
44
- {
45
- // This function's return statements have an ANGLE workaround: http://code.google.com/p/angleproject/issues/detail?id=185
46
-
47
- const float tolerance = czm_epsilon7;
48
-
49
- if (a == 0.0)
50
- {
51
- if (b == 0.0)
52
- {
53
- // Constant function: c = 0. No real polynomial roots possible.
54
- czm_quadraticRoots r = czm_quadraticRoots(0, 0.0, 0.0);
55
- return r;
56
- }
57
- else
58
- {
59
- // Linear function: b * x + c = 0.
60
- czm_quadraticRoots r = czm_quadraticRoots(1, -c / b, 0.0);
61
- return r;
62
- }
63
- }
64
- else if (b == 0.0)
65
- {
66
- if (c == 0.0)
67
- {
68
- // 2nd order monomial: a * x^2 = 0.
69
- czm_quadraticRoots r = czm_quadraticRoots(2, 0.0, 0.0);
70
- return r;
71
- }
72
- else
73
- {
74
- float cMagnitude = abs(c);
75
- float aMagnitude = abs(a);
76
-
77
- if ((cMagnitude < aMagnitude) && (cMagnitude / aMagnitude < tolerance)) // c ~= 0.0.
78
- {
79
- // 2nd order monomial: a * x^2 = 0.
80
- czm_quadraticRoots r = czm_quadraticRoots(2, 0.0, 0.0);
81
- return r;
82
- }
83
- else if ((cMagnitude > aMagnitude) && (aMagnitude / cMagnitude < tolerance)) // a ~= 0.0.
84
- {
85
- // Constant function: c = 0.
86
- czm_quadraticRoots r = czm_quadraticRoots(0, 0.0, 0.0);
87
- return r;
88
- }
89
- else
90
- {
91
- // a * x^2 + c = 0
92
- float ratio = -c / a;
93
-
94
- if (ratio < 0.0)
95
- {
96
- // Both roots are complex.
97
- czm_quadraticRoots r = czm_quadraticRoots(0, 0.0, 0.0);
98
- return r;
99
- }
100
- else
101
- {
102
- // Both roots are real.
103
- float root = sqrt(ratio);
104
-
105
- // Return them in ascending order.
106
- czm_quadraticRoots r = czm_quadraticRoots(2, -root, root);
107
- return r;
108
- }
109
- }
110
- }
111
- }
112
- else if (c == 0.0)
113
- {
114
- // a * x^2 + b * x = 0
115
- float ratio = -b / a;
116
-
117
- // Return them in ascending order.
118
- if (ratio < 0.0)
119
- {
120
- czm_quadraticRoots r = czm_quadraticRoots(2, ratio, 0.0);
121
- return r;
122
- }
123
- else
124
- {
125
- czm_quadraticRoots r = czm_quadraticRoots(2, 0.0, ratio);
126
- return r;
127
- }
128
- }
129
- else
130
- {
131
- // a * x^2 + b * x + c = 0
132
- float b2 = b * b;
133
- float four_ac = 4.0 * a * c;
134
- float radicand = _czm_addWithCancellationCheck(b2, -four_ac, tolerance);
135
-
136
- if (radicand < 0.0)
137
- {
138
- // Both roots are complex.
139
- czm_quadraticRoots r = czm_quadraticRoots(0, 0.0, 0.0);
140
- return r;
141
- }
142
- else
143
- {
144
- // Both roots are real.
145
- float q = -0.5 * _czm_addWithCancellationCheck(b, sign(b) * sqrt(radicand), tolerance);
146
-
147
- // Return them in ascending order.
148
- if (b > 0.0)
149
- {
150
- // q < 0.0
151
- czm_quadraticRoots r = czm_quadraticRoots(2, q / a, c / q);
152
- return r;
153
- }
154
- else
155
- {
156
- // q > 0.0
157
- czm_quadraticRoots r = czm_quadraticRoots(2, c / q, q / a);
158
- return r;
159
- }
160
- }
161
- }
162
- }
163
-
164
- ///////////////////////////////////////////////////////////////////////////////
165
-
166
- /**
167
- * DOC_TBA
168
- *
169
- * @name czm_sphere
170
- * @glslStruct
171
- */
172
- struct czm_sphere
173
- {
174
- vec3 center;
175
- float radius;
176
- };
177
-
178
- /**
179
- * DOC_TBA
180
- *
181
- * @name czm_raySphereIntersectionInterval
182
- * @glslFunction
183
- *
184
- * @see czm_sphereNormal
185
- */
186
- czm_raySegment czm_raySphereIntersectionInterval(czm_ray ray, czm_sphere sphere)
187
- {
188
- // From Real-Time Rendering, Section 16.6.2, Optimized Ray/Sphere Intersection Solution, Page 741
189
-
190
- // This function's return statements have an ANGLE workaround: http://code.google.com/p/angleproject/issues/detail?id=185
191
-
192
- // PERFORMANCE_IDEA: A more optimized but less friendly function could take radius squared directly,
193
- // assume a center or origin of zero, etc.
194
-
195
- vec3 l = sphere.center - ray.origin;
196
- float s = dot(l, ray.direction);
197
- float l2 = dot(l, l);
198
- float r2 = sphere.radius * sphere.radius;
199
-
200
- if ((s < 0.0) // Looking away from sphere.
201
- && (l2 > r2)) // Outside of sphere.
202
- {
203
- return czm_emptyRaySegment; // ray does not intersect (at least not along the indicated direction).
204
- }
205
-
206
- float s2 = s * s;
207
- float m2 = l2 - s2;
208
-
209
- if (m2 > r2) // Discriminant is negative, yielding only imaginary roots.
210
- {
211
- return czm_emptyRaySegment; // ray does not intersect.
212
- }
213
-
214
- float q = sqrt(r2 - m2);
215
-
216
- if (czm_equalsEpsilon(q, 0.0)) // Discriminant is zero, yielding a double root.
217
- {
218
- return czm_raySegment(s, s); // ray is tangent.
219
- }
220
-
221
- if (l2 > r2) // Outside of sphere.
222
- {
223
- czm_raySegment i = czm_raySegment(s - q, s + q);
224
- return i;
225
- }
226
- else if (l2 < r2) // Inside of sphere.
227
- {
228
- czm_raySegment i = czm_raySegment(0.0, s + q);
229
- return i;
230
- }
231
- else if (s > 0.0) // On sphere and looking inward.
232
- {
233
- czm_raySegment i = czm_raySegment(0.0, s + q);
234
- return i;
235
- }
236
- else // On sphere and looking outward or tangent.
237
- {
238
- return czm_emptyRaySegment;
239
- }
240
- }
241
-
242
- /**
243
- * DOC_TBA
244
- *
245
- * @name czm_sphereNormal
246
- * @glslFunction
247
- *
248
- * @see czm_raySphereIntersectionInterval
249
- * @see czm_pointAlongRay
250
- */
251
- vec3 czm_sphereNormal(czm_sphere sphere, vec3 pointOnSphere)
252
- {
253
- return normalize(pointOnSphere - sphere.center);
254
- }
255
-
256
- ///////////////////////////////////////////////////////////////////////////////
257
-
258
- /**
259
- * DOC_TBA
260
- *
261
- * @name czm_cone
262
- * @glslStruct
263
- */
264
- struct czm_cone
265
- {
266
- vec3 vertex;
267
- vec3 axis; // Unit-length direction vector
268
- float halfAperture; // Measured from the cone axis to the cone wall
269
- // PERFORMANCE_IDEA: Make sure all of these are used...
270
- float cosineOfHalfAperture;
271
- float cosineSquaredOfHalfAperture;
272
- float sineOfHalfAperture;
273
- float sineSquaredOfHalfAperture;
274
- mat3 intersectionMatrix;
275
- };
276
-
277
- czm_cone czm_coneNew(vec3 vertex, vec3 axis, float halfAperture)
278
- {
279
- float cosineOfHalfAperture = cos(halfAperture);
280
- float cosineSquaredOfHalfAperture = cosineOfHalfAperture * cosineOfHalfAperture;
281
- float sineOfHalfAperture = sin(halfAperture);
282
- float sineSquaredOfHalfAperture = sineOfHalfAperture * sineOfHalfAperture;
283
-
284
- float x2 = axis.x * axis.x;
285
- float y2 = axis.y * axis.y;
286
- float z2 = axis.z * axis.z;
287
- float xy = axis.x * axis.y;
288
- float yz = axis.y * axis.z;
289
- float zx = axis.z * axis.x;
290
-
291
- // This is a symmetric matrix.
292
- mat3 intersectionMatrix = mat3(
293
- cosineSquaredOfHalfAperture - x2, -xy, -zx,
294
- -xy, cosineSquaredOfHalfAperture - y2, -yz,
295
- -zx, -yz, cosineSquaredOfHalfAperture - z2);
296
-
297
- czm_cone temp = czm_cone(vertex, axis, halfAperture,
298
- cosineOfHalfAperture, cosineSquaredOfHalfAperture,
299
- sineOfHalfAperture, sineSquaredOfHalfAperture, intersectionMatrix);
300
- return temp;
301
- }
302
-
303
- /**
304
- * Determines if a point is in, or on the boundary, of an infinite cone.
305
- *
306
- * @name czm_coneContainsPoint
307
- * @glslFunction
308
- *
309
- * @param {czm_cone} cone The infinite cone.
310
- * @param {vec3} point The point to test for containment.
311
- *
312
- * @returns {bool} <code>true</code> if the point is in the infinite cone; otherwise, <code>false</code>.
313
- *
314
- * @see czm_rayConeIntersectionInterval
315
- *
316
- * @example
317
- * czm_cone cone = czm_coneNew(vec3(0.0), vec3(0.0, 0.0, 1.0), radians(45.0)); // vertex, axis, halfAperture
318
- * vec3 point = vec3(1.0, 0.0, 0.0);
319
- * bool b = czm_coneContainsPoint(cone, point)); // false
320
- */
321
- bool czm_coneContainsPoint(czm_cone cone, vec3 point)
322
- {
323
- vec3 n = normalize(point - cone.vertex);
324
- return (dot(n, cone.axis) >= cone.cosineOfHalfAperture);
325
- }
326
-
327
- bool _czm_rayIntersectsReflectedCone(czm_ray ray, czm_cone cone, float time, float cosine)
328
- {
329
- vec3 s = ray.origin + (time * ray.direction) - cone.vertex; // The vector from the origin is at (vertex + s)
330
- vec3 sUnit = normalize(s);
331
- float c = dot(sUnit, cone.axis);
332
-
333
- return (sign(c) != sign(cosine));
334
- }
335
-
336
- /**
337
- * DOC_TBA
338
- *
339
- * @name czm_rayConeIntersectionInterval
340
- * @glslFunction
341
- *
342
- * @see czm_coneNormal
343
- * @see czm_coneContainsPoint
344
- */
345
- czm_raySegmentCollection czm_rayConeIntersectionInterval(czm_ray ray, czm_cone cone)
346
- {
347
- vec3 temp = ray.origin - cone.vertex;
348
-
349
- float t2 = dot(temp, temp);
350
-
351
- float cosineNu = dot(ray.direction, cone.axis);
352
-
353
- if (t2 == 0.0) // At vertex.
354
- {
355
- if (cosineNu >= cone.cosineOfHalfAperture) // Looking inward or along surface.
356
- {
357
- return czm_raySegmentCollectionNew(czm_fullRaySegment);
358
- }
359
- else // Looking outward.
360
- {
361
- return czm_raySegmentCollectionNew();
362
- }
363
- }
364
- else // Not at vertex
365
- {
366
- float projection = dot(normalize(temp), cone.axis);
367
-
368
- if (projection == cone.cosineOfHalfAperture) // On surface.
369
- {
370
- vec3 u = ray.direction;
371
-
372
- mat3 crossProductMatrix = mat3(0.0, -u.z, u.y,
373
- u.z, 0.0, -u.x,
374
- -u.y, u.x, 0.0);
375
- if (length(crossProductMatrix * temp) == 0.0) // Looking along surface.
376
- {
377
- if (dot(temp, u) > 0.0) // Looking away from vertex.
378
- {
379
- return czm_raySegmentCollectionNew(czm_fullRaySegment);
380
- }
381
- else // Looking toward vertex.
382
- {
383
- czm_raySegment i = czm_raySegment(0.0, length(temp));
384
- return czm_raySegmentCollectionNew(i);
385
- }
386
- }
387
- else // Looking tangent at surface.
388
- {
389
- return czm_raySegmentCollectionNew();
390
- }
391
- }
392
- else // Not on surface
393
- {
394
- vec3 t = normalize(temp);
395
-
396
- float cosineAlpha2 = cone.cosineOfHalfAperture * cone.cosineOfHalfAperture;
397
-
398
- float cosineTau = dot(t, cone.axis);
399
- float cosineDelta = dot(t, ray.direction);
400
-
401
- float cosineNu2 = cosineNu * cosineNu;
402
- float cosineTau2 = cosineTau * cosineTau;
403
-
404
- float stuff = cosineTau * cosineNu;
405
-
406
- float positiveTerm = cosineNu2 + cosineTau2;
407
- float negativeTerm = (cosineDelta * cosineDelta - 1.0) * cosineAlpha2;
408
- float signedTerm = -2.0 * stuff * cosineDelta;
409
-
410
- if (signedTerm > 0.0)
411
- {
412
- positiveTerm = positiveTerm + signedTerm;
413
- }
414
- else if (signedTerm < 0.0)
415
- {
416
- negativeTerm = negativeTerm + signedTerm;
417
- }
418
-
419
- float d = 4.0 * cosineAlpha2 * (positiveTerm + negativeTerm);
420
-
421
- if (d < 0.0) // Imaginary roots. No intersections.
422
- {
423
- if (cone.cosineOfHalfAperture < 0.0) // Obtuse cone.
424
- {
425
- return czm_raySegmentCollectionNew(czm_fullRaySegment);
426
- }
427
- else // Acute cone.
428
- {
429
- return czm_raySegmentCollectionNew();
430
- }
431
- }
432
- else if (d > 0.0) // Distinct real roots. Two intersections.
433
- {
434
- float a = cosineNu2 - cosineAlpha2;
435
- float c = cosineTau2 - cosineAlpha2;
436
- float b = 2.0 * (stuff - cosineDelta * cosineAlpha2);
437
-
438
- float s = (b == 0.0) ? 1.0 : sign(b);
439
- float q = -(b + s * sqrt(d)) / 2.0;
440
-
441
- float first = q / a;
442
- float second = c / q;
443
- if (second < first)
444
- {
445
- float thing = first;
446
- first = second;
447
- second = thing;
448
- }
449
-
450
- // Check roots to ensure that they are non-negative and intersect the desired nape of the cone.
451
- bool firstTest = (first >= 0.0) && !(sign(dot(t + first * ray.direction, cone.axis)) == -sign(cone.cosineOfHalfAperture));
452
- bool secondTest = (second >= 0.0) && !(sign(dot(t + second * ray.direction, cone.axis)) == -sign(cone.cosineOfHalfAperture));
453
-
454
- float m = sqrt(t2);
455
-
456
- if (cosineTau > cone.cosineOfHalfAperture) // Inside cone.
457
- {
458
- if (firstTest && secondTest)
459
- {
460
- // Ray starts inside cone and exits; then enters and never exits.
461
- czm_raySegment one = czm_raySegment(0.0, m * first);
462
- czm_raySegment two = czm_raySegment(m * second, czm_infinity);
463
- return czm_raySegmentCollectionNew(one, two);
464
- }
465
- else if (firstTest)
466
- {
467
- // Ray starts inside cone and exits.
468
- czm_raySegment i = czm_raySegment(0.0, m * first);
469
- return czm_raySegmentCollectionNew(i);
470
- }
471
- else if (secondTest)
472
- {
473
- // Ray starts inside cone and exits.
474
- czm_raySegment i = czm_raySegment(0.0, m * second);
475
- return czm_raySegmentCollectionNew(i);
476
- }
477
- else
478
- {
479
- // Ray starts inside cone and never exits.
480
- return czm_raySegmentCollectionNew(czm_fullRaySegment);
481
- }
482
- }
483
- else
484
- {
485
- if (firstTest && secondTest)
486
- {
487
- // Ray enters and exits.
488
- czm_raySegment i = czm_raySegment(m * first, m * second);
489
- return czm_raySegmentCollectionNew(i);
490
- }
491
- else if (firstTest)
492
- {
493
- // Ray enters and never exits.
494
- czm_raySegment i = czm_raySegment(m * first, czm_infinity);
495
- return czm_raySegmentCollectionNew(i);
496
- }
497
- else if (secondTest)
498
- {
499
- // Ray enters and never exits.
500
- czm_raySegment i = czm_raySegment(m * second, czm_infinity);
501
- return czm_raySegmentCollectionNew(i);
502
- }
503
- else
504
- {
505
- // Ray never enters.
506
- return czm_raySegmentCollectionNew();
507
- }
508
- }
509
- }
510
- else // (d == 0.0) Repeated real roots. Two intersections.
511
- {
512
- if (cone.cosineOfHalfAperture == 0.0) // Planar cone.
513
- {
514
- if (cosineTau >= 0.0) // Inside or on surface.
515
- {
516
- if (cosineNu >= 0.0) // Looking inward or tangent.
517
- {
518
- // Ray starts inside cone and never exits.
519
- return czm_raySegmentCollectionNew(czm_fullRaySegment);
520
- }
521
- else
522
- {
523
- // Ray starts inside cone and intersects.
524
- czm_raySegment i = czm_raySegment(0.0, -sqrt(t2) * cosineTau / cosineNu);
525
- return czm_raySegmentCollectionNew(i);
526
- }
527
- }
528
- else // Outside.
529
- {
530
- if (cosineNu <= 0.0) // Looking outward or tangent.
531
- {
532
- // Ray starts outside cone and never enters.
533
- return czm_raySegmentCollectionNew();
534
- }
535
- else
536
- {
537
- // Ray starts outside cone and intersects.
538
- czm_raySegment i = czm_raySegment(-sqrt(t2) * cosineTau / cosineNu, czm_infinity);
539
- return czm_raySegmentCollectionNew(i);
540
- }
541
- }
542
- }
543
- else
544
- {
545
- float a = cosineNu2 - cosineAlpha2;
546
- float c = cosineTau2 - cosineAlpha2;
547
- float b = 2.0 * (stuff - cosineDelta * cosineAlpha2);
548
-
549
- float root = (a == 0.0) ? -sign(b) * czm_infinity : (-sign(b) / sign(a)) * sqrt(c / a);
550
-
551
- // Check roots to ensure that they are non-negative and intersect the desired nape of the cone.
552
- bool rootTest = (root >= 0.0) && !(sign(dot(t + root * ray.direction, cone.axis)) == -sign(cone.cosineOfHalfAperture));
553
-
554
- float m = sqrt(t2);
555
-
556
- if (cosineTau > cone.cosineOfHalfAperture) // Inside cone.
557
- {
558
- if (rootTest)
559
- {
560
- // Ray starts inside cone and exits or becomes tangent.
561
- czm_raySegment i = czm_raySegment(0.0, m * root);
562
- return czm_raySegmentCollectionNew(i);
563
- }
564
- else
565
- {
566
- // Ray starts inside cone and never exits.
567
- return czm_raySegmentCollectionNew(czm_fullRaySegment);
568
- }
569
- }
570
- else
571
- {
572
- if (rootTest)
573
- {
574
- if (c < 0.0) // Outside both napes of the cone.
575
- {
576
- // Ray starts outside cone and becomes tangent.
577
- float thing = m * root;
578
- czm_raySegment i = czm_raySegment(thing, thing);
579
- return czm_raySegmentCollectionNew(i);
580
- }
581
- else
582
- {
583
- // Ray starts outside cone and enters at vertex.
584
- float thing = m * root;
585
- czm_raySegment i = czm_raySegment(thing, czm_infinity);
586
- return czm_raySegmentCollectionNew(i);
587
- }
588
- }
589
- else
590
- {
591
- // Ray never enters.
592
- return czm_raySegmentCollectionNew();
593
- }
594
- }
595
- }
596
- }
597
- }
598
- }
599
- }
600
-
601
- /**
602
- * DOC_TBA
603
- *
604
- * @name czm_rayConeIntersectNormal
605
- * @glslFunction
606
- *
607
- * @see czm_rayConeIntersectionInterval
608
- * @see czm_pointAlongRay
609
- *
610
- * @example
611
- * // Compute the outward-facing cone normal where a ray first intersects a cone
612
- * czm_ray ray = czm_ray(vec3(0.0), vec3(0.0, 0.0, 1.0)); // origin, direction
613
- * czm_cone cone = czm_coneNew(vec3(0.0, 0.0, 1.0), vec3(0.0, 0.0, 1.0), radians(45.0)); // vertex, axis, halfAperture
614
- * czm_raySegment i = czm_rayConeIntersectionInterval(ray, cone);
615
- * vec3 normal = czm_coneNormal(cone, czm_pointAlongRay(ray, i.start));
616
- */
617
- vec3 czm_coneNormal(czm_cone cone, vec3 pointOnCone)
618
- {
619
- // PERFORMANCE_IDEA: Remove duplicate computation with _czm_rayIntersectsReflectedCone
620
- vec3 s = pointOnCone - cone.vertex; // Vector from the origin is at (vertex + s)
621
- vec3 sUnit = normalize(s);
622
- return normalize((cone.cosineOfHalfAperture * sUnit - cone.axis) / cone.sineOfHalfAperture);
623
- }
624
-
625
- ///////////////////////////////////////////////////////////////////////////////
626
-
627
- /**
628
- * DOC_TBA
629
- *
630
- * @name czm_ellipsoidSilhouetteCone
631
- * @glslStruct
632
- */
633
- struct czm_ellipsoidSilhouetteCone
634
- {
635
- czm_ellipsoid ellipsoid;
636
- vec3 pointOutsideEllipsoid;
637
- czm_cone coneInScaledSpace;
638
- };
639
-
640
- /**
641
- * DOC_TBA
642
- *
643
- * @name czm_ellipsoidSilhouetteConeNormal
644
- * @glslFunction
645
- *
646
- */
647
- vec3 czm_ellipsoidSilhouetteConeNormal(czm_ellipsoidSilhouetteCone cone, vec3 pointOnCone)
648
- {
649
- vec3 pointOnScaledCone = cone.ellipsoid.inverseRadii * (czm_inverseView * vec4(pointOnCone, 1.0)).xyz;
650
-
651
- vec3 scaledNormal = czm_coneNormal(cone.coneInScaledSpace, pointOnScaledCone);
652
-
653
- vec3 temp = -normalize(czm_viewRotation * (cone.ellipsoid.radii * scaledNormal));
654
-
655
- return temp;
656
- }
657
-
658
- /**
659
- * DOC_TBA
660
- *
661
- * @name czm_ellipsoidSilhouetteConeNew
662
- * @glslFunction
663
- *
664
- */
665
- czm_ellipsoidSilhouetteCone czm_ellipsoidSilhouetteConeNew(czm_ellipsoid ellipsoid, vec3 pointOutsideEllipsoid)
666
- {
667
- vec3 q = ellipsoid.inverseRadii * (czm_inverseView * vec4(pointOutsideEllipsoid, 1.0)).xyz;
668
- vec3 axis = -normalize(q);
669
-
670
- float q2 = dot(q, q);
671
- float sineSquaredOfHalfAperture = 1.0 / q2;
672
- float sineOfHalfAperture = sqrt(sineSquaredOfHalfAperture);
673
- float cosineSquaredOfHalfAperture = 1.0 - sineSquaredOfHalfAperture;
674
- float cosineOfHalfAperture = sqrt(cosineSquaredOfHalfAperture);
675
- float halfAperture = atan(sineOfHalfAperture / cosineOfHalfAperture);
676
-
677
- float x2 = axis.x * axis.x;
678
- float y2 = axis.y * axis.y;
679
- float z2 = axis.z * axis.z;
680
- float xy = axis.x * axis.y;
681
- float yz = axis.y * axis.z;
682
- float zx = axis.z * axis.x;
683
-
684
- // This is a symmetric matrix.
685
- mat3 intersectionMatrix = mat3(
686
- cosineSquaredOfHalfAperture - x2, -xy, -zx,
687
- -xy, cosineSquaredOfHalfAperture - y2, -yz,
688
- -zx, -yz, cosineSquaredOfHalfAperture - z2);
689
-
690
- czm_cone coneInScaledSpace = czm_cone(q, axis, halfAperture,
691
- cosineOfHalfAperture, cosineSquaredOfHalfAperture,
692
- sineOfHalfAperture, sineSquaredOfHalfAperture, intersectionMatrix);
693
-
694
- // ANGLE workaround: http://code.google.com/p/angleproject/issues/detail?id=185
695
- czm_ellipsoidSilhouetteCone temp = czm_ellipsoidSilhouetteCone(ellipsoid, pointOutsideEllipsoid, coneInScaledSpace);
696
- return temp;
697
- }
698
-
699
- /**
700
- * DOC_TBA
701
- *
702
- * @name czm_rayEllipsoidSilhouetteConeIntersectionInterval
703
- * @glslFunction
704
- *
705
- */
706
- czm_raySegment czm_rayEllipsoidSilhouetteConeIntersectionInterval(czm_ray ray, czm_ellipsoidSilhouetteCone cone)
707
- {
708
- // Determine the ray in the scaled space.
709
- vec3 origin = cone.ellipsoid.inverseRadii * (czm_inverseView * vec4(ray.origin, 1.0)).xyz;
710
- vec3 direction = normalize(cone.ellipsoid.inverseRadii * (czm_inverseViewRotation * ray.direction));
711
- czm_ray rayInScaledSpace = czm_ray(origin, direction);
712
-
713
- // Perform the intersection in the scaled space.
714
- czm_raySegmentCollection collection = czm_rayConeIntersectionInterval(rayInScaledSpace, cone.coneInScaledSpace);
715
-
716
- if (collection.count == 0) // No intersection.
717
- {
718
- return czm_emptyRaySegment;
719
- }
720
- else // Intersection.
721
- {
722
- czm_raySegment interval = collection.intervals[0];
723
-
724
- // Honor ray origin case (start == 0.0).
725
- float start = interval.start;
726
- if (start != 0.0)
727
- {
728
- // Determine start in unscaled space.
729
- vec3 temp = (czm_view * vec4(cone.ellipsoid.radii * czm_pointAlongRay(rayInScaledSpace, start), 1.0)).xyz;
730
- start = dot(temp, ray.direction);
731
- }
732
-
733
- // Honor infinite ray (stop == infinity).
734
- float stop = interval.stop;
735
- if (stop != czm_infinity)
736
- {
737
- // Determine stop in unscaled space.
738
- vec3 temp = (czm_view * vec4(cone.ellipsoid.radii * czm_pointAlongRay(rayInScaledSpace, stop), 1.0)).xyz;
739
- stop = dot(temp, ray.direction);
740
- }
741
-
742
- return czm_raySegment(start, stop);
743
- }
744
- }
745
-
746
- ///////////////////////////////////////////////////////////////////////////////
747
-
748
- /**
749
- * DOC_TBA
750
- *
751
- * @name czm_halfspace
752
- * @glslStruct
753
- */
754
- struct czm_halfspace
755
- {
756
- vec3 center;
757
- vec3 normal; // Unit vector.
758
- };
759
-
760
- /**
761
- * DOC_TBA
762
- *
763
- * @name czm_rayHalfspaceIntersectionInterval
764
- * @glslFunction
765
- *
766
- */
767
- czm_raySegment czm_rayHalfspaceIntersectionInterval(czm_ray ray, czm_halfspace halfspace)
768
- {
769
- float numerator = dot(halfspace.center - ray.origin, halfspace.normal);
770
- float denominator = dot(ray.direction, halfspace.normal);
771
-
772
- if (numerator > 0.0) // Inside.
773
- {
774
- if (denominator > 0.0) // Looking outward.
775
- {
776
- return czm_raySegment(0.0, numerator / denominator);
777
- }
778
- else // Looking inward or parallel.
779
- {
780
- return czm_fullRaySegment;
781
- }
782
- }
783
- else if (numerator < 0.0) // Outside.
784
- {
785
- if (denominator < 0.0 ) // Looking inward.
786
- {
787
- return czm_raySegment(numerator / denominator, czm_infinity);
788
- }
789
- else // Looking outward or parallel.
790
- {
791
- return czm_emptyRaySegment;
792
- }
793
- }
794
- else // On surface.
795
- {
796
- if (denominator < 0.0 ) // Looking inward.
797
- {
798
- return czm_fullRaySegment;
799
- }
800
- else // Looking outward or parallel.
801
- {
802
- return czm_emptyRaySegment;
803
- }
804
- }
805
- }
806
-
807
- ///////////////////////////////////////////////////////////////////////////////
808
-
809
- /**
810
- * DOC_TBA
811
- *
812
- * @name czm_ellipsoidSilhouetteHalfspace
813
- * @glslStruct
814
- */
815
- struct czm_ellipsoidSilhouetteHalfspace
816
- {
817
- czm_ellipsoid ellipsoid;
818
- vec3 pointOutsideEllipsoid;
819
- czm_halfspace halfspaceInScaledSpace;
820
- };
821
-
822
- /**
823
- * DOC_TBA
824
- *
825
- * @name czm_ellipsoidSilhouetteHalfspaceNew
826
- * @glslFunction
827
- *
828
- */
829
- czm_ellipsoidSilhouetteHalfspace czm_ellipsoidSilhouetteHalfspaceNew(czm_ellipsoid ellipsoid, vec3 pointOutsideEllipsoid)
830
- {
831
- vec3 q = ellipsoid.inverseRadii * (czm_inverseView * vec4(pointOutsideEllipsoid, 1.0)).xyz;
832
- float magnitude = 1.0 / length(q);
833
- vec3 normal = normalize(q);
834
- vec3 center = magnitude * normal;
835
-
836
- czm_halfspace halfspaceInScaledSpace = czm_halfspace(center, normal);
837
-
838
- // ANGLE workaround: http://code.google.com/p/angleproject/issues/detail?id=185
839
- czm_ellipsoidSilhouetteHalfspace temp = czm_ellipsoidSilhouetteHalfspace(ellipsoid, pointOutsideEllipsoid, halfspaceInScaledSpace);
840
- return temp;
841
- }
842
-
843
- /**
844
- * DOC_TBA
845
- *
846
- * @name czm_rayEllipsoidSilhouetteHalfspaceIntersectionInterval
847
- * @glslFunction
848
- *
849
- */
850
- czm_raySegment czm_rayEllipsoidSilhouetteHalfspaceIntersectionInterval(czm_ray ray, czm_ellipsoidSilhouetteHalfspace halfspace)
851
- {
852
- // Determine the ray in the scaled space.
853
- vec3 origin = halfspace.ellipsoid.inverseRadii * (czm_inverseView * vec4(ray.origin, 1.0)).xyz;
854
- vec3 direction = halfspace.ellipsoid.inverseRadii * (czm_inverseViewRotation * ray.direction);
855
- czm_ray rayInScaledSpace = czm_ray(origin, direction);
856
-
857
- // Perform the intersection in the scaled space.
858
- czm_raySegment interval = czm_rayHalfspaceIntersectionInterval(rayInScaledSpace, halfspace.halfspaceInScaledSpace);
859
-
860
- if (czm_isEmpty(interval)) // No intersection.
861
- {
862
- return interval;
863
- }
864
- else // Intersection.
865
- {
866
- // Honor ray origin case (start == 0.0).
867
- float start = interval.start;
868
- if (start != 0.0)
869
- {
870
- // Determine start in unscaled space.
871
- vec3 temp = (czm_view * vec4(halfspace.ellipsoid.radii * czm_pointAlongRay(rayInScaledSpace, start), 1.0)).xyz;
872
- start = dot(temp, ray.direction);
873
- }
874
-
875
- // Honor infinite ray (stop == infinity).
876
- float stop = interval.stop;
877
- if (stop != czm_infinity)
878
- {
879
- // Determine stop in unscaled space.
880
- vec3 temp = (czm_view * vec4(halfspace.ellipsoid.radii * czm_pointAlongRay(rayInScaledSpace, stop), 1.0)).xyz;
881
- stop = dot(temp, ray.direction);
882
- }
883
-
884
- return czm_raySegment(start, stop);
885
- }
886
- }