zuora_connect_ui 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (57) hide show
  1. checksums.yaml +7 -0
  2. data/LICENSE.txt +21 -0
  3. data/README.md +39 -0
  4. data/app/assets/javascripts/zuora_connect_ui/input.js +9 -0
  5. data/app/assets/javascripts/zuora_connect_ui.js +30 -0
  6. data/app/assets/stylesheets/_zuora_connect_ui.scss +125 -0
  7. data/app/assets/stylesheets/zuora_connect_ui/base.scss +130 -0
  8. data/app/assets/stylesheets/zuora_connect_ui/box.scss +115 -0
  9. data/app/assets/stylesheets/zuora_connect_ui/breadcrumb_bar.scss +110 -0
  10. data/app/assets/stylesheets/zuora_connect_ui/buttons.scss +185 -0
  11. data/app/assets/stylesheets/zuora_connect_ui/datatables.scss +290 -0
  12. data/app/assets/stylesheets/zuora_connect_ui/grid_view.scss +174 -0
  13. data/app/assets/stylesheets/zuora_connect_ui/input.scss +267 -0
  14. data/app/assets/stylesheets/zuora_connect_ui/modal.scss +40 -0
  15. data/app/assets/stylesheets/zuora_connect_ui/tabs.scss +42 -0
  16. data/app/helpers/input_helper.rb +6 -0
  17. data/app/views/partials/_admin_menu.html.erb +22 -0
  18. data/app/views/partials/_filters.html.erb +34 -0
  19. data/app/views/partials/_table.html.erb +395 -0
  20. data/app/views/peek/views/_connect.html.erb +5 -0
  21. data/lib/peek/views/connect.rb +13 -0
  22. data/lib/zuora_connect_ui/version.rb +3 -0
  23. data/lib/zuora_connect_ui.rb +13 -0
  24. data/vendor/assets/awesome-bootstrap-checkbox/css/awesome-bootstrap-checkbox.scss +256 -0
  25. data/vendor/assets/icons/css/icons.scss +7118 -0
  26. data/vendor/assets/icons/img/FontAwesome.otf +0 -0
  27. data/vendor/assets/icons/img/fontawesome-webfont.eot +0 -0
  28. data/vendor/assets/icons/img/fontawesome-webfont.svg +685 -0
  29. data/vendor/assets/icons/img/fontawesome-webfont.ttf +0 -0
  30. data/vendor/assets/icons/img/fontawesome-webfont.woff +0 -0
  31. data/vendor/assets/icons/img/fontawesome-webfont.woff2 +0 -0
  32. data/vendor/assets/icons/img/glyphicons-filetypes-regular.eot +0 -0
  33. data/vendor/assets/icons/img/glyphicons-filetypes-regular.svg +158 -0
  34. data/vendor/assets/icons/img/glyphicons-filetypes-regular.woff +0 -0
  35. data/vendor/assets/icons/img/glyphicons-halfling-life_preserver.png +0 -0
  36. data/vendor/assets/icons/img/glyphicons-halflings-red.png +0 -0
  37. data/vendor/assets/icons/img/glyphicons-halflings-regular.eot +0 -0
  38. data/vendor/assets/icons/img/glyphicons-halflings-regular.svg +229 -0
  39. data/vendor/assets/icons/img/glyphicons-halflings-regular.ttf +0 -0
  40. data/vendor/assets/icons/img/glyphicons-halflings-regular.woff +0 -0
  41. data/vendor/assets/icons/img/glyphicons-halflings-white.png +0 -0
  42. data/vendor/assets/icons/img/glyphicons-halflings.png +0 -0
  43. data/vendor/assets/icons/img/glyphicons-regular.eot +0 -0
  44. data/vendor/assets/icons/img/glyphicons-regular.otf +0 -0
  45. data/vendor/assets/icons/img/glyphicons-regular.svg +498 -0
  46. data/vendor/assets/icons/img/glyphicons-regular.ttf +0 -0
  47. data/vendor/assets/icons/img/glyphicons-regular.woff +0 -0
  48. data/vendor/assets/icons/img/glyphicons-social-regular.eot +0 -0
  49. data/vendor/assets/icons/img/glyphicons-social-regular.svg +79 -0
  50. data/vendor/assets/icons/img/glyphicons-social-regular.ttf +0 -0
  51. data/vendor/assets/icons/img/glyphicons-social-regular.woff +0 -0
  52. data/vendor/assets/icons/img/glyphicons_search.png +0 -0
  53. data/vendor/assets/icons/img/zuora.eot +0 -0
  54. data/vendor/assets/icons/img/zuora.svg +557 -0
  55. data/vendor/assets/icons/img/zuora.ttf +0 -0
  56. data/vendor/assets/icons/img/zuora.woff +0 -0
  57. metadata +211 -0
