This example shows how to use the Calendar Grouping Strategy with the Grid Layout Engine to present a data set as a calendar, with data-defined events added to the corresponding days in the calendar.
This calendar is also editable.
The Calendar Grouping Strategy creates one visual group per date and when it is used with the grid, you get a convenient calendar view.
To make the Calendar Grouping Strategy with the grid, you must have one group level and the grouped column must be a date.
In this example, the grouped column is the start column. Data in the start group is placed on the calendar on that day.
Note the following in the code:
References to calendar.js and grid.js load the libraries.
CalendarGrouping object configures the calendar view.
dataView object configures the data presentation and sets the grouping policy.
<!DOCTYPE html>
<html lang="en">
<head>
<base href="/dataviewsjs/demos/en/sample/DataViews/Calendar/Calendar/purejs/" />
<meta charset="utf-8" />
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
<meta name="keywords" content="grouping, calendar" />
<meta
name="description"
content="This example shows how to use the Calendar Grouping Strategy with the Grid Layout Engine to present a data set as a calendar, with data-defined events added to the corresponding days in the calendar."
/>
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Calendar | Data Views | MESCIUS DataViewsJS JavaScript Demos</title>
<link href="/dataviewsjs/demos/node_modules/normalize.css/normalize.css" rel="stylesheet" type="text/css" />
<link href="/dataviewsjs/demos/static/css/base.css" rel="stylesheet" type="text/css" />
<link href="/dataviewsjs/demos/static/css/bootstrap-snippet.min.css" rel="stylesheet" type="text/css" />
<link
href="/dataviewsjs/demos/node_modules/@fortawesome/fontawesome-free/css/all.min.css"
rel="stylesheet"
type="text/css"
/>
<link href="/dataviewsjs/demos/static/dataviews/gc.dataviews.core.min.css" rel="stylesheet" type="text/css" />
<link href="/dataviewsjs/demos/static/dataviews/gc.dataviews.calendar.min.css" rel="stylesheet" type="text/css" />
<link href="/dataviewsjs/demos/static/dataviews/gc.dataviews.grid.min.css" rel="stylesheet" type="text/css" />
<link href="styles.css" rel="stylesheet" type="text/css" />
<script src="/dataviewsjs/demos/static/js/app-polyfills.min.js" type="text/javascript"></script>
<script type="text/javascript">
window.process = {
env: {
NODE_ENV: 'production',
USE_NPM: false,
USE_CDN: false,
SITE_ROOT: '/dataviewsjs/demos',
FRAMEWORK: 'purejs',
DVJS_LICENSE_KEY:
'E348418822993781#B0EWvwY4dNNVQqJHUDpFROVWe5ZWNYFlVQFmRsJWRht4Z6lDO4Vla7YUaXhEWxd7Z5YXMuRnY7tWTQRHSlVnaYlXNhlEOpdkZ0FHWYJ5QKd6VXN5aR3ieGhUav9kZTBXWahkYBhEVutmZ72CbjdlZvV5TVdGdiplQsZXe95kUmNmZVF5cJ3mcypWNyx4UydESE3UblxGZyE7KQ94R4BjbUxUewsiaoREMxRDNllWREV6Voh4Q4dDZPRjWrIzUJl4TERXcQZWMHp4Sp9WaMZzN5o6StJmVDJXcwIVVmR6UMVGOlxUW8RmTxZDZTJWVN5GZqJHZuVDMkVGSW3WdxNzKCdDdSB7TzY7cqlnMU5GVyNzNP9WMyhDRvEEOFdkQORDM4dFVlFFWqFWSyMjNQJiOiMlIsISQyIkQ9YjQxIiOigkIsUTM7YjNxYTM0IicfJye&Qf35VfikFVVljI0IyQiwiIxYHITp4c7VWaWFGdhRkI0IiTis7W0ICZyBlIsIiNxUTN6ADI8EDMxMjMwIjI0ICdyNkIsIyc59yc5l6YzVWbuoCLwpmLzVXajNXZt9iKs2WauMXdpN6cl5mLqwSbvNmLzVXajNXZt9iKsAnau26YuMXdpN6cl5mLqwSbvNmL6VGZ9RXajVGchJ7ZuoCLuNmLt36YukHdpNWZwFmcn9iKs46bj9Se4l6YlBXYydmLqwicr9ybj9Se4l6YlBXYydmLqwCcq9ybj9Se4l6YlBXYydmLqIiOiMXbEJCLiMVVJN4UF5kI0ISYONkIsUWdyRnOiwmdFJCLiEDO7MTO9IjM8gTM4gDNzIiOiQWSisnOiQkIsISP3EkVxBVUHFDMplzLlVUdGd7cI9UeIt4SshESzV7NvY7ZxlDOuNTb5tzLr',
SJS_LICENSE_KEY:
'E518585142165236#B0wm4nx4QzdlTHRTSOFzcvVnaJdjSnNEeXdTMUtSUzk6bU94QuVXNwZVZjd4SzYjcadXRIVEMzEXTThkVyR7R85UayoHZZBTYQ5mZyh4Shd6VxFXazF4cBNGRG5WTvUGTsV4T6knQYRzKxxUdk9EarplU7d6VLF6KIR7bPJ5N6ZUMWZWaURGRKRDbLJDN5YjSN5mUoxmaxonSD56LEh7Y7RXenpmTvomevZlV9dkaysCO7hTRQFHcGRWQyc5LI9kQmB7QwR4Z7ZHOR3CSXp6SiFWYzFXeXZUSp94K8VDTkFjdwl4KptSYlRWcDxmNE5kS6kzdrkVcNJXROVGbLJkcTNGRzIER8tmd4YGNhh7dxAnMvIHRv46VtBXS4U5KvJ6dZJ6M5p4TxIjd9I5QSpXTTV6SDZXb7lzaL56ZiojITJCLikTQxUTQFV4NiojIIJCLyETO7UzM7kTO0IicfJye&Qf35VfikkR9IkI0IyQiwiIyEjL6ByUKBCZhVmcwNlI0IiTis7W0ICZyBlIsISNwkTN6ADI8EDMxMjMwIjI0ICdyNkIsIyc59yc5l6YzVWbuoCLwpmLzVXajNXZt9iKs2WauMXdpN6cl5mLqwSbvNmLzVXajNXZt9iKsAnau26YuMXdpN6cl5mLqwSbvNmL6VGZ9RXajVGchJ7ZuoCLuNmLt36YukHdpNWZwFmcn9iKs46bj9Se4l6YlBXYydmLqwicr9ybj9Se4l6YlBXYydmLqwCcq9ybj9Se4l6YlBXYydmLqIiOiMXbEJCLiMVVJN4UF5kI0ISYONkIsUWdyRnOiwmdFJCLiYzMyUjNxIDNxUDO5gTM5IiOiQWSiwSfdtlOicGbmJCLlNHbhZmOiI7ckJye0ICbuFkI1pjIEJCLi4TPRtGOhtWWEFWd4IDOLRVRvx4SyMGcDhTW6n4ep',
},
};
</script>
<script src="/dataviewsjs/demos/node_modules/lodash/lodash.min.js" type="text/javascript"></script>
<script src="/dataviewsjs/demos/node_modules/jquery/dist/jquery.min.js" type="text/javascript"></script>
<script src="/dataviewsjs/demos/static/dataviews/gc.dataviews.common.min.js" type="text/javascript"></script>
<script src="/dataviewsjs/demos/static/dataviews/gc.dataviews.core.min.js" type="text/javascript"></script>
<script src="/dataviewsjs/demos/static/dataviews/gc.dataviews.calendar.min.js" type="text/javascript"></script>
<script src="/dataviewsjs/demos/static/dataviews/gc.dataviews.grid.min.js" type="text/javascript"></script>
<script src="/dataviewsjs/demos/static/js/license.js" type="text/javascript"></script>
</head>
<body class="theme-default">
<noscript>You need to enable JavaScript to run this app.</noscript>
<template id="editDialogTemplate" style="display: none">
<div class="backdrop">
<div class="editEventDialog">
<div class="editEventBackground">
<div class="editEventHeaderInner">
<div class="header">Edit Event</div>
<div class="gc-editing-close gc-float-right" onclick="removeDialog(event)">
<span class="fa fa-times"></span>
</div>
</div>
</div>
<div class="editEventContent">
<div class="contentItem">
<div class="title fixed"><label>Title</label></div>
<div class="input-container">
<input id="eventTitleContent" />
</div>
</div>
<div class="contentItem">
<div class="title fixed"><label>When</label></div>
<div class="input-container">
<div class="input-group date">
<input type="time" id="datetimepicker1" />
</div>
</div>
<div class="title"><label>to</label></div>
<div class="input-container">
<div class="input-group date">
<input type="time" id="datetimepicker2" />
</div>
</div>
</div>
</div>
<div class="editEventBackground">
<div class="btn-group pull-right editEventBtnInner" rol="group">
<button type="button" class="btn btn-default editBtn" onclick="deleteEvent(event)">Delete Event</button>
<button type="button" class="btn btn-default editBtn" onclick="saveEvent(event)">Save</button>
<button type="button" class="btn btn-default editBtn" onclick="cancelEditEvent(event)">Cancel</button>
</div>
</div>
</div>
</div>
</template>
<div class="main-container">
<div class="button-container">
<div class="flex0">
<div id="commandPanel" class="btn-group" role="group">
<button id="dayView" type="button" class="btn btn-default">Day</button>
<button id="weekView" type="button" class="btn btn-default">Week</button>
<button id="monthView" type="button" class="btn btn-default active">Month</button>
</div>
</div>
<div class="flex1">
<div id="title">June 2018</div>
</div>
<div class="flex0">
<div class="btn-group" role="group">
<div class="btn btn-default app-prev">
<i class="demo-icon icon-left-big"></i>
</div>
<div class="btn btn-default app-next">
<i class="demo-icon icon-right-big"></i>
</div>
</div>
</div>
</div>
<div id="grid" class="grid"></div>
</div>
<script src="data.js" type="text/javascript"></script>
<script src="app.js" type="text/javascript"></script>
</body>
</html>
var editData;
var cols = [
{
id: 'topic',
dataField: 'topic',
},
{
id: 'start',
dataField: 'start',
dataType: 'date',
format: 'HH:mm',
},
{
id: 'end',
dataField: 'end',
dataType: 'date',
format: 'HH:mm',
},
{
id: 'speaker',
dataField: 'speaker',
},
];
var monthEventTemplate =
'\n<div class="event-container">\n <div class="event-title">\n <span class="time">{{=it.start}}</span> <span class="topic">{{=it.topic}}</span>\n </div>\n<div>';
var dayEventTemplate = '<div class="event-content">{{=it.topic}}</div>';
var now = new Date(Date.now());
var startTime = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 8, 0, 0);
var endTime = new Date(now.getFullYear(), now.getMonth(), now.getDate(), 23, 0, 0);
var calendar = new GC.DataViews.CalendarGrouping({
viewMode: 'Month',
daysEventStartField: 'start',
daysEventEndField: 'end',
startDate: startTime,
daysStartTime: startTime,
daysEndTime: endTime,
});
calendar.eventClick.addHandler(function (args) {
removeDialog();
var dialog = createEditEventDialog();
if (dialog) {
setTimeout(function () {
var popoverDialog = $('.popover-dialog');
if (popoverDialog.length > 0) {
popoverDialog.remove();
}
dataView.container.parentElement.appendChild(dialog);
if (!args.data) {
var start = new Date();
var end = new Date(
start.getFullYear(),
start.getMonth(),
start.getDate(),
start.getHours() + 2,
start.getMinutes(),
start.getSeconds()
);
args.data = {
topic: '',
start: start,
end: end,
};
}
editData = args.data;
var excelFormatter = new GC.DataViews.GeneralFormatter('hh:mm:ss');
$('#editDialog #eventTitleContent')[0].value = editData.topic;
$('#editDialog #datetimepicker1')[0].value = excelFormatter.format(editData.start);
$('#editDialog #datetimepicker2')[0].value = excelFormatter.format(editData.end);
}, 100);
}
});
var dataView = new GC.DataViews.DataView(
document.getElementById('grid'),
data,
cols,
new GC.DataViews.GridLayout({
grouping: {
field: 'start',
converter: function converter(field) {
return field.toDateString();
},
},
rowTemplate: monthEventTemplate,
groupStrategy: calendar,
})
);
updateTitle();
function previousMonth() {
var options = calendar.options;
var currentDate = options.startDate;
if (options.viewMode === 'Month') {
currentDate = getMonth(currentDate, -1);
} else if (options.viewMode === 'Week') {
currentDate = getDay(currentDate, -7);
} else {
currentDate = getDay(currentDate, -1);
}
calendar.options.startDate = currentDate;
updateTitle();
dataView.invalidate();
}
function nextMonth() {
var options = calendar.options;
var currentDate = options.startDate;
if (options.viewMode === 'Month') {
currentDate = getMonth(currentDate, 1);
} else if (options.viewMode === 'Week') {
currentDate = getDay(currentDate, 7);
} else {
currentDate = getDay(currentDate, 1);
}
calendar.options.startDate = currentDate;
updateTitle();
dataView.invalidate();
}
function changeToDayView() {
$('#commandPanel .btn').removeClass('active');
$('#dayView').addClass('active');
var options = dataView.options;
options.rowHeight = 50;
options.rowTemplate = dayEventTemplate;
calendar.options.viewMode = 'Day';
dataView.invalidate();
updateTitle();
}
function changeToWeekView() {
$('#commandPanel .btn').removeClass('active');
$('#weekView').addClass('active');
var options = dataView.options;
options.rowHeight = 50;
options.rowTemplate = dayEventTemplate;
calendar.options.viewMode = 'Week';
dataView.invalidate();
updateTitle();
}
function changeToMonthView() {
$('#commandPanel .btn').removeClass('active');
$('#monthView').addClass('active');
var options = dataView.options;
options.rowHeight = 24;
options.rowTemplate = monthEventTemplate;
calendar.options.viewMode = 'Month';
dataView.invalidate();
updateTitle();
}
function createEditEventDialog() {
var eventDialog = document.getElementById('editDialogTemplate').innerHTML;
var div = document.createElement('div');
div.innerHTML = eventDialog;
var dialog = div.children[0];
dialog.id = 'editDialog';
return dialog;
}
window.saveEvent = function saveEvent() {
if (editData) {
var oldStart = editData.start;
var oldEnd = editData.end;
editData.topic = $('#editDialog #eventTitleContent')[0].value;
var newStartValue = $('#editDialog #datetimepicker1')[0].value;
var newEndValue = $('#editDialog #datetimepicker2')[0].value;
if (newStartValue && newEndValue) {
var newStart = newStartValue.split(':');
var newEnd = newEndValue.split(':');
while (newStart.length < 3) {
newStart.push('0');
}
while (newEnd.length < 3) {
newEnd.push('0');
}
editData.start = new Date(
oldStart.getFullYear(),
oldStart.getMonth(),
oldStart.getDate(),
parseInt(newStart[0], 10),
parseInt(newStart[1], 10),
parseInt(newStart[2], 10)
);
editData.end = new Date(
oldEnd.getFullYear(),
oldEnd.getMonth(),
oldEnd.getDate(),
parseInt(newEnd[0], 10),
parseInt(newEnd[1], 10),
parseInt(newEnd[2], 10)
);
dataView.invalidate();
}
removeDialog();
}
};
window.deleteEvent = function deleteEvent(e) {
dataView.data.removeDataItems(editData.sourceIndex, 1);
removeDialog();
};
window.cancelEditEvent = function cancelEditEvent() {
removeDialog();
};
window.removeDialog = function removeDialog() {
var dialog = document.getElementById('editDialog');
if (dialog) {
dialog.parentNode.removeChild(dialog);
}
};
function getDay(currentDate, daysCount) {
var date = new Date(currentDate);
var timeSpan = 1000 * 60 * 60 * 24 * (daysCount || 1);
date.setTime(date.getTime() + timeSpan);
return date;
}
function getMonth(currentDate, monthCount) {
var year = currentDate.getFullYear();
var month = currentDate.getMonth() + monthCount;
var day = currentDate.getDate();
if (month === 12) {
month = 0;
year += 1;
} else if (month === -1) {
month = 11;
year -= 1;
}
return new Date(year, month, day, 0, 0, 0);
}
function formatDate(format, date) {
var formatter = new GC.DataViews.GeneralFormatter(format);
return formatter.format(date);
}
function getMonday(date) {
date = new Date(date);
date.setDate(date.getDate() - date.getDay());
return date;
}
function formatTitle(options) {
var date = options.startDate;
if (options.viewMode === 'Month') {
return formatDate('mmmm yyyy', date);
} else if (options.viewMode === 'Week') {
var d1 = getMonday(date);
var d2 = getDay(d1, 6);
if (d1.getFullYear() !== d2.getFullYear()) {
return formatDate('mmmm d, yyyy', d1) + formatDate(' - mmmm d, yyyy', d2);
}
return formatDate('mmmm d', d1) + formatDate(' - mmmm d, yyyy', d2);
} else {
return formatDate('mmmm d, yyyy', date);
}
}
function updateTitle() {
var title = document.getElementById('title');
title.innerText = formatTitle(calendar.options);
}
$('#dayView').click(changeToDayView);
$('#weekView').click(changeToWeekView);
$('#monthView').click(changeToMonthView);
$('.app-prev').click(previousMonth);
$('.app-next').click(nextMonth);
// timetable
var data = [
{
topic: 'Leaving',
start: 'June 15,2018 9:00:00',
end: 'June 15,2018 20:00:00',
speaker: '',
},
{
topic: 'Introductions, Name Game. Hopes Fears & Expectations',
start: 'June 4,2018 8:00:00',
end: 'June 4,2018 11:30:00',
speaker: 'Steve',
},
{
topic: 'Permaculture Ethics & Philosophies',
start: 'June 4,2018 13:30:00',
end: 'June 4,2018 16:00:00',
speaker: 'Steve',
},
{
topic: 'DINNER',
start: 'June 4,2018 17:00:00',
end: 'June 4,2018 20:00:00',
speaker: '',
},
{
topic: 'Soil Erosion&Conservation',
start: 'June 6,2018 9:00:00',
end: 'June 6,2018 15:30:00',
speaker: 'Steve',
},
{
topic: 'Soil Practical Gardening',
start: 'June 6,2018 17:30:00',
end: 'June 6,2018 19:30:00',
speaker: 'Tony',
},
{
topic: 'Micro Climate',
start: 'June 8,2018 13:00:00',
end: 'June 8,2018 17:30:00',
speaker: 'Fiona',
},
{
topic: 'Earthworks',
start: 'June 11,2018 9:45:00',
end: 'June 11,2018 13:15:00',
speaker: 'Steve',
},
{
topic: 'Herb Introduction',
start: 'June 11,2018 14:00:00',
end: 'June 11,2018 15:30:00',
speaker: 'Fiona',
},
{
topic: 'TEA BREAK',
start: 'June 11,2018 17:30:00',
end: 'June 11,2018 19:00:00',
speaker: '',
},
{
topic: 'Organic intelligent algorithm introduction',
start: 'June 14,2018 11:00:00',
end: 'June 14,2018 19:00:00',
speaker: '',
},
{
topic: 'Built Environment Buildings',
start: 'June 1,2018 9:00:00',
end: 'June 1,2018 10:30:00',
speaker: 'Steve',
},
{
topic: 'Short introduction',
start: 'June 1,2018 13:30:00',
end: 'June 1,2018 15:00:00',
speaker: 'Steve',
},
{
topic: 'Design Groups Site Introduction Customer Brief',
start: 'June 1,2018 15:30:00',
end: 'June 1,2018 16:30:00',
speaker: 'Tony',
},
{
topic: 'DINNER',
start: 'June 1,2018 17:00:00',
end: 'June 1,2018 19:00:00',
speaker: '',
},
{
topic: 'Film: Global Gardener 4',
start: 'June 1,2018 19:00:00',
end: 'June 1,2018 21:00:00',
speaker: '',
},
];
function randomSeries(min, max, count) {
var set = new Set();
var result = [];
while (result.length < count) {
var val = _.random(min, max);
if (set.has(val)) {
continue;
}
set.add(val);
result.push(val);
if (set.size >= max - min + 1) {
set.clear();
}
}
return result;
} // generate start and end dates
var now = new Date(Date.now());
var year = now.getFullYear();
var month = now.getMonth();
var wd = now.getDay();
var days = randomSeries(-wd - 2, 9 - wd, data.length);
var minutes = [0, 30];
function generateStart(idx) {
var day = now.getDate() + days[idx];
var hour = _.random(8, 16);
var minute = minutes[_.random(0, 1)];
return new Date(year, month, day, hour, minute, 0);
}
function overlapFn(events) {
return function (startDate) {
var start = startDate.getTime();
return (
_.findIndex(events, function (event) {
return start >= event.start.getTime() && start <= event.end.getTime();
}) >= 0
);
};
}
data.forEach(function (event, idx) {
var isOverlap = overlapFn(data.slice(0, idx));
var start = generateStart(idx);
while (isOverlap(start)) {
start = generateStart(idx);
}
var duration = [60, 90, 120, 150, 180][_.random(0, 1)] * 60 * 1000;
event.start = start;
event.end = new Date(start.getTime() + duration);
});
@charset "UTF-8";
@font-face {
font-family: "spreadview-demo-icon";
src: url(data:application/font-woff;base64,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) format("woff");
}
.demo-icon {
-moz-osx-font-smoothing: grayscale;
-webkit-font-smoothing: antialiased;
display: inline-block;
font-family: "spreadview-demo-icon";
font-style: normal;
font-variant: normal;
text-align: center;
text-transform: none;
}
.icon-left-big:before {
content: "";
}
.icon-right-big:before {
content: "";
}
.main-container {
display: flex;
flex-direction: column;
width: 100%;
height: 100%;
}
.button-container {
display: flex;
align-items: center;
justify-content: space-between;
overflow: hidden;
flex-grow: 0;
flex-shrink: 0;
padding: 5px;
}
.button-container .btn {
display: flex;
align-items: center;
justify-content: center;
height: 32px;
}
.grid {
width: 100%;
height: calc(100% - 32px);
min-height: 605px;
flex-grow: 1;
flex-shrink: 1;
}
.flex0 {
flex-grow: 0;
flex-shrink: 0;
}
.flex1 {
flex-grow: 1;
flex-shrink: 1;
}
#title {
display: flex;
align-items: center;
justify-content: center;
width: 100%;
font-family: Helvetica, sans-serif;
font-size: 16px;
color: #333;
}
.calendar-grouping .day-event,
.calendar-grouping .month-event {
font-family: Helvetica, sans-serif;
font-size: 10px;
box-sizing: border-box;
cursor: pointer;
}
.calendar-grouping .day-event {
margin: 2px;
padding: 8px;
display: flex;
align-items: center;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
min-width: 0;
}
.calendar-grouping .day-event .event-content {
width: 100%;
overflow: hidden;
white-space: nowrap;
text-overflow: ellipsis;
}
.calendar-grouping .event-container {
padding: 0 5px;
}
.calendar-grouping .event-container .event-title {
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.calendar-grouping .event-container .event-title .time {
color: white;
background-color: #5d89b7;
border-radius: 5px;
padding: 1px 4px;
}
.calendar-grouping .event-container .event-title .topic {
padding-left: 5px;
}
.calendar-grouping .popover-dialog {
font-family: Helvetica, sans-serif;
font-size: 10px;
}
.gc-editing-close {
color: #5d89b7;
}
.gc-editing-close:hover {
color: #80a3c7;
}
.editEventDialog {
background-color: #fff;
border-radius: 4px;
box-shadow: 0 0 2px rgba(0, 0, 0, 0.12), 0 2px 4px rgba(0, 0, 0, 0.24);
position: absolute;
width: 480px;
}
.editEventDialog .editEventBackground {
border-bottom: solid 1px #f1f1f1;
overflow: hidden;
}
.editEventDialog .editEventBackground .editEventHeaderInner {
font-family: helvetica, arial, verdana, sans-serif;
font-size: 15px;
font-weight: 300;
margin: 10px;
}
.editEventDialog .editEventBackground .editEventHeaderInner .header {
display: inline-block;
}
.editEventDialog .editEventBackground .editEventBtnInner {
margin: 1em 0.4em;
}
.editEventDialog .editEventBackground .btn-group .editBtn {
background-color: #5d89b7;
border: 0;
border-radius: 2px;
color: #fff;
margin-right: 0.4em;
padding: 5px;
}
.editEventDialog .editEventBackground .btn-group .editBtn:hover {
background: #80a3c7;
}
.editEventDialog .editEventContent {
margin: 1em;
}
.editEventDialog .editEventContent .contentItem {
display: flex;
align-items: center;
justify-content: stretch;
margin: 1em 0;
}
.editEventDialog .editEventContent .contentItem label {
margin: 0 1em;
}
.editEventDialog .editEventContent .contentItem .title {
color: #666666;
font-weight: inherit;
flex-grow: 0;
flex-shrink: 0;
}
.editEventDialog .editEventContent .contentItem .title.fixed {
width: 60px;
}
.editEventDialog .editEventContent .contentItem .input-container {
flex-grow: 1;
flex-shrink: 0;
}
.editEventDialog .editEventContent .contentItem .input-container input {
width: 100%;
}
@media only screen and (max-width: 768px) {
.editEventDialog {
width: 350px;
}
}
.backdrop {
position: fixed;
top: 0;
left: 0;
height: 100%;
width: 100%;
z-index: 0;
background-color: rgba(255, 255, 255, 0.15);
display: flex;
align-items: center;
justify-content: center;
}
/*# sourceMappingURL=data:application/json;charset=utf8;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbIkRhdGFWaWV3cy9DYWxlbmRhci9DYWxlbmRhci9wdXJlanMvc3R5bGVzLmNzcyIsIkRhdGFWaWV3cy9DYWxlbmRhci9DYWxlbmRhci9wdXJlanMvc3R5bGVzLnNjc3MiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsZ0JBQWdCO0FDRWhCO0VBQ0UsbUNBQUE7RUFDQSxtMkxBQUE7QURBRjtBQ0lBO0VBQ0Usa0NBQUE7RUFDQSxtQ0FBQTtFQUNBLHFCQUFBO0VBQ0EsbUNBQUE7RUFDQSxrQkFBQTtFQUNBLG9CQUFBO0VBQ0Esa0JBQUE7RUFDQSxvQkFBQTtBREZGOztBQ0tBO0VBQ0UsWUFBQTtBREZGOztBQ0tBO0VBQ0UsWUFBQTtBREZGOztBQ0tBO0VBQ0UsYUFBQTtFQUNBLHNCQUFBO0VBQ0EsV0FBQTtFQUNBLFlBQUE7QURGRjs7QUNLQTtFQUNFLGFBQUE7RUFDQSxtQkFBQTtFQUNBLDhCQUFBO0VBQ0EsZ0JBQUE7RUFDQSxZQUFBO0VBQ0EsY0FBQTtFQUNBLFlBQUE7QURGRjtBQ0lFO0VBQ0UsYUFBQTtFQUNBLG1CQUFBO0VBQ0EsdUJBQUE7RUFDQSxZQUFBO0FERko7O0FDTUE7RUFDRSxXQUFBO0VBQ0EseUJBQUE7RUFDQSxpQkFBQTtFQUNBLFlBQUE7RUFDQSxjQUFBO0FESEY7O0FDTUE7RUFDRSxZQUFBO0VBQ0EsY0FBQTtBREhGOztBQ01BO0VBQ0UsWUFBQTtFQUNBLGNBQUE7QURIRjs7QUNNQTtFQUNFLGFBQUE7RUFDQSxtQkFBQTtFQUNBLHVCQUFBO0VBQ0EsV0FBQTtFQUNBLGtDQUFBO0VBQ0EsZUFBQTtFQUNBLFdBQUE7QURIRjs7QUNPRTs7RUFFRSxrQ0FBQTtFQUNBLGVBQUE7RUFDQSxzQkFBQTtFQUNBLGVBQUE7QURKSjtBQ09FO0VBQ0UsV0FBQTtFQUNBLFlBQUE7RUFDQSxhQUFBO0VBQ0EsbUJBQUE7RUFDQSxnQkFBQTtFQUNBLG1CQUFBO0VBQ0EsdUJBQUE7RUFDQSxZQUFBO0FETEo7QUNPSTtFQUNFLFdBQUE7RUFDQSxnQkFBQTtFQUNBLG1CQUFBO0VBQ0EsdUJBQUE7QURMTjtBQ1NFO0VBQ0UsY0FBQTtBRFBKO0FDU0k7RUFDRSxnQkFBQTtFQUNBLHVCQUFBO0VBQ0EsbUJBQUE7QURQTjtBQ1NNO0VBQ0UsWUFBQTtFQUNBLHlCQXBIWTtFQXFIWixrQkFBQTtFQUNBLGdCQUFBO0FEUFI7QUNVTTtFQUNFLGlCQUFBO0FEUlI7QUNhRTtFQUNFLGtDQUFBO0VBQ0EsZUFBQTtBRFhKOztBQ2VBO0VBQ0UsY0F0SWtCO0FEMEhwQjtBQ2NFO0VBQ0UsY0FBQTtBRFpKOztBQ2dCQTtFQUNFLHNCQUFBO0VBQ0Esa0JBQUE7RUFDQSxzRUFBQTtFQUNBLGtCQUFBO0VBQ0EsWUFBQTtBRGJGO0FDZUU7RUFDRSxnQ0FBQTtFQUNBLGdCQUFBO0FEYko7QUNlSTtFQUNFLGtEQUFBO0VBQ0EsZUFBQTtFQUNBLGdCQUFBO0VBQ0EsWUFBQTtBRGJOO0FDZU07RUFDRSxxQkFBQTtBRGJSO0FDaUJJO0VBQ0UsaUJBQUE7QURmTjtBQ21CTTtFQUNFLHlCQXpLWTtFQTBLWixTQUFBO0VBQ0Esa0JBQUE7RUFDQSxXQUFBO0VBQ0EsbUJBQUE7RUFDQSxZQUFBO0FEakJSO0FDbUJRO0VBQ0UsbUJBQUE7QURqQlY7QUN1QkU7RUFDRSxXQUFBO0FEckJKO0FDdUJJO0VBQ0UsYUFBQTtFQUNBLG1CQUFBO0VBQ0Esd0JBQUE7RUFDQSxhQUFBO0FEckJOO0FDdUJNO0VBQ0UsYUFBQTtBRHJCUjtBQ3dCTTtFQUNFLGNBQUE7RUFDQSxvQkFBQTtFQUNBLFlBQUE7RUFDQSxjQUFBO0FEdEJSO0FDd0JRO0VBQ0UsV0FBQTtBRHRCVjtBQzBCTTtFQUNFLFlBQUE7RUFDQSxjQUFBO0FEeEJSO0FDMEJRO0VBQ0UsV0FBQTtBRHhCVjs7QUMrQkE7RUFDRTtJQUNFLFlBQUE7RUQ1QkY7QUFDRjtBQytCQTtFQUNFLGVBQUE7RUFDQSxNQUFBO0VBQ0EsT0FBQTtFQUNBLFlBQUE7RUFDQSxXQUFBO0VBQ0EsVUFBQTtFQUNBLDJDQUFBO0VBQ0EsYUFBQTtFQUNBLG1CQUFBO0VBQ0EsdUJBQUE7QUQ3QkYiLCJmaWxlIjoiRGF0YVZpZXdzL0NhbGVuZGFyL0NhbGVuZGFyL3B1cmVqcy9zdHlsZXMuY3NzIiwic291cmNlc0NvbnRlbnQiOlsiQGNoYXJzZXQgXCJVVEYtOFwiO1xuQGZvbnQtZmFjZSB7XG4gIGZvbnQtZmFtaWx5OiBcInNwcmVhZHZpZXctZGVtby1pY29uXCI7XG4gIHNyYzogdXJsKGRhdGE6YXBwbGljYXRpb24vZm9udC13b2ZmO2Jhc2U2NCxkMDlHUmdBQkFBQUFBQkZjQUE4QUFBQUFIZHdBQVFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQkhVMVZDQUFBQldBQUFBRE1BQUFCQ3NQNno3VTlUTHpJQUFBR01BQUFBUXdBQUFGWStJVWt5WTIxaGNBQUFBZEFBQUFCMkFBQUI3Z2xQN1ExamRuUWdBQUFDU0FBQUFCTUFBQUFnQnRYL0FtWndaMjBBQUFKY0FBQUZrQUFBQzNDS2taQlpaMkZ6Y0FBQUIrd0FBQUFJQUFBQUNBQUFBQkJuYkhsbUFBQUg5QUFBQm1ZQUFBb1VMcHF5bEdobFlXUUFBQTVjQUFBQU1BQUFBRFlKb3FmWWFHaGxZUUFBRG93QUFBQWRBQUFBSkFjOUExMW9iWFI0QUFBT3JBQUFBQmdBQUFBc0o1MEFBR3h2WTJFQUFBN0VBQUFBR0FBQUFCZ05NQTlNYldGNGNBQUFEdHdBQUFBZ0FBQUFJQUVoRERadVlXMWxBQUFPL0FBQUFYY0FBQUxOekowY0huQnZjM1FBQUJCMEFBQUFiQUFBQUpDOHQ5bWhjSEpsY0FBQUVPQUFBQUI2QUFBQWh1VkJLN3g0bkdOZ1pHQmc0R0tRWTlCaFlIUng4d2xoNEdCZ1lZQUFrQXhqVG1aNklsQU15Z1BLc1lCcERpQm1nNGdDQUlvakEwOEFlSnhqWUdTZXhUaUJnWldCZ2FtS2FROERBME1QaEdaOHdHREl5QVFVWldCbFpzQUtBdEpjVXhnY1hqQzg0R1FPK3AvRkVNVWN4REFkS013SWtnTUE4Y2dMMFFCNG5PMlIwUTNDUUF4RDM5RlE2S21qOE1sQWZERUxvMmFMMWtrOUJwR2VwVmk1KzdDQk83Q0lsd2dZWHdZMUg3bWovWVhaZnZEdW15Zy90K09RVXFvOVdtKzZEZjI0OHVESjF1OVcvck8zL3J6Tnl1MmlrelJLanpUVlNKcktOazIxbFVZcGswWjVrMGJKazBZZHFLa0w1Z2wzWHh0TkFBQjRuR05nUUFNU0VNZ2M5RDhUaEFFU1pnUGJBSGljclZacGQ5TkdGQjE1U1p5RUxDVUxMV3BoeE1ScHNFWW1iTUdBQ1VHeVl5QmRuSzJWb0lzVU8rbSs4WW5mNEYvelpOcHo2RGQrV3U4Ykx5U1F0T2R3bXBPamQrZk4xY3piWlJKYWt0Z0w2NUdVbXkvRjFOWW1qZXc4Q2VtR1RjdFJmQ2c3ZXlGbGlzbmZCVkVRclpiYXR4MkhSRVFpVUxXdXNFUVEreDVabW1SODZGRkd5N2FrVjAzS0xUM3BMbHZqUWIxVjMzNGFPc3F4TzZHa1pqTjBhRDJ5SlZVWVZhSklwajFTMHFabHFQb3JTU3U4djhMTVY4MVF3b2hPSW1tOEdjYlFTTjRiWjdUS2FEVzI0eWlLYkxMY0tGSWttdUZCRkhtVTFSTG41SW9KRE1vSHpaRHl5cWNSNWNQOGlLellvNXhXc0V1MjAveStMM21uZHprL3NWOXZVYmJrUUIvSWp1emc3SFFsWDRSYlcySGN0SlB0S0ZRUmR0ZDNRbXpaN0ZUL1pvL3lta1lEdHlzeXZkQ01ZS2w4aFJBclA2SE0vaUZaTFp4UCtaSkhvMXF5a1JOQjYyVk83RXMrZ2RiamlDbHh6UmhaME4zUkNSSFUvWkl6RFBhWVBoNzg4ZDRwbGdzVEFuZ2N5M3BISlp3SUV5bGhjelJKMmpCeVlDVmxpeXFwOWE2WU9PVjFXc1Jid243dDJ0R1h6bWpqVUhkaVBGc1BIVnM1VWNueGFGS25tVXlkMmtuTm95a05vcFIwSm5qTXJ3TW9QNkpKWG0xak5ZbVZSOU00WnNhRVJDSUNMZHhMVTBFc083R2tLUVROb3htOXVSdW11WFl0V3FUSkEvWGNvL2YwNWxhNHVkTlQyZzcwczBaL1ZxZGlPdGdMMCtscDVDL3hhZHJsSWtYcCt1a1pma3ppUWRZQ01wRXROc09VZ3dkdi9RN1N5OWVXSElYWEJ0anU3Zk1ycUgzV1JQQ2tBZnNiMEI1UDFTa0pUSVdZVlloV1FHS3RhMW1XeWRXc0ZxbkkxSGREbWxhK3JOTUVpbkljRjhlK2pISDlYek16bHBnU3Z0K0owN01qTGoxejdVc0kweHg4bTNVOW10ZXB4WElCY1daNVRxZFpsdS9yTk1meUE1M21XWjdYNlFoTFc2ZWpMRC9VYVlIbFJ6b2RZM2xCQzVwMDM4R1FpekRrQWc2UU1JU2xBME5ZWG9JaExCVU1ZYmtJUTFnV1lRakxKUmpDOG1NWXduSVpockM4ckdYVjFGTko0OXFaV0Fac1FtQmlqaDY1ekVYbGFpcTVWRUs3YUZScVE1NFNicFZVRk0rcWYyV2dYanp5aGptd0ZraVh5SnBmTWM2VmowYmwrTllWTFc4YU8xZkFzZXB2SDQ3Mk9mRlMxb3VGUHdYLzFkWlVKYjFpemNPVHEvQWJocDVzSjZvMnFYaDBUWmZQVlQyNi9sOVVWRmdMOUJ0SWhWZ295ckpzY0djaWhJODZuWVpxb0pWRHpHek1QTFRyZGN1YW44UDlOekZDRmxEOStEY1VHZ3ZjZzA1WlNWbnQ0S3pWMTl1eTNEdURjamdUTEVreE4vUDZWdmdpSTdQU2ZwRlp5cDZQZkI1d0JZeEtaZGhxQTYwVnZOa25NUStaM2lUUEJIRmJVVFpJMnRqT0JJa05IUE9BZWZPZEJDWmg2cW9ONUU3aGhnMzRCV0Z1d1hrblhLSjZveXlIN2tYczh5aWsvRnVuNGtUMnFHaU13TFBaRzJHdjcwTEtiM0VNSkRUNXBYNE1WQldocVJnMUZkQTBVbTZvQmwvRzJicHRRc1lPOUNNcWRzT3lyT0xEeHhiM2xaSnRHWVI4cElqVm82T2YxbDZpVHFyY2ZtWVVsKytkdmdYQklEVXhmM3ZmZEhHUXlydGF5VEpIYlFOVHR4cVZVOWVhUStOVmgrcm1VZlc5NCt3VE9XdWFicm9uSG5wZjA2cmJ3Y1ZjTExEMmJRN1NVaVlYMVBWaGhRMml5OFdsVU9wbE5FbnZ1QWNZRmhqUTcxQ0tqZityK3RoOG5pdFZoZEZ4Sk45TzFMZlI1MkFNL0EvWWYwZjFBOUQzWStoeURTN1A5NW9UbjI3MDRXeVpycUlYNjZmb056QnJyYmxadWdiYzBIUUQ0aUZIclk2NHlnMThwd1p4ZXFTNUhPa2g0R1BkRmVJQndDYUF4ZUFUM2JXTTVsTUFvL21NT1Q3QTU4eGgwR1FPZ3kzbU1OaG16aHJBRG5NWTdES0h3UjV6R0h6Qm5IV0FMNW5ESUdRT2c0ZzVESjR3SndCNHlod0dYekdId2RmTVlmQU5jKzREZk1zY0JqRnpHQ1RNWWJDdjZkWXd6QzFlMEYyZ3RrRlZvQU5UVDFqY3crSlFVMlhJL280WGh2MjlRY3ord1NDbS9xanA5cEQ2RXk4TTlXZURtUHFMUVV6OVZkT2RJZlUzWGhqcTd3WXg5UStEbVBwTXZ4akxaUWEvakh5WENnZVVYV3crNSsrSjl3L2J4VUM1QUFFQUFmLy9BQTk0bktWVldXOGIxeFUrNTk3Wk9CeXVtb1d5eURFM2NXeFNrRnl1aXF4U2xCZlFrdWtGdHBEUVNhVFFqcXkya0czSkRlQ2c2UGFnd0xYUkpnS3lGS2hiQkFpc3h3YXQrdEtYQUgxb243b0FiWDVDSHdJWlJaR25QclNJeGoyWFloVTdpYnFnUTg2OTU3dm56TXk1NXp2blhBZ0FQUDQ3MytGQmlNQmhtSUFadUFBdndScDhGemJoUXFzVEN6RTFhakNGcTBvdkVtQThyREdHblBXQ01rTUFYQkF6UWxlWEdDQjAzdmorM1kzdmZQUE9LN2RXVjE1ZWV1SFp5K2ZQMWdaWEpTNm5TcU9XcWFpNWJNR3JWZXRPcFd6SENIc0QzQ0NNbjlFTFhNSTlmQnozOEJmWmZ4bi92YjNRQy91aGdWN2d2dDVOMjc5d1hLVFJUajhoNHZWOTRMaitUdzdTNE1xbkR6NWg5YlRpaVpjL3VHRVR0RzdRYTF4VVZzWGtyQW9ML3c5UGFGaCtWZGlMd2YvOS8ycUUydjQ2QUNoZnlPMTA2NWtncWpyMk9RMGcxN0RQcUl4OVFta2lQaVVVZEg2R1F1Ty9wVEF6MEdjT29HU2diMlQyS01rTmNDVnpNQ1hzdDJsNzkxRWZNY2R4ZHhzSDYvQXA5UDhGL2VsNFVvQWUzK05YMkY4aEJmbFdCaGhuYTdTSTY4QUIrQUp3RGwwU29GTnc3SndrSjByWTM1MWpteEZVc2g0V3FnMnNsdytqd0xSWGZpV2Y4bC9kc3F5aWRkenkzelpOdkdGTjJVWEwyc0w3cVR3dXRkM2lsamx0bGdZS1hCV1dVL2JXRWRqM3BVYSt1SDFmT09OclluVWRxQ0RaQWxDWmRvR1k3ZGlqQmJQdmk2bVNFeFBreEF4bUJqV1Q4UVNxbHgyMGVjMzAzN0ducktKdFAvUmZUZVh6S2J6LzBMYUwvUStiT09XYXdzT2lOVzA5TExya0dXNVowd1F0L3gyejc4djNLTTlxTUFSZUs2OVRCbUU3Z0hBNlNNNmNJcThRRm9UTFhSR3NUcjdBWkx0a1ZadHlwUmJBV0RZc0h6dHpwL2YyeFpQNGl2LzZ5clVIODlmS1k5L1kvUE9iSytWRDB0LzhIL2l2bzhIaTJWUFhmdGovenRmNER2czFGQ0RaR2g2aHQyRTdoSEJLdkpkMkR5djViSTdKRnUwMWpMbXNwNmowbzlRcTFBdTB5eGxzc2hrY1I2L2FaSld5aTN6bjdrZjN2T0t0dDBieWVwZ3ppWEZEQ3BtcUdWVWozV1c4K05vSHkvYyt1b3RMVjdkNjB0V0NKcUdoSTlNa0hwSER0cFpNRGhYTGJ5N012ZGFiN0cwSjloOXY4K2Y1SmRDZ0NiZmdYR3QrYnJiQnVZeHRrQ2xKWkg0VGRBQ21RNDhzbUt5eEpYcEdsYmphQXdrVVNYbVJOaExvUWlCZzROek4xWlhsMFVveldmL1NZYXNVcEpKclZNZFJNZTBtWXJYZzVhcDFqNll3VTVVSWhobmQ2T1ZpdEIzSnNhbSthbFd2aVZXdlhpT2JKalpNMWJiMjdrRVZGc1JZaTRsYXJEZnFqU1pyMUVVb3lJQnFkOU5PMnZSbkcyUEozOVF4MndpSFRTZmtob0xoaEc0YnBoNlBxM1k0YVNUWm5ibVRxeXhxNmlrOUVFKzBSMlFMTTczelorcGZQVDFydkpjcUZsTS9NcDlKSjBPR25iQ1RFL05IUnE1TlBic2NNVm5pVUlLWmVERlZ4UFRYMDQwcVJrN01KMEtGV0RpYURnenBCdm8vWm9xaUtlem9ZaVFhS0I2Sko3MVFYc095VlQ0YU4wc0Z3NWdzblgvK2tPTVVVM2pkTFlibWltNzRSTWUyOHVkbks1TWl0eWlPZ29OejdERjFQUk9HSVE5M1cxVEJURTdaWVlvMEc2WUNBUzZhbTlRKysvUDR4VzdMSTI3a3RiMGlKdFZhUDA5ZlZoQWxDUy9SaE5KeklLRjBkcVJWK0x3bHJIM2U4RW9yRHBCSko1eG9KS0NSRzRxcFVpNDZEVSsxS2haV2Mxa3FRTXVzbEtrSmVBN21ha2h0d0d2MEc4THZ5aHVWTS9pU0lVdituNlNRTE9FRWQzZjhZenY4bkxtNHMyZ2V0emVJb1kzS2RKc3BodVIvS05HSTQ5THRIWC9pRVQ1SVdZdVBYclNzRFJzR1BYK2J4L2Q3L25FNENWK0I1ZGJWNTA0elJUdWFHWTRGVUtIRzBKWTVJMEZCdUNreEJxb0M2aXFFSWFDRkE3MUlpR21HemhUVWxDVlFnMEYxQVZRMTJJV2dHdXhjWDc2NjlNS1Z5NWN1ZE9iYXN6Tm0zaXlJS3hlbFJNWFlYcGJ0NVZmWmR2NERIb3BsWXFhTDFQWXB0eXNlSmJkQ0FSTTJzY0doRU12OTY3QnVVRFpUaWg1R2NjYTR1cGJYOVA2dythbjRocTd1aWFwK3hqYzBqZUVmbWFiNTkvOHhJc25iaW9SLzBiVjZkZFEvTmxyRm1yRDdxUmNZbytOalRQUGUxM1Q4cGY4cnNZaXpZanhBOXBkWmJQZGpLZ1hkWk5kbjZhU1VMOU1YZHo4ZVAzVmluQTMxblZpMGt1aWFpM3FmaDNmNUprK0pTb2NnUkNrblhaaHZ0VVVYNHdpaUExQmpvRTRnZzZUSTBwSnVhRnhSVldXaEx5aHFOeGlnSWxjNzhaaWJTbzdZVm13NFBoeUx4OFFWRGNuSkVtWnFtZjI3V2phem8yVTdqT09zN2dqQU56L1o0Ti8ydDNjL1pPTjRRY2lmYkt5dlk4TE9NdmRZbXVVL1dGOW43Ni83Mit2K3o5YjhiMDNldnAwZHkyTjJQTjJZdkEzL0JMazBwdHdBQUhpY1kyQmtZR0FBNGdjM0VxYkg4OXQ4WmVCbWZnRVVZYmpzdTBrR1FmL1BaSDdCSEFUa2NqQXdnVVFCWVc0TDFYaWNZMkJrWUdBTytwOEZKRjh3TVB6L0R5U0JJaWlBR3dDSDFBV2dBQUFBZUp4amZzSEF3QXpEa1ZDTXpoY0U0Z1VNREFDeTV3YS9BQUFBQUFEdUFaWUIzQUlpQWxZQ29nTmtBK2dFckFVS0FBRUFBQUFMQUpBQUNRQUFBQUFBQWdBa0FEUUFjd0FBQUhVTGNBQUFBQUI0bkhXUXkwN0NRQlNHLzVHTENva2FUZHc2S3dNeGxrc2lDeElTRWd4c2RFTU1XMU5LYVV0S2gwd0hFbDdEZC9CaGZBbWZ4WjkyTUFaaW0rbDg1NXN6WjA0SHdEVytJWkEvVHh3NUM1d3h5dmtFcCtoWkx0QS9XeTZTWHl5WFVNV2I1VEw5dStVS0hoQllydUlHSDZ3Z2l1ZU1GdmkwTEhBbExpMmY0RUxjV1M3UVAxb3VrbnVXUzdnVnI1Ykw5SjdsQ2lZaXRWekZ2ZmdhcU5WV1IwRm9aRzFRbCsxbXF5T25XNm1vb3NTTnBiczJvZEtwN011NVNvd2Z4OHJ4MUhMUFl6OVl4NjdlaC90NTR1czBVb2xzT2MyOUd2bUpyMTNqejNiVjAwM1FObVl1NTFvdDVkQm15SlZXQzk4elRtak1xdHRvL0QwUEF5aXNzSVZHeEtzS1lTQlJvNjF6YnFPSkZqcWtLVE1rTS9Pc0NBbGN4RFF1MXR3Ulppc3A0ejdIbkZGQzZ6TWpKanZ3K0YwZStURXA0UDZZVmZUUjZtRThJZTNPaURJdjJaZkQ3ZzZ6UnFRa3kzUXpPL3Z0UGNXR3A3VnBEWGZ0dXRSWlZ4TERneHFTOTdGYlc5QjQ5RTUySzRhMml3YmZmLzd2QitOcGhFOEFlSnh0eGtFT2d5QVFCZEQ1dElwSXI4S2hrSXdPQ1ZnQzQ2SzNiOUp1ZmF0SGh2NVd1dWRoOE1BVEUyWllMSEJZNGZFaW8ySlZRc2xEbDhLN2hpMGZydWREZnB1R3hNNDJ2V3ZsVTUzS1ZiY1JyalkzUGxNdVhuc2NFcmcyL2ZqWU5hZkNJUllsK2dKZnBCN1plSnhqOE43QmNDSW9ZaU1qWTEva0JzYWRIQXdjRE1rRkd4bFluVFl4TURKb2dSaWJ1WmdZT1NBc1BnWXdpODFwRjlNQm9EUW5rTTN1dEl2QkFjSm1abkRacU1MWUVSaXh3YUVqWWlOemlzdEdOUkJ2RjBjREF5T0xRMGR5U0FSSVNTUVFiT1poWXVUUjJzSDR2M1VEUys5R0pnWVhBQXgySS9RQUFBPT0pIGZvcm1hdChcIndvZmZcIik7XG59XG4uZGVtby1pY29uIHtcbiAgLW1vei1vc3gtZm9udC1zbW9vdGhpbmc6IGdyYXlzY2FsZTtcbiAgLXdlYmtpdC1mb250LXNtb290aGluZzogYW50aWFsaWFzZWQ7XG4gIGRpc3BsYXk6IGlubGluZS1ibG9jaztcbiAgZm9udC1mYW1pbHk6IFwic3ByZWFkdmlldy1kZW1vLWljb25cIjtcbiAgZm9udC1zdHlsZTogbm9ybWFsO1xuICBmb250LXZhcmlhbnQ6IG5vcm1hbDtcbiAgdGV4dC1hbGlnbjogY2VudGVyO1xuICB0ZXh0LXRyYW5zZm9ybTogbm9uZTtcbn1cblxuLmljb24tbGVmdC1iaWc6YmVmb3JlIHtcbiAgY29udGVudDogXCLuoIJcIjtcbn1cblxuLmljb24tcmlnaHQtYmlnOmJlZm9yZSB7XG4gIGNvbnRlbnQ6IFwi7qCDXCI7XG59XG5cbi5tYWluLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGZsZXgtZGlyZWN0aW9uOiBjb2x1bW47XG4gIHdpZHRoOiAxMDAlO1xuICBoZWlnaHQ6IDEwMCU7XG59XG5cbi5idXR0b24tY29udGFpbmVyIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzcGFjZS1iZXR3ZWVuO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICBmbGV4LWdyb3c6IDA7XG4gIGZsZXgtc2hyaW5rOiAwO1xuICBwYWRkaW5nOiA1cHg7XG59XG4uYnV0dG9uLWNvbnRhaW5lciAuYnRuIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBjZW50ZXI7XG4gIGhlaWdodDogMzJweDtcbn1cblxuLmdyaWQge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAzMnB4KTtcbiAgbWluLWhlaWdodDogNjA1cHg7XG4gIGZsZXgtZ3JvdzogMTtcbiAgZmxleC1zaHJpbms6IDE7XG59XG5cbi5mbGV4MCB7XG4gIGZsZXgtZ3JvdzogMDtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5mbGV4MSB7XG4gIGZsZXgtZ3JvdzogMTtcbiAgZmxleC1zaHJpbms6IDE7XG59XG5cbiN0aXRsZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB3aWR0aDogMTAwJTtcbiAgZm9udC1mYW1pbHk6IEhlbHZldGljYSwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBjb2xvcjogIzMzMztcbn1cblxuLmNhbGVuZGFyLWdyb3VwaW5nIC5kYXktZXZlbnQsXG4uY2FsZW5kYXItZ3JvdXBpbmcgLm1vbnRoLWV2ZW50IHtcbiAgZm9udC1mYW1pbHk6IEhlbHZldGljYSwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxMHB4O1xuICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICBjdXJzb3I6IHBvaW50ZXI7XG59XG4uY2FsZW5kYXItZ3JvdXBpbmcgLmRheS1ldmVudCB7XG4gIG1hcmdpbjogMnB4O1xuICBwYWRkaW5nOiA4cHg7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIG92ZXJmbG93OiBoaWRkZW47XG4gIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICBtaW4td2lkdGg6IDA7XG59XG4uY2FsZW5kYXItZ3JvdXBpbmcgLmRheS1ldmVudCAuZXZlbnQtY29udGVudCB7XG4gIHdpZHRoOiAxMDAlO1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbn1cbi5jYWxlbmRhci1ncm91cGluZyAuZXZlbnQtY29udGFpbmVyIHtcbiAgcGFkZGluZzogMCA1cHg7XG59XG4uY2FsZW5kYXItZ3JvdXBpbmcgLmV2ZW50LWNvbnRhaW5lciAuZXZlbnQtdGl0bGUge1xuICBvdmVyZmxvdzogaGlkZGVuO1xuICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgd2hpdGUtc3BhY2U6IG5vd3JhcDtcbn1cbi5jYWxlbmRhci1ncm91cGluZyAuZXZlbnQtY29udGFpbmVyIC5ldmVudC10aXRsZSAudGltZSB7XG4gIGNvbG9yOiB3aGl0ZTtcbiAgYmFja2dyb3VuZC1jb2xvcjogIzVkODliNztcbiAgYm9yZGVyLXJhZGl1czogNXB4O1xuICBwYWRkaW5nOiAxcHggNHB4O1xufVxuLmNhbGVuZGFyLWdyb3VwaW5nIC5ldmVudC1jb250YWluZXIgLmV2ZW50LXRpdGxlIC50b3BpYyB7XG4gIHBhZGRpbmctbGVmdDogNXB4O1xufVxuLmNhbGVuZGFyLWdyb3VwaW5nIC5wb3BvdmVyLWRpYWxvZyB7XG4gIGZvbnQtZmFtaWx5OiBIZWx2ZXRpY2EsIHNhbnMtc2VyaWY7XG4gIGZvbnQtc2l6ZTogMTBweDtcbn1cblxuLmdjLWVkaXRpbmctY2xvc2Uge1xuICBjb2xvcjogIzVkODliNztcbn1cbi5nYy1lZGl0aW5nLWNsb3NlOmhvdmVyIHtcbiAgY29sb3I6ICM4MGEzYzc7XG59XG5cbi5lZGl0RXZlbnREaWFsb2cge1xuICBiYWNrZ3JvdW5kLWNvbG9yOiAjZmZmO1xuICBib3JkZXItcmFkaXVzOiA0cHg7XG4gIGJveC1zaGFkb3c6IDAgMCAycHggcmdiYSgwLCAwLCAwLCAwLjEyKSwgMCAycHggNHB4IHJnYmEoMCwgMCwgMCwgMC4yNCk7XG4gIHBvc2l0aW9uOiBhYnNvbHV0ZTtcbiAgd2lkdGg6IDQ4MHB4O1xufVxuLmVkaXRFdmVudERpYWxvZyAuZWRpdEV2ZW50QmFja2dyb3VuZCB7XG4gIGJvcmRlci1ib3R0b206IHNvbGlkIDFweCAjZjFmMWYxO1xuICBvdmVyZmxvdzogaGlkZGVuO1xufVxuLmVkaXRFdmVudERpYWxvZyAuZWRpdEV2ZW50QmFja2dyb3VuZCAuZWRpdEV2ZW50SGVhZGVySW5uZXIge1xuICBmb250LWZhbWlseTogaGVsdmV0aWNhLCBhcmlhbCwgdmVyZGFuYSwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxNXB4O1xuICBmb250LXdlaWdodDogMzAwO1xuICBtYXJnaW46IDEwcHg7XG59XG4uZWRpdEV2ZW50RGlhbG9nIC5lZGl0RXZlbnRCYWNrZ3JvdW5kIC5lZGl0RXZlbnRIZWFkZXJJbm5lciAuaGVhZGVyIHtcbiAgZGlzcGxheTogaW5saW5lLWJsb2NrO1xufVxuLmVkaXRFdmVudERpYWxvZyAuZWRpdEV2ZW50QmFja2dyb3VuZCAuZWRpdEV2ZW50QnRuSW5uZXIge1xuICBtYXJnaW46IDFlbSAwLjRlbTtcbn1cbi5lZGl0RXZlbnREaWFsb2cgLmVkaXRFdmVudEJhY2tncm91bmQgLmJ0bi1ncm91cCAuZWRpdEJ0biB7XG4gIGJhY2tncm91bmQtY29sb3I6ICM1ZDg5Yjc7XG4gIGJvcmRlcjogMDtcbiAgYm9yZGVyLXJhZGl1czogMnB4O1xuICBjb2xvcjogI2ZmZjtcbiAgbWFyZ2luLXJpZ2h0OiAwLjRlbTtcbiAgcGFkZGluZzogNXB4O1xufVxuLmVkaXRFdmVudERpYWxvZyAuZWRpdEV2ZW50QmFja2dyb3VuZCAuYnRuLWdyb3VwIC5lZGl0QnRuOmhvdmVyIHtcbiAgYmFja2dyb3VuZDogIzgwYTNjNztcbn1cbi5lZGl0RXZlbnREaWFsb2cgLmVkaXRFdmVudENvbnRlbnQge1xuICBtYXJnaW46IDFlbTtcbn1cbi5lZGl0RXZlbnREaWFsb2cgLmVkaXRFdmVudENvbnRlbnQgLmNvbnRlbnRJdGVtIHtcbiAgZGlzcGxheTogZmxleDtcbiAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAganVzdGlmeS1jb250ZW50OiBzdHJldGNoO1xuICBtYXJnaW46IDFlbSAwO1xufVxuLmVkaXRFdmVudERpYWxvZyAuZWRpdEV2ZW50Q29udGVudCAuY29udGVudEl0ZW0gbGFiZWwge1xuICBtYXJnaW46IDAgMWVtO1xufVxuLmVkaXRFdmVudERpYWxvZyAuZWRpdEV2ZW50Q29udGVudCAuY29udGVudEl0ZW0gLnRpdGxlIHtcbiAgY29sb3I6ICM2NjY2NjY7XG4gIGZvbnQtd2VpZ2h0OiBpbmhlcml0O1xuICBmbGV4LWdyb3c6IDA7XG4gIGZsZXgtc2hyaW5rOiAwO1xufVxuLmVkaXRFdmVudERpYWxvZyAuZWRpdEV2ZW50Q29udGVudCAuY29udGVudEl0ZW0gLnRpdGxlLmZpeGVkIHtcbiAgd2lkdGg6IDYwcHg7XG59XG4uZWRpdEV2ZW50RGlhbG9nIC5lZGl0RXZlbnRDb250ZW50IC5jb250ZW50SXRlbSAuaW5wdXQtY29udGFpbmVyIHtcbiAgZmxleC1ncm93OiAxO1xuICBmbGV4LXNocmluazogMDtcbn1cbi5lZGl0RXZlbnREaWFsb2cgLmVkaXRFdmVudENvbnRlbnQgLmNvbnRlbnRJdGVtIC5pbnB1dC1jb250YWluZXIgaW5wdXQge1xuICB3aWR0aDogMTAwJTtcbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkge1xuICAuZWRpdEV2ZW50RGlhbG9nIHtcbiAgICB3aWR0aDogMzUwcHg7XG4gIH1cbn1cbi5iYWNrZHJvcCB7XG4gIHBvc2l0aW9uOiBmaXhlZDtcbiAgdG9wOiAwO1xuICBsZWZ0OiAwO1xuICBoZWlnaHQ6IDEwMCU7XG4gIHdpZHRoOiAxMDAlO1xuICB6LWluZGV4OiAwO1xuICBiYWNrZ3JvdW5kLWNvbG9yOiByZ2JhKDI1NSwgMjU1LCAyNTUsIDAuMTUpO1xuICBkaXNwbGF5OiBmbGV4O1xuICBhbGlnbi1pdGVtczogY2VudGVyO1xuICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbn0iLCIkaGVhZGVyLWNvbG9yLWRhcms6ICM1ZDg5Yjc7XG5cbkBmb250LWZhY2Uge1xuICBmb250LWZhbWlseTogJ3NwcmVhZHZpZXctZGVtby1pY29uJztcbiAgc3JjOiB1cmwoZGF0YTphcHBsaWNhdGlvbi9mb250LXdvZmY7YmFzZTY0LGQwOUdSZ0FCQUFBQUFCRmNBQThBQUFBQUhkd0FBUUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFBQUFCSFUxVkNBQUFCV0FBQUFETUFBQUJDc1A2ejdVOVRMeklBQUFHTUFBQUFRd0FBQUZZK0lVa3lZMjFoY0FBQUFkQUFBQUIyQUFBQjdnbFA3UTFqZG5RZ0FBQUNTQUFBQUJNQUFBQWdCdFgvQW1ad1oyMEFBQUpjQUFBRmtBQUFDM0NLa1pCWloyRnpjQUFBQit3QUFBQUlBQUFBQ0FBQUFCQm5iSGxtQUFBSDlBQUFCbVlBQUFvVUxwcXlsR2hsWVdRQUFBNWNBQUFBTUFBQUFEWUpvcWZZYUdobFlRQUFEb3dBQUFBZEFBQUFKQWM5QTExb2JYUjRBQUFPckFBQUFCZ0FBQUFzSjUwQUFHeHZZMkVBQUE3RUFBQUFHQUFBQUJnTk1BOU1iV0Y0Y0FBQUR0d0FBQUFnQUFBQUlBRWhERFp1WVcxbEFBQU8vQUFBQVhjQUFBTE56SjBjSG5CdmMzUUFBQkIwQUFBQWJBQUFBSkM4dDltaGNISmxjQUFBRU9BQUFBQjZBQUFBaHVWQks3eDRuR05nWkdCZzRHS1FZOUJoWUhSeDh3bGg0R0JnWVlBQWtBeGpUbVo2SWxBTXlnUEtzWUJwRGlCbWc0Z0NBSW9qQTA4QWVKeGpZR1NleFRpQmdaV0JnYW1LYVE4REEwTVBoR1o4d0dESXlBUVVaV0JsWnNBS0F0SmNVeGdjWGpDODRHUU8rcC9GRU1VY3hEQWRLTXdJa2dNQThjZ0wwUUI0bk8yUjBRM0NRQXhEMzlGUTZLbWo4TWxBZkRFTG8yYUwxa2s5QnBHZXBWaTUrN0NCTzdDSWx3Z1lYd1kxSDdtai9ZWFpmdkR1bXlnL3QrT1FVcW85V20rNkRmMjQ4dURKMXU5Vy9yTzMvcnpOeXUyaWt6UktqelRWU0pyS05rMjFsVVlwazBaNWswYkprMFlkcUtrTDVnbDNYeHROQUFCNG5HTmdRQU1TRU1nYzlEOFRoQUVTWmdQYkFIaWNyVlpwZDlOR0ZCMTVTWnlFTENVTExXcGh4TVJwc0VZbWJNR0FDVUd5WXlCZG5LMlZvSXNVTyttKzhZbmY0Ri96Wk5wejZEZCtXdThiTHlTUXRPZHdtcE9qZCtmTjFjemJaUkpha3RnTDY1R1VteS9GMU5ZbWpldzhDZW1HVGN0UmZDZzdleUZsaXNuZkJWRVFyWmJhdHgySFJFUWlVTFd1c0VRUSt4NVptbVI4NkZGR3k3YWtWMDNLTFQzcExsdmpRYjFWMzM0YU9zcXhPNkdrWmpOMGFEMnlKVlVZVmFKSXBqMVMwcVpscVBvclNTdTh2OExNVjgxUXdvaE9JbW04R2NiUVNONGJaN1RLYURXMjR5aUtiTExjS0ZJa211RkJGSG1VMVJMbjVJb0pETW9IelpEeXlxY1I1Y1A4aUt6WW81eFdzRXUyMC95K0wzbW5kemsvc1Y5dlViYmtRQi9JanV6ZzdIUWxYNFJiVzJIY3RKUHRLRlFSZHRkM1Ftelo3RlQvWm8veW1rWUR0eXN5dmRDTVlLbDhoUkFyUDZITS9pRlpMWnhQK1pKSG8xcXlrUk5CNjJWTzdFcytnZGJqaUNseHpSaFowTjNSQ1JIVS9aSXpEUGFZUGg3ODhkNHBsZ3NUQW5nY3kzcEhKWndJRXlsaGN6UkoyakJ5WUNWbGl5cXA5YTZZT09WMVdzUmJ3bjd0MnRHWHptampVSGRpUEZzUEhWczVVY254YUZLbm1VeWQya25Ob3lrTm9wUjBKbmpNcndNb1A2SkpYbTFqTlltVlI5TTRac2FFUkNJQ0xkeExVMEVzTzdHa0tRVE5veG05dVJ1bXVYWXRXcVRKQS9YY28vZjA1bGE0dWROVDJnNzBzMFovVnFkaU90Z0wwK2xwNUMveGFkcmxJa1hwK3VrWmZremlRZFlDTXBFdE5zT1Vnd2R2L1E3U3k5ZVdISVhYQnRqdTdmTXJxSDNXUlBDa0Fmc2IwQjVQMVNrSlRJV1lWWWhXUUdLdGExbVd5ZFdzRnFuSTFIZERtbGErck5NRWluSWNGOGUrakhIOVh6TXpscGdTdnQrSjA3TWpMajF6N1VzSTB4eDhtM1U5bXRlcHhYSUJjV1o1VHFkWmx1L3JOTWZ5QTUzbVdaN1g2UWhMVzZlakxEL1VhWUhsUnpvZFkzbEJDNXAwMzhHUWl6RGtBZzZRTUlTbEEwTllYb0loTEJVTVlia0lRMWdXWVFqTEpSakM4bU1Zd25JWmhyQzhyR1hWMUZOSjQ5cVpXQVpzUW1CaWpoNjV6RVhsYWlxNVZFSzdhRlJxUTU0U2JwVlVGTStxZjJXZ1hqenloam13RmtpWHlKcGZNYzZWajBibCtOWVZMVzhhTzFmQXNlcHZINDcyT2ZGUzFvdUZQd1gvMWRaVUpiMWl6Y09UcS9BYmhwNXNKNm8ycVhoMFRaZlBWVDI2L2w5VVZGZ0w5QnRJaFZnb3lySnNjR2NpaEk4Nm5ZWnFvSlZEekd6TVBMVHJkY3VhbjhQOU56RkNGbEQ5K0RjVUdndmNnMDVaU1ZudDRLelYxOXV5M0R1RGNqZ1RMRWt4Ti9QNlZ2Z2lJN1BTZnBGWnlwNlBmQjV3Qll4S1pkaHFBNjBWdk5rbk1RK1ozaVRQQkhGYlVUWkkydGpPQklrTkhQT0FlZk9kQkNaaDZxb041RTdoaGczNEJXRnV3WGtuWEtKNm95eUg3a1hzOHlpay9GdW40a1QycUdpTXdMUFpHMkd2NzBMS2IzRU1KRFQ1cFg0TVZCV2hxUmcxRmRBMFVtNm9CbC9HMmJwdFFzWU85Q01xZHNPeXJPTER4eGIzbFpKdEdZUjhwSWpWbzZPZjFsNmlUcXJjZm1ZVWwrK2R2Z1hCSURVeGYzdmZkSEdReXJ0YXlUSkhiUU5UdHhxVlU5ZWFRK05WaCtybVVmVzk0K3dUT1d1YWJyb25IbnBmMDZyYndjVmNMTEQyYlE3U1VpWVgxUFZoaFEyaXk4V2xVT3BsTkVudnVBY1lGaGpRNzFDS2pmK3IrdGg4bml0VmhkRnhKTjlPMUxmUjUyQU0vQS9ZZjBmMUE5RDNZK2h5RFM3UDk1b1RuMjcwNFd5WnJxSVg2NmZvTnpCcnJibFp1Z2JjMEhRRDRpRkhyWTY0eWcxOHB3WnhlcVM1SE9raDRHUGRGZUlCd0NhQXhlQVQzYldNNWxNQW8vbU1PVDdBNTh4aDBHUU9neTNtTU5obXpockFEbk1ZN0RLSHdSNXpHSHpCbkhXQUw1bkRJR1FPZzRnNURKNHdKd0I0eWh3R1h6R0h3ZGZNWWZBTmMrNERmTXNjQmpGekdDVE1ZYkN2NmRZd3pDMWUwRjJndGtGVm9BTlRUMWpjdytKUVUyWEkvbzRYaHYyOVFjeit3U0NtL3FqcDlwRDZFeThNOVdlRG1QcUxRVXo5VmRPZElmVTNYaGpxN3dZeDlRK0RtUHBNdnhqTFpRYS9qSHlYQ2dlVVhXdys1KytKOXcvYnhVQzVBQUVBQWYvL0FBOTRuS1ZWV1c4YjF4VSs1OTdaT0J5dW1vV3l5REUzY1d4U2tGeXVpcXhTbEJmUWt1a0Z0cERRU2FUUWpxeTJrRzNKRGVDZzZQYWd3TFhSSmdLeUZLaGJCQWlzeHdhdCt0S1hBSDFvbjdvQWJYNUNId0laUlpHblByU0l4ajJYWWhVN2licWdRODY5NTd2bnpNeTU1enZuWEFnQVBQNDczK0ZCaU1CaG1JQVp1QUF2d1JwOEZ6YmhRcXNUQ3pFMWFqQ0ZxMG92RW1BOHJER0duUFdDTWtNQVhCQXpRbGVYR0NCMDN2aiszWTN2ZlBQT0s3ZFdWMTVlZXVIWnkrZlAxZ1pYSlM2blNxT1dxYWk1Yk1HclZldE9wV3pIQ0hzRDNDQ01uOUVMWE1JOWZCejM4QmZaZnhuL3ZiM1FDL3VoZ1Y3Z3Z0NU4yNzl3WEtUUlRqOGg0dlY5NExqK1R3N1M0TXFuRHo1aDliVGlpWmMvdUdFVHRHN1FhMXhVVnNYa3JBb0wvdzlQYUZoK1ZkaUx3Zi85LzJxRTJ2NDZBQ2hmeU8xMDY1a2dxanIyT1EwZzE3RFBxSXg5UW1raVBpVVVkSDZHUXVPL3BUQXowR2NPb0dTZ2IyVDJLTWtOY0NWek1DWHN0Mmw3OTFFZk1jZHhkeHNINi9BcDlQOEYvZWw0VW9BZTMrTlgyRjhoQmZsV0JoaG5hN1NJNjhBQitBSndEbDBTb0ZOdzdKd2tKMHJZMzUxam14RlVzaDRXcWcyc2x3K2p3TFJYZmlXZjhsL2RzcXlpZGR6eTN6Wk52R0ZOMlVYTDJzTDdxVHd1dGQzaWxqbHRsZ1lLWEJXV1UvYldFZGozcFVhK3VIMWZPT05yWW5VZHFDRFpBbENaZG9HWTdkaWpCYlB2aTZtU0V4UGt4QXhtQmpXVDhRU3FseDIwZWMzMDM3R25yS0p0UC9SZlRlWHpLYnovMExhTC9RK2JPT1dhd3NPaU5XMDlMTHJrR1c1WjB3UXQveDJ6Nzh2M0tNOXFNQVJlSzY5VEJtRTdnSEE2U002Y0lxOFFGb1RMWFJHc1RyN0FaTHRrVlp0eXBSYkFXRFlzSHp0enAvZjJ4WlA0aXYvNnlyVUg4OWZLWTkvWS9QT2JLK1ZEMHQvOEgvaXZvOEhpMlZQWGZ0ai96dGY0RHZzMUZDRFpHaDZodDJFN2hIQkt2SmQyRHl2NWJJN0pGdTAxakxtc3A2ajBvOVFxMUF1MHl4bHNzaGtjUjYvYVpKV3lpM3puN2tmM3ZPS3R0MGJ5ZXBnemlYRkRDcG1xR1ZVajNXVzgrTm9IeS9jK3VvdExWN2Q2MHRXQ0pxR2hJOU1rSHBIRHRwWk1EaFhMYnk3TXZkYWI3RzBKOWg5djgrZjVKZENnQ2JmZ1hHdCticmJCdVl4dGtDbEpaSDRUZEFDbVE0OHNtS3l4SlhwR2xiamFBd2tVU1htUk5oTG9RaUJnNE56TjFaWGwwVW96V2YvU1lhc1VwSkpyVk1kUk1lMG1ZclhnNWFwMWo2WXdVNVVJaGhuZDZPVml0QjNKc2FtK2FsV3ZpVld2WGlPYkpqWk0xYmIyN2tFVkZzUllpNGxhckRmcWpTWnIxRVVveUlCcWQ5Tk8ydlJuRzJQSjM5UXgyd2lIVFNma2hvTGhoRzRicGg2UHEzWTRhU1RabmJtVHF5eHE2aWs5RUUrMFIyUUxNNzN6WitwZlBUMXJ2SmNxRmxNL01wOUpKME9HbmJDVEUvTkhScTVOUGJzY01WbmlVSUtaZURGVnhQVFgwNDBxUms3TUowS0ZXRGlhRGd6cEJ2by9ab3FpS2V6b1lpUWFLQjZKSjcxUVhzT3lWVDRhTjBzRnc1Z3NuWC8ra09NVVUzamRMWWJtaW03NFJNZTI4dWRuSzVNaXR5aU9nb056N0RGMVBST0dJUTkzVzFUQlRFN1pZWW8wRzZZQ0FTNmFtOVErKy9QNHhXN0xJMjdrdGIwaUp0VmFQMDlmVmhBbENTL1JoTkp6SUtGMGRxUlYrTHdsckgzZThFb3JEcEJKSjV4b0pLQ1JHNHFwVWk0NkRVKzFLaFpXYzFrcVFNdXNsS2tKZUE3bWFraHR3R3YwRzhMdnlodVZNL2lTSVV2K242U1FMT0VFZDNmOFl6djhuTG00czJnZXR6ZUlvWTNLZEpzcGh1Ui9LTkdJNDlMdEhYL2lFVDVJV1l1UFhyU3NEUnNHUFgrYngvZDcvbkU0Q1YrQjVkYlY1MDR6UlR1YUdZNEZVS0hHMEpZNUkwRkJ1Q2t4QnFvQzZpcUVJYUNGQTcxSWlHbUd6aFRVbENWUWcwRjFBVlExMklXZ0d1eGNYNzY2OU1LVnk1Y3VkT2Jhc3pObTNpeUlLeGVsUk1YWVhwYnQ1VmZaZHY0REhvcGxZcWFMMVBZcHR5c2VKYmRDQVJNMnNjR2hFTXY5NjdCdVVEWlRpaDVHY2NhNHVwYlg5UDZ3K2FuNGhxN3VpYXAreGpjMGplRWZtYWI1OS84eElzbmJpb1IvMGJWNmRkUS9ObHJGbXJEN3FSY1lvK05qVFBQZTEzVDhwZjhyc1lpellqeEE5cGRaYlBkaktnWGRaTmRuNmFTVUw5TVhkejhlUDNWaW5BMzFuVmkwa3VpYWkzcWZoM2Y1SmsrSlNvY2dSQ2tuWFpodnRVVVg0d2lpQTFCam9FNGdnNlRJMHBKdWFGeFJWV1doTHlocU54aWdJbGM3OFppYlNvN1lWbXc0UGh5THg4UVZEY25KRW1acW1mMjdXamF6bzJVN2pPT3M3Z2pBTnovWjROLzJ0M2MvWk9ONFFjaWZiS3l2WThMT012ZFltdVUvV0Y5bjc2LzcyK3YrejliOGIwM2V2cDBkeTJOMlBOMll2QTMvQkxrMHB0d0FBSGljWTJCa1lHQUE0Z2MzRXFiSDg5dDhaZUJtZmdFVVlianN1MGtHUWYvUFpIN0JIQVRrY2pBd2dVUUJZVzRMMVhpY1kyQmtZR0FPK3A4RkpGOHdNUHovRHlTQklpaUFHd0NIMUFXZ0FBQUFlSnhqZnNIQXdBekRrVkNNemhjRTRnVU1EQUN5NXdhL0FBQUFBQUR1QVpZQjNBSWlBbFlDb2dOa0ErZ0VyQVVLQUFFQUFBQUxBSkFBQ1FBQUFBQUFBZ0FrQURRQWN3QUFBSFVMY0FBQUFBQjRuSFdReTA3Q1FCU0cvNUdMQ29rYVRkdzZLd014bGtzaUN4SVNFZ3hzZEVNTVcxTkthVXRLaDB3SEVsN0RkL0JoZkFtZnhaOTJNQVppbStsODU1c3paMDRId0RXK0laQS9UeHc1QzV3eHl2a0VwK2haTHRBL1d5NlNYeXlYVU1XYjVUTDl1K1VLSGhCWXJ1SUdINndnaXVlTUZ2aTBMSEFsTGkyZjRFTGNXUzdRUDFvdWtudVdTN2dWcjViTDlKN2xDaVlpdFZ6RnZmZ2FxTlZXUjBGb1pHMVFsKzFtcXlPblc2bW9vc1NOcGJzMm9kS3A3TXU1U293Zng4cngxSExQWXo5WXg2N2VoL3Q1NHVzMFVvbHNPYzI5R3ZtSnIxM2p6M2JWMDAzUU5tWXU1MW90NWRCbXlKVldDOTh6VG1qTXF0dG8vRDBQQXlpc3NJVkd4S3NLWVNCUm82MXpicU9KRmpxa0tUTWtNL09zQ0FsY3hEUXUxdHdSWmlzcDR6N0huRkZDNnpNakpqdncrRjBlK1RFcDRQNllWZlRSNm1FOEllM09pREl2MlpmRDdnNnpScVFreTNRek8vdnRQY1dHcDdWcERYZnR1dFJaVnhMRGd4cVM5N0ZiVzlCNDlFNTJLNGEyaXdiZmYvN3ZCK05waEU4QWVKeHR4a0VPZ3lBUUJkRDV0SXBJcjhLaGtJd09DVmdDNDZLM2I5SnVmYXRIaHY1V3V1ZGg4TUFURTJaWUxIQlk0ZkVpbzJKVlFzbERsOEs3aGkwZnJ1ZERmcHVHeE00MnZXdmxVNTNLVmJjUnJqWTNQbE11WG5zY0VyZzIvZmpZTmFmQ0lSWWwrZ0pmcEI3WmVKeGo4TjdCY0NJb1lpTWpZMS9rQnNhZEhBd2NETWtGR3hsWW5UWXhNREpvZ1JpYnVaZ1lPU0FzUGdZd2k4MXBGOU1Cb0RRbmtNM3V0SXZCQWNKbVpuRFpxTUxZRVJpeHdhRWpZaU56aXN0R05SQnZGMGNEQXlPTFEwZHlTQVJJU1NRUWJPWmhZdVRSMnNINHYzVURTKzlHSmdZWEFBeDJJL1FBQUE9PSlcbiAgICBmb3JtYXQoJ3dvZmYnKTtcbn1cblxuLmRlbW8taWNvbiB7XG4gIC1tb3otb3N4LWZvbnQtc21vb3RoaW5nOiBncmF5c2NhbGU7XG4gIC13ZWJraXQtZm9udC1zbW9vdGhpbmc6IGFudGlhbGlhc2VkO1xuICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gIGZvbnQtZmFtaWx5OiAnc3ByZWFkdmlldy1kZW1vLWljb24nO1xuICBmb250LXN0eWxlOiBub3JtYWw7XG4gIGZvbnQtdmFyaWFudDogbm9ybWFsO1xuICB0ZXh0LWFsaWduOiBjZW50ZXI7XG4gIHRleHQtdHJhbnNmb3JtOiBub25lO1xufVxuXG4uaWNvbi1sZWZ0LWJpZzpiZWZvcmUge1xuICBjb250ZW50OiAnXFxlODAyJztcbn1cblxuLmljb24tcmlnaHQtYmlnOmJlZm9yZSB7XG4gIGNvbnRlbnQ6ICdcXGU4MDMnO1xufVxuXG4ubWFpbi1jb250YWluZXIge1xuICBkaXNwbGF5OiBmbGV4O1xuICBmbGV4LWRpcmVjdGlvbjogY29sdW1uO1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiAxMDAlO1xufVxuXG4uYnV0dG9uLWNvbnRhaW5lciB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogc3BhY2UtYmV0d2VlbjtcbiAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgZmxleC1ncm93OiAwO1xuICBmbGV4LXNocmluazogMDtcbiAgcGFkZGluZzogNXB4O1xuXG4gIC5idG4ge1xuICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgYWxpZ24taXRlbXM6IGNlbnRlcjtcbiAgICBqdXN0aWZ5LWNvbnRlbnQ6IGNlbnRlcjtcbiAgICBoZWlnaHQ6IDMycHg7XG4gIH1cbn1cblxuLmdyaWQge1xuICB3aWR0aDogMTAwJTtcbiAgaGVpZ2h0OiBjYWxjKDEwMCUgLSAzMnB4KTtcbiAgbWluLWhlaWdodDogNjA1cHg7XG4gIGZsZXgtZ3JvdzogMTtcbiAgZmxleC1zaHJpbms6IDE7XG59XG5cbi5mbGV4MCB7XG4gIGZsZXgtZ3JvdzogMDtcbiAgZmxleC1zaHJpbms6IDA7XG59XG5cbi5mbGV4MSB7XG4gIGZsZXgtZ3JvdzogMTtcbiAgZmxleC1zaHJpbms6IDE7XG59XG5cbiN0aXRsZSB7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xuICB3aWR0aDogMTAwJTtcbiAgZm9udC1mYW1pbHk6IEhlbHZldGljYSwgc2Fucy1zZXJpZjtcbiAgZm9udC1zaXplOiAxNnB4O1xuICBjb2xvcjogIzMzMztcbn1cblxuLmNhbGVuZGFyLWdyb3VwaW5nIHtcbiAgLmRheS1ldmVudCxcbiAgLm1vbnRoLWV2ZW50IHtcbiAgICBmb250LWZhbWlseTogSGVsdmV0aWNhLCBzYW5zLXNlcmlmO1xuICAgIGZvbnQtc2l6ZTogMTBweDtcbiAgICBib3gtc2l6aW5nOiBib3JkZXItYm94O1xuICAgIGN1cnNvcjogcG9pbnRlcjtcbiAgfVxuXG4gIC5kYXktZXZlbnQge1xuICAgIG1hcmdpbjogMnB4O1xuICAgIHBhZGRpbmc6IDhweDtcbiAgICBkaXNwbGF5OiBmbGV4O1xuICAgIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuICAgIHRleHQtb3ZlcmZsb3c6IGVsbGlwc2lzO1xuICAgIG1pbi13aWR0aDogMDtcblxuICAgIC5ldmVudC1jb250ZW50IHtcbiAgICAgIHdpZHRoOiAxMDAlO1xuICAgICAgb3ZlcmZsb3c6IGhpZGRlbjtcbiAgICAgIHdoaXRlLXNwYWNlOiBub3dyYXA7XG4gICAgICB0ZXh0LW92ZXJmbG93OiBlbGxpcHNpcztcbiAgICB9XG4gIH1cblxuICAuZXZlbnQtY29udGFpbmVyIHtcbiAgICBwYWRkaW5nOiAwIDVweDtcblxuICAgIC5ldmVudC10aXRsZSB7XG4gICAgICBvdmVyZmxvdzogaGlkZGVuO1xuICAgICAgdGV4dC1vdmVyZmxvdzogZWxsaXBzaXM7XG4gICAgICB3aGl0ZS1zcGFjZTogbm93cmFwO1xuXG4gICAgICAudGltZSB7XG4gICAgICAgIGNvbG9yOiB3aGl0ZTtcbiAgICAgICAgYmFja2dyb3VuZC1jb2xvcjogJGhlYWRlci1jb2xvci1kYXJrO1xuICAgICAgICBib3JkZXItcmFkaXVzOiA1cHg7XG4gICAgICAgIHBhZGRpbmc6IDFweCA0cHg7XG4gICAgICB9XG5cbiAgICAgIC50b3BpYyB7XG4gICAgICAgIHBhZGRpbmctbGVmdDogNXB4O1xuICAgICAgfVxuICAgIH1cbiAgfVxuXG4gIC5wb3BvdmVyLWRpYWxvZyB7XG4gICAgZm9udC1mYW1pbHk6IEhlbHZldGljYSwgc2Fucy1zZXJpZjtcbiAgICBmb250LXNpemU6IDEwcHg7XG4gIH1cbn1cblxuLmdjLWVkaXRpbmctY2xvc2Uge1xuICBjb2xvcjogJGhlYWRlci1jb2xvci1kYXJrO1xuXG4gICY6aG92ZXIge1xuICAgIGNvbG9yOiBsaWdodGVuKCRoZWFkZXItY29sb3ItZGFyaywgMTAlKTtcbiAgfVxufVxuXG4uZWRpdEV2ZW50RGlhbG9nIHtcbiAgYmFja2dyb3VuZC1jb2xvcjogI2ZmZjtcbiAgYm9yZGVyLXJhZGl1czogNHB4O1xuICBib3gtc2hhZG93OiAwIDAgMnB4IHJnYmEoMCwgMCwgMCwgMC4xMiksIDAgMnB4IDRweCByZ2JhKDAsIDAsIDAsIDAuMjQpO1xuICBwb3NpdGlvbjogYWJzb2x1dGU7XG4gIHdpZHRoOiA0ODBweDtcblxuICAuZWRpdEV2ZW50QmFja2dyb3VuZCB7XG4gICAgYm9yZGVyLWJvdHRvbTogc29saWQgMXB4ICNmMWYxZjE7XG4gICAgb3ZlcmZsb3c6IGhpZGRlbjtcblxuICAgIC5lZGl0RXZlbnRIZWFkZXJJbm5lciB7XG4gICAgICBmb250LWZhbWlseTogaGVsdmV0aWNhLCBhcmlhbCwgdmVyZGFuYSwgc2Fucy1zZXJpZjtcbiAgICAgIGZvbnQtc2l6ZTogMTVweDtcbiAgICAgIGZvbnQtd2VpZ2h0OiAzMDA7XG4gICAgICBtYXJnaW46IDEwcHg7XG5cbiAgICAgIC5oZWFkZXIge1xuICAgICAgICBkaXNwbGF5OiBpbmxpbmUtYmxvY2s7XG4gICAgICB9XG4gICAgfVxuXG4gICAgLmVkaXRFdmVudEJ0bklubmVyIHtcbiAgICAgIG1hcmdpbjogMWVtIDAuNGVtO1xuICAgIH1cblxuICAgIC5idG4tZ3JvdXAge1xuICAgICAgLmVkaXRCdG4ge1xuICAgICAgICBiYWNrZ3JvdW5kLWNvbG9yOiAkaGVhZGVyLWNvbG9yLWRhcms7XG4gICAgICAgIGJvcmRlcjogMDtcbiAgICAgICAgYm9yZGVyLXJhZGl1czogMnB4O1xuICAgICAgICBjb2xvcjogI2ZmZjtcbiAgICAgICAgbWFyZ2luLXJpZ2h0OiAwLjRlbTtcbiAgICAgICAgcGFkZGluZzogNXB4O1xuXG4gICAgICAgICY6aG92ZXIge1xuICAgICAgICAgIGJhY2tncm91bmQ6IGxpZ2h0ZW4oJGhlYWRlci1jb2xvci1kYXJrLCAxMCUpO1xuICAgICAgICB9XG4gICAgICB9XG4gICAgfVxuICB9XG5cbiAgLmVkaXRFdmVudENvbnRlbnQge1xuICAgIG1hcmdpbjogMWVtO1xuXG4gICAgLmNvbnRlbnRJdGVtIHtcbiAgICAgIGRpc3BsYXk6IGZsZXg7XG4gICAgICBhbGlnbi1pdGVtczogY2VudGVyO1xuICAgICAganVzdGlmeS1jb250ZW50OiBzdHJldGNoO1xuICAgICAgbWFyZ2luOiAxZW0gMDtcblxuICAgICAgbGFiZWwge1xuICAgICAgICBtYXJnaW46IDAgMWVtO1xuICAgICAgfVxuXG4gICAgICAudGl0bGUge1xuICAgICAgICBjb2xvcjogcmdiKDEwMiwgMTAyLCAxMDIpO1xuICAgICAgICBmb250LXdlaWdodDogaW5oZXJpdDtcbiAgICAgICAgZmxleC1ncm93OiAwO1xuICAgICAgICBmbGV4LXNocmluazogMDtcblxuICAgICAgICAmLmZpeGVkIHtcbiAgICAgICAgICB3aWR0aDogNjBweDtcbiAgICAgICAgfVxuICAgICAgfVxuXG4gICAgICAuaW5wdXQtY29udGFpbmVyIHtcbiAgICAgICAgZmxleC1ncm93OiAxO1xuICAgICAgICBmbGV4LXNocmluazogMDtcblxuICAgICAgICBpbnB1dCB7XG4gICAgICAgICAgd2lkdGg6IDEwMCU7XG4gICAgICAgIH1cbiAgICAgIH1cbiAgICB9XG4gIH1cbn1cblxuQG1lZGlhIG9ubHkgc2NyZWVuIGFuZCAobWF4LXdpZHRoOiA3NjhweCkge1xuICAuZWRpdEV2ZW50RGlhbG9nIHtcbiAgICB3aWR0aDogMzUwcHg7XG4gIH1cbn1cblxuLmJhY2tkcm9wIHtcbiAgcG9zaXRpb246IGZpeGVkO1xuICB0b3A6IDA7XG4gIGxlZnQ6IDA7XG4gIGhlaWdodDogMTAwJTtcbiAgd2lkdGg6IDEwMCU7XG4gIHotaW5kZXg6IDA7XG4gIGJhY2tncm91bmQtY29sb3I6IHJnYmEoMjU1LCAyNTUsIDI1NSwgMC4xNSk7XG4gIGRpc3BsYXk6IGZsZXg7XG4gIGFsaWduLWl0ZW1zOiBjZW50ZXI7XG4gIGp1c3RpZnktY29udGVudDogY2VudGVyO1xufVxuIl19 */