puppetfactory 0.4.0 → 0.5.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (79) hide show
  1. checksums.yaml +4 -4
  2. data/bin/puppetfactory +5 -0
  3. data/lib/puppetfactory/plugins/classification.rb +1 -1
  4. data/lib/puppetfactory/plugins/code_manager.rb +1 -1
  5. data/lib/puppetfactory/plugins/console_user.rb +2 -2
  6. data/lib/puppetfactory/plugins/docker.rb +5 -3
  7. data/lib/puppetfactory/plugins/gitviz.rb +23 -0
  8. data/lib/puppetfactory/plugins/r10k.rb +6 -2
  9. data/lib/puppetfactory/plugins/shell_user.rb +3 -3
  10. data/lib/puppetfactory/plugins/user_environment.rb +9 -5
  11. data/public/{images → css/images}/ui-bg_diagonals-thick_18_b81900_40x40.png +0 -0
  12. data/public/{images → css/images}/ui-bg_diagonals-thick_20_666666_40x40.png +0 -0
  13. data/public/{images → css/images}/ui-bg_flat_10_000000_40x100.png +0 -0
  14. data/public/{images → css/images}/ui-bg_flat_75_ffffff_40x100.png +0 -0
  15. data/public/{images → css/images}/ui-bg_glass_100_f6f6f6_1x400.png +0 -0
  16. data/public/{images → css/images}/ui-bg_glass_100_fdf5ce_1x400.png +0 -0
  17. data/public/{images → css/images}/ui-bg_glass_65_ffffff_1x400.png +0 -0
  18. data/public/{images → css/images}/ui-bg_glass_75_e6e6e6_1x400.png +0 -0
  19. data/public/{images → css/images}/ui-bg_gloss-wave_35_f6a828_500x100.png +0 -0
  20. data/public/css/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  21. data/public/{images → css/images}/ui-bg_highlight-soft_75_cccccc_1x100.png +0 -0
  22. data/public/{images → css/images}/ui-bg_highlight-soft_75_ffe45c_1x100.png +0 -0
  23. data/public/{images → css/images}/ui-icons_222222_256x240.png +0 -0
  24. data/public/{images → css/images}/ui-icons_228ef1_256x240.png +0 -0
  25. data/public/{images → css/images}/ui-icons_454545_256x240.png +0 -0
  26. data/public/{images → css/images}/ui-icons_ef8c08_256x240.png +0 -0
  27. data/public/{images → css/images}/ui-icons_ffd27a_256x240.png +0 -0
  28. data/public/{images → css/images}/ui-icons_ffffff_256x240.png +0 -0
  29. data/public/{jquery-ui.min.css → css/jquery-ui.min.css} +0 -0
  30. data/public/{style.css → css/style.css} +5 -0
  31. data/public/{gitviz → explain-git-with-d3}/LICENSE.md +0 -0
  32. data/public/{gitviz → explain-git-with-d3}/README.md +0 -0
  33. data/public/{gitviz → explain-git-with-d3}/css/explaingit.css +16 -4
  34. data/public/{gitviz → explain-git-with-d3}/css/vendor/1140.css +0 -0
  35. data/public/explain-git-with-d3/css/vendor/images/ui-icons_444444_256x240.png +0 -0
  36. data/public/explain-git-with-d3/css/vendor/images/ui-icons_555555_256x240.png +0 -0
  37. data/public/explain-git-with-d3/css/vendor/images/ui-icons_777620_256x240.png +0 -0
  38. data/public/explain-git-with-d3/css/vendor/images/ui-icons_777777_256x240.png +0 -0
  39. data/public/explain-git-with-d3/css/vendor/images/ui-icons_cc0000_256x240.png +0 -0
  40. data/public/explain-git-with-d3/css/vendor/images/ui-icons_ffffff_256x240.png +0 -0
  41. data/public/explain-git-with-d3/css/vendor/jquery-ui.min.css +7 -0
  42. data/public/explain-git-with-d3/css/vendor/jquery-ui.structure.min.css +5 -0
  43. data/public/{jquery-ui.theme.min.css → explain-git-with-d3/css/vendor/jquery-ui.theme.min.css} +3 -3
  44. data/public/{gitviz/js → explain-git-with-d3/css}/vendor/normalize.css +0 -0
  45. data/public/explain-git-with-d3/embed.html +796 -0
  46. data/public/{gitviz → explain-git-with-d3}/images/forkme_right_red_aa0000.png +0 -0
  47. data/public/{gitviz → explain-git-with-d3}/images/grippy-close.png +0 -0
  48. data/public/{gitviz → explain-git-with-d3}/images/grippy.png +0 -0
  49. data/public/{gitviz → explain-git-with-d3}/images/prompt.gif +0 -0
  50. data/public/{gitviz → explain-git-with-d3}/index.html +7 -2
  51. data/public/{gitviz → explain-git-with-d3}/js/controlbox.js +0 -0
  52. data/public/{gitviz → explain-git-with-d3}/js/explaingit.js +21 -0
  53. data/public/{gitviz → explain-git-with-d3}/js/historyview.js +0 -0
  54. data/public/{gitviz → explain-git-with-d3}/js/main.js +9 -2
  55. data/public/{gitviz → explain-git-with-d3}/js/vendor/d3.min.js +0 -0
  56. data/public/explain-git-with-d3/js/vendor/jquery-ui.min.js +13 -0
  57. data/public/explain-git-with-d3/js/vendor/jquery.dialogextend.js +509 -0
  58. data/public/explain-git-with-d3/js/vendor/jquery.dialogextend.min.js +2 -0
  59. data/public/{gitviz/js/vendor/jquery-latest.min.js → explain-git-with-d3/js/vendor/jquery.min.js} +0 -0
  60. data/public/{gitviz → explain-git-with-d3}/js/vendor/require.min.js +0 -0
  61. data/public/{gitviz → explain-git-with-d3}/memtest.html +0 -0
  62. data/public/{dashboard.js → js/dashboard.js} +0 -0
  63. data/public/{jquery-ui.min.js → js/jquery-ui.min.js} +0 -0
  64. data/public/{jquery.activity-indicator-1.0.0.min.js → js/jquery.activity-indicator-1.0.0.min.js} +0 -0
  65. data/public/{jquery.js → js/jquery.js} +0 -0
  66. data/public/{loginscripts.js → js/loginscripts.js} +0 -0
  67. data/public/{scripts.js → js/scripts.js} +0 -0
  68. data/public/{usermanagement.js → js/usermanagement.js} +0 -0
  69. data/templates/puppet.conf.erb +1 -1
  70. data/views/dashboard.erb +1 -1
  71. data/views/home.erb +0 -6
  72. data/views/index.erb +6 -6
  73. data/views/shell.erb +1 -1
  74. data/views/users.erb +4 -4
  75. metadata +72 -62
  76. data/public/images/ui-bg_highlight-soft_100_eeeeee_1x100.png +0 -0
  77. data/public/jquery-1.11.1.min.js +0 -4
  78. data/public/jquery-ui.css +0 -464
  79. data/public/jquery-ui.structure.min.css +0 -5
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ed93b40457051de5d2851c3ec2dcffd491d292ee
4
- data.tar.gz: 19f16c05357c6c9d2a8dc6d0d4109ce72acbaf81
3
+ metadata.gz: c914e44caa0a8d8068dc1dde6458e1587a4e9a21
4
+ data.tar.gz: 0277babbde8fd654b881e33ec3db1dd2a8b5d7b5
5
5
  SHA512:
6
- metadata.gz: ed0b47fdac3c0b0133809422900eaf137e92ea9b1d55c77bc35a01b26f6f3e9b3abc537d98f96f1696afe2530b99ca660358e7d2c3303cc64892e34fbae10e43
7
- data.tar.gz: c27f57e1691131f6be87d27a1011676d9ef7b9d3266cce444dbe7341c8cd2fbbc756d23b5d4786814a61695456e7cd8bf72c1fe9b4b12b1bb1078ee1ac05be55
6
+ metadata.gz: d0aca7da02276544f5225eb03982ba6ca36dfa1dc6e9b7b260f38db7ee5174fdd9e745ce5abfa171ae22fe476b25c2d53ede98cbf31aa9a0270f67b0d918b288
7
+ data.tar.gz: 5a917e68a33b5eb846483ab4cb419bc4ae4fab9cd708c89640308c614979837aebf5c10d5c9dd175260a92c6a018d1526b54933b8485c37f2c5352f0b25eb81d
data/bin/puppetfactory CHANGED
@@ -7,6 +7,10 @@ require 'yaml'
7
7
 
8
8
  NAME = File.basename($PROGRAM_NAME)
9
9
 
10
+ # sanitize the environment for the tools that expect it
11
+ ENV['HOME'] = '/root'
12
+ ENV['PATH'] = '/opt/puppetlabs/bin:/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin'
13
+
10
14
  if File.exist? '/etc/puppetfactory/config.yaml'
11
15
  options = YAML.load_file('/etc/puppetfactory/config.yaml') rescue {}
12
16
  else
@@ -55,6 +59,7 @@ optparse.parse!
55
59
  options[:puppet] ||= '/opt/puppetlabs/bin/puppet'
56
60
  options[:confdir] ||= '/etc/puppetlabs/puppet'
57
61
  options[:codedir] ||= '/etc/puppetlabs/code'
62
+ options[:stagedir] ||= '/etc/puppetlabs/code-staging'
58
63
  options[:environments] ||= "#{options[:codedir]}/environments"
59
64
 
60
65
  options[:root] ||= File.expand_path(File.join(File.dirname(__FILE__), '..'))
@@ -68,7 +68,7 @@ class Puppetfactory::Plugins::Classification < Puppetfactory::Plugins
68
68
  {
69
69
  :username => username,
70
70
  :node_group_id => ngid,
71
- :node_group_url => "https://#{@master}/#/node_groups/groups/#{ngid}",
71
+ :node_group_url => "#/node_groups/groups/#{ngid}",
72
72
  }
73
73
  end
74
74
 
@@ -38,7 +38,7 @@ class Puppetfactory::Plugins::CodeManager < Puppetfactory::Plugins
38
38
  begin
39
39
  environment = "#{@environments}/#{Puppetfactory::Helpers.environment_name(username)}"
40
40
  FileUtils.mkdir_p environment
41
- FileUtils.chown_R(username, 'pe-puppet', environment)
41
+ FileUtils.chown('pe-puppet', 'pe-puppet', environment)
42
42
  FileUtils.chmod(0750, environment)
43
43
 
44
44
  File.open(@sources) do |file|
@@ -24,7 +24,7 @@ class Puppetfactory::Plugins::ConsoleUser < Puppetfactory::Plugins
24
24
  "email=#{username}@#{@suffix}",
25
25
  "password=#{password}")
26
26
 
27
- unless status.success
27
+ unless status.success?
28
28
  $logger.error "Could not create PE Console user #{username}: #{output}"
29
29
  return false
30
30
  end
@@ -47,7 +47,7 @@ class Puppetfactory::Plugins::ConsoleUser < Puppetfactory::Plugins
47
47
  def userinfo(username, extended = false)
48
48
  return unless extended
49
49
 
50
- output, status = Open3.capture2e(PUPPET, 'resource', 'rbac_user', username)
50
+ output, status = Open3.capture2e(@puppet, 'resource', 'rbac_user', username)
51
51
  unless status.success?
52
52
  $logger.error "Could not query Puppet user #{username}: #{output}"
53
53
  return false
@@ -13,9 +13,11 @@ class Puppetfactory::Plugins::Docker < Puppetfactory::Plugins
13
13
  @weight = 5
14
14
 
15
15
  @confdir = options[:confdir]
16
- @environments = options[:environments]
16
+ @stagedir = options[:stagedir]
17
+ @environments = "#{@stagedir}/environments"
17
18
  @puppetcode = options[:puppetcode]
18
19
  @master = options[:master]
20
+ @usersuffix = options[:usersuffix]
19
21
  @modulepath = options[:modulepath]