@@ -0,0 +1,185 @@
1
+ .zuo-btn {
2
+ display: inline-block;
3
+ cursor: pointer;
4
+ border-radius: .25rem;
5
+ white-space: nowrap;
6
+ padding: .375rem .75rem;
7
+ font-size: .875rem;
8
+ line-height: 1.5;
9
+ -webkit-user-select: none;
10
+ -moz-user-select: none;
11
+ -ms-user-select: none;
12
+ user-select: none;
13
+ &:hover, &:focus {
14
+ text-decoration: none;
15
+ }
16
+ /*primary btn - use for all call to actions (save, create, etc)*/
17
+ &.primary {
18
+ color: $neutral-4;
19
+ background-color: $support-1;
20
+ border: 1px solid $support-1;
21
+ transition: color
22
+ .15s ease-in-out,background-color
23
+ .15s ease-in-out,border-color
24
+ .15s ease-in-out,box-shadow
25
+ .15s ease-in-out;
26
+ &:hover {
27
+ color: $neutral-4;
28
+ background-color: $primary-hover;
29
+ border: 1px solid $primary-hover;
30
+ }
31
+ &:focus {
32
+ color: $neutral-4;
33
+ background-color: $primary-hover;
34
+ border: 1px solid $primary-hover;
35
+ outline: none;
36
+ }
37
+ }
38
+ /*secondary- cancel, etc*/
39
+ &.secondary {
40
+ background-color: $neutral-4;
41
+ border: 1px solid $support-1;
42
+ color: $support-1;
43
+ }
44
+ /*disabled btn*/
45
+ &.disabled {
46
+ cursor: not-allowed;
47
+ background-color: $disabled-btn-bg;
48
+ color: $neutral-shadow;
49
+ }
50
+ /*danger button*/
51
+ &.danger {
52
+ border: 1px solid $support-4;
53
+ background-color: $neutral-4;
54
+ color: $support-4;
55
+ }
56
+ }
57
+
58
+ .table-btn {
59
+ cursor: pointer;
60
+ background-color: transparent;
61
+ font-size: 1rem;
62
+ line-height: 1rem;
63
+ padding: .5rem;
64
+ margin: .5rem;
65
+ border: none;
66
+ color: $support-1;
67
+ box-shadow: none;
68
+
69
+ &.active {
70
+ // TODO: active style for grid/table toggle
71
+ box-shadow: none;
72
+ }
73
+
74
+ &:hover {
75
+ text-decoration: none;
76
+ box-shadow: none;
77
+ }
78
+
79
+ &:focus {
80
+ text-decoration: none;
81
+ }
82
+ }
83
+
84
+ .btn-xs{
85
+ margin: 1px;
86
+ }
87
+
88
+ .btn.disabled, .btn[disabled], fieldset[disabled] .btn {
89
+ cursor: not-allowed;
90
+ pointer-events: none;
91
+ opacity: .65;
92
+ filter: alpha(opacity=65);
93
+ -webkit-box-shadow: none;
94
+ box-shadow: none;
95
+ background-color: #F1F2F4;
96
+ }
97
+
98
+ .btn-group.open .dropdown-toggle{
99
+ box-shadow: none;
100
+ }
101
+
102
+ .btn-group-vertical > button {
103
+ margin:0px;
104
+ }
105
+
106
+ .btn-sign-in {
107
+ background-color: transparent;
108
+ border: 1px solid white;
109
+ color: white;
110
+ &:hover, &:focus {
111
+ color: white;
112
+ background-color: #5B6A79;
113
+ border-color: white;
114
+ }
115
+ }
116
+
117
+ a.btn-clear {
118
+ color: white;
119
+
120
+ background-color: inherit !important;
121
+ border-color: inherit !important;
122
+ &:hover, &:focus {
123
+ color: white !important;
124
+ background-color: #9FB1BF !important;
125
+ border-color: white !important;
126
+ }
127
+ }
128
+
129
+ .btn-clear + .tooltip > .tooltip-inner {background-color: white; border:1px solid; ;border-color:white; color:#394B5D;}
130
+ .btn-clear + .tooltip > .tooltip-arrow {border-bottom-color: white;}
131
+
132
+ .btn-arrow-right, .btn-arrow-left {
133
+ position: relative;
134
+ padding-left: 18px;
135
+ padding-right: 18px;
136
+ border: 0px solid transparent;
137
+ }
138
+ .btn-arrow-right {
139
+ padding-left: 36px;
140
+ }
141
+ .btn-arrow-left {
142
+ padding-right: 36px;
143
+ }
144
+ .btn-arrow-right:before, .btn-arrow-right:after, .btn-arrow-left:before, .btn-arrow-left:after { /* make two squares (before and after), looking similar to the button */
145
+ content:"";
146
+ position: absolute;
147
+ top: 5px; /* move it down because of rounded corners */
148
+ width: 22px; /* same as height */
149
+ height: 22px; /* button_outer_height / sqrt(2) */
150
+ background: inherit; /* use parent background */
151
+ border: inherit; /* use parent border */
152
+ border-left-color: transparent; /* hide left border */
153
+ border-bottom-color: transparent; /* hide bottom border */
154
+ border-radius: 0px 4px 0px 0px; /* round arrow corner, the shorthand property doesn't accept "inherit" so it is set to 4px */
155
+ -webkit-border-radius: 0px 4px 0px 0px;
156
+ -moz-border-radius: 0px 4px 0px 0px;
157
+ }
158
+ .btn-arrow-right:before, .btn-arrow-right:after {
159
+ transform: rotate(45deg); /* rotate right arrow squares 45 deg to point right */
160
+ -webkit-transform: rotate(45deg);
161
+ -moz-transform: rotate(45deg);
162
+ -o-transform: rotate(45deg);
163
+ -ms-transform: rotate(45deg);
164
+ }
165
+ .btn-arrow-left:before, .btn-arrow-left:after {
166
+ transform: rotate(225deg); /* rotate left arrow squares 225 deg to point left */
167
+ -webkit-transform: rotate(225deg);
168
+ -moz-transform: rotate(225deg);
169
+ -o-transform: rotate(225deg);
170
+ -ms-transform: rotate(225deg);
171
+ }
172
+ .btn-arrow-right:before,.btn-arrow-left:before { /* align the "before" square to the left */
173
+ left: -11px;
174
+ top: 2px;
175
+ }
176
+ .btn-arrow-right:after,.btn-arrow-left:after { /* align the "after" square to the right */
177
+ right: -11px;
178
+ top: 2px;
179
+ }
180
+ .btn-arrow-right:after,.btn-arrow-left:before { /* bring arrow pointers to front */
181
+ z-index: 5;
182
+ }
183
+ .btn-arrow-right:before, .btn-arrow-left:after { /* hide arrow tails background */
184
+ background-color: white;
185
+ }
@@ -0,0 +1,290 @@
1
+ .table_visibility {
2
+ li {
3
+ background-color: #fff;
4
+ padding: 0px 15px;
5
+ margin: 10px 0px;
6
+ display: flex;
7
+ flex-direction: row;
8
+ justify-content: space-between;
9
+
10
+ .checkbox {
11
+ margin: 0px;
12
+
13
+ label {
14
+ white-space: nowrap;
15
+ padding: 0rem .5rem;
16
+ }
17
+ }
18
+
19
+ .icon {
20
+ position: relative;
21
+ top: .125rem;
22
+ font-size: 15px;
23
+ line-height: 1.25rem;
24
+ color: $neutral-2;
25
+ }
26
+ &:hover .icon, &:focus .icon {
27
+ color: $neutral-1;
28
+ }
29
+ }
30
+ }
31
+
32
+ td.actions.center, th.actions.center {
33
+ width: 0px;
34
+ padding: 0rem 0rem 0rem 8px;
35
+
36
+ .table-btn {
37
+ font-size: 1.25rem;
38
+ padding: .375rem;
39
+ margin: .375rem;
40
+ }
41
+ }
42
+
43
+ .dataTables_info span.select-info {
44
+ padding-left: 15px;
45
+ }
46
+
47
+ .tools_table.children.table-bordered>thead>tr {
48
+ color: black !important;
49
+ background-color: inherit;
50
+ background-image: none;
51
+ }
52
+
53
+ // .table_search input[type="search"]{
54
+ // margin-left: 10px;
55
+ // height: 34px;
56
+ // padding: 6px 12px;
57
+ // font-size: 12px;
58
+ // line-height: 1.42857143;
59
+ // color: #555;
60
+ // background-color: #fff;
61
+ // background-image: none;
62
+ // border: 1px solid #ccc;
63
+ // border-radius: 4px;
64
+ // -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
65
+ // box-shadow: inset 0 1px 1px rgba(0,0,0,.075);
66
+ // -webkit-transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;
67
+ // transition: border-color ease-in-out .15s,box-shadow ease-in-out .15s;
68
+ // }
69
+
70
+ select[multiple], select[size] {
71
+ height: auto !important;
72
+ }
73
+ .select2-selection--multiple .select2-search {
74
+ width: initial;
75
+ position: initial
76
+ }
77
+ .has-feedback .select2 + .glyphicon.form-control-feedback{
78
+ top: 19px;
79
+ right: 15px;
80
+ }
81
+ .has-error .select2-dropdown, .has-error .select2-selection {
82
+ border-color: #a94442 !important;
83
+ }
84
+
85
+ div.dataTables_processing{
86
+ background-color: white !important;
87
+ opacity: .8;
88
+ z-index: 20;
89
+ top: inherit;
90
+ left: inherit;
91
+ width: 100%;
92
+ height: 500px;
93
+ margin-left: inherit;
94
+ margin-top: inherit;
95
+ display: inline-table;
96
+ vertical-align: middle;
97
+ right: 0;
98
+ border: none;
99
+ }
100
+
101
+ table.dataTable {
102
+ margin-top: 0px !important;
103
+ margin-bottom: 0px !important;
104
+ border-bottom: 1px solid $neutral-3;
105
+
106
+ > thead > tr > th {
107
+ background-color: $neutral-4;
108
+ text-transform: uppercase;
109
+ font-size: .75rem;
110
+ font-weight: 600;
111
+ padding: 1rem 4rem 1rem .5rem;
112
+ border-top: 1px solid $neutral-3 !important;
113
+ border-bottom: 1px solid $neutral-3;
114
+
115
+ &.sorting:after, &.sorting_asc:after, &.sorting_desc:after {
116
+ position: absolute;
117
+ top: unset;
118
+ bottom: 1rem;
119
+ right: .5rem;
120
+ font-family: webicons;
121
+ opacity: 1;
122
+ color: $primary;
123
+ }
124
+
125
+ &.sorting{
126
+ &:after {
127
+ content: "";
128
+ }
129
+ }
130
+
131
+ &.sorting_asc {
132
+ &:after {
133
+ content: "\e941";
134
+ }
135
+ }
136
+ &.sorting_desc {
137
+ &:after {
138
+ content: "\e942";
139
+ }
140
+ }
141
+ }
142
+ > tbody > tr > td {
143
+ padding: 1rem .5rem;
144
+ border-top: none;
145
+ vertical-align: middle;
146
+ }
147
+ }
148
+
149
+ div.dataTables_scrollBody table.dataTable thead th.sorting:after,
150
+ div.dataTables_scrollBody table.dataTable thead th.sorting_asc:after,
151
+ div.dataTables_scrollBody table.dataTable thead th.sorting_desc:after {
152
+ content: "";
153
+ }
154
+
155
+ .table-header {
156
+ display: flex;
157
+ // height: 100%;
158
+ justify-content: space-between;
159
+
160
+ .btn-group .btn + .btn {
161
+ margin-left: .5rem;
162
+ }
163
+
164
+ .dropdown {
165
+ float: left;
166
+ }
167
+
168
+ > div {
169
+ display: flex;
170
+ }
171
+
172
+ .table-btn {
173
+ float: left;
174
+ }
175
+
176
+ .search-wrapper {
177
+ border-left: 1px solid $neutral-3;
178
+ display: flex;
179
+ margin: .5rem 0;
180
+ width: 2.5rem;
181
+ overflow: hidden;
182
+
183
+ -webkit-transition: width 0.3s ease-in-out;
184
+ -moz-transition: width 0.3s ease-in-out;
185
+ transition: width 0.3s ease-in-out;
186
+
187
+ .table-btn {
188
+ margin: 0 .5rem;
189
+ }
190
+
191
+ .form-control[name="table[search]"] {
192
+ line-height: 1rem;
193
+ padding: .5rem 0;
194
+ font-size: .875rem;
195
+ height: 100%;
196
+ border: none;
197
+ box-shadow: none;
198
+
199
+ border-bottom: 1px solid $support-1;
200
+ }
201
+
202
+ &.active {
203
+ width: 14rem;
204
+
205
+ .table-btn {
206
+ margin-right: 0;
207
+ border-bottom: 1px solid $support-1;
208
+ }
209
+ }
210
+ }
211
+ }
212
+
213
+ // Workflow Context Menu
214
+ ul.context-menu-list {
215
+ border-radius: 2px;
216
+ box-shadow: 0 1px 8px -1px $neutral-shadow; // TODO: replace with variable name
217
+ font-size: .875rem;
218
+ min-width: 8rem;
219
+
220
+ .context-menu-item {
221
+ color: $support-1;
222
+ padding: .25rem .75rem;
223
+
224
+ &.context-menu-hover {
225
+ background-color: $neutral-3;
226
+ }
227
+ }
228
+ }
229
+
230
+ .context-menu-action {
231
+ padding: 2px;
232
+ font-size: 1.25rem;
233
+ line-height: 1rem;
234
+ border: none;
235
+ color: $support-1;
236
+ }
237
+
238
+ .table_footer {
239
+ padding: .75rem .5rem;
240
+ display: flex;
241
+ flex-direction: row;
242
+ justify-content: space-between;
243
+ align-items: center;
244
+
245
+ > .dataTables_info, .dataTables_paginate {
246
+ flex: 1;
247
+ }
248
+
249
+ .dataTables_info {
250
+ padding: 0;
251
+ }
252
+ }
253
+
254
+ // Prev 1 2 3 Next
255
+ .dataTables_paginate {
256
+ .pagination .paginate_button {
257
+ a {
258
+ color: $support-1;
259
+ background-color: none;
260
+ border: none;
261
+ margin: 4px;
262
+ padding: 2px 8px;
263
+ border-radius: 2px;
264
+ }
265
+ &.active a {
266
+ color: $neutral-4;
267
+ }
268
+ &.disabled {
269
+ a, a:hover, a:focus {
270
+ color: $neutral-2;
271
+ background-color: none;
272
+ cursor: not-allowed;
273
+ }
274
+ }
275
+ &.first, &.last {
276
+ display: none;
277
+ }
278
+ }
279
+
280
+ }
281
+
282
+ .table-bordered .small>tbody>tr>td {
283
+ padding-top: 1px;
284
+ padding-bottom: 1px;
285
+ padding-left: 1px;
286
+ padding-right: 1px;
287
+ font-size: 12px;
288
+ text-align: center;
289
+ vertical-align: middle !important;
290
+ }
@@ -0,0 +1,174 @@
1
+ .grid_view{
2
+ .chic-let{
3
+ a:visited {
4
+ color: #74818e;
5
+ }
6
+ a:link {
7
+ color: #6C96A1;
8
+ }
9
+ a {
10
+ color: #384B5D;
11
+ text-decoration: none;
12
+ }
13
+ a {
14
+ background-color: transparent;
15
+ }
16
+ }
17
+ @-webkit-keyframes iconHover {
18
+ 0% {
19
+ opacity: 1; }
20
+ 100% {
21
+ opacity: 0; } }
22
+
23
+ @-webkit-keyframes contentHover {
24
+ 0% {
25
+ opacity: 0; }
26
+ 100% {
27
+ opacity: 1; } }
28
+
29
+ .chic-let:hover .app-icon {
30
+ -webkit-animation: iconHover .1s linear forwards;
31
+ animation: iconHover .1s linear forwards;
32
+ }
33
+
34
+ .chic-let:hover .description {
35
+ display: inline-block;
36
+ }
37
+
38
+ .chic-let:hover {
39
+ box-shadow: 0 0 90px 10px rgba(0, 0, 0, 0.1);
40
+ cursor: pointer;
41
+ z-index: 25;
42
+ }
43
+ .chic-let:hover .card-content {
44
+ width: 100%;
45
+ margin-left: 0px;
46
+ padding-right: 20px;
47
+ -webkit-animation: contentHover .4s linear forwards;
48
+ animation: contentHover .4s linear forwards;
49
+ }
50
+ .chic-let {
51
+ font-family: "brandon-grotesque", "Helvetica Neue", Helvetica, Arial, sans-serif !important;
52
+ border: 1px solid #ebebeb;
53
+ border-radius: 5px;
54
+ padding: 7px 10px 10px 10px;
55
+ position: relative;
56
+ width: 32.333333%;
57
+ height: 115px;
58
+ margin: 5px;
59
+ z-index:1;
60
+ background: #ffffff;
61
+ }
62
+ .card {
63
+ max-height: 325px;
64
+ margin-top: 15px
65
+ }
66
+
67
+ .zuora-certified {
68
+ background: #4d4d4d;
69
+ padding: 5px 10px;
70
+ border-radius: 5px 0 5px 0;
71
+ color: #fff;
72
+ position: absolute;
73
+ top: 0;
74
+ left: 0;
75
+ box-shadow: 0 0 50px 10px rgba(0, 0, 0, 0.1);
76
+ font-size: 8px;
77
+ letter-spacing: .1em;
78
+ display: block;
79
+ width: 90px;
80
+ float: left;
81
+ z-index: 8;
82
+ }
83
+
84
+ .card a:link {
85
+ color: #4d4d4d;
86
+ }
87
+
88
+
89
+ .chic-let .partner-logo {
90
+ position: absolute;
91
+ max-width: 60px;
92
+ max-height: 40px;
93
+ top: 10px;
94
+ right: 10px;
95
+ }
96
+
97
+ .chic-let .app-icon {
98
+ height: 99px;
99
+ width: 99px;
100
+ border-radius: 5px;
101
+ margin-right: 10px;
102
+ position: relative;
103
+ -webkit-animation: icon .5s linear forwards;
104
+ animation: icon .5s linear forwards;
105
+ }
106
+
107
+
108
+ .chic-let .card-content {
109
+ position: absolute;
110
+ width: 244px;
111
+ top: 40px;
112
+ margin-left: 100px;
113
+ }
114
+
115
+ .chic-let .card-top{
116
+ margin-bottom: -53px;
117
+ }
118
+
119
+ .buttons{
120
+ display: none;
121
+ }
122
+ .chic-let:hover .buttons{
123
+ display: block;
124
+ padding: 5px;
125
+ width: 33.33%;
126
+ float: right;
127
+ }
128
+
129
+
130
+ .chic-let:hover .card-top {
131
+ -webkit-animation: iconHover .1s linear forwards;
132
+ animation: iconHover .1s linear forwards;
133
+ }
134
+
135
+ .chic-let .category {
136
+ font-size: 9px;
137
+ font-weight: 900;
138
+ line-height: 7px;
139
+ margin: 0 0 4px 0;
140
+ color: #9EB1C0;
141
+ letter-spacing: .06em;
142
+ }
143
+
144
+ .chic-let .app-title {
145
+ font-size: 17px;
146
+ line-height: 18px;
147
+ margin: -1px 0 0 0;
148
+ font-weight: 300;
149
+ }
150
+ .text-uppercase, .initialism {
151
+ text-transform: uppercase;
152
+ }
153
+
154
+
155
+ .chic-let .description {
156
+ font-size: 11px;
157
+ line-height: 16px;
158
+ display: none;
159
+ color: #9EB1C0;
160
+ font-weight: 300;
161
+ }
162
+
163
+ #watermark {
164
+ position: absolute;
165
+ font-size: 20px;
166
+ opacity: 0.4;
167
+ margin-top: -7px;
168
+ margin-left: -10px;
169
+ width: 100%;
170
+ font-weight: 100;
171
+ color: #6EC5AB;
172
+ }
173
+ }
174
+