oxymoron 1.0.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (854) hide show
  1. checksums.yaml +7 -0
  2. data/.DS_Store +0 -0
  3. data/.gitignore +10 -0
  4. data/Gemfile +13 -0
  5. data/MIT-LICENSE +20 -0
  6. data/README.RU.md +324 -0
  7. data/README.md +319 -0
  8. data/Rakefile +34 -0
  9. data/app/.DS_Store +0 -0
  10. data/app/assets/.DS_Store +0 -0
  11. data/app/assets/javascripts/.DS_Store +0 -0
  12. data/app/assets/javascripts/oxymoron/.DS_Store +0 -0
  13. data/app/assets/javascripts/oxymoron/config.js.erb +5 -0
  14. data/app/assets/javascripts/oxymoron/config/debug.js.erb +4 -0
  15. data/app/assets/javascripts/oxymoron/config/http.js +8 -0
  16. data/app/assets/javascripts/oxymoron/config/states.js.erb +89 -0
  17. data/app/assets/javascripts/oxymoron/directives.js.erb +6 -0
  18. data/app/assets/javascripts/oxymoron/directives/checklist_model.js +141 -0
  19. data/app/assets/javascripts/oxymoron/directives/click_outside.js +25 -0
  20. data/app/assets/javascripts/oxymoron/directives/content_for.js +24 -0
  21. data/app/assets/javascripts/oxymoron/directives/fileupload.js +68 -0
  22. data/app/assets/javascripts/oxymoron/notifier.js.erb +39 -0
  23. data/app/assets/javascripts/oxymoron/oxymoron.js.erb +11 -0
  24. data/app/assets/javascripts/oxymoron/routes.js.erb +66 -0
  25. data/app/assets/javascripts/oxymoron/services.js.erb +6 -0
  26. data/app/assets/javascripts/oxymoron/services/interceptor.js +20 -0
  27. data/app/assets/javascripts/oxymoron/services/resources.js.erb +12 -0
  28. data/app/assets/javascripts/oxymoron/services/sign.js +25 -0
  29. data/app/assets/javascripts/oxymoron/services/validate.js +41 -0
  30. data/app/assets/javascripts/oxymoron/states.js.erb +3 -0
  31. data/app/helpers/form_helper.rb +35 -0
  32. data/app/helpers/oxymoron_form_builder.rb +81 -0
  33. data/lib/.DS_Store +0 -0
  34. data/lib/oxymoron.rb +123 -0
  35. data/lib/oxymoron/concern.rb +21 -0
  36. data/lib/oxymoron/engine.rb +35 -0
  37. data/lib/oxymoron/version.rb +3 -0
  38. data/lib/tasks/oxymoron_tasks.rake +4 -0
  39. data/oxymoron.gemspec +24 -0
  40. data/test/dummy/README.rdoc +28 -0
  41. data/test/dummy/Rakefile +6 -0
  42. data/test/dummy/app/assets/images/.keep +0 -0
  43. data/test/dummy/app/assets/javascripts/application.js +13 -0
  44. data/test/dummy/app/assets/stylesheets/application.css +15 -0
  45. data/test/dummy/app/controllers/application_controller.rb +5 -0
  46. data/test/dummy/app/controllers/concerns/.keep +0 -0
  47. data/test/dummy/app/helpers/application_helper.rb +2 -0
  48. data/test/dummy/app/mailers/.keep +0 -0
  49. data/test/dummy/app/models/.keep +0 -0
  50. data/test/dummy/app/models/concerns/.keep +0 -0
  51. data/test/dummy/app/views/layouts/application.html.erb +14 -0
  52. data/test/dummy/config.ru +4 -0
  53. data/test/dummy/config/application.rb +26 -0
  54. data/test/dummy/config/boot.rb +5 -0
  55. data/test/dummy/config/database.yml +25 -0
  56. data/test/dummy/config/environment.rb +5 -0
  57. data/test/dummy/config/environments/development.rb +41 -0
  58. data/test/dummy/config/environments/production.rb +79 -0
  59. data/test/dummy/config/environments/test.rb +42 -0
  60. data/test/dummy/config/initializers/assets.rb +11 -0
  61. data/test/dummy/config/initializers/backtrace_silencers.rb +7 -0
  62. data/test/dummy/config/initializers/cookies_serializer.rb +3 -0
  63. data/test/dummy/config/initializers/filter_parameter_logging.rb +4 -0
  64. data/test/dummy/config/initializers/inflections.rb +16 -0
  65. data/test/dummy/config/initializers/mime_types.rb +4 -0
  66. data/test/dummy/config/initializers/session_store.rb +3 -0
  67. data/test/dummy/config/initializers/wrap_parameters.rb +14 -0
  68. data/test/dummy/config/locales/en.yml +23 -0
  69. data/test/dummy/config/routes.rb +56 -0
  70. data/test/dummy/config/secrets.yml +22 -0
  71. data/test/dummy/lib/assets/.keep +0 -0
  72. data/test/dummy/log/.keep +0 -0
  73. data/test/dummy/public/404.html +67 -0
  74. data/test/dummy/public/422.html +67 -0
  75. data/test/dummy/public/500.html +66 -0
  76. data/test/dummy/public/favicon.ico +0 -0
  77. data/test/oxymoron_test.rb +7 -0
  78. data/test/test_helper.rb +19 -0
  79. data/vendor/.DS_Store +0 -0
  80. data/vendor/assets/.DS_Store +0 -0
  81. data/vendor/assets/javascripts/.DS_Store +0 -0
  82. data/vendor/assets/javascripts/oxymoron/.DS_Store +0 -0
  83. data/vendor/assets/javascripts/oxymoron/angular-animate.js +3928 -0
  84. data/vendor/assets/javascripts/oxymoron/angular-aria.js +397 -0
  85. data/vendor/assets/javascripts/oxymoron/angular-cookies.js +321 -0
  86. data/vendor/assets/javascripts/oxymoron/angular-loader.js +443 -0
  87. data/vendor/assets/javascripts/oxymoron/angular-message-format.js +980 -0
  88. data/vendor/assets/javascripts/oxymoron/angular-messages.js +685 -0
  89. data/vendor/assets/javascripts/oxymoron/angular-mocks.js +2470 -0
  90. data/vendor/assets/javascripts/oxymoron/angular-resource.js +675 -0
  91. data/vendor/assets/javascripts/oxymoron/angular-route.js +991 -0
  92. data/vendor/assets/javascripts/oxymoron/angular-sanitize.js +683 -0
  93. data/vendor/assets/javascripts/oxymoron/angular-scenario.js +40324 -0
  94. data/vendor/assets/javascripts/oxymoron/angular-touch.js +628 -0
  95. data/vendor/assets/javascripts/oxymoron/angular-ui-router.js +4390 -0
  96. data/vendor/assets/javascripts/oxymoron/angular.js +28904 -0
  97. data/vendor/assets/javascripts/oxymoron/dcbox.js +311 -0
  98. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_aa-dj.js +128 -0
  99. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_aa-er.js +128 -0
  100. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_aa-et.js +128 -0
  101. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_aa.js +128 -0
  102. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_af-na.js +110 -0
  103. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_af-za.js +110 -0
  104. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_af.js +110 -0
  105. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_agq-cm.js +128 -0
  106. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_agq.js +128 -0
  107. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ak-gh.js +128 -0
  108. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ak.js +128 -0
  109. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_am-et.js +110 -0
  110. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_am.js +110 -0
  111. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ar-001.js +110 -0
  112. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ar-ae.js +110 -0
  113. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ar-bh.js +110 -0
  114. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ar-dj.js +110 -0
  115. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ar-dz.js +110 -0
  116. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ar-eg.js +110 -0
  117. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ar-eh.js +110 -0
  118. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ar-er.js +110 -0
  119. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ar-il.js +110 -0
  120. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ar-iq.js +110 -0
  121. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ar-jo.js +110 -0
  122. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ar-km.js +110 -0
  123. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ar-kw.js +110 -0
  124. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ar-lb.js +110 -0
  125. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ar-ly.js +110 -0
  126. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ar-ma.js +110 -0
  127. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ar-mr.js +110 -0
  128. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ar-om.js +110 -0
  129. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ar-ps.js +110 -0
  130. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ar-qa.js +110 -0
  131. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ar-sa.js +110 -0
  132. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ar-sd.js +110 -0
  133. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ar-so.js +110 -0
  134. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ar-ss.js +110 -0
  135. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ar-sy.js +110 -0
  136. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ar-td.js +110 -0
  137. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ar-tn.js +110 -0
  138. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ar-ye.js +110 -0
  139. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ar.js +110 -0
  140. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_as-in.js +128 -0
  141. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_as.js +128 -0
  142. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_asa-tz.js +128 -0
  143. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_asa.js +128 -0
  144. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ast-es.js +128 -0
  145. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ast.js +128 -0
  146. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_az-cyrl-az.js +110 -0
  147. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_az-cyrl.js +110 -0
  148. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_az-latn-az.js +110 -0
  149. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_az-latn.js +110 -0
  150. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_az.js +110 -0
  151. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_bas-cm.js +128 -0
  152. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_bas.js +128 -0
  153. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_be-by.js +110 -0
  154. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_be.js +110 -0
  155. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_bem-zm.js +128 -0
  156. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_bem.js +128 -0
  157. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_bez-tz.js +128 -0
  158. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_bez.js +128 -0
  159. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_bg-bg.js +110 -0
  160. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_bg.js +110 -0
  161. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_bm-latn-ml.js +128 -0
  162. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_bm-latn.js +128 -0
  163. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_bm-ml.js +115 -0
  164. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_bm.js +128 -0
  165. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_bn-bd.js +110 -0
  166. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_bn-in.js +110 -0
  167. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_bn.js +110 -0
  168. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_bo-cn.js +128 -0
  169. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_bo-in.js +128 -0
  170. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_bo.js +128 -0
  171. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_br-fr.js +110 -0
  172. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_br.js +110 -0
  173. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_brx-in.js +128 -0
  174. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_brx.js +128 -0
  175. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_bs-cyrl-ba.js +128 -0
  176. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_bs-cyrl.js +128 -0
  177. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_bs-latn-ba.js +128 -0
  178. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_bs-latn.js +128 -0
  179. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_bs.js +128 -0
  180. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_byn-er.js +115 -0
  181. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_byn.js +115 -0
  182. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ca-ad.js +128 -0
  183. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ca-es-valencia.js +128 -0
  184. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ca-es.js +128 -0
  185. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ca-fr.js +128 -0
  186. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ca-it.js +128 -0
  187. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ca.js +128 -0
  188. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_cgg-ug.js +128 -0
  189. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_cgg.js +128 -0
  190. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_chr-us.js +110 -0
  191. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_chr.js +110 -0
  192. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ckb-arab-iq.js +128 -0
  193. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ckb-arab-ir.js +128 -0
  194. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ckb-arab.js +128 -0
  195. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ckb-iq.js +128 -0
  196. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ckb-ir.js +128 -0
  197. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ckb-latn-iq.js +128 -0
  198. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ckb-latn.js +128 -0
  199. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ckb.js +128 -0
  200. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_cs-cz.js +128 -0
  201. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_cs.js +128 -0
  202. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_cy-gb.js +110 -0
  203. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_cy.js +110 -0
  204. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_da-dk.js +141 -0
  205. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_da-gl.js +141 -0
  206. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_da.js +141 -0
  207. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_dav-ke.js +128 -0
  208. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_dav.js +128 -0
  209. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_de-at.js +128 -0
  210. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_de-be.js +128 -0
  211. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_de-ch.js +128 -0
  212. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_de-de.js +128 -0
  213. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_de-li.js +128 -0
  214. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_de-lu.js +128 -0
  215. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_de.js +128 -0
  216. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_dje-ne.js +128 -0
  217. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_dje.js +128 -0
  218. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_dsb-de.js +128 -0
  219. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_dsb.js +128 -0
  220. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_dua-cm.js +128 -0
  221. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_dua.js +128 -0
  222. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_dyo-sn.js +128 -0
  223. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_dyo.js +128 -0
  224. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_dz-bt.js +128 -0
  225. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_dz.js +128 -0
  226. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ebu-ke.js +128 -0
  227. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ebu.js +128 -0
  228. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ee-gh.js +128 -0
  229. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ee-tg.js +128 -0
  230. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ee.js +128 -0
  231. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_el-cy.js +110 -0
  232. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_el-gr.js +110 -0
  233. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_el.js +110 -0
  234. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-001.js +128 -0
  235. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-150.js +128 -0
  236. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-ag.js +128 -0
  237. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-ai.js +128 -0
  238. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-as.js +128 -0
  239. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-au.js +128 -0
  240. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-bb.js +128 -0
  241. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-be.js +128 -0
  242. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-bm.js +128 -0
  243. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-bs.js +128 -0
  244. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-bw.js +128 -0
  245. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-bz.js +128 -0
  246. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-ca.js +128 -0
  247. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-cc.js +128 -0
  248. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-ck.js +128 -0
  249. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-cm.js +128 -0
  250. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-cx.js +128 -0
  251. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-dg.js +128 -0
  252. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-dm.js +128 -0
  253. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-er.js +128 -0
  254. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-fj.js +128 -0
  255. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-fk.js +128 -0
  256. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-fm.js +128 -0
  257. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-gb.js +128 -0
  258. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-gd.js +128 -0
  259. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-gg.js +128 -0
  260. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-gh.js +128 -0
  261. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-gi.js +128 -0
  262. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-gm.js +128 -0
  263. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-gu.js +128 -0
  264. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-gy.js +128 -0
  265. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-hk.js +128 -0
  266. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-ie.js +128 -0
  267. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-im.js +128 -0
  268. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-in.js +128 -0
  269. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-io.js +128 -0
  270. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-iso.js +128 -0
  271. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-je.js +128 -0
  272. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-jm.js +128 -0
  273. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-ke.js +128 -0
  274. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-ki.js +128 -0
  275. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-kn.js +128 -0
  276. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-ky.js +128 -0
  277. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-lc.js +128 -0
  278. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-lr.js +128 -0
  279. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-ls.js +128 -0
  280. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-mg.js +128 -0
  281. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-mh.js +128 -0
  282. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-mo.js +128 -0
  283. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-mp.js +128 -0
  284. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-ms.js +128 -0
  285. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-mt.js +128 -0
  286. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-mu.js +128 -0
  287. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-mw.js +128 -0
  288. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-my.js +128 -0
  289. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-na.js +128 -0
  290. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-nf.js +128 -0
  291. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-ng.js +128 -0
  292. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-nr.js +128 -0
  293. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-nu.js +128 -0
  294. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-nz.js +128 -0
  295. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-pg.js +128 -0
  296. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-ph.js +128 -0
  297. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-pk.js +128 -0
  298. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-pn.js +128 -0
  299. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-pr.js +128 -0
  300. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-pw.js +128 -0
  301. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-rw.js +128 -0
  302. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-sb.js +128 -0
  303. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-sc.js +128 -0
  304. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-sd.js +128 -0
  305. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-sg.js +128 -0
  306. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-sh.js +128 -0
  307. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-sl.js +128 -0
  308. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-ss.js +128 -0
  309. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-sx.js +128 -0
  310. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-sz.js +128 -0
  311. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-tc.js +128 -0
  312. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-tk.js +128 -0
  313. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-to.js +128 -0
  314. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-tt.js +128 -0
  315. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-tv.js +128 -0
  316. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-tz.js +128 -0
  317. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-ug.js +128 -0
  318. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-um.js +128 -0
  319. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-us.js +128 -0
  320. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-vc.js +128 -0
  321. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-vg.js +128 -0
  322. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-vi.js +128 -0
  323. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-vu.js +128 -0
  324. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-ws.js +128 -0
  325. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-za.js +128 -0
  326. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-zm.js +128 -0
  327. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en-zw.js +128 -0
  328. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_en.js +128 -0
  329. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_eo-001.js +128 -0
  330. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_eo.js +128 -0
  331. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_es-419.js +110 -0
  332. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_es-ar.js +110 -0
  333. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_es-bo.js +110 -0
  334. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_es-cl.js +110 -0
  335. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_es-co.js +110 -0
  336. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_es-cr.js +110 -0
  337. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_es-cu.js +110 -0
  338. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_es-do.js +110 -0
  339. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_es-ea.js +110 -0
  340. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_es-ec.js +110 -0
  341. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_es-es.js +110 -0
  342. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_es-gq.js +110 -0
  343. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_es-gt.js +110 -0
  344. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_es-hn.js +110 -0
  345. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_es-ic.js +110 -0
  346. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_es-mx.js +110 -0
  347. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_es-ni.js +110 -0
  348. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_es-pa.js +110 -0
  349. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_es-pe.js +110 -0
  350. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_es-ph.js +110 -0
  351. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_es-pr.js +110 -0
  352. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_es-py.js +110 -0
  353. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_es-sv.js +110 -0
  354. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_es-us.js +110 -0
  355. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_es-uy.js +110 -0
  356. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_es-ve.js +110 -0
  357. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_es.js +110 -0
  358. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_et-ee.js +128 -0
  359. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_et.js +128 -0
  360. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_eu-es.js +110 -0
  361. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_eu.js +110 -0
  362. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ewo-cm.js +128 -0
  363. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ewo.js +128 -0
  364. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fa-af.js +110 -0
  365. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fa-ir.js +110 -0
  366. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fa.js +110 -0
  367. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ff-cm.js +128 -0
  368. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ff-gn.js +128 -0
  369. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ff-mr.js +128 -0
  370. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ff-sn.js +128 -0
  371. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ff.js +128 -0
  372. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fi-fi.js +128 -0
  373. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fi.js +128 -0
  374. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fil-ph.js +128 -0
  375. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fil.js +128 -0
  376. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fo-fo.js +128 -0
  377. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fo.js +128 -0
  378. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-be.js +110 -0
  379. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-bf.js +110 -0
  380. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-bi.js +110 -0
  381. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-bj.js +110 -0
  382. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-bl.js +110 -0
  383. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-ca.js +110 -0
  384. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-cd.js +110 -0
  385. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-cf.js +110 -0
  386. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-cg.js +110 -0
  387. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-ch.js +110 -0
  388. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-ci.js +110 -0
  389. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-cm.js +110 -0
  390. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-dj.js +110 -0
  391. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-dz.js +110 -0
  392. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-fr.js +110 -0
  393. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-ga.js +110 -0
  394. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-gf.js +110 -0
  395. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-gn.js +110 -0
  396. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-gp.js +110 -0
  397. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-gq.js +110 -0
  398. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-ht.js +110 -0
  399. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-km.js +110 -0
  400. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-lu.js +110 -0
  401. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-ma.js +110 -0
  402. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-mc.js +110 -0
  403. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-mf.js +110 -0
  404. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-mg.js +110 -0
  405. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-ml.js +110 -0
  406. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-mq.js +110 -0
  407. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-mr.js +110 -0
  408. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-mu.js +110 -0
  409. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-nc.js +110 -0
  410. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-ne.js +110 -0
  411. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-pf.js +110 -0
  412. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-pm.js +110 -0
  413. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-re.js +110 -0
  414. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-rw.js +110 -0
  415. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-sc.js +110 -0
  416. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-sn.js +110 -0
  417. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-sy.js +110 -0
  418. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-td.js +110 -0
  419. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-tg.js +110 -0
  420. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-tn.js +110 -0
  421. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-vu.js +110 -0
  422. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-wf.js +110 -0
  423. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr-yt.js +110 -0
  424. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fr.js +110 -0
  425. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fur-it.js +128 -0
  426. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fur.js +128 -0
  427. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fy-nl.js +128 -0
  428. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_fy.js +128 -0
  429. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ga-ie.js +110 -0
  430. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ga.js +110 -0
  431. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_gd-gb.js +128 -0
  432. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_gd.js +128 -0
  433. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_gl-es.js +128 -0
  434. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_gl.js +128 -0
  435. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_gsw-ch.js +110 -0
  436. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_gsw-fr.js +110 -0
  437. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_gsw-li.js +110 -0
  438. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_gsw.js +110 -0
  439. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_gu-in.js +110 -0
  440. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_gu.js +110 -0
  441. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_guz-ke.js +128 -0
  442. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_guz.js +128 -0
  443. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_gv-im.js +128 -0
  444. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_gv.js +128 -0
  445. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ha-latn-gh.js +128 -0
  446. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ha-latn-ne.js +128 -0
  447. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ha-latn-ng.js +128 -0
  448. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ha-latn.js +128 -0
  449. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ha.js +128 -0
  450. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_haw-us.js +110 -0
  451. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_haw.js +110 -0
  452. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_he-il.js +128 -0
  453. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_he.js +128 -0
  454. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_hi-in.js +110 -0
  455. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_hi.js +110 -0
  456. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_hr-ba.js +128 -0
  457. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_hr-hr.js +128 -0
  458. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_hr.js +128 -0
  459. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_hsb-de.js +128 -0
  460. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_hsb.js +128 -0
  461. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_hu-hu.js +110 -0
  462. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_hu.js +110 -0
  463. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_hy-am.js +110 -0
  464. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_hy.js +110 -0
  465. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ia-fr.js +128 -0
  466. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ia.js +128 -0
  467. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_id-id.js +110 -0
  468. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_id.js +110 -0
  469. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ig-ng.js +128 -0
  470. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ig.js +128 -0
  471. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ii-cn.js +128 -0
  472. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ii.js +128 -0
  473. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_in.js +110 -0
  474. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_is-is.js +141 -0
  475. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_is.js +141 -0
  476. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_it-ch.js +128 -0
  477. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_it-it.js +128 -0
  478. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_it-sm.js +128 -0
  479. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_it.js +128 -0
  480. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_iw.js +128 -0
  481. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ja-jp.js +110 -0
  482. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ja.js +110 -0
  483. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_jgo-cm.js +128 -0
  484. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_jgo.js +128 -0
  485. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_jmc-tz.js +128 -0
  486. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_jmc.js +128 -0
  487. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ka-ge.js +110 -0
  488. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ka.js +110 -0
  489. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_kab-dz.js +128 -0
  490. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_kab.js +128 -0
  491. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_kam-ke.js +128 -0
  492. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_kam.js +128 -0
  493. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_kde-tz.js +128 -0
  494. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_kde.js +128 -0
  495. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_kea-cv.js +128 -0
  496. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_kea.js +128 -0
  497. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_khq-ml.js +128 -0
  498. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_khq.js +128 -0
  499. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ki-ke.js +128 -0
  500. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ki.js +128 -0
  501. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_kk-cyrl-kz.js +110 -0
  502. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_kk-cyrl.js +110 -0
  503. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_kk.js +110 -0
  504. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_kkj-cm.js +128 -0
  505. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_kkj.js +128 -0
  506. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_kl-gl.js +128 -0
  507. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_kl.js +128 -0
  508. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_kln-ke.js +128 -0
  509. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_kln.js +128 -0
  510. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_km-kh.js +110 -0
  511. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_km.js +110 -0
  512. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_kn-in.js +110 -0
  513. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_kn.js +110 -0
  514. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ko-kp.js +110 -0
  515. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ko-kr.js +110 -0
  516. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ko.js +110 -0
  517. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_kok-in.js +128 -0
  518. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_kok.js +128 -0
  519. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ks-arab-in.js +128 -0
  520. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ks-arab.js +128 -0
  521. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ks.js +128 -0
  522. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ksb-tz.js +128 -0
  523. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ksb.js +128 -0
  524. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ksf-cm.js +128 -0
  525. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ksf.js +128 -0
  526. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ksh-de.js +128 -0
  527. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ksh.js +128 -0
  528. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_kw-gb.js +128 -0
  529. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_kw.js +128 -0
  530. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ky-cyrl-kg.js +110 -0
  531. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ky-cyrl.js +110 -0
  532. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ky.js +110 -0
  533. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_lag-tz.js +128 -0
  534. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_lag.js +128 -0
  535. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_lb-lu.js +128 -0
  536. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_lb.js +128 -0
  537. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_lg-ug.js +128 -0
  538. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_lg.js +128 -0
  539. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_lkt-us.js +128 -0
  540. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_lkt.js +128 -0
  541. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ln-ao.js +110 -0
  542. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ln-cd.js +110 -0
  543. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ln-cf.js +110 -0
  544. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ln-cg.js +110 -0
  545. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ln.js +110 -0
  546. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_lo-la.js +110 -0
  547. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_lo.js +110 -0
  548. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_lt-lt.js +128 -0
  549. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_lt.js +128 -0
  550. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_lu-cd.js +128 -0
  551. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_lu.js +128 -0
  552. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_luo-ke.js +128 -0
  553. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_luo.js +128 -0
  554. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_luy-ke.js +128 -0
  555. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_luy.js +128 -0
  556. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_lv-lv.js +128 -0
  557. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_lv.js +128 -0
  558. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_mas-ke.js +128 -0
  559. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_mas-tz.js +128 -0
  560. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_mas.js +128 -0
  561. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_mer-ke.js +128 -0
  562. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_mer.js +128 -0
  563. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_mfe-mu.js +128 -0
  564. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_mfe.js +128 -0
  565. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_mg-mg.js +128 -0
  566. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_mg.js +128 -0
  567. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_mgh-mz.js +128 -0
  568. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_mgh.js +128 -0
  569. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_mgo-cm.js +128 -0
  570. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_mgo.js +128 -0
  571. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_mk-mk.js +128 -0
  572. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_mk.js +128 -0
  573. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ml-in.js +110 -0
  574. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ml.js +110 -0
  575. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_mn-cyrl-mn.js +110 -0
  576. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_mn-cyrl.js +110 -0
  577. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_mn.js +110 -0
  578. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_mr-in.js +110 -0
  579. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_mr.js +110 -0
  580. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ms-latn-bn.js +110 -0
  581. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ms-latn-my.js +110 -0
  582. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ms-latn-sg.js +110 -0
  583. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ms-latn.js +110 -0
  584. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ms.js +110 -0
  585. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_mt-mt.js +110 -0
  586. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_mt.js +110 -0
  587. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_mua-cm.js +128 -0
  588. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_mua.js +128 -0
  589. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_my-mm.js +110 -0
  590. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_my.js +110 -0
  591. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_naq-na.js +128 -0
  592. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_naq.js +128 -0
  593. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_nb-no.js +110 -0
  594. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_nb-sj.js +110 -0
  595. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_nb.js +110 -0
  596. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_nd-zw.js +128 -0
  597. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_nd.js +128 -0
  598. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ne-in.js +110 -0
  599. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ne-np.js +110 -0
  600. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ne.js +110 -0
  601. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_nl-aw.js +128 -0
  602. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_nl-be.js +128 -0
  603. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_nl-bq.js +128 -0
  604. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_nl-cw.js +128 -0
  605. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_nl-nl.js +128 -0
  606. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_nl-sr.js +128 -0
  607. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_nl-sx.js +128 -0
  608. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_nl.js +128 -0
  609. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_nmg-cm.js +128 -0
  610. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_nmg.js +128 -0
  611. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_nn-no.js +128 -0
  612. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_nn.js +128 -0
  613. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_nnh-cm.js +128 -0
  614. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_nnh.js +128 -0
  615. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_no-no.js +110 -0
  616. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_no.js +110 -0
  617. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_nr-za.js +128 -0
  618. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_nr.js +128 -0
  619. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_nso-za.js +128 -0
  620. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_nso.js +128 -0
  621. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_nus-sd.js +128 -0
  622. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_nus.js +128 -0
  623. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_nyn-ug.js +128 -0
  624. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_nyn.js +128 -0
  625. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_om-et.js +128 -0
  626. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_om-ke.js +128 -0
  627. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_om.js +128 -0
  628. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_or-in.js +110 -0
  629. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_or.js +110 -0
  630. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_os-ge.js +128 -0
  631. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_os-ru.js +128 -0
  632. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_os.js +128 -0
  633. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_pa-arab-pk.js +110 -0
  634. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_pa-arab.js +110 -0
  635. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_pa-guru-in.js +110 -0
  636. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_pa-guru.js +110 -0
  637. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_pa.js +110 -0
  638. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_pl-pl.js +128 -0
  639. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_pl.js +128 -0
  640. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ps-af.js +128 -0
  641. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ps.js +128 -0
  642. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_pt-ao.js +110 -0
  643. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_pt-br.js +110 -0
  644. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_pt-cv.js +110 -0
  645. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_pt-gw.js +110 -0
  646. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_pt-mo.js +110 -0
  647. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_pt-mz.js +110 -0
  648. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_pt-pt.js +110 -0
  649. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_pt-st.js +110 -0
  650. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_pt-tl.js +110 -0
  651. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_pt.js +110 -0
  652. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_qu-bo.js +128 -0
  653. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_qu-ec.js +128 -0
  654. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_qu-pe.js +128 -0
  655. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_qu.js +128 -0
  656. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_rm-ch.js +128 -0
  657. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_rm.js +128 -0
  658. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_rn-bi.js +128 -0
  659. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_rn.js +128 -0
  660. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ro-md.js +128 -0
  661. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ro-ro.js +128 -0
  662. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ro.js +128 -0
  663. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_rof-tz.js +128 -0
  664. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_rof.js +128 -0
  665. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ru-by.js +128 -0
  666. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ru-kg.js +128 -0
  667. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ru-kz.js +128 -0
  668. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ru-md.js +128 -0
  669. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ru-ru.js +128 -0
  670. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ru-ua.js +128 -0
  671. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ru.js +128 -0
  672. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_rw-rw.js +128 -0
  673. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_rw.js +128 -0
  674. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_rwk-tz.js +128 -0
  675. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_rwk.js +128 -0
  676. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sah-ru.js +128 -0
  677. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sah.js +128 -0
  678. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_saq-ke.js +128 -0
  679. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_saq.js +128 -0
  680. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sbp-tz.js +128 -0
  681. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sbp.js +128 -0
  682. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_se-fi.js +128 -0
  683. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_se-no.js +128 -0
  684. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_se-se.js +128 -0
  685. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_se.js +128 -0
  686. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_seh-mz.js +128 -0
  687. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_seh.js +128 -0
  688. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ses-ml.js +128 -0
  689. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ses.js +128 -0
  690. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sg-cf.js +128 -0
  691. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sg.js +128 -0
  692. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_shi-latn-ma.js +128 -0
  693. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_shi-latn.js +128 -0
  694. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_shi-tfng-ma.js +128 -0
  695. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_shi-tfng.js +128 -0
  696. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_shi.js +128 -0
  697. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_si-lk.js +128 -0
  698. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_si.js +128 -0
  699. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sk-sk.js +128 -0
  700. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sk.js +128 -0
  701. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sl-si.js +128 -0
  702. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sl.js +128 -0
  703. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_smn-fi.js +128 -0
  704. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_smn.js +128 -0
  705. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sn-zw.js +128 -0
  706. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sn.js +128 -0
  707. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_so-dj.js +128 -0
  708. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_so-et.js +128 -0
  709. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_so-ke.js +128 -0
  710. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_so-so.js +128 -0
  711. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_so.js +128 -0
  712. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sq-al.js +110 -0
  713. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sq-mk.js +110 -0
  714. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sq-xk.js +110 -0
  715. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sq.js +110 -0
  716. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sr-cyrl-ba.js +128 -0
  717. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sr-cyrl-me.js +128 -0
  718. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sr-cyrl-rs.js +128 -0
  719. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sr-cyrl-xk.js +128 -0
  720. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sr-cyrl.js +128 -0
  721. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sr-latn-ba.js +128 -0
  722. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sr-latn-me.js +128 -0
  723. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sr-latn-rs.js +128 -0
  724. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sr-latn-xk.js +128 -0
  725. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sr-latn.js +128 -0
  726. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sr.js +128 -0
  727. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ss-sz.js +128 -0
  728. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ss-za.js +128 -0
  729. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ss.js +128 -0
  730. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ssy-er.js +128 -0
  731. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ssy.js +128 -0
  732. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_st-ls.js +115 -0
  733. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_st-za.js +115 -0
  734. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_st.js +115 -0
  735. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sv-ax.js +128 -0
  736. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sv-fi.js +128 -0
  737. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sv-se.js +128 -0
  738. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sv.js +128 -0
  739. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sw-cd.js +128 -0
  740. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sw-ke.js +128 -0
  741. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sw-tz.js +128 -0
  742. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sw-ug.js +128 -0
  743. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_sw.js +128 -0
  744. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_swc-cd.js +128 -0
  745. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_swc.js +128 -0
  746. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ta-in.js +110 -0
  747. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ta-lk.js +110 -0
  748. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ta-my.js +110 -0
  749. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ta-sg.js +110 -0
  750. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ta.js +110 -0
  751. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_te-in.js +110 -0
  752. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_te.js +110 -0
  753. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_teo-ke.js +128 -0
  754. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_teo-ug.js +128 -0
  755. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_teo.js +128 -0
  756. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_tg-cyrl-tj.js +115 -0
  757. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_tg-cyrl.js +115 -0
  758. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_tg.js +115 -0
  759. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_th-th.js +110 -0
  760. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_th.js +110 -0
  761. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ti-er.js +128 -0
  762. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ti-et.js +128 -0
  763. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ti.js +128 -0
  764. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_tig-er.js +115 -0
  765. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_tig.js +115 -0
  766. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_tl.js +128 -0
  767. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_tn-bw.js +128 -0
  768. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_tn-za.js +128 -0
  769. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_tn.js +128 -0
  770. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_to-to.js +128 -0
  771. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_to.js +128 -0
  772. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_tr-cy.js +110 -0
  773. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_tr-tr.js +110 -0
  774. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_tr.js +110 -0
  775. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ts-za.js +128 -0
  776. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ts.js +128 -0
  777. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_twq-ne.js +128 -0
  778. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_twq.js +128 -0
  779. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_tzm-latn-ma.js +128 -0
  780. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_tzm-latn.js +128 -0
  781. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_tzm.js +128 -0
  782. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ug-arab-cn.js +128 -0
  783. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ug-arab.js +128 -0
  784. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ug.js +128 -0
  785. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_uk-ua.js +128 -0
  786. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_uk.js +128 -0
  787. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ur-in.js +128 -0
  788. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ur-pk.js +128 -0
  789. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ur.js +128 -0
  790. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_uz-arab-af.js +110 -0
  791. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_uz-arab.js +110 -0
  792. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_uz-cyrl-uz.js +110 -0
  793. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_uz-cyrl.js +110 -0
  794. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_uz-latn-uz.js +110 -0
  795. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_uz-latn.js +110 -0
  796. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_uz.js +110 -0
  797. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_vai-latn-lr.js +128 -0
  798. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_vai-latn.js +128 -0
  799. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_vai-vaii-lr.js +128 -0
  800. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_vai-vaii.js +128 -0
  801. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_vai.js +128 -0
  802. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ve-za.js +128 -0
  803. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_ve.js +128 -0
  804. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_vi-vn.js +110 -0
  805. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_vi.js +110 -0
  806. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_vo-001.js +128 -0
  807. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_vo.js +128 -0
  808. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_vun-tz.js +128 -0
  809. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_vun.js +128 -0
  810. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_wae-ch.js +128 -0
  811. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_wae.js +128 -0
  812. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_wal-et.js +115 -0
  813. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_wal.js +115 -0
  814. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_xh-za.js +115 -0
  815. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_xh.js +115 -0
  816. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_xog-ug.js +128 -0
  817. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_xog.js +128 -0
  818. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_yav-cm.js +128 -0
  819. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_yav.js +128 -0
  820. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_yi-001.js +128 -0
  821. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_yi.js +128 -0
  822. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_yo-bj.js +128 -0
  823. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_yo-ng.js +128 -0
  824. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_yo.js +128 -0
  825. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_zgh-ma.js +128 -0
  826. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_zgh.js +128 -0
  827. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_zh-cn.js +110 -0
  828. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_zh-hans-cn.js +110 -0
  829. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_zh-hans-hk.js +110 -0
  830. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_zh-hans-mo.js +110 -0
  831. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_zh-hans-sg.js +110 -0
  832. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_zh-hans.js +110 -0
  833. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_zh-hant-hk.js +110 -0
  834. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_zh-hant-mo.js +110 -0
  835. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_zh-hant-tw.js +110 -0
  836. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_zh-hant.js +110 -0
  837. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_zh-hk.js +110 -0
  838. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_zh-tw.js +110 -0
  839. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_zh.js +110 -0
  840. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_zu-za.js +110 -0
  841. data/vendor/assets/javascripts/oxymoron/i18n/angular-locale_zu.js +110 -0
  842. data/vendor/assets/javascripts/oxymoron/jquery.min.js +4 -0
  843. data/vendor/assets/javascripts/oxymoron/ng-notify.js +1 -0
  844. data/vendor/assets/javascripts/oxymoron/pace.js +2 -0
  845. data/vendor/assets/javascripts/oxymoron/perfect-scrollbar.js +1588 -0
  846. data/vendor/assets/javascripts/oxymoron/store.js +191 -0
  847. data/vendor/assets/javascripts/oxymoron/underscore.js +1548 -0
  848. data/vendor/assets/stylesheets/.DS_Store +0 -0
  849. data/vendor/assets/stylesheets/oxymoron/md-data-table.css +482 -0
  850. data/vendor/assets/stylesheets/oxymoron/ng-notify.css +40 -0
  851. data/vendor/assets/stylesheets/oxymoron/normalize.css +427 -0
  852. data/vendor/assets/stylesheets/oxymoron/pace.css +41 -0
  853. data/vendor/assets/stylesheets/oxymoron/perfect-scrollbar.css +1 -0
  854. metadata +1004 -0