20
22
  @templatedir = options[:templatedir]
21
23
  @container = options[:container_name] || 'centosagent'
@@ -50,7 +52,7 @@ class Puppetfactory::Plugins::Docker < Puppetfactory::Plugins
50
52
  "/usr/lib/systemd/systemd"
51
53
  ],
52
54
  "Tty" => true,
53
- "Domainname" => "puppetlabs.vm",
55
+ "Domainname" => @usersuffix,
54
56
  "Env" => [
55
57
  "RUNLEVEL=3",
56
58
  "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin",
@@ -151,7 +153,7 @@ class Puppetfactory::Plugins::Docker < Puppetfactory::Plugins
151
153
  # TODO: We need a better way of doing this, since we're not guaranteed to always have system users.
152
154
  # See plugins/shell_user.rb for the other side of this coupling.
153
155
  def user_port(username)
154
- Etc.getpwnam(username).uid + 3000
156
+ Etc.getpwnam(username).uid + 3000 rescue nil
155
157
  end
156
158
 
157
159
  def massage_container_state(state)
@@ -0,0 +1,23 @@
1
+ require 'puppetfactory'
2
+
3
+ class Puppetfactory::Plugins::Gitviz < Puppetfactory::Plugins
4
+
5
+ def initialize(options)
6
+ super(options)
7
+ return unless options[:puppetfactory]
8
+
9
+ server = options[:puppetfactory]
10
+
11
+ # Add a web route to the puppetfactory server. Must happen in the initializer
12
+ server.get '/gitviz' do
13
+ '<iframe id="gitviz" src="/explain-git-with-d3/embed.html" /><script>$("div:has(#gitviz)").css("padding", 0);$("body").css("min-width", "1150px");</script>'
14
+ end
15
+
16
+ end
17
+
18
+ def tabs(privileged = false)
19
+ # url path => display title
20
+ { 'gitviz' => 'Git Visualization' }
21
+ end
22
+
23
+ end
@@ -22,6 +22,8 @@ class Puppetfactory::Plugins::R10k < Puppetfactory::Plugins
22
22
  end
23
23
 
24
24
  def create(username, password)
25
+ return unless @repomodel == :peruser
26
+
25
27
  begin
26
28
  environment = "#{@environments}/#{Puppetfactory::Helpers.environment_name(username)}"
27
29
  FileUtils.mkdir_p environment
@@ -36,7 +38,7 @@ class Puppetfactory::Plugins::R10k < Puppetfactory::Plugins
36
38
  r10k['sources'][username] = {
37
39
  'remote' => sprintf(@pattern, username),
38
40
  'basedir' => @environments,
39
- 'prefix' => (@repomodel == :peruser),
41
+ 'prefix' => true,
40
42
  }
41
43
 
42
44
  # Ruby 1.8.7, why don't you just go away now
@@ -53,6 +55,8 @@ class Puppetfactory::Plugins::R10k < Puppetfactory::Plugins
53
55
  end
54
56
 
55
57
  def delete(username)
58
+ return unless @repomodel == :peruser
59
+
56
60
  begin
57
61
  environment = "#{@environments}/#{Puppetfactory::Helpers.environment_name(username)}"
58
62
  FileUtils.rm_rf environment
@@ -69,7 +73,7 @@ class Puppetfactory::Plugins::R10k < Puppetfactory::Plugins
69
73
 
70
74
  # Ruby 1.8.7, why don't you just go away now
71
75
  File.open(@r10k_config, 'w') { |f| f.write(r10k.to_yaml) }
72
- $logger.info "Created r10k source for #{username}"
76
+ $logger.info "Removed r10k source for #{username}"
73
77
  end
74
78
  rescue => e
75
79
  $logger.error "Cannot remove r10k source for #{username}"
@@ -7,7 +7,7 @@ class Puppetfactory::Plugins::ShellUser < Puppetfactory::Plugins
7
7
  super(options)
8
8
 
9
9
  @weight = 1
10
- @suffix = options[:usersuffix]
10
+ @usersuffix = options[:usersuffix]
11
11
  @puppet = options[:puppet]
12
12
  @master = options[:master]
13
13
  @templatedir = options[:templatedir]
@@ -61,8 +61,8 @@ class Puppetfactory::Plugins::ShellUser < Puppetfactory::Plugins
61
61
  # build the basic user object, can be added to by other plugins
62
62
  {
63
63
  :username => username,
64
- :console => "#{username}@#{@suffix}",
65
- :certname => "#{username}.#{@suffix}",
64
+ :console => "#{username}@#{@usersuffix}",
65
+ :certname => "#{username}.#{@usersuffix}",
66
66
  }
67
67
  end
68
68
 
@@ -7,16 +7,16 @@ class Puppetfactory::Plugins::UserEnvironment < Puppetfactory::Plugins
7
7
  super(options)
8
8
 
9
9
  @codedir = options[:codedir]
10
- @confdir = options[:confdir]
10
+ @stagedir = options[:stagedir]
11
11
  @puppetcode = options[:puppetcode]
12
12
  @templatedir = options[:templatedir]
13
13
  @environments = options[:environments]
14
- @modulepath = options[:modulepath]
15
14
  @repomodel = options[:repomodel]
15
+ @codestage = "#{@stagedir}/environments"
16
16
  end
17
17
 
18
18
  def create(username, password)
19
- environment = "#{@environments}/#{Puppetfactory::Helpers.environment_name(username)}"
19
+ environment = "#{@codestage}/#{Puppetfactory::Helpers.environment_name(username)}"
20
20
 
21
21
  begin
22
22
  # configure environment
@@ -37,9 +37,11 @@ class Puppetfactory::Plugins::UserEnvironment < Puppetfactory::Plugins
37
37
  end
38
38
 
39
39
  # make sure the user and pe-puppet can access all the needful
40
- FileUtils.chown_R(env_user, 'pe-puppet', environment)
40
+ FileUtils.chown_R(username, 'pe-puppet', environment)
41
41
  FileUtils.chmod(0750, environment)
42
42
 
43
+ deploy(username)
44
+
43
45
  rescue => e
44
46
  $logger.error "Error creating user environment for #{username}"
45
47
  $logger.error e.message
@@ -58,7 +60,9 @@ class Puppetfactory::Plugins::UserEnvironment < Puppetfactory::Plugins
58
60
  end
59
61
 
60
62
  def deploy(username)
61
- create(username, nil)
63
+ environment = Puppetfactory::Helpers.environment_name(username)
64
+
65
+ FileUtils.cp_r("#{@codestage}/#{environment}/.", "#{@environments}/#{environment}")
62
66
  end
63
67
 
64
68
  def redeploy(username)
File without changes
@@ -191,3 +191,8 @@ table#users td.select {
191
191
  #dashboard .completed a:hover {
192
192
  border-bottom: 2px solid black;
193
193
  }
194
+
195
+ #gitviz {
196
+ width: 100%;
197
+ min-height: 600px;
198
+ }
File without changes
File without changes
@@ -1,12 +1,20 @@
1
1
  /* styles */