@@ -0,0 +1,443 @@
1
+ /**
2
+ * @license AngularJS v1.4.7
3
+ * (c) 2010-2015 Google, Inc. http://angularjs.org
4
+ * License: MIT
5
+ */
6
+
7
+ (function() {'use strict';
8
+ function isFunction(value) {return typeof value === 'function';};
9
+
10
+ /**
11
+ * @description
12
+ *
13
+ * This object provides a utility for producing rich Error messages within
14
+ * Angular. It can be called as follows:
15
+ *
16
+ * var exampleMinErr = minErr('example');
17
+ * throw exampleMinErr('one', 'This {0} is {1}', foo, bar);
18
+ *
19
+ * The above creates an instance of minErr in the example namespace. The
20
+ * resulting error will have a namespaced error code of example.one. The
21
+ * resulting error will replace {0} with the value of foo, and {1} with the
22
+ * value of bar. The object is not restricted in the number of arguments it can
23
+ * take.
24
+ *
25
+ * If fewer arguments are specified than necessary for interpolation, the extra
26
+ * interpolation markers will be preserved in the final string.
27
+ *
28
+ * Since data will be parsed statically during a build step, some restrictions
29
+ * are applied with respect to how minErr instances are created and called.
30
+ * Instances should have names of the form namespaceMinErr for a minErr created
31
+ * using minErr('namespace') . Error codes, namespaces and template strings
32
+ * should all be static strings, not variables or general expressions.
33
+ *
34
+ * @param {string} module The namespace to use for the new minErr instance.
35
+ * @param {function} ErrorConstructor Custom error constructor to be instantiated when returning
36
+ * error from returned function, for cases when a particular type of error is useful.
37
+ * @returns {function(code:string, template:string, ...templateArgs): Error} minErr instance
38
+ */
39
+
40
+ function minErr(module, ErrorConstructor) {
41
+ ErrorConstructor = ErrorConstructor || Error;
42
+ return function() {
43
+ var SKIP_INDEXES = 2;
44
+
45
+ var templateArgs = arguments,
46
+ code = templateArgs[0],
47
+ message = '[' + (module ? module + ':' : '') + code + '] ',
48
+ template = templateArgs[1],
49
+ paramPrefix, i;
50
+
51
+ message += template.replace(/\{\d+\}/g, function(match) {
52
+ var index = +match.slice(1, -1),
53
+ shiftedIndex = index + SKIP_INDEXES;
54
+
55
+ if (shiftedIndex < templateArgs.length) {
56
+ return toDebugString(templateArgs[shiftedIndex]);
57
+ }
58
+
59
+ return match;
60
+ });
61
+
62
+ message += '\nhttp://errors.angularjs.org/1.4.7/' +
63
+ (module ? module + '/' : '') + code;
64
+
65
+ for (i = SKIP_INDEXES, paramPrefix = '?'; i < templateArgs.length; i++, paramPrefix = '&') {
66
+ message += paramPrefix + 'p' + (i - SKIP_INDEXES) + '=' +
67
+ encodeURIComponent(toDebugString(templateArgs[i]));
68
+ }
69
+
70
+ return new ErrorConstructor(message);
71
+ };
72
+ }
73
+
74
+ /**
75
+ * @ngdoc type
76
+ * @name angular.Module
77
+ * @module ng
78
+ * @description
79
+ *
80
+ * Interface for configuring angular {@link angular.module modules}.
81
+ */
82
+
83
+ function setupModuleLoader(window) {
84
+
85
+ var $injectorMinErr = minErr('$injector');
86
+ var ngMinErr = minErr('ng');
87
+
88
+ function ensure(obj, name, factory) {
89
+ return obj[name] || (obj[name] = factory());
90
+ }
91
+
92
+ var angular = ensure(window, 'angular', Object);
93
+
94
+ // We need to expose `angular.$$minErr` to modules such as `ngResource` that reference it during bootstrap
95
+ angular.$$minErr = angular.$$minErr || minErr;
96
+
97
+ return ensure(angular, 'module', function() {
98
+ /** @type {Object.<string, angular.Module>} */
99
+ var modules = {};
100
+
101
+ /**
102
+ * @ngdoc function
103
+ * @name angular.module
104
+ * @module ng
105
+ * @description
106
+ *
107
+ * The `angular.module` is a global place for creating, registering and retrieving Angular
108
+ * modules.
109
+ * All modules (angular core or 3rd party) that should be available to an application must be
110
+ * registered using this mechanism.
111
+ *
112
+ * Passing one argument retrieves an existing {@link angular.Module},
113
+ * whereas passing more than one argument creates a new {@link angular.Module}
114
+ *
115
+ *
116
+ * # Module
117
+ *
118
+ * A module is a collection of services, directives, controllers, filters, and configuration information.
119
+ * `angular.module` is used to configure the {@link auto.$injector $injector}.
120
+ *
121
+ * ```js
122
+ * // Create a new module
123
+ * var myModule = angular.module('myModule', []);
124
+ *
125
+ * // register a new service
126
+ * myModule.value('appName', 'MyCoolApp');
127
+ *
128
+ * // configure existing services inside initialization blocks.
129
+ * myModule.config(['$locationProvider', function($locationProvider) {
130
+ * // Configure existing providers
131
+ * $locationProvider.hashPrefix('!');
132
+ * }]);
133
+ * ```
134
+ *
135
+ * Then you can create an injector and load your modules like this:
136
+ *
137
+ * ```js
138
+ * var injector = angular.injector(['ng', 'myModule'])
139
+ * ```
140
+ *
141
+ * However it's more likely that you'll just use
142
+ * {@link ng.directive:ngApp ngApp} or
143
+ * {@link angular.bootstrap} to simplify this process for you.
144
+ *
145
+ * @param {!string} name The name of the module to create or retrieve.
146
+ * @param {!Array.<string>=} requires If specified then new module is being created. If
147
+ * unspecified then the module is being retrieved for further configuration.
148
+ * @param {Function=} configFn Optional configuration function for the module. Same as
149
+ * {@link angular.Module#config Module#config()}.
150
+ * @returns {module} new module with the {@link angular.Module} api.
151
+ */
152
+ return function module(name, requires, configFn) {
153
+ var assertNotHasOwnProperty = function(name, context) {
154
+ if (name === 'hasOwnProperty') {
155
+ throw ngMinErr('badname', 'hasOwnProperty is not a valid {0} name', context);
156
+ }
157
+ };
158
+
159
+ assertNotHasOwnProperty(name, 'module');
160
+ if (requires && modules.hasOwnProperty(name)) {
161
+ modules[name] = null;
162
+ }
163
+ return ensure(modules, name, function() {
164
+ if (!requires) {
165
+ throw $injectorMinErr('nomod', "Module '{0}' is not available! You either misspelled " +
166
+ "the module name or forgot to load it. If registering a module ensure that you " +
167
+ "specify the dependencies as the second argument.", name);
168
+ }
169
+
170
+ /** @type {!Array.<Array.<*>>} */
171
+ var invokeQueue = [];
172
+
173
+ /** @type {!Array.<Function>} */
174
+ var configBlocks = [];
175
+
176
+ /** @type {!Array.<Function>} */
177
+ var runBlocks = [];
178
+
179
+ var config = invokeLater('$injector', 'invoke', 'push', configBlocks);
180
+
181
+ /** @type {angular.Module} */
182
+ var moduleInstance = {
183
+ // Private state
184
+ _invokeQueue: invokeQueue,
185
+ _configBlocks: configBlocks,
186
+ _runBlocks: runBlocks,
187
+
188
+ /**
189
+ * @ngdoc property
190
+ * @name angular.Module#requires
191
+ * @module ng
192
+ *
193
+ * @description
194
+ * Holds the list of modules which the injector will load before the current module is
195
+ * loaded.
196
+ */
197
+ requires: requires,
198
+
199
+ /**
200
+ * @ngdoc property
201
+ * @name angular.Module#name
202
+ * @module ng
203
+ *
204
+ * @description
205
+ * Name of the module.
206
+ */
207
+ name: name,
208
+
209
+
210
+ /**
211
+ * @ngdoc method
212
+ * @name angular.Module#provider
213
+ * @module ng
214
+ * @param {string} name service name
215
+ * @param {Function} providerType Construction function for creating new instance of the
216
+ * service.
217
+ * @description
218
+ * See {@link auto.$provide#provider $provide.provider()}.
219
+ */
220
+ provider: invokeLaterAndSetModuleName('$provide', 'provider'),
221
+
222
+ /**
223
+ * @ngdoc method
224
+ * @name angular.Module#factory
225
+ * @module ng
226
+ * @param {string} name service name
227
+ * @param {Function} providerFunction Function for creating new instance of the service.
228
+ * @description
229
+ * See {@link auto.$provide#factory $provide.factory()}.
230
+ */
231
+ factory: invokeLaterAndSetModuleName('$provide', 'factory'),
232
+
233
+ /**
234
+ * @ngdoc method
235
+ * @name angular.Module#service
236
+ * @module ng
237
+ * @param {string} name service name
238
+ * @param {Function} constructor A constructor function that will be instantiated.
239
+ * @description
240
+ * See {@link auto.$provide#service $provide.service()}.
241
+ */
242
+ service: invokeLaterAndSetModuleName('$provide', 'service'),
243
+
244
+ /**
245
+ * @ngdoc method
246
+ * @name angular.Module#value
247
+ * @module ng
248
+ * @param {string} name service name
249
+ * @param {*} object Service instance object.
250
+ * @description
251
+ * See {@link auto.$provide#value $provide.value()}.
252
+ */
253
+ value: invokeLater('$provide', 'value'),
254
+
255
+ /**
256
+ * @ngdoc method
257
+ * @name angular.Module#constant
258
+ * @module ng
259
+ * @param {string} name constant name
260
+ * @param {*} object Constant value.
261
+ * @description
262
+ * Because the constant are fixed, they get applied before other provide methods.
263
+ * See {@link auto.$provide#constant $provide.constant()}.
264
+ */
265
+ constant: invokeLater('$provide', 'constant', 'unshift'),
266
+
267
+ /**
268
+ * @ngdoc method
269
+ * @name angular.Module#decorator
270
+ * @module ng
271
+ * @param {string} The name of the service to decorate.
272
+ * @param {Function} This function will be invoked when the service needs to be
273
+ * instantiated and should return the decorated service instance.
274
+ * @description
275
+ * See {@link auto.$provide#decorator $provide.decorator()}.
276
+ */
277
+ decorator: invokeLaterAndSetModuleName('$provide', 'decorator'),
278
+
279
+ /**
280
+ * @ngdoc method
281
+ * @name angular.Module#animation
282
+ * @module ng
283
+ * @param {string} name animation name
284
+ * @param {Function} animationFactory Factory function for creating new instance of an
285
+ * animation.
286
+ * @description
287
+ *
288
+ * **NOTE**: animations take effect only if the **ngAnimate** module is loaded.
289
+ *
290
+ *
291
+ * Defines an animation hook that can be later used with
292
+ * {@link $animate $animate} service and directives that use this service.
293
+ *
294
+ * ```js
295
+ * module.animation('.animation-name', function($inject1, $inject2) {
296
+ * return {
297
+ * eventName : function(element, done) {
298
+ * //code to run the animation
299
+ * //once complete, then run done()
300
+ * return function cancellationFunction(element) {
301
+ * //code to cancel the animation
302
+ * }
303
+ * }
304
+ * }
305
+ * })
306
+ * ```
307
+ *
308
+ * See {@link ng.$animateProvider#register $animateProvider.register()} and
309
+ * {@link ngAnimate ngAnimate module} for more information.
310
+ */
311
+ animation: invokeLaterAndSetModuleName('$animateProvider', 'register'),
312
+
313
+ /**
314
+ * @ngdoc method
315
+ * @name angular.Module#filter
316
+ * @module ng
317
+ * @param {string} name Filter name - this must be a valid angular expression identifier
318
+ * @param {Function} filterFactory Factory function for creating new instance of filter.
319
+ * @description
320
+ * See {@link ng.$filterProvider#register $filterProvider.register()}.
321
+ *
322
+ * <div class="alert alert-warning">
323
+ * **Note:** Filter names must be valid angular {@link expression} identifiers, such as `uppercase` or `orderBy`.
324
+ * Names with special characters, such as hyphens and dots, are not allowed. If you wish to namespace
325
+ * your filters, then you can use capitalization (`myappSubsectionFilterx`) or underscores
326
+ * (`myapp_subsection_filterx`).
327
+ * </div>
328
+ */
329
+ filter: invokeLaterAndSetModuleName('$filterProvider', 'register'),
330
+
331
+ /**
332
+ * @ngdoc method
333
+ * @name angular.Module#controller
334
+ * @module ng
335
+ * @param {string|Object} name Controller name, or an object map of controllers where the
336
+ * keys are the names and the values are the constructors.
337
+ * @param {Function} constructor Controller constructor function.
338
+ * @description
339
+ * See {@link ng.$controllerProvider#register $controllerProvider.register()}.
340
+ */
341
+ controller: invokeLaterAndSetModuleName('$controllerProvider', 'register'),
342
+
343
+ /**
344
+ * @ngdoc method
345
+ * @name angular.Module#directive
346
+ * @module ng
347
+ * @param {string|Object} name Directive name, or an object map of directives where the
348
+ * keys are the names and the values are the factories.
349
+ * @param {Function} directiveFactory Factory function for creating new instance of
350
+ * directives.
351
+ * @description
352
+ * See {@link ng.$compileProvider#directive $compileProvider.directive()}.
353
+ */
354
+ directive: invokeLaterAndSetModuleName('$compileProvider', 'directive'),
355
+
356
+ /**
357
+ * @ngdoc method
358
+ * @name angular.Module#config
359
+ * @module ng
360
+ * @param {Function} configFn Execute this function on module load. Useful for service
361
+ * configuration.
362
+ * @description
363
+ * Use this method to register work which needs to be performed on module loading.
364
+ * For more about how to configure services, see
365
+ * {@link providers#provider-recipe Provider Recipe}.
366
+ */
367
+ config: config,
368
+
369
+ /**
370
+ * @ngdoc method
371
+ * @name angular.Module#run
372
+ * @module ng
373
+ * @param {Function} initializationFn Execute this function after injector creation.
374
+ * Useful for application initialization.
375
+ * @description
376
+ * Use this method to register work which should be performed when the injector is done
377
+ * loading all modules.
378
+ */
379
+ run: function(block) {
380
+ runBlocks.push(block);
381
+ return this;
382
+ }
383
+ };
384
+
385
+ if (configFn) {
386
+ config(configFn);
387
+ }
388
+
389
+ return moduleInstance;
390
+
391
+ /**
392
+ * @param {string} provider
393
+ * @param {string} method
394
+ * @param {String=} insertMethod
395
+ * @returns {angular.Module}
396
+ */
397
+ function invokeLater(provider, method, insertMethod, queue) {
398
+ if (!queue) queue = invokeQueue;
399
+ return function() {
400
+ queue[insertMethod || 'push']([provider, method, arguments]);
401
+ return moduleInstance;
402
+ };
403
+ }
404
+
405
+ /**
406
+ * @param {string} provider
407
+ * @param {string} method
408
+ * @returns {angular.Module}
409
+ */
410
+ function invokeLaterAndSetModuleName(provider, method) {
411
+ return function(recipeName, factoryFunction) {
412
+ if (factoryFunction && isFunction(factoryFunction)) factoryFunction.$$moduleName = name;
413
+ invokeQueue.push([provider, method, arguments]);
414
+ return moduleInstance;
415
+ };
416
+ }
417
+ });
418
+ };
419
+ });
420
+
421
+ }
422
+
423
+ setupModuleLoader(window);
424
+ })(window);
425
+
426
+ /**
427
+ * Closure compiler type information
428
+ *
429
+ * @typedef { {
430
+ * requires: !Array.<string>,
431
+ * invokeQueue: !Array.<Array.<*>>,
432
+ *
433
+ * service: function(string, Function):angular.Module,
434
+ * factory: function(string, Function):angular.Module,
435
+ * value: function(string, *):angular.Module,
436
+ *
437
+ * filter: function(string, Function):angular.Module,
438
+ *
439
+ * init: function(Function):angular.Module
440
+ * } }
441
+ */
442
+ angular.Module;
443
+
@@ -0,0 +1,980 @@
1
+ /**
2
+ * @license AngularJS v1.4.7
3
+ * (c) 2010-2015 Google, Inc. http://angularjs.org
4
+ * License: MIT
5
+ */
6
+ (function(window, angular, undefined) {'use strict';
7
+
8
+ // NOTE: ADVANCED_OPTIMIZATIONS mode.
9
+ //
10
+ // This file is compiled with Closure compiler's ADVANCED_OPTIMIZATIONS flag! Be wary of using
11
+ // constructs incompatible with that mode.
12
+
13
+ var $interpolateMinErr = window['angular']['$interpolateMinErr'];
14
+
15
+ var noop = window['angular']['noop'],
16
+ isFunction = window['angular']['isFunction'],
17
+ toJson = window['angular']['toJson'];
18
+
19
+ function stringify(value) {
20
+ if (value == null /* null/undefined */) { return ''; }
21
+ switch (typeof value) {
22
+ case 'string': return value;
23
+ case 'number': return '' + value;
24
+ default: return toJson(value);
25
+ }
26
+ }
27
+
28
+ // Convert an index into the string into line/column for use in error messages
29
+ // As such, this doesn't have to be efficient.
30
+ function indexToLineAndColumn(text, index) {
31
+ var lines = text.split(/\n/g);
32
+ for (var i=0; i < lines.length; i++) {
33
+ var line=lines[i];
34
+ if (index >= line.length) {
35
+ index -= line.length;
36
+ } else {
37
+ return { line: i + 1, column: index + 1 };
38
+ }
39
+ }
40
+ }
41
+ var PARSE_CACHE_FOR_TEXT_LITERALS = Object.create(null);
42
+
43
+ function parseTextLiteral(text) {
44
+ var cachedFn = PARSE_CACHE_FOR_TEXT_LITERALS[text];
45
+ if (cachedFn != null) {
46
+ return cachedFn;
47
+ }
48
+ function parsedFn(context) { return text; }
49
+ parsedFn['$$watchDelegate'] = function watchDelegate(scope, listener, objectEquality) {
50
+ var unwatch = scope['$watch'](noop,
51
+ function textLiteralWatcher() {
52
+ if (isFunction(listener)) { listener.call(null, text, text, scope); }
53
+ unwatch();
54
+ },
55
+ objectEquality);
56
+ return unwatch;
57
+ };
58
+ PARSE_CACHE_FOR_TEXT_LITERALS[text] = parsedFn;
59
+ parsedFn['exp'] = text; // Needed to pretend to be $interpolate for tests copied from interpolateSpec.js
60
+ parsedFn['expressions'] = []; // Require this to call $compile.$$addBindingInfo() which allows Protractor to find elements by binding.
61
+ return parsedFn;
62
+ }
63
+
64
+ function subtractOffset(expressionFn, offset) {
65
+ if (offset === 0) {
66
+ return expressionFn;
67
+ }
68
+ function minusOffset(value) {
69
+ return (value == void 0) ? value : value - offset;
70
+ }
71
+ function parsedFn(context) { return minusOffset(expressionFn(context)); }
72
+ var unwatch;
73
+ parsedFn['$$watchDelegate'] = function watchDelegate(scope, listener, objectEquality) {
74
+ unwatch = scope['$watch'](expressionFn,
75
+ function pluralExpressionWatchListener(newValue, oldValue) {
76
+ if (isFunction(listener)) { listener.call(null, minusOffset(newValue), minusOffset(oldValue), scope); }
77
+ },
78
+ objectEquality);
79
+ return unwatch;
80
+ };
81
+ return parsedFn;
82
+ }
83
+
84
+ // NOTE: ADVANCED_OPTIMIZATIONS mode.
85
+ //
86
+ // This file is compiled with Closure compiler's ADVANCED_OPTIMIZATIONS flag! Be wary of using
87
+ // constructs incompatible with that mode.
88
+
89
+ /* global $interpolateMinErr: false */
90
+ /* global isFunction: false */
91
+ /* global noop: false */
92
+
93
+ /**
94
+ * @constructor
95
+ * @private
96
+ */
97
+ function MessageSelectorBase(expressionFn, choices) {
98
+ var self = this;
99
+ this.expressionFn = expressionFn;
100
+ this.choices = choices;
101
+ if (choices["other"] === void 0) {
102
+ throw $interpolateMinErr('reqother', '“other” is a required option.');
103
+ }
104
+ this.parsedFn = function(context) { return self.getResult(context); };
105
+ this.parsedFn['$$watchDelegate'] = function $$watchDelegate(scope, listener, objectEquality) {
106
+ return self.watchDelegate(scope, listener, objectEquality);
107
+ };
108
+ this.parsedFn['exp'] = expressionFn['exp'];
109
+ this.parsedFn['expressions'] = expressionFn['expressions'];
110
+ }
111
+
112
+ MessageSelectorBase.prototype.getMessageFn = function getMessageFn(value) {
113
+ return this.choices[this.categorizeValue(value)];
114
+ };
115
+
116
+ MessageSelectorBase.prototype.getResult = function getResult(context) {
117
+ return this.getMessageFn(this.expressionFn(context))(context);
118
+ };
119
+
120
+ MessageSelectorBase.prototype.watchDelegate = function watchDelegate(scope, listener, objectEquality) {
121
+ var watchers = new MessageSelectorWatchers(this, scope, listener, objectEquality);
122
+ return function() { watchers.cancelWatch(); };
123
+ };
124
+
125
+ /**
126
+ * @constructor
127
+ * @private
128
+ */
129
+ function MessageSelectorWatchers(msgSelector, scope, listener, objectEquality) {
130
+ var self = this;
131
+ this.scope = scope;
132
+ this.msgSelector = msgSelector;
133
+ this.listener = listener;
134
+ this.objectEquality = objectEquality;
135
+ this.lastMessage = void 0;
136
+ this.messageFnWatcher = noop;
137
+ var expressionFnListener = function(newValue, oldValue) { return self.expressionFnListener(newValue, oldValue); };
138
+ this.expressionFnWatcher = scope['$watch'](msgSelector.expressionFn, expressionFnListener, objectEquality);
139
+ }
140
+
141
+ MessageSelectorWatchers.prototype.expressionFnListener = function expressionFnListener(newValue, oldValue) {
142
+ var self = this;
143
+ this.messageFnWatcher();
144
+ var messageFnListener = function(newMessage, oldMessage) { return self.messageFnListener(newMessage, oldMessage); };
145
+ var messageFn = this.msgSelector.getMessageFn(newValue);
146
+ this.messageFnWatcher = this.scope['$watch'](messageFn, messageFnListener, this.objectEquality);
147
+ };
148
+
149
+ MessageSelectorWatchers.prototype.messageFnListener = function messageFnListener(newMessage, oldMessage) {
150
+ if (isFunction(this.listener)) {
151
+ this.listener.call(null, newMessage, newMessage === oldMessage ? newMessage : this.lastMessage, this.scope);
152
+ }
153
+ this.lastMessage = newMessage;
154
+ };
155
+
156
+ MessageSelectorWatchers.prototype.cancelWatch = function cancelWatch() {
157
+ this.expressionFnWatcher();
158
+ this.messageFnWatcher();
159
+ };
160
+
161
+ /**
162
+ * @constructor
163
+ * @extends MessageSelectorBase
164
+ * @private
165
+ */
166
+ function SelectMessage(expressionFn, choices) {
167
+ MessageSelectorBase.call(this, expressionFn, choices);
168
+ }
169
+
170
+ function SelectMessageProto() {}
171
+ SelectMessageProto.prototype = MessageSelectorBase.prototype;
172
+
173
+ SelectMessage.prototype = new SelectMessageProto();
174
+ SelectMessage.prototype.categorizeValue = function categorizeSelectValue(value) {
175
+ return (this.choices[value] !== void 0) ? value : "other";
176
+ };
177
+
178
+ /**
179
+ * @constructor
180
+ * @extends MessageSelectorBase
181
+ * @private
182
+ */
183
+ function PluralMessage(expressionFn, choices, offset, pluralCat) {
184
+ MessageSelectorBase.call(this, expressionFn, choices);
185
+ this.offset = offset;
186
+ this.pluralCat = pluralCat;
187
+ }
188
+
189
+ function PluralMessageProto() {}
190
+ PluralMessageProto.prototype = MessageSelectorBase.prototype;
191
+
192
+ PluralMessage.prototype = new PluralMessageProto();
193
+ PluralMessage.prototype.categorizeValue = function categorizePluralValue(value) {
194
+ if (isNaN(value)) {
195
+ return "other";
196
+ } else if (this.choices[value] !== void 0) {
197
+ return value;
198
+ } else {
199
+ var category = this.pluralCat(value - this.offset);
200
+ return (this.choices[category] !== void 0) ? category : "other";
201
+ }
202
+ };
203
+
204
+ // NOTE: ADVANCED_OPTIMIZATIONS mode.
205
+ //
206
+ // This file is compiled with Closure compiler's ADVANCED_OPTIMIZATIONS flag! Be wary of using
207
+ // constructs incompatible with that mode.
208
+
209
+ /* global $interpolateMinErr: false */
210
+ /* global isFunction: false */
211
+ /* global parseTextLiteral: false */
212
+
213
+ /**
214
+ * @constructor
215
+ * @private
216
+ */
217
+ function InterpolationParts(trustedContext, allOrNothing) {
218
+ this.trustedContext = trustedContext;
219
+ this.allOrNothing = allOrNothing;
220
+ this.textParts = [];
221
+ this.expressionFns = [];
222
+ this.expressionIndices = [];
223
+ this.partialText = '';
224
+ this.concatParts = null;
225
+ }
226
+
227
+ InterpolationParts.prototype.flushPartialText = function flushPartialText() {
228
+ if (this.partialText) {
229
+ if (this.concatParts == null) {
230
+ this.textParts.push(this.partialText);
231
+ } else {
232
+ this.textParts.push(this.concatParts.join(''));
233
+ this.concatParts = null;
234
+ }
235
+ this.partialText = '';
236
+ }
237
+ };
238
+
239
+ InterpolationParts.prototype.addText = function addText(text) {
240
+ if (text.length) {
241
+ if (!this.partialText) {
242
+ this.partialText = text;
243
+ } else if (this.concatParts) {
244
+ this.concatParts.push(text);
245
+ } else {
246
+ this.concatParts = [this.partialText, text];
247
+ }
248
+ }
249
+ };
250
+
251
+ InterpolationParts.prototype.addExpressionFn = function addExpressionFn(expressionFn) {
252
+ this.flushPartialText();
253
+ this.expressionIndices.push(this.textParts.length);
254
+ this.expressionFns.push(expressionFn);
255
+ this.textParts.push('');
256
+ };
257
+
258
+ InterpolationParts.prototype.getExpressionValues = function getExpressionValues(context) {
259
+ var expressionValues = new Array(this.expressionFns.length);
260
+ for (var i = 0; i < this.expressionFns.length; i++) {
261
+ expressionValues[i] = this.expressionFns[i](context);
262
+ }
263
+ return expressionValues;
264
+ };
265
+
266
+ InterpolationParts.prototype.getResult = function getResult(expressionValues) {
267
+ for (var i = 0; i < this.expressionIndices.length; i++) {
268
+ var expressionValue = expressionValues[i];
269
+ if (this.allOrNothing && expressionValue === void 0) return;
270
+ this.textParts[this.expressionIndices[i]] = expressionValue;
271
+ }
272
+ return this.textParts.join('');
273
+ };
274
+
275
+
276
+ InterpolationParts.prototype.toParsedFn = function toParsedFn(mustHaveExpression, originalText) {
277
+ var self = this;
278
+ this.flushPartialText();
279
+ if (mustHaveExpression && this.expressionFns.length === 0) {
280
+ return void 0;
281
+ }
282
+ if (this.textParts.length === 0) {
283
+ return parseTextLiteral('');
284
+ }
285
+ if (this.trustedContext && this.textParts.length > 1) {
286
+ $interpolateMinErr['throwNoconcat'](originalText);
287
+ }
288
+ if (this.expressionFns.length === 0) {
289
+ if (this.textParts.length != 1) { this.errorInParseLogic(); }
290
+ return parseTextLiteral(this.textParts[0]);
291
+ }
292
+ var parsedFn = function(context) {
293
+ return self.getResult(self.getExpressionValues(context));
294
+ };
295
+ parsedFn['$$watchDelegate'] = function $$watchDelegate(scope, listener, objectEquality) {
296
+ return self.watchDelegate(scope, listener, objectEquality);
297
+ };
298
+
299
+ parsedFn['exp'] = originalText; // Needed to pretend to be $interpolate for tests copied from interpolateSpec.js
300
+ parsedFn['expressions'] = new Array(this.expressionFns.length); // Require this to call $compile.$$addBindingInfo() which allows Protractor to find elements by binding.
301
+ for (var i = 0; i < this.expressionFns.length; i++) {
302
+ parsedFn['expressions'][i] = this.expressionFns[i]['exp'];
303
+ }
304
+
305
+ return parsedFn;
306
+ };
307
+
308
+ InterpolationParts.prototype.watchDelegate = function watchDelegate(scope, listener, objectEquality) {
309
+ var watcher = new InterpolationPartsWatcher(this, scope, listener, objectEquality);
310
+ return function() { watcher.cancelWatch(); };
311
+ };
312
+
313
+ function InterpolationPartsWatcher(interpolationParts, scope, listener, objectEquality) {
314
+ this.interpolationParts = interpolationParts;
315
+ this.scope = scope;
316
+ this.previousResult = (void 0);
317
+ this.listener = listener;
318
+ var self = this;
319
+ this.expressionFnsWatcher = scope['$watchGroup'](interpolationParts.expressionFns, function(newExpressionValues, oldExpressionValues) {
320
+ self.watchListener(newExpressionValues, oldExpressionValues);
321
+ });
322
+ }
323
+
324
+ InterpolationPartsWatcher.prototype.watchListener = function watchListener(newExpressionValues, oldExpressionValues) {
325
+ var result = this.interpolationParts.getResult(newExpressionValues);
326
+ if (isFunction(this.listener)) {
327
+ this.listener.call(null, result, newExpressionValues === oldExpressionValues ? result : this.previousResult, this.scope);
328
+ }
329
+ this.previousResult = result;
330
+ };
331
+
332
+ InterpolationPartsWatcher.prototype.cancelWatch = function cancelWatch() {
333
+ this.expressionFnsWatcher();
334
+ };
335
+
336
+ // NOTE: ADVANCED_OPTIMIZATIONS mode.
337
+ //
338
+ // This file is compiled with Closure compiler's ADVANCED_OPTIMIZATIONS flag! Be wary of using
339
+ // constructs incompatible with that mode.
340
+
341
+ /* global $interpolateMinErr: false */
342
+ /* global indexToLineAndColumn: false */
343
+ /* global InterpolationParts: false */
344
+ /* global PluralMessage: false */
345
+ /* global SelectMessage: false */
346
+ /* global subtractOffset: false */
347
+
348
+ // The params src and dst are exactly one of two types: NestedParserState or MessageFormatParser.
349
+ // This function is fully optimized by V8. (inspect via IRHydra or --trace-deopt.)
350
+ // The idea behind writing it this way is to avoid repeating oneself. This is the ONE place where
351
+ // the parser state that is saved/restored when parsing nested mustaches is specified.
352
+ function copyNestedParserState(src, dst) {
353
+ dst.expressionFn = src.expressionFn;
354
+ dst.expressionMinusOffsetFn = src.expressionMinusOffsetFn;
355
+ dst.pluralOffset = src.pluralOffset;
356
+ dst.choices = src.choices;
357
+ dst.choiceKey = src.choiceKey;
358
+ dst.interpolationParts = src.interpolationParts;
359
+ dst.ruleChoiceKeyword = src.ruleChoiceKeyword;
360
+ dst.msgStartIndex = src.msgStartIndex;
361
+ dst.expressionStartIndex = src.expressionStartIndex;
362
+ }
363
+
364
+ function NestedParserState(parser) {
365
+ copyNestedParserState(parser, this);
366
+ }
367
+
368
+ /**
369
+ * @constructor
370
+ * @private
371
+ */
372
+ function MessageFormatParser(text, startIndex, $parse, pluralCat, stringifier,
373
+ mustHaveExpression, trustedContext, allOrNothing) {
374
+ this.text = text;
375
+ this.index = startIndex || 0;
376
+ this.$parse = $parse;
377
+ this.pluralCat = pluralCat;
378
+ this.stringifier = stringifier;
379
+ this.mustHaveExpression = !!mustHaveExpression;
380
+ this.trustedContext = trustedContext;
381
+ this.allOrNothing = !!allOrNothing;
382
+ this.expressionFn = null;
383
+ this.expressionMinusOffsetFn = null;
384
+ this.pluralOffset = null;
385
+ this.choices = null;
386
+ this.choiceKey = null;
387
+ this.interpolationParts = null;
388
+ this.msgStartIndex = null;
389
+ this.nestedStateStack = [];
390
+ this.parsedFn = null;
391
+ this.rule = null;
392
+ this.ruleStack = null;
393
+ this.ruleChoiceKeyword = null;
394
+ this.interpNestLevel = null;
395
+ this.expressionStartIndex = null;
396
+ this.stringStartIndex = null;
397
+ this.stringQuote = null;
398
+ this.stringInterestsRe = null;
399
+ this.angularOperatorStack = null;
400
+ this.textPart = null;
401
+ }
402
+
403
+ // preserve v8 optimization.
404
+ var EMPTY_STATE = new NestedParserState(new MessageFormatParser(
405
+ /* text= */ '', /* startIndex= */ 0, /* $parse= */ null, /* pluralCat= */ null, /* stringifier= */ null,
406
+ /* mustHaveExpression= */ false, /* trustedContext= */ null, /* allOrNothing */ false));
407
+
408
+ MessageFormatParser.prototype.pushState = function pushState() {
409
+ this.nestedStateStack.push(new NestedParserState(this));
410
+ copyNestedParserState(EMPTY_STATE, this);
411
+ };
412
+
413
+ MessageFormatParser.prototype.popState = function popState() {
414
+ if (this.nestedStateStack.length === 0) {
415
+ this.errorInParseLogic();
416
+ }
417
+ var previousState = this.nestedStateStack.pop();
418
+ copyNestedParserState(previousState, this);
419
+ };
420
+
421
+ // Oh my JavaScript! Who knew you couldn't match a regex at a specific
422
+ // location in a string but will always search forward?!
423
+ // Apparently you'll be growing this ability via the sticky flag (y) in
424
+ // ES6. I'll just to work around you for now.
425
+ MessageFormatParser.prototype.matchRe = function matchRe(re, search) {
426
+ re.lastIndex = this.index;
427
+ var match = re.exec(this.text);
428
+ if (match != null && (search === true || (match.index == this.index))) {
429
+ this.index = re.lastIndex;
430
+ return match;
431
+ }
432
+ return null;
433
+ };
434
+
435
+ MessageFormatParser.prototype.searchRe = function searchRe(re) {
436
+ return this.matchRe(re, true);
437
+ };
438
+
439
+
440
+ MessageFormatParser.prototype.consumeRe = function consumeRe(re) {
441
+ // Without the sticky flag, we can't use the .test() method to consume a
442
+ // match at the current index. Instead, we'll use the slower .exec() method
443
+ // and verify match.index.
444
+ return !!this.matchRe(re);
445
+ };
446
+
447
+ // Run through our grammar avoiding deeply nested function call chains.
448
+ MessageFormatParser.prototype.run = function run(initialRule) {
449
+ this.ruleStack = [initialRule];
450
+ do {
451
+ this.rule = this.ruleStack.pop();
452
+ while (this.rule) {
453
+ this.rule();
454
+ }
455
+ this.assertRuleOrNull(this.rule);
456
+ } while (this.ruleStack.length > 0);
457
+ };
458
+
459
+ MessageFormatParser.prototype.errorInParseLogic = function errorInParseLogic() {
460
+ throw $interpolateMinErr('logicbug',
461
+ 'The messageformat parser has encountered an internal error. Please file a github issue against the AngularJS project and provide this message text that triggers the bug. Text: “{0}”',
462
+ this.text);
463
+ };
464
+
465
+ MessageFormatParser.prototype.assertRuleOrNull = function assertRuleOrNull(rule) {
466
+ if (rule === void 0) {
467
+ this.errorInParseLogic();
468
+ }
469
+ };
470
+
471
+ var NEXT_WORD_RE = /\s*(\w+)\s*/g;
472
+ MessageFormatParser.prototype.errorExpecting = function errorExpecting() {
473
+ // What was wrong with the syntax? Unsupported type, missing comma, or something else?
474
+ var match = this.matchRe(NEXT_WORD_RE), position;
475
+ if (match == null) {
476
+ position = indexToLineAndColumn(this.text, this.index);
477
+ throw $interpolateMinErr('reqarg',
478
+ 'Expected one of “plural” or “select” at line {0}, column {1} of text “{2}”',
479
+ position.line, position.column, this.text);
480
+ }
481
+ var word = match[1];
482
+ if (word == "select" || word == "plural") {
483
+ position = indexToLineAndColumn(this.text, this.index);
484
+ throw $interpolateMinErr('reqcomma',
485
+ 'Expected a comma after the keyword “{0}” at line {1}, column {2} of text “{3}”',
486
+ word, position.line, position.column, this.text);
487
+ } else {
488
+ position = indexToLineAndColumn(this.text, this.index);
489
+ throw $interpolateMinErr('unknarg',
490
+ 'Unsupported keyword “{0}” at line {0}, column {1}. Only “plural” and “select” are currently supported. Text: “{3}”',
491
+ word, position.line, position.column, this.text);
492
+ }
493
+ };
494
+
495
+ var STRING_START_RE = /['"]/g;
496
+ MessageFormatParser.prototype.ruleString = function ruleString() {
497
+ var match = this.matchRe(STRING_START_RE);
498
+ if (match == null) {
499
+ var position = indexToLineAndColumn(this.text, this.index);
500
+ throw $interpolateMinErr('wantstring',
501
+ 'Expected the beginning of a string at line {0}, column {1} in text “{2}”',
502
+ position.line, position.column, this.text);
503
+ }
504
+ this.startStringAtMatch(match);
505
+ };
506
+
507
+ MessageFormatParser.prototype.startStringAtMatch = function startStringAtMatch(match) {
508
+ this.stringStartIndex = match.index;
509
+ this.stringQuote = match[0];
510
+ this.stringInterestsRe = this.stringQuote == "'" ? SQUOTED_STRING_INTEREST_RE : DQUOTED_STRING_INTEREST_RE;
511
+ this.rule = this.ruleInsideString;
512
+ };
513
+
514
+ var SQUOTED_STRING_INTEREST_RE = /\\(?:\\|'|u[0-9A-Fa-f]{4}|x[0-9A-Fa-f]{2}|[0-7]{3}|\r\n|\n|[\s\S])|'/g;
515
+ var DQUOTED_STRING_INTEREST_RE = /\\(?:\\|"|u[0-9A-Fa-f]{4}|x[0-9A-Fa-f]{2}|[0-7]{3}|\r\n|\n|[\s\S])|"/g;
516
+ MessageFormatParser.prototype.ruleInsideString = function ruleInsideString() {
517
+ var match = this.searchRe(this.stringInterestsRe);
518
+ if (match == null) {
519
+ var position = indexToLineAndColumn(this.text, this.stringStartIndex);
520
+ throw $interpolateMinErr('untermstr',
521
+ 'The string beginning at line {0}, column {1} is unterminated in text “{2}”',
522
+ position.line, position.column, this.text);
523
+ }
524
+ var chars = match[0];
525
+ if (match == this.stringQuote) {
526
+ this.rule = null;
527
+ }
528
+ };
529
+
530
+ var PLURAL_OR_SELECT_ARG_TYPE_RE = /\s*(plural|select)\s*,\s*/g;
531
+ MessageFormatParser.prototype.rulePluralOrSelect = function rulePluralOrSelect() {
532
+ var match = this.searchRe(PLURAL_OR_SELECT_ARG_TYPE_RE);
533
+ if (match == null) {
534
+ this.errorExpecting();
535
+ }
536
+ var argType = match[1];
537
+ switch (argType) {
538
+ case "plural": this.rule = this.rulePluralStyle; break;
539
+ case "select": this.rule = this.ruleSelectStyle; break;
540
+ default: this.errorInParseLogic();
541
+ }
542
+ };
543
+
544
+ MessageFormatParser.prototype.rulePluralStyle = function rulePluralStyle() {
545
+ this.choices = Object.create(null);
546
+ this.ruleChoiceKeyword = this.rulePluralValueOrKeyword;
547
+ this.rule = this.rulePluralOffset;
548
+ };
549
+
550
+ MessageFormatParser.prototype.ruleSelectStyle = function ruleSelectStyle() {
551
+ this.choices = Object.create(null);
552
+ this.ruleChoiceKeyword = this.ruleSelectKeyword;
553
+ this.rule = this.ruleSelectKeyword;
554
+ };
555
+
556
+ var NUMBER_RE = /[0]|(?:[1-9][0-9]*)/g;
557
+ var PLURAL_OFFSET_RE = new RegExp("\\s*offset\\s*:\\s*(" + NUMBER_RE.source + ")", "g");
558
+
559
+ MessageFormatParser.prototype.rulePluralOffset = function rulePluralOffset() {
560
+ var match = this.matchRe(PLURAL_OFFSET_RE);
561
+ this.pluralOffset = (match == null) ? 0 : parseInt(match[1], 10);
562
+ this.expressionMinusOffsetFn = subtractOffset(this.expressionFn, this.pluralOffset);
563
+ this.rule = this.rulePluralValueOrKeyword;
564
+ };
565
+
566
+ MessageFormatParser.prototype.assertChoiceKeyIsNew = function assertChoiceKeyIsNew(choiceKey, index) {
567
+ if (this.choices[choiceKey] !== void 0) {
568
+ var position = indexToLineAndColumn(this.text, index);
569
+ throw $interpolateMinErr('dupvalue',
570
+ 'The choice “{0}” is specified more than once. Duplicate key is at line {1}, column {2} in text “{3}”',
571
+ choiceKey, position.line, position.column, this.text);
572
+ }
573
+ };
574
+
575
+ var SELECT_KEYWORD = /\s*(\w+)/g;
576
+ MessageFormatParser.prototype.ruleSelectKeyword = function ruleSelectKeyword() {
577
+ var match = this.matchRe(SELECT_KEYWORD);
578
+ if (match == null) {
579
+ this.parsedFn = new SelectMessage(this.expressionFn, this.choices).parsedFn;
580
+ this.rule = null;
581
+ return;
582
+ }
583
+ this.choiceKey = match[1];
584
+ this.assertChoiceKeyIsNew(this.choiceKey, match.index);
585
+ this.rule = this.ruleMessageText;
586
+ };
587
+
588
+ var EXPLICIT_VALUE_OR_KEYWORD_RE = new RegExp("\\s*(?:(?:=(" + NUMBER_RE.source + "))|(\\w+))", "g");
589
+ MessageFormatParser.prototype.rulePluralValueOrKeyword = function rulePluralValueOrKeyword() {
590
+ var match = this.matchRe(EXPLICIT_VALUE_OR_KEYWORD_RE);
591
+ if (match == null) {
592
+ this.parsedFn = new PluralMessage(this.expressionFn, this.choices, this.pluralOffset, this.pluralCat).parsedFn;
593
+ this.rule = null;
594
+ return;
595
+ }
596
+ if (match[1] != null) {
597
+ this.choiceKey = parseInt(match[1], 10);
598
+ } else {
599
+ this.choiceKey = match[2];
600
+ }
601
+ this.assertChoiceKeyIsNew(this.choiceKey, match.index);
602
+ this.rule = this.ruleMessageText;
603
+ };
604
+
605
+ var BRACE_OPEN_RE = /\s*{/g;
606
+ var BRACE_CLOSE_RE = /}/g;
607
+ MessageFormatParser.prototype.ruleMessageText = function ruleMessageText() {
608
+ if (!this.consumeRe(BRACE_OPEN_RE)) {
609
+ var position = indexToLineAndColumn(this.text, this.index);
610
+ throw $interpolateMinErr('reqopenbrace',
611
+ 'The plural choice “{0}” must be followed by a message in braces at line {1}, column {2} in text “{3}”',
612
+ this.choiceKey, position.line, position.column, this.text);
613
+ }
614
+ this.msgStartIndex = this.index;
615
+ this.interpolationParts = new InterpolationParts(this.trustedContext, this.allOrNothing);
616
+ this.rule = this.ruleInInterpolationOrMessageText;
617
+ };
618
+
619
+ // Note: Since "\" is used as an escape character, don't allow it to be part of the
620
+ // startSymbol/endSymbol when I add the feature to allow them to be redefined.
621
+ var INTERP_OR_END_MESSAGE_RE = /\\.|{{|}/g;
622
+ var INTERP_OR_PLURALVALUE_OR_END_MESSAGE_RE = /\\.|{{|#|}/g;
623
+ var ESCAPE_OR_MUSTACHE_BEGIN_RE = /\\.|{{/g;
624
+ MessageFormatParser.prototype.advanceInInterpolationOrMessageText = function advanceInInterpolationOrMessageText() {
625
+ var currentIndex = this.index, match, re;
626
+ if (this.ruleChoiceKeyword == null) { // interpolation
627
+ match = this.searchRe(ESCAPE_OR_MUSTACHE_BEGIN_RE);
628
+ if (match == null) { // End of interpolation text. Nothing more to process.
629
+ this.textPart = this.text.substring(currentIndex);
630
+ this.index = this.text.length;
631
+ return null;
632
+ }
633
+ } else {
634
+ match = this.searchRe(this.ruleChoiceKeyword == this.rulePluralValueOrKeyword ?
635
+ INTERP_OR_PLURALVALUE_OR_END_MESSAGE_RE : INTERP_OR_END_MESSAGE_RE);
636
+ if (match == null) {
637
+ var position = indexToLineAndColumn(this.text, this.msgStartIndex);
638
+ throw $interpolateMinErr('reqendbrace',
639
+ 'The plural/select choice “{0}” message starting at line {1}, column {2} does not have an ending closing brace. Text “{3}”',
640
+ this.choiceKey, position.line, position.column, this.text);
641
+ }
642
+ }
643
+ // match is non-null.
644
+ var token = match[0];
645
+ this.textPart = this.text.substring(currentIndex, match.index);
646
+ return token;
647
+ };
648
+
649
+ MessageFormatParser.prototype.ruleInInterpolationOrMessageText = function ruleInInterpolationOrMessageText() {
650
+ var currentIndex = this.index;
651
+ var token = this.advanceInInterpolationOrMessageText();
652
+ if (token == null) {
653
+ // End of interpolation text. Nothing more to process.
654
+ this.index = this.text.length;
655
+ this.interpolationParts.addText(this.text.substring(currentIndex));
656
+ this.rule = null;
657
+ return;
658
+ }
659
+ if (token[0] == "\\") {
660
+ // unescape next character and continue
661
+ this.interpolationParts.addText(this.textPart + token[1]);
662
+ return;
663
+ }
664
+ this.interpolationParts.addText(this.textPart);
665
+ if (token == "{{") {
666
+ this.pushState();
667
+ this.ruleStack.push(this.ruleEndMustacheInInterpolationOrMessage);
668
+ this.rule = this.ruleEnteredMustache;
669
+ } else if (token == "}") {
670
+ this.choices[this.choiceKey] = this.interpolationParts.toParsedFn(/*mustHaveExpression=*/false, this.text);
671
+ this.rule = this.ruleChoiceKeyword;
672
+ } else if (token == "#") {
673
+ this.interpolationParts.addExpressionFn(this.expressionMinusOffsetFn);
674
+ } else {
675
+ this.errorInParseLogic();
676
+ }
677
+ };
678
+
679
+ MessageFormatParser.prototype.ruleInterpolate = function ruleInterpolate() {
680
+ this.interpolationParts = new InterpolationParts(this.trustedContext, this.allOrNothing);
681
+ this.rule = this.ruleInInterpolation;
682
+ };
683
+
684
+ MessageFormatParser.prototype.ruleInInterpolation = function ruleInInterpolation() {
685
+ var currentIndex = this.index;
686
+ var match = this.searchRe(ESCAPE_OR_MUSTACHE_BEGIN_RE);
687
+ if (match == null) {
688
+ // End of interpolation text. Nothing more to process.
689
+ this.index = this.text.length;
690
+ this.interpolationParts.addText(this.text.substring(currentIndex));
691
+ this.parsedFn = this.interpolationParts.toParsedFn(this.mustHaveExpression, this.text);
692
+ this.rule = null;
693
+ return;
694
+ }
695
+ var token = match[0];
696
+ if (token[0] == "\\") {
697
+ // unescape next character and continue
698
+ this.interpolationParts.addText(this.text.substring(currentIndex, match.index) + token[1]);
699
+ return;
700
+ }
701
+ this.interpolationParts.addText(this.text.substring(currentIndex, match.index));
702
+ this.pushState();
703
+ this.ruleStack.push(this.ruleInterpolationEndMustache);
704
+ this.rule = this.ruleEnteredMustache;
705
+ };
706
+
707
+ MessageFormatParser.prototype.ruleInterpolationEndMustache = function ruleInterpolationEndMustache() {
708
+ var expressionFn = this.parsedFn;
709
+ this.popState();
710
+ this.interpolationParts.addExpressionFn(expressionFn);
711
+ this.rule = this.ruleInInterpolation;
712
+ };
713
+
714
+ MessageFormatParser.prototype.ruleEnteredMustache = function ruleEnteredMustache() {
715
+ this.parsedFn = null;
716
+ this.ruleStack.push(this.ruleEndMustache);
717
+ this.rule = this.ruleAngularExpression;
718
+ };
719
+
720
+ MessageFormatParser.prototype.ruleEndMustacheInInterpolationOrMessage = function ruleEndMustacheInInterpolationOrMessage() {
721
+ var expressionFn = this.parsedFn;
722
+ this.popState();
723
+ this.interpolationParts.addExpressionFn(expressionFn);
724
+ this.rule = this.ruleInInterpolationOrMessageText;
725
+ };
726
+
727
+
728
+
729
+ var INTERP_END_RE = /\s*}}/g;
730
+ MessageFormatParser.prototype.ruleEndMustache = function ruleEndMustache() {
731
+ var match = this.matchRe(INTERP_END_RE);
732
+ if (match == null) {
733
+ var position = indexToLineAndColumn(this.text, this.index);
734
+ throw $interpolateMinErr('reqendinterp',
735
+ 'Expecting end of interpolation symbol, “{0}”, at line {1}, column {2} in text “{3}”',
736
+ '}}', position.line, position.column, this.text);
737
+ }
738
+ if (this.parsedFn == null) {
739
+ // If we parsed a MessageFormat extension, (e.g. select/plural today, maybe more some other
740
+ // day), then the result *has* to be a string and those rules would have already set
741
+ // this.parsedFn. If there was no MessageFormat extension, then there is no requirement to
742
+ // stringify the result and parsedFn isn't set. We set it here. While we could have set it
743
+ // unconditionally when exiting the Angular expression, I intend for us to not just replace
744
+ // $interpolate, but also to replace $parse in a future version (so ng-bind can work), and in
745
+ // such a case we do not want to unnecessarily stringify something if it's not going to be used
746
+ // in a string context.
747
+ this.parsedFn = this.$parse(this.expressionFn, this.stringifier);
748
+ this.parsedFn['exp'] = this.expressionFn['exp']; // Needed to pretend to be $interpolate for tests copied from interpolateSpec.js
749
+ this.parsedFn['expressions'] = this.expressionFn['expressions']; // Require this to call $compile.$$addBindingInfo() which allows Protractor to find elements by binding.
750
+ }
751
+ this.rule = null;
752
+ };
753
+
754
+ MessageFormatParser.prototype.ruleAngularExpression = function ruleAngularExpression() {
755
+ this.angularOperatorStack = [];
756
+ this.expressionStartIndex = this.index;
757
+ this.rule = this.ruleInAngularExpression;
758
+ };
759
+
760
+ function getEndOperator(opBegin) {
761
+ switch (opBegin) {
762
+ case "{": return "}";
763
+ case "[": return "]";
764
+ case "(": return ")";
765
+ default: return null;
766
+ }
767
+ }
768
+
769
+ function getBeginOperator(opEnd) {
770
+ switch (opEnd) {
771
+ case "}": return "{";
772
+ case "]": return "[";
773
+ case ")": return "(";
774
+ default: return null;
775
+ }
776
+ }
777
+
778
+ // TODO(chirayu): The interpolation endSymbol must also be accounted for. It
779
+ // just so happens that "}" is an operator so it's in the list below. But we
780
+ // should support any other type of start/end interpolation symbol.
781
+ var INTERESTING_OPERATORS_RE = /[[\]{}()'",]/g;
782
+ MessageFormatParser.prototype.ruleInAngularExpression = function ruleInAngularExpression() {
783
+ var startIndex = this.index;
784
+ var match = this.searchRe(INTERESTING_OPERATORS_RE);
785
+ var position;
786
+ if (match == null) {
787
+ if (this.angularOperatorStack.length === 0) {
788
+ // This is the end of the Angular expression so this is actually a
789
+ // success. Note that when inside an interpolation, this means we even
790
+ // consumed the closing interpolation symbols if they were curlies. This
791
+ // is NOT an error at this point but will become an error further up the
792
+ // stack when the part that saw the opening curlies is unable to find the
793
+ // closing ones.
794
+ this.index = this.text.length;
795
+ this.expressionFn = this.$parse(this.text.substring(this.expressionStartIndex, this.index));
796
+ // Needed to pretend to be $interpolate for tests copied from interpolateSpec.js
797
+ this.expressionFn['exp'] = this.text.substring(this.expressionStartIndex, this.index);
798
+ this.expressionFn['expressions'] = this.expressionFn['expressions'];
799
+ this.rule = null;
800
+ return;
801
+ }
802
+ var innermostOperator = this.angularOperatorStack[0];
803
+ throw $interpolateMinErr('badexpr',
804
+ 'Unexpected end of Angular expression. Expecting operator “{0}” at the end of the text “{1}”',
805
+ this.getEndOperator(innermostOperator), this.text);
806
+ }
807
+ var operator = match[0];
808
+ if (operator == "'" || operator == '"') {
809
+ this.ruleStack.push(this.ruleInAngularExpression);
810
+ this.startStringAtMatch(match);
811
+ return;
812
+ }
813
+ if (operator == ",") {
814
+ if (this.trustedContext) {
815
+ position = indexToLineAndColumn(this.text, this.index);
816
+ throw $interpolateMinErr('unsafe',
817
+ 'Use of select/plural MessageFormat syntax is currently disallowed in a secure context ({0}). At line {1}, column {2} of text “{3}”',
818
+ this.trustedContext, position.line, position.column, this.text);
819
+ }
820
+ // only the top level comma has relevance.
821
+ if (this.angularOperatorStack.length === 0) {
822
+ // todo: does this need to be trimmed?
823
+ this.expressionFn = this.$parse(this.text.substring(this.expressionStartIndex, match.index));
824
+ // Needed to pretend to be $interpolate for tests copied from interpolateSpec.js
825
+ this.expressionFn['exp'] = this.text.substring(this.expressionStartIndex, match.index);
826
+ this.expressionFn['expressions'] = this.expressionFn['expressions'];
827
+ this.rule = null;
828
+ this.rule = this.rulePluralOrSelect;
829
+ }
830
+ return;
831
+ }
832
+ if (getEndOperator(operator) != null) {
833
+ this.angularOperatorStack.unshift(operator);
834
+ return;
835
+ }
836
+ var beginOperator = getBeginOperator(operator);
837
+ if (beginOperator == null) {
838
+ this.errorInParseLogic();
839
+ }
840
+ if (this.angularOperatorStack.length > 0) {
841
+ if (beginOperator == this.angularOperatorStack[0]) {
842
+ this.angularOperatorStack.shift();
843
+ return;
844
+ }
845
+ position = indexToLineAndColumn(this.text, this.index);
846
+ throw $interpolateMinErr('badexpr',
847
+ 'Unexpected operator “{0}” at line {1}, column {2} in text. Was expecting “{3}”. Text: “{4}”',
848
+ operator, position.line, position.column, getEndOperator(this.angularOperatorStack[0]), this.text);
849
+ }
850
+ // We are trying to pop off the operator stack but there really isn't anything to pop off.
851
+ this.index = match.index;
852
+ this.expressionFn = this.$parse(this.text.substring(this.expressionStartIndex, this.index));
853
+ // Needed to pretend to be $interpolate for tests copied from interpolateSpec.js
854
+ this.expressionFn['exp'] = this.text.substring(this.expressionStartIndex, this.index);
855
+ this.expressionFn['expressions'] = this.expressionFn['expressions'];
856
+ this.rule = null;
857
+ };
858
+
859
+ // NOTE: ADVANCED_OPTIMIZATIONS mode.
860
+ //
861
+ // This file is compiled with Closure compiler's ADVANCED_OPTIMIZATIONS flag! Be wary of using
862
+ // constructs incompatible with that mode.
863
+
864
+ /* global $interpolateMinErr: false */
865
+ /* global MessageFormatParser: false */
866
+ /* global stringify: false */
867
+
868
+ /**
869
+ * @ngdoc service
870
+ * @name $$messageFormat
871
+ *
872
+ * @description
873
+ * Angular internal service to recognize MessageFormat extensions in interpolation expressions.
874
+ * For more information, see:
875
+ * https://docs.google.com/a/google.com/document/d/1pbtW2yvtmFBikfRrJd8VAsabiFkKezmYZ_PbgdjQOVU/edit
876
+ *
877
+ * ## Example
878
+ *
879
+ * <example name="ngMessageFormat-example" module="msgFmtExample" deps="angular-message-format.min.js">
880
+ * <file name="index.html">
881
+ * <div ng-controller="AppController">
882
+ * <button ng-click="decreaseRecipients()" id="decreaseRecipients">decreaseRecipients</button><br>
883
+ * <span>{{recipients.length, plural, offset:1
884
+ * =0 {{{sender.name}} gave no gifts (\#=#)}
885
+ * =1 {{{sender.name}} gave one gift to {{recipients[0].name}} (\#=#)}
886
+ * one {{{sender.name}} gave {{recipients[0].name}} and one other person a gift (\#=#)}
887
+ * other {{{sender.name}} gave {{recipients[0].name}} and # other people a gift (\#=#)}
888
+ * }}</span>
889
+ * </div>
890
+ * </file>
891
+ *
892
+ * <file name="script.js">
893
+ * function Person(name, gender) {
894
+ * this.name = name;
895
+ * this.gender = gender;
896
+ * }
897
+ *
898
+ * var alice = new Person("Alice", "female"),
899
+ * bob = new Person("Bob", "male"),
900
+ * charlie = new Person("Charlie", "male"),
901
+ * harry = new Person("Harry Potter", "male");
902
+ *
903
+ * angular.module('msgFmtExample', ['ngMessageFormat'])
904
+ * .controller('AppController', ['$scope', function($scope) {
905
+ * $scope.recipients = [alice, bob, charlie];
906
+ * $scope.sender = harry;
907
+ * $scope.decreaseRecipients = function() {
908
+ * --$scope.recipients.length;
909
+ * };
910
+ * }]);
911
+ * </file>
912
+ *
913
+ * <file name="protractor.js" type="protractor">
914
+ * describe('MessageFormat plural', function() {
915
+ * it('should pluralize initial values', function() {
916
+ * var messageElem = element(by.binding('recipients.length')), decreaseRecipientsBtn = element(by.id('decreaseRecipients'));
917
+ * expect(messageElem.getText()).toEqual('Harry Potter gave Alice and 2 other people a gift (#=2)');
918
+ * decreaseRecipientsBtn.click();
919
+ * expect(messageElem.getText()).toEqual('Harry Potter gave Alice and one other person a gift (#=1)');
920
+ * decreaseRecipientsBtn.click();
921
+ * expect(messageElem.getText()).toEqual('Harry Potter gave one gift to Alice (#=0)');
922
+ * decreaseRecipientsBtn.click();
923
+ * expect(messageElem.getText()).toEqual('Harry Potter gave no gifts (#=-1)');
924
+ * });
925
+ * });
926
+ * </file>
927
+ * </example>
928
+ */
929
+ var $$MessageFormatFactory = ['$parse', '$locale', '$sce', '$exceptionHandler', function $$messageFormat(
930
+ $parse, $locale, $sce, $exceptionHandler) {
931
+
932
+ function getStringifier(trustedContext, allOrNothing, text) {
933
+ return function stringifier(value) {
934
+ try {
935
+ value = trustedContext ? $sce['getTrusted'](trustedContext, value) : $sce['valueOf'](value);
936
+ return allOrNothing && (value === void 0) ? value : stringify(value);
937
+ } catch (err) {
938
+ $exceptionHandler($interpolateMinErr['interr'](text, err));
939
+ }
940
+ };
941
+ }
942
+
943
+ function interpolate(text, mustHaveExpression, trustedContext, allOrNothing) {
944
+ var stringifier = getStringifier(trustedContext, allOrNothing, text);
945
+ var parser = new MessageFormatParser(text, 0, $parse, $locale['pluralCat'], stringifier,
946
+ mustHaveExpression, trustedContext, allOrNothing);
947
+ parser.run(parser.ruleInterpolate);
948
+ return parser.parsedFn;
949
+ }
950
+
951
+ return {
952
+ 'interpolate': interpolate
953
+ };
954
+ }];
955
+
956
+ var $$interpolateDecorator = ['$$messageFormat', '$delegate', function $$interpolateDecorator($$messageFormat, $interpolate) {
957
+ if ($interpolate['startSymbol']() != "{{" || $interpolate['endSymbol']() != "}}") {
958
+ throw $interpolateMinErr('nochgmustache', 'angular-message-format.js currently does not allow you to use custom start and end symbols for interpolation.');
959
+ }
960
+ var interpolate = $$messageFormat['interpolate'];
961
+ interpolate['startSymbol'] = $interpolate['startSymbol'];
962
+ interpolate['endSymbol'] = $interpolate['endSymbol'];
963
+ return interpolate;
964
+ }];
965
+
966
+
967
+ /**
968
+ * @ngdoc module
969
+ * @name ngMessageFormat
970
+ * @packageName angular-message-format
971
+ * @description
972
+ */
973
+ var module = window['angular']['module']('ngMessageFormat', ['ng']);
974
+ module['factory']('$$messageFormat', $$MessageFormatFactory);
975
+ module['config'](['$provide', function($provide) {
976
+ $provide['decorator']('$interpolate', $$interpolateDecorator);
977
+ }]);
978
+
979
+
980
+ })(window, window.angular);