2
- body {
3
- min-width: 1200px;
2
+ h1,h2,h3,h4,h5,h6 {
3
+ padding-bottom: 0.5em;
4
+ }
5
+
6
+ p {
7
+ padding-bottom: 1em;
8
+ }
9
+
10
+ .container {
11
+ padding: 0;
4
12
  }
5
13
 
6
14
  #menuwrapper {
7
15
  position: fixed;
8
16
  width: 100%;
9
- min-height: 9px;
17
+ min-height: 16px;
10
18
  border-bottom: 1px solid #888;
11
19
  margin: 0;
12
20
  background-color: #dfdfdf;
@@ -19,6 +27,11 @@ body {
19
27
  background: #dfdfdf url(../images/grippy-close.png) no-repeat bottom center;
20
28
  }
21
29
 
30
+ #introduction,
31
+ .scenario {
32
+ display: none;
33
+ }
34
+
22
35
  .intro {
23
36
  padding: 10px 4em 0 0;
24
37
  }
@@ -43,7 +56,6 @@ a.openswitch.selected {
43
56
  }
44
57
 
45
58
  .concept-area {
46
- padding-bottom: 20px;
47
59
  min-height: 525px;
48
60
  }
49
61
 
@@ -0,0 +1,7 @@
1
+ /*! jQuery UI - v1.12.0 - 2016-07-08
2
+ * http://jqueryui.com
3
+ * Includes: core.css, accordion.css, autocomplete.css, menu.css, button.css, controlgroup.css, checkboxradio.css, datepicker.css, dialog.css, draggable.css, resizable.css, progressbar.css, selectable.css, selectmenu.css, slider.css, sortable.css, spinner.css, tabs.css, tooltip.css, theme.css
4
+ * To view and modify this theme, visit http://jqueryui.com/themeroller/?bgShadowXPos=&bgOverlayXPos=&bgErrorXPos=&bgHighlightXPos=&bgContentXPos=&bgHeaderXPos=&bgActiveXPos=&bgHoverXPos=&bgDefaultXPos=&bgShadowYPos=&bgOverlayYPos=&bgErrorYPos=&bgHighlightYPos=&bgContentYPos=&bgHeaderYPos=&bgActiveYPos=&bgHoverYPos=&bgDefaultYPos=&bgShadowRepeat=&bgOverlayRepeat=&bgErrorRepeat=&bgHighlightRepeat=&bgContentRepeat=&bgHeaderRepeat=&bgActiveRepeat=&bgHoverRepeat=&bgDefaultRepeat=&iconsHover=url(%22images%2Fui-icons_555555_256x240.png%22)&iconsHighlight=url(%22images%2Fui-icons_777620_256x240.png%22)&iconsHeader=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsError=url(%22images%2Fui-icons_cc0000_256x240.png%22)&iconsDefault=url(%22images%2Fui-icons_777777_256x240.png%22)&iconsContent=url(%22images%2Fui-icons_444444_256x240.png%22)&iconsActive=url(%22images%2Fui-icons_ffffff_256x240.png%22)&bgImgUrlShadow=&bgImgUrlOverlay=&bgImgUrlHover=&bgImgUrlHighlight=&bgImgUrlHeader=&bgImgUrlError=&bgImgUrlDefault=&bgImgUrlContent=&bgImgUrlActive=&opacityFilterShadow=Alpha(Opacity%3D30)&opacityFilterOverlay=Alpha(Opacity%3D30)&opacityShadowPerc=30&opacityOverlayPerc=30&iconColorHover=%23555555&iconColorHighlight=%23777620&iconColorHeader=%23444444&iconColorError=%23cc0000&iconColorDefault=%23777777&iconColorContent=%23444444&iconColorActive=%23ffffff&bgImgOpacityShadow=0&bgImgOpacityOverlay=0&bgImgOpacityError=95&bgImgOpacityHighlight=55&bgImgOpacityContent=75&bgImgOpacityHeader=75&bgImgOpacityActive=65&bgImgOpacityHover=75&bgImgOpacityDefault=75&bgTextureShadow=flat&bgTextureOverlay=flat&bgTextureError=flat&bgTextureHighlight=flat&bgTextureContent=flat&bgTextureHeader=flat&bgTextureActive=flat&bgTextureHover=flat&bgTextureDefault=flat&cornerRadius=3px&fwDefault=normal&ffDefault=Arial%2CHelvetica%2Csans-serif&fsDefault=1em&cornerRadiusShadow=8px&thicknessShadow=5px&offsetLeftShadow=0px&offsetTopShadow=0px&opacityShadow=.3&bgColorShadow=%23666666&opacityOverlay=.3&bgColorOverlay=%23aaaaaa&fcError=%235f3f3f&borderColorError=%23f1a899&bgColorError=%23fddfdf&fcHighlight=%23777620&borderColorHighlight=%23dad55e&bgColorHighlight=%23fffa90&fcContent=%23333333&borderColorContent=%23dddddd&bgColorContent=%23ffffff&fcHeader=%23333333&borderColorHeader=%23dddddd&bgColorHeader=%23e9e9e9&fcActive=%23ffffff&borderColorActive=%23003eff&bgColorActive=%23007fff&fcHover=%232b2b2b&borderColorHover=%23cccccc&bgColorHover=%23ededed&fcDefault=%23454545&borderColorDefault=%23c5c5c5&bgColorDefault=%23f6f6f6
5
+ * Copyright jQuery Foundation and other contributors; Licensed MIT */
6
+
7
+ .ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}.ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #c5c5c5}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#2b2b2b;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#003eff;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-checked{border:1px solid #dad55e;background:#fffa90}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon,.ui-state-default .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.003;filter:Alpha(Opacity=.3)}.ui-widget-shadow{-webkit-box-shadow:0 0 5px #666;box-shadow:0 0 5px #666}
@@ -0,0 +1,5 @@
1
+ /*! jQuery UI - v1.12.0 - 2016-07-08
2
+ * http://jqueryui.com
3
+ * Copyright jQuery Foundation and other contributors; Licensed MIT */
4
+
5
+ .ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-accordion .ui-accordion-header{display:block;cursor:pointer;position:relative;margin:2px 0 0 0;padding:.5em .5em .5em .7em;font-size:100%}.ui-accordion .ui-accordion-content{padding:1em 2.2em;border-top:0;overflow:auto}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0}.ui-button{padding:.4em 1em;display:inline-block;position:relative;line-height:normal;margin-right:.1em;cursor:pointer;vertical-align:middle;text-align:center;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:visible}.ui-button,.ui-button:link,.ui-button:visited,.ui-button:hover,.ui-button:active{text-decoration:none}.ui-button-icon-only{width:2em;box-sizing:border-box;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-button-icon-only{text-indent:0}.ui-button-icon-only .ui-icon{position:absolute;top:50%;left:50%;margin-top:-8px;margin-left:-8px}.ui-button.ui-icon-notext .ui-icon{padding:0;width:2.1em;height:2.1em;text-indent:-9999px;white-space:nowrap}input.ui-button.ui-icon-notext .ui-icon{width:auto;height:auto;text-indent:0;white-space:normal;padding:.4em 1em}input.ui-button::-moz-focus-inner,button.ui-button::-moz-focus-inner{border:0;padding:0}.ui-controlgroup{vertical-align:middle;display:inline-block}.ui-controlgroup > .ui-controlgroup-item{float:left;margin-left:0;margin-right:0}.ui-controlgroup > .ui-controlgroup-item:focus,.ui-controlgroup > .ui-controlgroup-item.ui-visual-focus{z-index:9999}.ui-controlgroup-vertical > .ui-controlgroup-item{display:block;float:none;width:100%;margin-top:0;margin-bottom:0;text-align:left}.ui-controlgroup-vertical .ui-controlgroup-item{box-sizing:border-box}.ui-controlgroup .ui-controlgroup-label{padding:.4em 1em}.ui-controlgroup .ui-controlgroup-label span{font-size:80%}.ui-controlgroup-horizontal .ui-controlgroup-label + .ui-controlgroup-item{border-left:none}.ui-controlgroup-vertical .ui-controlgroup-label + .ui-controlgroup-item{border-top:none}.ui-controlgroup-horizontal .ui-controlgroup-label.ui-widget-content{border-right:none}.ui-controlgroup-vertical .ui-controlgroup-label.ui-widget-content{border-bottom:none}.ui-controlgroup-vertical .ui-spinner-input{width:75%;width:calc( 100% - 2.4em )}.ui-controlgroup-vertical .ui-spinner .ui-spinner-up{border-top-style:solid}.ui-checkboxradio-label .ui-icon-background{box-shadow:inset 1px 1px 1px #ccc;border-radius:.12em;border:none}.ui-checkboxradio-radio-label .ui-icon-background{width:16px;height:16px;border-radius:1em;overflow:visible;border:none}.ui-checkboxradio-radio-label.ui-checkboxradio-checked .ui-icon,.ui-checkboxradio-radio-label.ui-checkboxradio-checked:hover .ui-icon{background-image:none;width:8px;height:8px;border-width:4px;border-style:solid}.ui-checkboxradio-disabled{pointer-events:none}.ui-datepicker{width:17em;padding:.2em .2em 0;display:none}.ui-datepicker .ui-datepicker-header{position:relative;padding:.2em 0}.ui-datepicker .ui-datepicker-prev,.ui-datepicker .ui-datepicker-next{position:absolute;top:2px;width:1.8em;height:1.8em}.ui-datepicker .ui-datepicker-prev-hover,.ui-datepicker .ui-datepicker-next-hover{top:1px}.ui-datepicker .ui-datepicker-prev{left:2px}.ui-datepicker .ui-datepicker-next{right:2px}.ui-datepicker .ui-datepicker-prev-hover{left:1px}.ui-datepicker .ui-datepicker-next-hover{right:1px}.ui-datepicker .ui-datepicker-prev span,.ui-datepicker .ui-datepicker-next span{display:block;position:absolute;left:50%;margin-left:-8px;top:50%;margin-top:-8px}.ui-datepicker .ui-datepicker-title{margin:0 2.3em;line-height:1.8em;text-align:center}.ui-datepicker .ui-datepicker-title select{font-size:1em;margin:1px 0}.ui-datepicker select.ui-datepicker-month,.ui-datepicker select.ui-datepicker-year{width:45%}.ui-datepicker table{width:100%;font-size:.9em;border-collapse:collapse;margin:0 0 .4em}.ui-datepicker th{padding:.7em .3em;text-align:center;font-weight:bold;border:0}.ui-datepicker td{border:0;padding:1px}.ui-datepicker td span,.ui-datepicker td a{display:block;padding:.2em;text-align:right;text-decoration:none}.ui-datepicker .ui-datepicker-buttonpane{background-image:none;margin:.7em 0 0 0;padding:0 .2em;border-left:0;border-right:0;border-bottom:0}.ui-datepicker .ui-datepicker-buttonpane button{float:right;margin:.5em .2em .4em;cursor:pointer;padding:.2em .6em .3em .6em;width:auto;overflow:visible}.ui-datepicker .ui-datepicker-buttonpane button.ui-datepicker-current{float:left}.ui-datepicker.ui-datepicker-multi{width:auto}.ui-datepicker-multi .ui-datepicker-group{float:left}.ui-datepicker-multi .ui-datepicker-group table{width:95%;margin:0 auto .4em}.ui-datepicker-multi-2 .ui-datepicker-group{width:50%}.ui-datepicker-multi-3 .ui-datepicker-group{width:33.3%}.ui-datepicker-multi-4 .ui-datepicker-group{width:25%}.ui-datepicker-multi .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-multi .ui-datepicker-group-middle .ui-datepicker-header{border-left-width:0}.ui-datepicker-multi .ui-datepicker-buttonpane{clear:left}.ui-datepicker-row-break{clear:both;width:100%;font-size:0}.ui-datepicker-rtl{direction:rtl}.ui-datepicker-rtl .ui-datepicker-prev{right:2px;left:auto}.ui-datepicker-rtl .ui-datepicker-next{left:2px;right:auto}.ui-datepicker-rtl .ui-datepicker-prev:hover{right:1px;left:auto}.ui-datepicker-rtl .ui-datepicker-next:hover{left:1px;right:auto}.ui-datepicker-rtl .ui-datepicker-buttonpane{clear:right}.ui-datepicker-rtl .ui-datepicker-buttonpane button{float:left}.ui-datepicker-rtl .ui-datepicker-buttonpane button.ui-datepicker-current,.ui-datepicker-rtl .ui-datepicker-group{float:right}.ui-datepicker-rtl .ui-datepicker-group-last .ui-datepicker-header,.ui-datepicker-rtl .ui-datepicker-group-middle .ui-datepicker-header{border-right-width:0;border-left-width:1px}.ui-datepicker .ui-icon{display:block;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat;left:.5em;top:.3em}.ui-dialog{position:absolute;top:0;left:0;padding:.2em;outline:0}.ui-dialog .ui-dialog-titlebar{padding:.4em 1em;position:relative}.ui-dialog .ui-dialog-title{float:left;margin:.1em 0;white-space:nowrap;width:90%;overflow:hidden;text-overflow:ellipsis}.ui-dialog .ui-dialog-titlebar-close{position:absolute;right:.3em;top:50%;width:20px;margin:-10px 0 0 0;padding:1px;height:20px}.ui-dialog .ui-dialog-content{position:relative;border:0;padding:.5em 1em;background:none;overflow:auto}.ui-dialog .ui-dialog-buttonpane{text-align:left;border-width:1px 0 0 0;background-image:none;margin-top:.5em;padding:.3em 1em .5em .4em}.ui-dialog .ui-dialog-buttonpane .ui-dialog-buttonset{float:right}.ui-dialog .ui-dialog-buttonpane button{margin:.5em .4em .5em 0;cursor:pointer}.ui-dialog .ui-resizable-n{height:2px;top:0}.ui-dialog .ui-resizable-e{width:2px;right:0}.ui-dialog .ui-resizable-s{height:2px;bottom:0}.ui-dialog .ui-resizable-w{width:2px;left:0}.ui-dialog .ui-resizable-se,.ui-dialog .ui-resizable-sw,.ui-dialog .ui-resizable-ne,.ui-dialog .ui-resizable-nw{width:7px;height:7px}.ui-dialog .ui-resizable-se{right:0;bottom:0}.ui-dialog .ui-resizable-sw{left:0;bottom:0}.ui-dialog .ui-resizable-ne{right:0;top:0}.ui-dialog .ui-resizable-nw{left:0;top:0}.ui-draggable .ui-dialog-titlebar{cursor:move}.ui-draggable-handle{-ms-touch-action:none;touch-action:none}.ui-resizable{position:relative}.ui-resizable-handle{position:absolute;font-size:0.1px;display:block;-ms-touch-action:none;touch-action:none}.ui-resizable-disabled .ui-resizable-handle,.ui-resizable-autohide .ui-resizable-handle{display:none}.ui-resizable-n{cursor:n-resize;height:7px;width:100%;top:-5px;left:0}.ui-resizable-s{cursor:s-resize;height:7px;width:100%;bottom:-5px;left:0}.ui-resizable-e{cursor:e-resize;width:7px;right:-5px;top:0;height:100%}.ui-resizable-w{cursor:w-resize;width:7px;left:-5px;top:0;height:100%}.ui-resizable-se{cursor:se-resize;width:12px;height:12px;right:1px;bottom:1px}.ui-resizable-sw{cursor:sw-resize;width:9px;height:9px;left:-5px;bottom:-5px}.ui-resizable-nw{cursor:nw-resize;width:9px;height:9px;left:-5px;top:-5px}.ui-resizable-ne{cursor:ne-resize;width:9px;height:9px;right:-5px;top:-5px}.ui-progressbar{height:2em;text-align:left;overflow:hidden}.ui-progressbar .ui-progressbar-value{margin:-1px;height:100%}.ui-progressbar .ui-progressbar-overlay{background:url("data:image/gif;base64,R0lGODlhKAAoAIABAAAAAP///yH/C05FVFNDQVBFMi4wAwEAAAAh+QQJAQABACwAAAAAKAAoAAACkYwNqXrdC52DS06a7MFZI+4FHBCKoDeWKXqymPqGqxvJrXZbMx7Ttc+w9XgU2FB3lOyQRWET2IFGiU9m1frDVpxZZc6bfHwv4c1YXP6k1Vdy292Fb6UkuvFtXpvWSzA+HycXJHUXiGYIiMg2R6W459gnWGfHNdjIqDWVqemH2ekpObkpOlppWUqZiqr6edqqWQAAIfkECQEAAQAsAAAAACgAKAAAApSMgZnGfaqcg1E2uuzDmmHUBR8Qil95hiPKqWn3aqtLsS18y7G1SzNeowWBENtQd+T1JktP05nzPTdJZlR6vUxNWWjV+vUWhWNkWFwxl9VpZRedYcflIOLafaa28XdsH/ynlcc1uPVDZxQIR0K25+cICCmoqCe5mGhZOfeYSUh5yJcJyrkZWWpaR8doJ2o4NYq62lAAACH5BAkBAAEALAAAAAAoACgAAAKVDI4Yy22ZnINRNqosw0Bv7i1gyHUkFj7oSaWlu3ovC8GxNso5fluz3qLVhBVeT/Lz7ZTHyxL5dDalQWPVOsQWtRnuwXaFTj9jVVh8pma9JjZ4zYSj5ZOyma7uuolffh+IR5aW97cHuBUXKGKXlKjn+DiHWMcYJah4N0lYCMlJOXipGRr5qdgoSTrqWSq6WFl2ypoaUAAAIfkECQEAAQAsAAAAACgAKAAAApaEb6HLgd/iO7FNWtcFWe+ufODGjRfoiJ2akShbueb0wtI50zm02pbvwfWEMWBQ1zKGlLIhskiEPm9R6vRXxV4ZzWT2yHOGpWMyorblKlNp8HmHEb/lCXjcW7bmtXP8Xt229OVWR1fod2eWqNfHuMjXCPkIGNileOiImVmCOEmoSfn3yXlJWmoHGhqp6ilYuWYpmTqKUgAAIfkECQEAAQAsAAAAACgAKAAAApiEH6kb58biQ3FNWtMFWW3eNVcojuFGfqnZqSebuS06w5V80/X02pKe8zFwP6EFWOT1lDFk8rGERh1TTNOocQ61Hm4Xm2VexUHpzjymViHrFbiELsefVrn6XKfnt2Q9G/+Xdie499XHd2g4h7ioOGhXGJboGAnXSBnoBwKYyfioubZJ2Hn0RuRZaflZOil56Zp6iioKSXpUAAAh+QQJAQABACwAAAAAKAAoAAACkoQRqRvnxuI7kU1a1UU5bd5tnSeOZXhmn5lWK3qNTWvRdQxP8qvaC+/yaYQzXO7BMvaUEmJRd3TsiMAgswmNYrSgZdYrTX6tSHGZO73ezuAw2uxuQ+BbeZfMxsexY35+/Qe4J1inV0g4x3WHuMhIl2jXOKT2Q+VU5fgoSUI52VfZyfkJGkha6jmY+aaYdirq+lQAACH5BAkBAAEALAAAAAAoACgAAAKWBIKpYe0L3YNKToqswUlvznigd4wiR4KhZrKt9Upqip61i9E3vMvxRdHlbEFiEXfk9YARYxOZZD6VQ2pUunBmtRXo1Lf8hMVVcNl8JafV38aM2/Fu5V16Bn63r6xt97j09+MXSFi4BniGFae3hzbH9+hYBzkpuUh5aZmHuanZOZgIuvbGiNeomCnaxxap2upaCZsq+1kAACH5BAkBAAEALAAAAAAoACgAAAKXjI8By5zf4kOxTVrXNVlv1X0d8IGZGKLnNpYtm8Lr9cqVeuOSvfOW79D9aDHizNhDJidFZhNydEahOaDH6nomtJjp1tutKoNWkvA6JqfRVLHU/QUfau9l2x7G54d1fl995xcIGAdXqMfBNadoYrhH+Mg2KBlpVpbluCiXmMnZ2Sh4GBqJ+ckIOqqJ6LmKSllZmsoq6wpQAAAh+QQJAQABACwAAAAAKAAoAAAClYx/oLvoxuJDkU1a1YUZbJ59nSd2ZXhWqbRa2/gF8Gu2DY3iqs7yrq+xBYEkYvFSM8aSSObE+ZgRl1BHFZNr7pRCavZ5BW2142hY3AN/zWtsmf12p9XxxFl2lpLn1rseztfXZjdIWIf2s5dItwjYKBgo9yg5pHgzJXTEeGlZuenpyPmpGQoKOWkYmSpaSnqKileI2FAAACH5BAkBAAEALAAAAAAoACgAAAKVjB+gu+jG4kORTVrVhRlsnn2dJ3ZleFaptFrb+CXmO9OozeL5VfP99HvAWhpiUdcwkpBH3825AwYdU8xTqlLGhtCosArKMpvfa1mMRae9VvWZfeB2XfPkeLmm18lUcBj+p5dnN8jXZ3YIGEhYuOUn45aoCDkp16hl5IjYJvjWKcnoGQpqyPlpOhr3aElaqrq56Bq7VAAAOw==");height:100%;filter:alpha(opacity=25);opacity:0.25}.ui-progressbar-indeterminate .ui-progressbar-value{background-image:none}.ui-selectable{-ms-touch-action:none;touch-action:none}.ui-selectable-helper{position:absolute;z-index:100;border:1px dotted black}.ui-selectmenu-menu{padding:0;margin:0;position:absolute;top:0;left:0;display:none}.ui-selectmenu-menu .ui-menu{overflow:auto;overflow-x:hidden;padding-bottom:1px}.ui-selectmenu-menu .ui-menu .ui-selectmenu-optgroup{font-size:1em;font-weight:bold;line-height:1.5;padding:2px 0.4em;margin:0.5em 0 0 0;height:auto;border:0}.ui-selectmenu-open{display:block}.ui-selectmenu-text{display:block;margin-right:20px;overflow:hidden;text-overflow:ellipsis}.ui-selectmenu-button.ui-button{text-align:left;white-space:nowrap;width:14em}.ui-selectmenu-icon.ui-icon{float:right;margin-top:0}.ui-slider{position:relative;text-align:left}.ui-slider .ui-slider-handle{position:absolute;z-index:2;width:1.2em;height:1.2em;cursor:default;-ms-touch-action:none;touch-action:none}.ui-slider .ui-slider-range{position:absolute;z-index:1;font-size:.7em;display:block;border:0;background-position:0 0}.ui-slider.ui-state-disabled .ui-slider-handle,.ui-slider.ui-state-disabled .ui-slider-range{filter:inherit}.ui-slider-horizontal{height:.8em}.ui-slider-horizontal .ui-slider-handle{top:-.3em;margin-left:-.6em}.ui-slider-horizontal .ui-slider-range{top:0;height:100%}.ui-slider-horizontal .ui-slider-range-min{left:0}.ui-slider-horizontal .ui-slider-range-max{right:0}.ui-slider-vertical{width:.8em;height:100px}.ui-slider-vertical .ui-slider-handle{left:-.3em;margin-left:0;margin-bottom:-.6em}.ui-slider-vertical .ui-slider-range{left:0;width:100%}.ui-slider-vertical .ui-slider-range-min{bottom:0}.ui-slider-vertical .ui-slider-range-max{top:0}.ui-sortable-handle{-ms-touch-action:none;touch-action:none}.ui-spinner{position:relative;display:inline-block;overflow:hidden;padding:0;vertical-align:middle}.ui-spinner-input{border:none;background:none;color:inherit;padding:.222em 0;margin:.2em 0;vertical-align:middle;margin-left:.4em;margin-right:2em}.ui-spinner-button{width:1.6em;height:50%;font-size:.5em;padding:0;margin:0;text-align:center;position:absolute;cursor:default;display:block;overflow:hidden;right:0}.ui-spinner a.ui-spinner-button{border-top-style:none;border-bottom-style:none;border-right-style:none}.ui-spinner-up{top:0}.ui-spinner-down{bottom:0}.ui-tabs{position:relative;padding:.2em}.ui-tabs .ui-tabs-nav{margin:0;padding:.2em .2em 0}.ui-tabs .ui-tabs-nav li{list-style:none;float:left;position:relative;top:0;margin:1px .2em 0 0;border-bottom-width:0;padding:0;white-space:nowrap}.ui-tabs .ui-tabs-nav .ui-tabs-anchor{float:left;padding:.5em 1em;text-decoration:none}.ui-tabs .ui-tabs-nav li.ui-tabs-active{margin-bottom:-1px;padding-bottom:1px}.ui-tabs .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-state-disabled .ui-tabs-anchor,.ui-tabs .ui-tabs-nav li.ui-tabs-loading .ui-tabs-anchor{cursor:text}.ui-tabs-collapsible .ui-tabs-nav li.ui-tabs-active .ui-tabs-anchor{cursor:pointer}.ui-tabs .ui-tabs-panel{display:block;border-width:0;padding:1em 1.4em;background:none}.ui-tooltip{padding:8px;position:absolute;z-index:9999;max-width:300px}body .ui-tooltip{border-width:2px}
@@ -1,5 +1,5 @@
1
- /*! jQuery UI - v1.11.1 - 2014-09-04
1
+ /*! jQuery UI - v1.12.0 - 2016-07-08
2
2
  * http://jqueryui.com
3
- * Copyright 2014 jQuery Foundation and other contributors; Licensed MIT */
3
+ * Copyright jQuery Foundation and other contributors; Licensed MIT */
4
4
 
5
- .ui-widget{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1.1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Trebuchet MS,Tahoma,Verdana,Arial,sans-serif;font-size:1em}.ui-widget-content{border:1px solid #ddd;background:#eee url("images/ui-bg_highlight-soft_100_eeeeee_1x100.png") 50% top repeat-x;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #e78f08;background:#f6a828 url("images/ui-bg_gloss-wave_35_f6a828_500x100.png") 50% 50% repeat-x;color:#fff;font-weight:bold}.ui-widget-header a{color:#fff}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default{border:1px solid #ccc;background:#f6f6f6 url("images/ui-bg_glass_100_f6f6f6_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#1c94c4}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited{color:#1c94c4;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus{border:1px solid #fbcb09;background:#fdf5ce url("images/ui-bg_glass_100_fdf5ce_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#c77405}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited{color:#c77405;text-decoration:none}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active{border:1px solid #fbd850;background:#fff url("images/ui-bg_glass_65_ffffff_1x400.png") 50% 50% repeat-x;font-weight:bold;color:#eb8f00}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#eb8f00;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #fed22f;background:#ffe45c url("images/ui-bg_highlight-soft_75_ffe45c_1x100.png") 50% top repeat-x;color:#363636}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#363636}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #cd0a0a;background:#b81900 url("images/ui-bg_diagonals-thick_18_b81900_40x40.png") 50% 50% repeat;color:#fff}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#fff}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#fff}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_222222_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-default .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-active .ui-icon{background-image:url("images/ui-icons_ef8c08_256x240.png")}.ui-state-highlight .ui-icon{background-image:url("images/ui-icons_228ef1_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_ffd27a_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-carat-1-n{background-position:0 0}.ui-icon-carat-1-ne{background-position:-16px 0}.ui-icon-carat-1-e{background-position:-32px 0}.ui-icon-carat-1-se{background-position:-48px 0}.ui-icon-carat-1-s{background-position:-64px 0}.ui-icon-carat-1-sw{background-position:-80px 0}.ui-icon-carat-1-w{background-position:-96px 0}.ui-icon-carat-1-nw{background-position:-112px 0}.ui-icon-carat-2-n-s{background-position:-128px 0}.ui-icon-carat-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-64px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-64px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:0 -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:4px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:4px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:4px}.ui-widget-overlay{background:#666 url("images/ui-bg_diagonals-thick_20_666666_40x40.png") 50% 50% repeat;opacity:.5;filter:Alpha(Opacity=50)}.ui-widget-shadow{margin:-5px 0 0 -5px;padding:5px;background:#000 url("images/ui-bg_flat_10_000000_40x100.png") 50% 50% repeat-x;opacity:.2;filter:Alpha(Opacity=20);border-radius:5px}
5
+ .ui-widget{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget .ui-widget{font-size:1em}.ui-widget input,.ui-widget select,.ui-widget textarea,.ui-widget button{font-family:Arial,Helvetica,sans-serif;font-size:1em}.ui-widget.ui-widget-content{border:1px solid #c5c5c5}.ui-widget-content{border:1px solid #ddd;background:#fff;color:#333}.ui-widget-content a{color:#333}.ui-widget-header{border:1px solid #ddd;background:#e9e9e9;color:#333;font-weight:bold}.ui-widget-header a{color:#333}.ui-state-default,.ui-widget-content .ui-state-default,.ui-widget-header .ui-state-default,.ui-button,html .ui-button.ui-state-disabled:hover,html .ui-button.ui-state-disabled:active{border:1px solid #c5c5c5;background:#f6f6f6;font-weight:normal;color:#454545}.ui-state-default a,.ui-state-default a:link,.ui-state-default a:visited,a.ui-button,a:link.ui-button,a:visited.ui-button,.ui-button{color:#454545;text-decoration:none}.ui-state-hover,.ui-widget-content .ui-state-hover,.ui-widget-header .ui-state-hover,.ui-state-focus,.ui-widget-content .ui-state-focus,.ui-widget-header .ui-state-focus,.ui-button:hover,.ui-button:focus{border:1px solid #ccc;background:#ededed;font-weight:normal;color:#2b2b2b}.ui-state-hover a,.ui-state-hover a:hover,.ui-state-hover a:link,.ui-state-hover a:visited,.ui-state-focus a,.ui-state-focus a:hover,.ui-state-focus a:link,.ui-state-focus a:visited,a.ui-button:hover,a.ui-button:focus{color:#2b2b2b;text-decoration:none}.ui-visual-focus{box-shadow:0 0 3px 1px rgb(94,158,214)}.ui-state-active,.ui-widget-content .ui-state-active,.ui-widget-header .ui-state-active,a.ui-button:active,.ui-button:active,.ui-button.ui-state-active:hover{border:1px solid #003eff;background:#007fff;font-weight:normal;color:#fff}.ui-icon-background,.ui-state-active .ui-icon-background{border:#003eff;background-color:#fff}.ui-state-active a,.ui-state-active a:link,.ui-state-active a:visited{color:#fff;text-decoration:none}.ui-state-highlight,.ui-widget-content .ui-state-highlight,.ui-widget-header .ui-state-highlight{border:1px solid #dad55e;background:#fffa90;color:#777620}.ui-state-checked{border:1px solid #dad55e;background:#fffa90}.ui-state-highlight a,.ui-widget-content .ui-state-highlight a,.ui-widget-header .ui-state-highlight a{color:#777620}.ui-state-error,.ui-widget-content .ui-state-error,.ui-widget-header .ui-state-error{border:1px solid #f1a899;background:#fddfdf;color:#5f3f3f}.ui-state-error a,.ui-widget-content .ui-state-error a,.ui-widget-header .ui-state-error a{color:#5f3f3f}.ui-state-error-text,.ui-widget-content .ui-state-error-text,.ui-widget-header .ui-state-error-text{color:#5f3f3f}.ui-priority-primary,.ui-widget-content .ui-priority-primary,.ui-widget-header .ui-priority-primary{font-weight:bold}.ui-priority-secondary,.ui-widget-content .ui-priority-secondary,.ui-widget-header .ui-priority-secondary{opacity:.7;filter:Alpha(Opacity=70);font-weight:normal}.ui-state-disabled,.ui-widget-content .ui-state-disabled,.ui-widget-header .ui-state-disabled{opacity:.35;filter:Alpha(Opacity=35);background-image:none}.ui-state-disabled .ui-icon{filter:Alpha(Opacity=35)}.ui-icon{width:16px;height:16px}.ui-icon,.ui-widget-content .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-widget-header .ui-icon{background-image:url("images/ui-icons_444444_256x240.png")}.ui-button .ui-icon{background-image:url("images/ui-icons_777777_256x240.png")}.ui-state-hover .ui-icon,.ui-state-focus .ui-icon,.ui-button:hover .ui-icon,.ui-button:focus .ui-icon,.ui-state-default .ui-icon{background-image:url("images/ui-icons_555555_256x240.png")}.ui-state-active .ui-icon,.ui-button:active .ui-icon{background-image:url("images/ui-icons_ffffff_256x240.png")}.ui-state-highlight .ui-icon,.ui-button .ui-state-highlight.ui-icon{background-image:url("images/ui-icons_777620_256x240.png")}.ui-state-error .ui-icon,.ui-state-error-text .ui-icon{background-image:url("images/ui-icons_cc0000_256x240.png")}.ui-icon-blank{background-position:16px 16px}.ui-icon-caret-1-n{background-position:0 0}.ui-icon-caret-1-ne{background-position:-16px 0}.ui-icon-caret-1-e{background-position:-32px 0}.ui-icon-caret-1-se{background-position:-48px 0}.ui-icon-caret-1-s{background-position:-65px 0}.ui-icon-caret-1-sw{background-position:-80px 0}.ui-icon-caret-1-w{background-position:-96px 0}.ui-icon-caret-1-nw{background-position:-112px 0}.ui-icon-caret-2-n-s{background-position:-128px 0}.ui-icon-caret-2-e-w{background-position:-144px 0}.ui-icon-triangle-1-n{background-position:0 -16px}.ui-icon-triangle-1-ne{background-position:-16px -16px}.ui-icon-triangle-1-e{background-position:-32px -16px}.ui-icon-triangle-1-se{background-position:-48px -16px}.ui-icon-triangle-1-s{background-position:-65px -16px}.ui-icon-triangle-1-sw{background-position:-80px -16px}.ui-icon-triangle-1-w{background-position:-96px -16px}.ui-icon-triangle-1-nw{background-position:-112px -16px}.ui-icon-triangle-2-n-s{background-position:-128px -16px}.ui-icon-triangle-2-e-w{background-position:-144px -16px}.ui-icon-arrow-1-n{background-position:0 -32px}.ui-icon-arrow-1-ne{background-position:-16px -32px}.ui-icon-arrow-1-e{background-position:-32px -32px}.ui-icon-arrow-1-se{background-position:-48px -32px}.ui-icon-arrow-1-s{background-position:-65px -32px}.ui-icon-arrow-1-sw{background-position:-80px -32px}.ui-icon-arrow-1-w{background-position:-96px -32px}.ui-icon-arrow-1-nw{background-position:-112px -32px}.ui-icon-arrow-2-n-s{background-position:-128px -32px}.ui-icon-arrow-2-ne-sw{background-position:-144px -32px}.ui-icon-arrow-2-e-w{background-position:-160px -32px}.ui-icon-arrow-2-se-nw{background-position:-176px -32px}.ui-icon-arrowstop-1-n{background-position:-192px -32px}.ui-icon-arrowstop-1-e{background-position:-208px -32px}.ui-icon-arrowstop-1-s{background-position:-224px -32px}.ui-icon-arrowstop-1-w{background-position:-240px -32px}.ui-icon-arrowthick-1-n{background-position:1px -48px}.ui-icon-arrowthick-1-ne{background-position:-16px -48px}.ui-icon-arrowthick-1-e{background-position:-32px -48px}.ui-icon-arrowthick-1-se{background-position:-48px -48px}.ui-icon-arrowthick-1-s{background-position:-64px -48px}.ui-icon-arrowthick-1-sw{background-position:-80px -48px}.ui-icon-arrowthick-1-w{background-position:-96px -48px}.ui-icon-arrowthick-1-nw{background-position:-112px -48px}.ui-icon-arrowthick-2-n-s{background-position:-128px -48px}.ui-icon-arrowthick-2-ne-sw{background-position:-144px -48px}.ui-icon-arrowthick-2-e-w{background-position:-160px -48px}.ui-icon-arrowthick-2-se-nw{background-position:-176px -48px}.ui-icon-arrowthickstop-1-n{background-position:-192px -48px}.ui-icon-arrowthickstop-1-e{background-position:-208px -48px}.ui-icon-arrowthickstop-1-s{background-position:-224px -48px}.ui-icon-arrowthickstop-1-w{background-position:-240px -48px}.ui-icon-arrowreturnthick-1-w{background-position:0 -64px}.ui-icon-arrowreturnthick-1-n{background-position:-16px -64px}.ui-icon-arrowreturnthick-1-e{background-position:-32px -64px}.ui-icon-arrowreturnthick-1-s{background-position:-48px -64px}.ui-icon-arrowreturn-1-w{background-position:-64px -64px}.ui-icon-arrowreturn-1-n{background-position:-80px -64px}.ui-icon-arrowreturn-1-e{background-position:-96px -64px}.ui-icon-arrowreturn-1-s{background-position:-112px -64px}.ui-icon-arrowrefresh-1-w{background-position:-128px -64px}.ui-icon-arrowrefresh-1-n{background-position:-144px -64px}.ui-icon-arrowrefresh-1-e{background-position:-160px -64px}.ui-icon-arrowrefresh-1-s{background-position:-176px -64px}.ui-icon-arrow-4{background-position:0 -80px}.ui-icon-arrow-4-diag{background-position:-16px -80px}.ui-icon-extlink{background-position:-32px -80px}.ui-icon-newwin{background-position:-48px -80px}.ui-icon-refresh{background-position:-64px -80px}.ui-icon-shuffle{background-position:-80px -80px}.ui-icon-transfer-e-w{background-position:-96px -80px}.ui-icon-transferthick-e-w{background-position:-112px -80px}.ui-icon-folder-collapsed{background-position:0 -96px}.ui-icon-folder-open{background-position:-16px -96px}.ui-icon-document{background-position:-32px -96px}.ui-icon-document-b{background-position:-48px -96px}.ui-icon-note{background-position:-64px -96px}.ui-icon-mail-closed{background-position:-80px -96px}.ui-icon-mail-open{background-position:-96px -96px}.ui-icon-suitcase{background-position:-112px -96px}.ui-icon-comment{background-position:-128px -96px}.ui-icon-person{background-position:-144px -96px}.ui-icon-print{background-position:-160px -96px}.ui-icon-trash{background-position:-176px -96px}.ui-icon-locked{background-position:-192px -96px}.ui-icon-unlocked{background-position:-208px -96px}.ui-icon-bookmark{background-position:-224px -96px}.ui-icon-tag{background-position:-240px -96px}.ui-icon-home{background-position:0 -112px}.ui-icon-flag{background-position:-16px -112px}.ui-icon-calendar{background-position:-32px -112px}.ui-icon-cart{background-position:-48px -112px}.ui-icon-pencil{background-position:-64px -112px}.ui-icon-clock{background-position:-80px -112px}.ui-icon-disk{background-position:-96px -112px}.ui-icon-calculator{background-position:-112px -112px}.ui-icon-zoomin{background-position:-128px -112px}.ui-icon-zoomout{background-position:-144px -112px}.ui-icon-search{background-position:-160px -112px}.ui-icon-wrench{background-position:-176px -112px}.ui-icon-gear{background-position:-192px -112px}.ui-icon-heart{background-position:-208px -112px}.ui-icon-star{background-position:-224px -112px}.ui-icon-link{background-position:-240px -112px}.ui-icon-cancel{background-position:0 -128px}.ui-icon-plus{background-position:-16px -128px}.ui-icon-plusthick{background-position:-32px -128px}.ui-icon-minus{background-position:-48px -128px}.ui-icon-minusthick{background-position:-64px -128px}.ui-icon-close{background-position:-80px -128px}.ui-icon-closethick{background-position:-96px -128px}.ui-icon-key{background-position:-112px -128px}.ui-icon-lightbulb{background-position:-128px -128px}.ui-icon-scissors{background-position:-144px -128px}.ui-icon-clipboard{background-position:-160px -128px}.ui-icon-copy{background-position:-176px -128px}.ui-icon-contact{background-position:-192px -128px}.ui-icon-image{background-position:-208px -128px}.ui-icon-video{background-position:-224px -128px}.ui-icon-script{background-position:-240px -128px}.ui-icon-alert{background-position:0 -144px}.ui-icon-info{background-position:-16px -144px}.ui-icon-notice{background-position:-32px -144px}.ui-icon-help{background-position:-48px -144px}.ui-icon-check{background-position:-64px -144px}.ui-icon-bullet{background-position:-80px -144px}.ui-icon-radio-on{background-position:-96px -144px}.ui-icon-radio-off{background-position:-112px -144px}.ui-icon-pin-w{background-position:-128px -144px}.ui-icon-pin-s{background-position:-144px -144px}.ui-icon-play{background-position:0 -160px}.ui-icon-pause{background-position:-16px -160px}.ui-icon-seek-next{background-position:-32px -160px}.ui-icon-seek-prev{background-position:-48px -160px}.ui-icon-seek-end{background-position:-64px -160px}.ui-icon-seek-start{background-position:-80px -160px}.ui-icon-seek-first{background-position:-80px -160px}.ui-icon-stop{background-position:-96px -160px}.ui-icon-eject{background-position:-112px -160px}.ui-icon-volume-off{background-position:-128px -160px}.ui-icon-volume-on{background-position:-144px -160px}.ui-icon-power{background-position:0 -176px}.ui-icon-signal-diag{background-position:-16px -176px}.ui-icon-signal{background-position:-32px -176px}.ui-icon-battery-0{background-position:-48px -176px}.ui-icon-battery-1{background-position:-64px -176px}.ui-icon-battery-2{background-position:-80px -176px}.ui-icon-battery-3{background-position:-96px -176px}.ui-icon-circle-plus{background-position:0 -192px}.ui-icon-circle-minus{background-position:-16px -192px}.ui-icon-circle-close{background-position:-32px -192px}.ui-icon-circle-triangle-e{background-position:-48px -192px}.ui-icon-circle-triangle-s{background-position:-64px -192px}.ui-icon-circle-triangle-w{background-position:-80px -192px}.ui-icon-circle-triangle-n{background-position:-96px -192px}.ui-icon-circle-arrow-e{background-position:-112px -192px}.ui-icon-circle-arrow-s{background-position:-128px -192px}.ui-icon-circle-arrow-w{background-position:-144px -192px}.ui-icon-circle-arrow-n{background-position:-160px -192px}.ui-icon-circle-zoomin{background-position:-176px -192px}.ui-icon-circle-zoomout{background-position:-192px -192px}.ui-icon-circle-check{background-position:-208px -192px}.ui-icon-circlesmall-plus{background-position:0 -208px}.ui-icon-circlesmall-minus{background-position:-16px -208px}.ui-icon-circlesmall-close{background-position:-32px -208px}.ui-icon-squaresmall-plus{background-position:-48px -208px}.ui-icon-squaresmall-minus{background-position:-64px -208px}.ui-icon-squaresmall-close{background-position:-80px -208px}.ui-icon-grip-dotted-vertical{background-position:0 -224px}.ui-icon-grip-dotted-horizontal{background-position:-16px -224px}.ui-icon-grip-solid-vertical{background-position:-32px -224px}.ui-icon-grip-solid-horizontal{background-position:-48px -224px}.ui-icon-gripsmall-diagonal-se{background-position:-64px -224px}.ui-icon-grip-diagonal-se{background-position:-80px -224px}.ui-corner-all,.ui-corner-top,.ui-corner-left,.ui-corner-tl{border-top-left-radius:3px}.ui-corner-all,.ui-corner-top,.ui-corner-right,.ui-corner-tr{border-top-right-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-left,.ui-corner-bl{border-bottom-left-radius:3px}.ui-corner-all,.ui-corner-bottom,.ui-corner-right,.ui-corner-br{border-bottom-right-radius:3px}.ui-widget-overlay{background:#aaa;opacity:.003;filter:Alpha(Opacity=.3)}.ui-widget-shadow{-webkit-box-shadow:0 0 5px #666;box-shadow:0 0 5px #666}
@@ -0,0 +1,796 @@
1
+ <!DOCTYPE html>
2
+ <html>
3
+ <head>
4
+ <meta http-equiv="content-type" content="text/html; charset=UTF-8" />
5
+ <title>Visualizing Git</title>
6
+ <script data-main="js/main" src="js/vendor/require.min.js"></script>
7
+ <!--
8
+ <script type="text/javascript" src="js/vendor/jquery.min.js"></script>
9
+ <script type="text/javascript" src="js/vendor/jquery-ui.min.js"></script>
10
+ <script type="text/javascript" src="js/vendor/jquery.dialogextend.min.js"></script>
11
+ -->
12
+ <link rel="stylesheet" href="css/vendor/normalize.css">
13
+ <link rel="stylesheet" href="css/vendor/jquery-ui.min.css">
14
+ <link rel="stylesheet" href="css/vendor/jquery-ui.structure.min.css">
15
+ <link rel="stylesheet" href="css/vendor/jquery-ui.theme.min.css">
16
+ <link rel="stylesheet" href="css/vendor/1140.css">
17
+ <link rel="stylesheet" href="css/explaingit.css">
18
+ </head>
19
+ <body>
20
+ <div id="menuwrapper">
21
+ <div id="menubar">
22
+ <div class="row command-list">
23
+ <div class="twocol">
24
+ <h4>Basic Commands</h3>
25
+ <a id="open-commit" class="openswitch" href="#" onClick="return false;">git commit</a>
26
+ <a id="open-branch" class="openswitch" href="#" onClick="return false;">git branch</a>
27
+ </div>
28
+ <div class="twocol">
29
+ <h4>&nbsp;</h4>
30
+ <a id="open-checkout" class="openswitch" href="#" onClick="return false;">git checkout</a>
31
+ <a id="open-checkout-b" class="openswitch" href="#" onClick="return false;">git checkout -b</a>
32
+ </div>
33
+ <div class="twocol">
34
+ <h4>Undo Commits</h4>
35
+ <a id="open-reset" class="openswitch" href="#" onClick="return false;">git reset</a>
36
+ <a id="open-revert" class="openswitch" href="#" onClick="return false;">git revert</a>
37
+ </div>
38
+ <div class="twocol">
39
+ <h4>Combine Branches</h4>
40
+ <a id="open-merge" class="openswitch" href="#" onClick="return false;">git merge</a>
41
+ <a id="open-rebase" class="openswitch" href="#" onClick="return false;">git rebase</a>
42
+ </div>
43
+ <div class="twocol">
44
+ <h4>Remote Server</h4>
45
+ <a id="open-fetch" class="openswitch" href="#" onClick="return false;">git fetch</a>
46
+ <a id="open-pull" class="openswitch" href="#" onClick="return false;">git pull</a>
47
+ </div>
48
+ <div class="twocol last">
49
+ <h4>&nbsp;</h4>
50
+ <a id="open-push" class="openswitch" href="#" onClick="return false;">git push</a>
51
+ </div>
52
+ </div>
53
+ <div class="row command-list">
54
+ <div class="tencol">
55
+ <h4>Real World Scenarios</h4>
56
+ <a id="open-clean" class="openswitch" href="#" onClick="return false;">Restore Local Branch to State on Origin Server</a>
57
+ <a id="open-fetchrebase" class="openswitch" href="#" onClick="return false;">Update Private Local Branch with Latest from Origin</a>
58
+ <a id="open-deletebranches" class="openswitch" href="#" onClick="return false;">Deleting Local Branches</a>
59
+ </div>
60
+ <div class="twocol last">
61
+ <a id="open-freeplay" class="openswitch" href="#" onClick="return false;">Free Playground</a>
62
+ </div>
63
+ </div>
64
+ </div>
65
+ </div>
66
+ <div class="container">
67
+ <div class="row concept-area">
68
+ <div id="ExplainGitCommit-Container" class="twelvecol concept-container">
69
+ <div class="playground-container"></div>
70
+ <div class="scenario">
71
+ <p>
72
+ We are going to skip instructing you on how to add your files for commit in this explanation.
73
+ Let's assume you already know how to do that. If you don't, go read some other tutorials.
74
+ </p>
75
+ <p>
76
+ Pretend that you already have your files staged for commit and enter <span class="cmd">git commit</span>
77
+ as many times as you like in the terminal box.
78
+ </p>
79
+ </div>
80
+ </div>
81
+ <div id="ExplainGitBranch-Container" class="twelvecol concept-container">
82
+ <div class="playground-container"></div>
83
+ <div class="scenario">
84
+ <p>
85
+ <span class="cmd">git branch name</span> will create a new branch named "name".
86
+ Creating branches just creates a new tag pointing to the currently checked out commit.
87
+ </p>
88
+ <p>
89
+ Branches can be deleted using the command <span class="cmd">git branch -d name</span>.
90
+ </p>
91
+ <p>
92
+ Type <span class="cmd">git commit</span> and <span class="cmd">git branch</span> commands
93
+ to your heart's desire until you understand this concept.
94
+ </p>
95
+ </div>
96
+ </div>
97
+ <div id="ExplainGitCheckout-Container" class="twelvecol concept-container">
98
+ <div class="playground-container"></div>
99
+ <div class="scenario">
100
+ <p>
101
+ <span class="cmd">git checkout</span> has many uses,
102
+ but the main one is to switch between branches.</br>
103
+ For example, to switch from master branch to dev branch,
104
+ I would type <span class="cmd">git checkout dev</span>.
105
+ After that, if I do a git commit, notice where it goes. Try it.
106
+ </p>
107
+ <p>
108
+ In addition to checking out branches, you can also checkout individual commits. Try it.</br>
109
+ Make a new commit and then type <span class="cmd">git checkout bb92e0e</span>
110
+ and see what happens.
111
+ </p>
112
+ <p>
113
+ Type <span class="cmd">git commit</span>, <span class="cmd">git branch</span>,
114
+ and <span class="cmd">git checkout</span> commands to your heart's desire
115
+ until you understand this concept.
116
+ </p>
117
+ </div>
118
+ </div>
119
+ <div id="ExplainGitCheckout-b-Container" class="twelvecol concept-container">
120
+ <div class="playground-container"></div>
121
+ <div class="scenario">
122
+ <p>
123
+ You can combine <span class="cmd">git branch</span> and <span class="cmd">git checkout</span>
124
+ into a single command by typing <span class="cmd">git checkout -b branchname</span>.
125
+ This will create the branch if it does not already exist and immediately check it out.
126
+ </p>
127
+ </div>
128
+ </div>
129
+ <div id="ExplainGitReset-Container" class="twelvecol concept-container">
130
+ <div class="playground-container"></div>
131
+ <div class="scenario">
132
+ <p>
133
+ <span class="cmd">git reset</span> will move HEAD and the current branch back to wherever
134
+ you specify, abandoning any commits that may be left behind. This is useful to undo a commit
135
+ that you no longer need.
136
+ </p>
137
+ <p>
138
+ This command is normally used with one of three flags: "--soft", "--mixed", and "--hard".
139
+ The soft and mixed flags deal with what to do with the work that was inside the commit after
140
+ you reset, and you can read about it <a href="http://git-scm.com/2011/07/11/reset.html">here</a>.
141
+ Since this visualization cannot graphically display that work, only the "--hard" flag will work
142
+ on this site.
143
+ </p>
144
+ <p>
145
+ The ref "HEAD^" is usually used together with this command. "HEAD^" means "the commit right
146
+ before HEAD. "HEAD^^" means "two commits before HEAD", and so on.
147
+ </p>
148
+ <p>
149
+ Note that you must <b>never</b> use <span class="cmd">git reset</span> to abandon commits
150
+ that have already been pushed and merged into the origin. This can cause your local repository
151
+ to become out of sync with the origin. Don't do it unless you really know what you're doing.
152
+ </p>
153
+ </div>
154
+ </div>
155
+ <div id="ExplainGitRevert-Container" class="twelvecol concept-container">
156
+ <div class="playground-container"></div>
157
+ <div class="scenario">
158
+ <p>
159
+ To undo commits that have already been pushed and shared with the team, we cannot use the
160
+ <span class="cmd">git reset</span> command. Instead, we have to use <span class="cmd">git revert</span>.
161
+ </p>
162
+ <p>
163
+ <span class="cmd">git revert</span> will create a new commit that will undo all of the work that
164
+ was done in the commit you want to revert.
165
+ </p>
166
+ </div>
167
+ </div>
168
+ <div id="ExplainGitMerge-Container" class="twelvecol concept-container">
169
+ <div class="playground-container"></div>
170
+ <div class="scenario">
171
+ <p>
172
+ <span class="cmd">git merge</span> will create a new commit with two parents. The resulting
173
+ commit snapshot will have the all of the work that has been done in both branches.
174
+ </p>
175
+ <p>
176
+ If there was no divergence between the two commits, git will do a "fast-forward" method merge.</br>
177
+ To see this happen, checkout the 'ff' branch and then type <span class="cmd">git merge dev</span>.
178
+ </p>
179
+ </div>
180
+ </div>
181
+ <div id="ExplainGitRebase-Container" class="twelvecol concept-container">
182
+ <div class="playground-container"></div>
183
+ <div class="scenario">
184
+ <p>
185
+ <span class="cmd">git rebase</span> will take the commits on this branch and "move" them so that their
186
+ new "base" is at the point you specify.
187
+ </p>
188
+ <p>
189
+ You should pay close attention to the commit IDs of the circles as they move when you do this exercise.
190
+ </p>
191
+ <p>
192
+ The reason I put "move" in quotations because this process actually generates brand new commits with
193
+ completely different IDs than the old commits, and leaves the old commits where they were. For this reason,
194
+ you never want to rebase commits that have already been shared with the team you are working with.
195
+ </p>
196
+ </div>
197
+ </div>
198
+ <div id="ExplainGitFetch-Container" class="twelvecol concept-container">
199
+ <div class="playground-container"></div>
200
+ <div class="scenario">
201
+ <p>
202
+ <span class="cmd">git fetch</span> will update all of the "remote tracking branches" in your local repository.
203
+ Remote tracking branches are tagged in grey.
204
+ </p>
205
+ </div>
206
+ </div>
207
+ <div id="ExplainGitPull-Container" class="twelvecol concept-container">
208
+ <div class="playground-container"></div>
209
+ <div class="scenario">
210
+ <p>
211
+ A <span class="cmd">git pull</span> is a two step process that first does a <span class="cmd">git fetch</span>,
212
+ and then does a <span class="cmd">git merge</span> of the remote tracking branch associated with your current branch.
213
+ If you have no current branch, the process will stop after fetching.
214
+ </p>
215
+ <p>
216
+ If the argument "--rebase" was given by typing <span class="cmd">git pull --rebase</span>, the second step of
217
+ pull process will be a rebase instead of a merge. This can be set to the default behavior by configuration by typing:
218
+ <span class="cmd">git config branch.BRANCHNAME.rebase true</span>.
219
+ </p>
220
+ </div>
221
+ </div>
222
+ <div id="ExplainGitPush-Container" class="twelvecol concept-container">
223
+ <div class="playground-container"></div>
224
+ <div class="scenario">
225
+ <p>
226
+ A <span class="cmd">git push</span> will find the commits you have on your local branch that the corresponding branch
227
+ on the origin server does not have, and send them to the remote repository.
228
+ </p>
229
+ <p>
230
+ By default, all pushes must cause a fast-forward merge on the remote repository. If there is any divergence between
231
+ your local branch and the remote branch, your push will be rejected. In this scenario, you need to pull first and then
232
+ you will be able to push again.
233
+ </p>
234
+ </div>
235
+ </div>
236
+ <div id="ExplainGitClean-Container" class="twelvecol concept-container">
237
+ <div class="playground-container"></div>
238
+ <div class="scenario">
239
+ <p>
240
+ One simple example of the use of <span class="cmd">git reset</span> is to completely restore your local repository
241
+ state to that of the origin.</br>
242
+ You can do so by typing <span class="cmd">git reset origin/master</span>.
243
+ </p>
244
+ <p>
245
+ Note that this won't delete untracked files, you will have to delete those separately with
246
+ the command <span class="cmd">git clean -df</span>.
247
+ </p>
248
+ </div>
249
+ </div>
250
+ <div id="ExplainGitFetchRebase-Container" class="twelvecol concept-container">
251
+ <div class="playground-container"></div>
252
+ <div class="scenario">
253
+ <p>
254
+ Below is a situation in which you are working in a local branch that is all your own. You want to receive the latest code
255
+ from the origin server's master branch. To update your local branch, you can do it without having to switch branches!
256
+ </p>
257
+ <p>
258
+ First do a <span class="cmd">git fetch</span>, then type <span class="cmd">git rebase origin/master</span>!
259
+ </p>
260
+ </div>
261
+ </div>
262
+ <div id="ExplainGitDeleteBranches-Container" class="twelvecol concept-container">
263
+ <div class="playground-container"></div>
264
+ <div class="scenario">
265
+ <p>
266
+ <span class="cmd">git branch -d</span> is used to delete branches.
267
+ I have pre-created a bunch of branches for you to delete in the playground below.
268
+ Have at it.
269
+ </p>
270
+ </div>
271
+ </div>
272
+ <div id="ExplainGitFree-Container" class="twelvecol concept-container">
273
+ <div class="playground-container"></div>
274
+ <div class="scenario">
275
+ <p>
276
+ Do whatever you want in this free playground.
277
+ </p>
278
+ </div>
279
+ </div>
280
+ </div>
281
+ <div id="introduction">
282
+ <h1>Visualizing Git Concepts</h1>
283
+ <p>
284
+ This tool is designed to help you understand some fundamental git concepts
285
+ visually. These concepts are organized into scenarios. Choose a scenario
286
+ from the dropdown menu above. Explanations will be displayed each time you
287
+ load a new one. Alternatively, you can <a href="index.html" target="_gitviz">open in a new window.</a>
288
+ </p>
289
+ <p>
290
+ Throughout the simulation, pretend that files are staged and ready to commit at all
291
+ times. If you need a refresher on how to add or stage files for commit, please read
292
+ <a href="http://git-scm.com/book/en/Git-Basics-Recording-Changes-to-the-Repository" target="_git">Git Basics</a>.
293
+ </p>
294
+ <p>
295
+ This tool was adapted from the <a href="https://github.com/onlywei/explain-git-with-d3" target="_git">explain-git-with-d3</a> project.
296
+ </p>
297
+ </div>
298
+ </div>
299
+
300
+ <svg version="1.1" baseProfile="full"
301
+ xmlns="http://www.w3.org/2000/svg"
302
+ xmlns:xlink="http://www.w3.org/1999/xlink"
303
+ xmlns:ev="http://www.w3.org/2001/xml-events"
304
+ width="0" height="0">
305
+
306
+ <marker id="triangle" refX="5" refY="5" markerUnits="strokeWidth" fill="#666"
307
+ markerWidth="4" markerHeight="3" orient="auto" viewBox="0 0 10 10">
308
+ <path d="M 0 0 L 10 5 L 0 10 z"/>
309
+ </marker>
310
+ <marker id="faded-triangle" refX="5" refY="5" markerUnits="strokeWidth" fill="#DDD"
311
+ markerWidth="4" markerHeight="3" orient="auto" viewBox="0 0 10 10">
312
+ <path d="M 0 0 L 10 5 L 0 10 z"/>
313
+ </marker>
314
+ <marker id="brown-triangle" refX="5" refY="5" markerUnits="strokeWidth" fill="#663300"
315
+ markerWidth="4" markerHeight="3" orient="auto" viewBox="0 0 10 10">
316
+ <path d="M 0 0 L 10 5 L 0 10 z"/>
317
+ </marker>
318
+ </svg>
319
+
320
+ <script type="text/javascript">
321
+ require(['explaingit'], function (explainGit) {
322
+ var openSwitch = document.getElementById('open-commit'),
323
+ open;
324
+
325
+ open = function () {
326
+ explainGit.reset();
327
+ this.classList.add('selected');
328
+
329
+ explainGit.open({
330
+ name: 'Commit',
331
+ height: 200,
332
+ baseLine: 0.4,
333
+ commitData: [
334
+ {id: 'e137e9b', tags: ['master']}
335
+ ],
336
+ initialMessage: 'Type git commit a few times.'
337
+ });
338
+ };
339
+
340
+ openSwitch.addEventListener('click', open, false);
341
+ });
342
+ </script>
343
+
344
+ <script type="text/javascript">
345
+ require(['explaingit'], function (explainGit) {
346
+ var openSwitch = document.getElementById('open-branch'),
347
+ open;
348
+
349
+ open = function () {
350
+ explainGit.reset();
351
+ this.classList.add('selected');
352
+
353
+ explainGit.open({
354
+ name: 'Branch',
355
+ baseLine: 0.6,
356
+ commitData: [
357
+ {id: 'e137e9b', tags: ['master']}
358
+ ]
359
+ });
360
+ };
361
+
362
+ openSwitch.addEventListener('click', open, false);
363
+ });
364
+ </script>
365
+
366
+ <script type="text/javascript">
367
+ require(['explaingit'], function (explainGit) {
368
+ var openSwitch = document.getElementById('open-checkout'),
369
+ open;
370
+
371
+ open = function () {
372
+ explainGit.reset();
373
+ this.classList.add('selected');
374
+
375
+ explainGit.open({
376
+ name: 'Checkout',
377
+ height: 500,
378
+ commitData: [
379
+ {id: 'e137e9b'},
380
+ {id: 'bb92e0e', parent: 'e137e9b', tags: ['master']},
381
+ {id: 'e088135', parent: 'e137e9b', tags: ['dev']}
382
+ ],
383
+ initialMessage:
384
+ 'Use git checkout, git branch, and git commit commands until you understand.'
385
+ });
386
+ };
387
+
388
+ openSwitch.addEventListener('click', open, false);
389
+ });
390
+ </script>
391
+
392
+ <script type="text/javascript">
393
+ require(['explaingit'], function (explainGit) {
394
+ var openSwitch = document.getElementById('open-checkout-b'),
395
+ open;
396
+
397
+ open = function () {
398
+ explainGit.reset();
399
+ this.classList.add('selected');
400
+
401
+ explainGit.open({
402
+ name: 'Checkout-b',
403
+ height: 500,
404
+ commitData: [
405
+ {id: 'e137e9b'},
406
+ {id: 'f5b32c8', parent: 'e137e9b'},
407
+ {id: 'bb92e0e', parent: 'f5b32c8', tags: ['master']},
408
+ {id: 'e088135', parent: 'e137e9b', tags: ['dev']}
409
+ ],
410
+ initialMessage:
411
+ 'Use git checkout -b and git commit commands until you understand.'
412
+ });
413
+ };
414
+
415
+ openSwitch.addEventListener('click', open, false);
416
+ });
417
+ </script>
418
+
419
+ <script type="text/javascript">
420
+ require(['explaingit'], function (explainGit) {
421
+ var openSwitch = document.getElementById('open-reset'),
422
+ open;
423
+
424
+ open = function () {
425
+ explainGit.reset();
426
+ this.classList.add('selected');
427
+
428
+ explainGit.open({
429
+ name: 'Reset',
430
+ height: 200,
431
+ baseLine: 0.5,
432
+ commitData: [
433
+ {id: 'e137e9b'},
434
+ {id: '0e70093', parent: 'e137e9b'},
435
+ {id: '3e33afd', parent: '0e70093', tags: ['master']}
436
+ ],
437
+ initialMessage: 'Type "git reset HEAD^".'
438
+ });
439
+ };
440
+
441
+ openSwitch.addEventListener('click', open, false);
442
+ });
443
+ </script>
444
+
445
+ <script type="text/javascript">
446
+ require(['explaingit'], function (explainGit) {
447
+ var openSwitch = document.getElementById('open-revert'),
448
+ open;
449
+
450
+ open = function () {
451
+ explainGit.reset();
452
+ this.classList.add('selected');
453
+
454
+ explainGit.open({
455
+ name: 'Revert',
456
+ height: 200,
457
+ baseLine: 0.5,
458
+ commitData: [
459
+ {id: 'e137e9b'},
460
+ {id: '0e70093', parent: 'e137e9b'},
461
+ {id: '3e33afd', parent: '0e70093', tags: ['master']}
462
+ ],
463
+ initialMessage: 'Type "git revert 0e70093".'
464
+ });
465
+ };
466
+
467
+ openSwitch.addEventListener('click', open, false);
468
+ });
469
+ </script>
470
+
471
+ <script type="text/javascript">
472
+ require(['explaingit'], function (explainGit) {
473
+ var openSwitch = document.getElementById('open-merge'),
474
+ open;
475
+
476
+ open = function () {
477
+ explainGit.reset();
478
+ this.classList.add('selected');
479
+
480
+ explainGit.open({
481
+ name: 'Merge',
482
+ height: 500,
483
+ commitData: [
484
+ {id: 'e137e9b'},
485
+ {id: 'bb92e0e', parent: 'e137e9b', tags: ['master']},
486
+ {id: 'f5b32c8', parent: 'e137e9b', tags: ['ff']},
487
+ {id: 'e088135', parent: 'f5b32c8', tags: ['dev']}
488
+ ],
489
+ initialMessage:
490
+ 'Type "git merge dev".'
491
+ });
492
+ };
493
+
494
+ openSwitch.addEventListener('click', open, false);
495
+ });
496
+ </script>
497
+
498
+ <script type="text/javascript">
499
+ require(['explaingit'], function (explainGit) {
500
+ var openSwitch = document.getElementById('open-rebase'),
501
+ open;
502
+
503
+ open = function () {
504
+ explainGit.reset();
505
+ this.classList.add('selected');
506
+
507
+ explainGit.open({
508
+ name: 'Rebase',
509
+ height: 500,
510
+ commitData: [
511
+ {id: 'e137e9b'},
512
+ {id: 'bb92e0e', parent: 'e137e9b', tags: ['master']},
513
+ {id: 'f5b32c8', parent: 'e137e9b'},
514
+ {id: 'e088135', parent: 'f5b32c8', tags: ['dev']}
515
+ ],
516
+ currentBranch: 'dev',
517
+ initialMessage:
518
+ 'Type "git rebase master".'
519
+ });
520
+ };
521
+
522
+ openSwitch.addEventListener('click', open, false);
523
+ });
524
+ </script>
525
+
526
+ <script type="text/javascript">
527
+ require(['explaingit'], function (explainGit) {
528
+ var openSwitch = document.getElementById('open-fetch'),
529
+ open;
530
+
531
+ open = function () {
532
+ explainGit.reset();
533
+ this.classList.add('selected');
534
+
535
+ explainGit.open({
536
+ name: 'Fetch',
537
+ height: 500,
538
+ commitData: [
539
+ {id: 'e137e9b', tags: ['origin/master']},
540
+ {id: '6ce726f', parent: 'e137e9b'},
541
+ {id: 'bb92e0e', parent: '6ce726f', tags: ['master']},
542
+ {id: '0cff760', parent: 'e137e9b', tags: ['origin/dev']},
543
+ {id: '4ed301d', parent: '0cff760', tags: ['dev']}
544
+ ],
545
+ originData: [
546
+ {id: 'e137e9b'},
547
+ {id: '7eb7654', parent: 'e137e9b'},
548
+ {id: '090e2b8', parent: '7eb7654'},
549
+ {id: 'ee5df4b', parent: '090e2b8', tags: ['master']},
550
+ {id: '0cff760', parent: 'e137e9b'},
551
+ {id: '2f8d946', parent: '0cff760'},
552
+ {id: '29235ca', parent: '2f8d946', tags: ['dev']}
553
+ ],
554
+ initialMessage:
555
+ 'Carefully compare the commit IDs between the origin and the local repository. ' +
556
+ 'Then type "git fetch".'
557
+ });
558
+ };
559
+
560
+ openSwitch.addEventListener('click', open, false);
561
+ });
562
+ </script>
563
+
564
+ <script type="text/javascript">
565
+ require(['explaingit'], function (explainGit) {
566
+ var openSwitch = document.getElementById('open-pull'),
567
+ open;
568
+
569
+ open = function () {
570
+ explainGit.reset();
571
+ this.classList.add('selected');
572
+
573
+ explainGit.open({
574
+ name: 'Pull',
575
+ height: 500,
576
+ commitData: [
577
+ {id: 'e137e9b', tags: ['origin/master']},
578
+ {id: '46d095b', parent: 'e137e9b', tags: ['master']}
579
+ ],
580
+ originData: [
581
+ {id: 'e137e9b'},
582
+ {id: '7eb7654', parent: 'e137e9b'},
583
+ {id: '090e2b8', parent: '7eb7654'},
584
+ {id: 'ee5df4b', parent: '090e2b8', tags: ['master']}
585
+ ],
586
+ initialMessage:
587
+ 'Carefully compare the commit IDs between the origin and the local repository. ' +
588
+ 'Then type "git pull".'
589
+ });
590
+ };
591
+
592
+ openSwitch.addEventListener('click', open, false);
593
+ });
594
+ </script>
595
+
596
+ <script type="text/javascript">
597
+ require(['explaingit'], function (explainGit) {
598
+ var openSwitch = document.getElementById('open-push'),
599
+ open;
600
+
601
+ open = function () {
602
+ explainGit.reset();
603
+ this.classList.add('selected');
604
+
605
+ explainGit.open({
606
+ name: 'Push',
607
+ height: 500,
608
+ commitData: [
609
+ {id: 'e137e9b', tags: ['origin/master']},
610
+ {id: '46d095b', parent: 'e137e9b', tags: ['master']}
611
+ ],
612
+ originData: [
613
+ {id: 'e137e9b'},
614
+ {id: '7eb7654', parent: 'e137e9b', tags: ['master']}
615
+ ],
616
+ initialMessage:
617
+ 'Carefully compare the commit IDs between the origin and the local repository. ' +
618
+ 'Then type "git push".'
619
+ });
620
+ };
621
+
622
+ openSwitch.addEventListener('click', open, false);
623
+ });
624
+ </script>
625
+
626
+ <script type="text/javascript">
627
+ require(['explaingit'], function (explainGit) {
628
+ var openSwitch = document.getElementById('open-clean'),
629
+ open;
630
+
631
+ open = function () {
632
+ explainGit.reset();
633
+ this.classList.add('selected');
634
+
635
+ explainGit.open({
636
+ name: 'Clean',
637
+ height: 200,
638
+ baseLine: 0.4,
639
+ commitData: [
640
+ {id: 'e137e9b', tags: ['origin/master']},
641
+ {id: '0e70093', parent: 'e137e9b'},
642
+ {id: '3e33afd', parent: '0e70093', tags: ['master']}
643
+ ],
644
+ initialMessage: 'Type "git reset origin/master".'
645
+ });
646
+ };
647
+
648
+ openSwitch.addEventListener('click', open, false);
649
+ });
650
+ </script>
651
+
652
+ <script type="text/javascript">
653
+ require(['explaingit'], function (explainGit) {
654
+ var openSwitch = document.getElementById('open-fetchrebase'),
655
+ open;
656
+
657
+ open = function () {
658
+ explainGit.reset();
659
+ this.classList.add('selected');
660
+
661
+ explainGit.open({
662
+ name: 'FetchRebase',
663
+ height: 500,
664
+ commitData: [
665
+ {id: 'e137e9b', tags: ['origin/master', 'master']},
666
+ {id: '46d095b', parent: 'e137e9b'},
667
+ {id: 'dccdc4d', parent: '46d095b', tags: ['my-branch']}
668
+ ],
669
+ currentBranch: 'my-branch',
670
+ originData: [
671
+ {id: 'e137e9b'},
672
+ {id: '7eb7654', parent: 'e137e9b'},
673
+ {id: '090e2b8', parent: '7eb7654'},
674
+ {id: 'ee5df4b', parent: '090e2b8', tags: ['master']}
675
+ ],
676
+ initialMessage:
677
+ 'First type "git fetch". Then type "git rebase origin/master".'
678
+ });
679
+ };
680
+
681
+ openSwitch.addEventListener('click', open, false);
682
+ });
683
+ </script>
684
+
685
+ <script type="text/javascript">
686
+ require(['explaingit'], function (explainGit) {
687
+ var openSwitch = document.getElementById('open-deletebranches'),
688
+ open;
689
+
690
+ open = function () {
691
+ explainGit.reset();
692
+ this.classList.add('selected');
693
+
694
+ explainGit.open({
695
+ name: 'DeleteBranches',
696
+ height: 500,
697
+ baseLine: 0.6,
698
+ commitData: [
699
+ {id: 'e137e9b'},
700
+ {id: 'bb92e0e', parent: 'e137e9b'},
701
+ {id: 'd25ee9b', parent: 'bb92e0e', tags: ['master']},
702
+ {id: '071ff28', parent: 'e137e9b', tags: ['protoss']},
703
+ {id: 'f5b32c8', parent: 'bb92e0e'},
704
+ {id: 'e088135', parent: 'f5b32c8', tags: ['zerg']},
705
+ {id: '9e6c322', parent: 'bb92e0e'},
706
+ {id: '593ae02', parent: '9e6c322', tags: ['terran']}
707
+ ],
708
+ currentBranch: 'terran',
709
+ initialMessage:
710
+ 'Delete some branches.'
711
+ });
712
+ };
713
+
714
+ openSwitch.addEventListener('click', open, false);
715
+ });
716
+ </script>
717
+
718
+ <script type="text/javascript">
719
+ require(['explaingit'], function (explainGit) {
720
+ var openSwitch = document.getElementById('open-freeplay'),
721
+ open;
722
+
723
+ open = function () {
724
+ explainGit.reset();
725
+ this.classList.add('selected');
726
+
727
+ explainGit.open({
728
+ name: 'Free',
729
+ height: 500,
730
+ commitData: [
731
+ {id: 'e137e9b', tags: ['origin/master', 'master']}
732
+ ],
733
+ originData: [
734
+ {id: 'e137e9b'},
735
+ {id: '7eb7654', parent: 'e137e9b'},
736
+ {id: '090e2b8', parent: '7eb7654'},
737
+ {id: 'ee5df4b', parent: '090e2b8', tags: ['master']}
738
+ ],
739
+ initialMessage:
740
+ 'Have fun.'
741
+ });
742
+ };
743
+
744
+ openSwitch.addEventListener('click', open, false);
745
+ });
746
+ </script>
747
+
748
+ <script type="text/javascript">
749
+ // why the fuck isn't this coming out of main.js?!
750
+ require.config({
751
+ paths: {
752
+ 'd3': 'vendor/d3.min',
753
+ "jquery": "vendor/jquery.min",
754
+ "jquery-ui": "vendor/jquery-ui.min",
755
+ "jquery.dialogextend": "vendor/jquery.dialogextend.min"
756
+ },
757
+ shim: {
758
+ 'd3': {
759
+ exports: 'd3'
760
+ },
761
+ 'jquery-ui': ['jquery'],
762
+ 'jquery.dialogextend': {
763
+ deps: ['jquery', 'jquery-ui'],
764
+ exports: '$'
765
+ }
766
+ }
767
+ });
768
+
769
+ require( ["jquery","jquery-ui", "jquery.dialogextend"], function($){
770
+
771
+ $( document ).ready(function() {
772
+ $('#menubar').delay(1000).slideUp(500);
773
+
774
+ $("#menuwrapper").hover(
775
+ function() {
776
+ $('#menubar').show();
777
+ $('#menubar-handle').hide();
778
+ },
779
+ function() {
780
+ $('#menubar').slideUp(250);
781
+ $('#menubar-handle').show();
782
+ }
783
+ );
784
+
785
+ $( "#introduction" ).dialog({
786
+ title: "Introduction",
787
+ width: '500px',
788
+ modal: true,
789
+ });
790
+ });
791
+
792
+ });
793
+ </script>
794
+
795
+ </body>
796
+ </html>