diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..dfe0770
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,2 @@
+# Auto detect text files and perform LF normalization
+* text=auto
diff --git a/README.md b/README.md
index 4c0bd7f..602116d 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,2 @@
-# FLO_Messenger
-
-Messenger App based of FLO blockchain and Cloud API
+# messenger
+
diff --git a/assets/add contact illustration.svg b/assets/add contact illustration.svg
new file mode 100644
index 0000000..322fbd8
--- /dev/null
+++ b/assets/add contact illustration.svg
@@ -0,0 +1,5 @@
+
diff --git a/assets/components.js b/assets/components.js
new file mode 100644
index 0000000..3b1da31
--- /dev/null
+++ b/assets/components.js
@@ -0,0 +1,3589 @@
+//Button
+const smButton = document.createElement('template')
+smButton.innerHTML = `
+
+
+
+
+
/
+
+
+
+`;
+
+customElements.define('sm-audio', class extends HTMLElement {
+ constructor() {
+ super();
+ this.attachShadow({ mode: 'open' }).append(smAudio.content.cloneNode(true))
+
+ this.playing = false;
+ }
+ static get observedAttributes() {
+ return ['src']
+ }
+ play() {
+ this.audio.play()
+ this.playing = false;
+ this.pauseBtn.classList.remove('hide')
+ this.playBtn.classList.add('hide')
+ }
+ pause() {
+ this.audio.pause()
+ this.playing = true;
+ this.pauseBtn.classList.add('hide')
+ this.playBtn.classList.remove('hide')
+ }
+
+ get isPlaying() {
+ return this.playing;
+ }
+
+ connectedCallback() {
+ this.playBtn = this.shadowRoot.querySelector('.play');
+ this.pauseBtn = this.shadowRoot.querySelector('.pause');
+ this.audio = this.shadowRoot.querySelector('audio')
+ this.playBtn.addEventListener('click', e => {
+ this.play()
+ })
+ this.pauseBtn.addEventListener('click', e => {
+ this.pause()
+ })
+ this.audio.addEventListener('ended', e => {
+ this.pause()
+ })
+ let width;
+ if ('ResizeObserver' in window) {
+ let resizeObserver = new ResizeObserver(entries => {
+ entries.forEach(entry => {
+ width = entry.contentRect.width;
+ })
+ })
+ resizeObserver.observe(this)
+ }
+ else {
+ let observer = new IntersectionObserver((entries, observer) => {
+ if (entries[0].isIntersecting)
+ width = this.shadowRoot.querySelector('.audio').offsetWidth;
+ }, {
+ threshold: 1
+ })
+ observer.observe(this)
+ }
+ this.audio.addEventListener('timeupdate', e => {
+ let time = this.audio.currentTime,
+ minutes = Math.floor(time / 60),
+ seconds = Math.floor(time - minutes * 60),
+ y = seconds < 10 ? "0" + seconds : seconds;
+ this.shadowRoot.querySelector('.current-time').textContent = `${minutes}:${y}`
+ this.shadowRoot.querySelector('.track').style.width = (width / this.audio.duration) * this.audio.currentTime + 'px'
+ })
+ }
+
+ attributeChangedCallback(name, oldValue, newValue) {
+ if (oldValue !== newValue) {
+ if (name === 'src') {
+ if (this.hasAttribute('src') && newValue.trim() !== '') {
+ this.shadowRoot.querySelector('audio').src = newValue;
+ this.shadowRoot.querySelector('audio').onloadedmetadata = () => {
+ let duration = this.audio.duration,
+ minutes = Math.floor(duration / 60),
+ seconds = Math.floor(duration - minutes * 60),
+ y = seconds < 10 ? "0" + seconds : seconds;
+ this.shadowRoot.querySelector('.duration').textContent = `${minutes}:${y}`;
+ }
+ }
+ else
+ this.classList.add('disabled')
+ }
+ }
+ }
+})
+
+//switch
+
+const smSwitch = document.createElement('template')
+smSwitch.innerHTML = `
+
+
`
+
+customElements.define('sm-switch', class extends HTMLElement {
+ constructor() {
+ super()
+ this.attachShadow({ mode: 'open' }).append(smSwitch.content.cloneNode(true))
+ this.switch = this.shadowRoot.querySelector('.switch');
+ this.input = this.shadowRoot.querySelector('input')
+ this.isChecked = false
+ this.isDisabled = false
+ }
+
+ get disabled() {
+ return this.getAttribute('disabled')
+ }
+
+ set disabled(val) {
+ if (val) {
+ this.disabled = true
+ this.setAttribute('disabled', '')
+ this.switch.classList.add('disabled')
+ }
+ else {
+ this.disabled = false
+ this.removeAttribute('disabled')
+ this.switch.classList.remove('disabled')
+
+ }
+ }
+
+ get checked() {
+ return this.isChecked
+ }
+
+ set checked(value) {
+ if (value) {
+ this.setAttribute('checked', '')
+ this.isChecked = true
+ this.input.checked = true
+ }
+ else {
+ this.removeAttribute('checked')
+ this.isChecked = false
+ this.input.checked = false
+ }
+ }
+
+ dispatch = () => {
+ this.dispatchEvent(new CustomEvent('change', {
+ bubbles: true,
+ composed: true
+ }))
+ }
+
+ connectedCallback() {
+ if(this.hasAttribute('disabled'))
+ this.switch.classList.add('disabled')
+ this.addEventListener('keyup', e => {
+ if ((e.code === "Enter" || e.code === "Space") && !this.isDisabled) {
+ this.input.click()
+ }
+ })
+ this.input.addEventListener('click', e => {
+ if (this.input.checked)
+ this.checked = true
+ else
+ this.checked = false
+ this.dispatch()
+ })
+ }
+})
+
+// select
+const smSelect = document.createElement('template')
+smSelect.innerHTML = `
+
+
`;
+customElements.define('sm-select', class extends HTMLElement {
+ constructor() {
+ super()
+ this.attachShadow({ mode: 'open' }).append(smSelect.content.cloneNode(true))
+ }
+ static get observedAttributes() {
+ return ['value']
+ }
+ get value() {
+ return this.getAttribute('value')
+ }
+ set value(val) {
+ this.setAttribute('value', val)
+ }
+
+ collapse() {
+ this.optionList.animate(this.slideUp, this.animationOptions)
+ this.optionList.classList.add('hide')
+ this.chevron.classList.remove('rotate')
+ this.open = false
+ }
+ connectedCallback() {
+ this.availableOptions
+ this.optionList = this.shadowRoot.querySelector('.options')
+ this.chevron = this.shadowRoot.querySelector('.toggle')
+ let slot = this.shadowRoot.querySelector('.options slot'),
+ selection = this.shadowRoot.querySelector('.selection'),
+ previousOption
+ this.open = false;
+ this.slideDown = [
+ { transform: `translateY(-0.5rem)` },
+ { transform: `translateY(0)` }
+ ],
+ this.slideUp = [
+ { transform: `translateY(0)` },
+ { transform: `translateY(-0.5rem)` }
+ ],
+ this.animationOptions = {
+ duration: 300,
+ fill: "forwards",
+ easing: 'ease'
+ }
+ selection.addEventListener('click', e => {
+ if (!this.open) {
+ this.optionList.classList.remove('hide')
+ this.optionList.animate(this.slideDown, this.animationOptions)
+ this.chevron.classList.add('rotate')
+ this.open = true
+ } else {
+ this.collapse()
+ }
+ })
+ selection.addEventListener('keydown', e => {
+ if (e.code === 'ArrowDown' || e.code === 'ArrowRight') {
+ e.preventDefault()
+ this.availableOptions[0].focus()
+ }
+ if (e.code === 'Enter' || e.code === 'Space')
+ if (!this.open) {
+ this.optionList.classList.remove('hide')
+ this.optionList.animate(this.slideDown, this.animationOptions)
+ this.chevron.classList.add('rotate')
+ this.open = true
+ } else {
+ this.collapse()
+ }
+ })
+ this.optionList.addEventListener('keydown', e => {
+ if (e.code === 'ArrowUp' || e.code === 'ArrowRight') {
+ e.preventDefault()
+ if (document.activeElement.previousElementSibling) {
+ document.activeElement.previousElementSibling.focus()
+ }
+ }
+ if (e.code === 'ArrowDown' || e.code === 'ArrowLeft') {
+ e.preventDefault()
+ if (document.activeElement.nextElementSibling)
+ document.activeElement.nextElementSibling.focus()
+ }
+ })
+ this.addEventListener('optionSelected', e => {
+ if (previousOption !== e.target) {
+ this.setAttribute('value', e.detail.value)
+ this.shadowRoot.querySelector('.option-text').textContent = e.detail.text;
+ this.dispatchEvent(new CustomEvent('change', {
+ bubbles: true,
+ composed: true
+ }))
+ if (previousOption) {
+ previousOption.classList.remove('check-selected')
+ }
+ previousOption = e.target;
+ }
+ if (!e.detail.switching)
+ this.collapse()
+
+ e.target.classList.add('check-selected')
+ })
+ slot.addEventListener('slotchange', e => {
+ this.availableOptions = slot.assignedElements()
+ if (this.availableOptions[0]) {
+ let firstElement = this.availableOptions[0];
+ previousOption = firstElement;
+ firstElement.classList.add('check-selected')
+ this.setAttribute('value', firstElement.getAttribute('value'))
+ this.shadowRoot.querySelector('.option-text').textContent = firstElement.textContent
+ this.availableOptions.forEach((element, index) => {
+ element.setAttribute('data-rank', index + 1);
+ element.setAttribute('tabindex', "0");
+ })
+ }
+ });
+ document.addEventListener('mousedown', e => {
+ if (!this.contains(e.target) && this.open) {
+ this.collapse()
+ }
+ })
+ }
+})
+
+// option
+const smOption = document.createElement('template')
+smOption.innerHTML = `
+
+
`;
+customElements.define('sm-option', class extends HTMLElement {
+ constructor() {
+ super()
+ this.attachShadow({ mode: 'open' }).append(smOption.content.cloneNode(true))
+ }
+
+ sendDetails(switching) {
+ let optionSelected = new CustomEvent('optionSelected', {
+ bubbles: true,
+ composed: true,
+ detail: {
+ text: this.textContent,
+ value: this.getAttribute('value'),
+ switching: switching
+ }
+ })
+ this.dispatchEvent(optionSelected)
+ }
+
+ connectedCallback() {
+ let validKey = [
+ 'ArrowUp',
+ 'ArrowDown',
+ 'ArrowLeft',
+ 'ArrowRight'
+ ]
+ this.addEventListener('click', e => {
+ this.sendDetails()
+ })
+ this.addEventListener('keyup', e => {
+ if (e.code === 'Enter' || e.code === 'Space') {
+ e.preventDefault()
+ this.sendDetails(false)
+ }
+ if (validKey.includes(e.code)) {
+ e.preventDefault()
+ this.sendDetails(true)
+ }
+ })
+ if (this.hasAttribute('default')) {
+ setTimeout(() => {
+ this.sendDetails()
+ }, 0);
+ }
+ }
+})
+
+// select
+const smStripSelect = document.createElement('template')
+smStripSelect.innerHTML = `
+
+
+
+
+
+
+
+
+
+
`;
+customElements.define('sm-strip-select', class extends HTMLElement {
+ constructor() {
+ super()
+ this.attachShadow({ mode: 'open' }).append(smStripSelect.content.cloneNode(true))
+ }
+ static get observedAttributes() {
+ return ['value']
+ }
+ get value() {
+ return this.getAttribute('value')
+ }
+ set value(val) {
+ this.setAttribute('value', val)
+ }
+ scrollLeft() {
+ this.select.scrollBy({
+ top: 0,
+ left: -this.scrollDistance,
+ behavior: 'smooth'
+ })
+ }
+
+ scrollRight() {
+ this.select.scrollBy({
+ top: 0,
+ left: this.scrollDistance,
+ behavior: 'smooth'
+ })
+ }
+ connectedCallback() {
+ let previousOption,
+ slot = this.shadowRoot.querySelector('slot');
+ this.selectContainer = this.shadowRoot.querySelector('.select-container')
+ this.select = this.shadowRoot.querySelector('.select')
+ this.nextArrow = this.shadowRoot.querySelector('.next-item')
+ this.previousArrow = this.shadowRoot.querySelector('.previous-item')
+ this.nextGradient = this.shadowRoot.querySelector('.right')
+ this.previousGradient = this.shadowRoot.querySelector('.left')
+ this.selectOptions
+ this.scrollDistance = this.selectContainer.getBoundingClientRect().width
+ const firstElementObserver = new IntersectionObserver(entries => {
+ if (entries[0].isIntersecting) {
+ this.previousArrow.classList.add('hide')
+ this.previousGradient.classList.add('hide')
+ }
+ else {
+ this.previousArrow.classList.remove('hide')
+ this.previousGradient.classList.remove('hide')
+ }
+ }, {
+ root: this.selectContainer,
+ threshold: 0.95
+ })
+ const lastElementObserver = new IntersectionObserver(entries => {
+ if (entries[0].isIntersecting) {
+ this.nextArrow.classList.add('hide')
+ this.nextGradient.classList.add('hide')
+ }
+ else {
+ this.nextArrow.classList.remove('hide')
+ this.nextGradient.classList.remove('hide')
+ }
+ }, {
+ root: this.selectContainer,
+ threshold: 0.95
+ })
+
+ const selectObserver = new IntersectionObserver(entries => {
+ if (entries[0].isIntersecting) {
+ this.scrollDistance = this.selectContainer.getBoundingClientRect().width
+ }
+ })
+
+ selectObserver.observe(this.selectContainer)
+ this.addEventListener('optionSelected', e => {
+ if (previousOption === e.target) return;
+ if (previousOption)
+ previousOption.classList.remove('active')
+ e.target.classList.add('active')
+ e.target.scrollIntoView({ behavior: 'smooth', inline: 'center', block: 'nearest' })
+ this.setAttribute('value', e.detail.value)
+ this.dispatchEvent(new CustomEvent('change', {
+ bubbles: true,
+ composed: true
+ }))
+ previousOption = e.target;
+ })
+ slot.addEventListener('slotchange', e => {
+ this.selectOptions = slot.assignedElements()
+ firstElementObserver.observe(this.selectOptions[0])
+ lastElementObserver.observe(this.selectOptions[this.selectOptions.length - 1])
+ if (this.selectOptions[0]) {
+ let firstElement = this.selectOptions[0];
+ this.setAttribute('value', firstElement.getAttribute('value'))
+ firstElement.classList.add('active')
+ previousOption = firstElement;
+ }
+ });
+ this.nextArrow.addEventListener('click', this.scrollRight.bind(this))
+ this.previousArrow.addEventListener('click', this.scrollLeft.bind(this))
+ }
+
+ disconnectedCallback() {
+ this.nextArrow.removeEventListener('click', this.scrollRight.bind(this))
+ this.previousArrow.removeEventListener('click', this.scrollLeft.bind(this))
+ }
+})
+
+// option
+const smStripOption = document.createElement('template')
+smStripOption.innerHTML = `
+
+
+
+
`;
+customElements.define('sm-strip-option', class extends HTMLElement {
+ constructor() {
+ super()
+ this.attachShadow({ mode: 'open' }).append(smStripOption.content.cloneNode(true))
+ }
+ sendDetails() {
+ let optionSelected = new CustomEvent('optionSelected', {
+ bubbles: true,
+ composed: true,
+ detail: {
+ text: this.textContent,
+ value: this.getAttribute('value')
+ }
+ })
+ this.dispatchEvent(optionSelected)
+ }
+
+ connectedCallback() {
+ this.addEventListener('click', e => {
+ this.sendDetails()
+ })
+ this.addEventListener('keyup', e => {
+ if (e.code === 'Enter' || e.code === 'Space') {
+ e.preventDefault()
+ this.sendDetails(false)
+ }
+ })
+ if (this.hasAttribute('default')) {
+ setTimeout(() => {
+ this.sendDetails()
+ }, 0);
+ }
+ }
+})
+
+//popup
+const smPopup = document.createElement('template')
+smPopup.innerHTML = `
+
+
+`;
+customElements.define('sm-popup', class extends HTMLElement {
+ constructor() {
+ super()
+ this.attachShadow({ mode: 'open' }).append(smPopup.content.cloneNode(true))
+ }
+
+ resumeScrolling() {
+ const scrollY = document.body.style.top;
+ window.scrollTo(0, parseInt(scrollY || '0') * -1);
+ setTimeout(() => {
+ document.body.setAttribute('style', `overflow: auto; top: initial`)
+ }, 300);
+ }
+
+ show(pinned, popupStack) {
+ this.setAttribute('open', '')
+ this.pinned = pinned
+ this.popupStack = popupStack
+ this.popupContainer.classList.remove('hide')
+ if (window.innerWidth < 648)
+ this.popup.style.transform = 'translateY(0)';
+ else
+ this.popup.style.transform = 'scale(1)';
+ document.body.setAttribute('style', `overflow: hidden; top: -${window.scrollY}px`)
+ }
+ hide() {
+ this.removeAttribute('open')
+ if (window.innerWidth < 648)
+ this.popup.style.transform = 'translateY(100%)';
+ else
+ this.popup.style.transform = 'scale(0.9)';
+ this.popupContainer.classList.add('hide')
+ if (typeof this.popupStack !== 'undefined') {
+ this.popupStack.pop()
+ if (this.popupStack.items.length === 0) {
+ this.resumeScrolling()
+ }
+ }
+ else {
+ this.resumeScrolling()
+ }
+
+ if (this.inputFields.length) {
+ setTimeout(() => {
+ this.inputFields.forEach(field => {
+ if (field.type === 'radio' || field.tagName === 'SM-CHECKBOX')
+ field.checked = false
+ if (field.tagName === 'SM-INPUT' || field.tagName === 'TEXTAREA')
+ field.value = ''
+ })
+ }, 300);
+ }
+ }
+
+ handleTouchStart(e) {
+ this.touchStartY = e.changedTouches[0].clientY
+ this.popup.style.transition = 'initial'
+ this.touchStartTime = e.timeStamp
+ }
+
+ handleTouchMove(e) {
+ e.preventDefault()
+ if (this.touchStartY < e.changedTouches[0].clientY) {
+ this.offset = e.changedTouches[0].clientY - this.touchStartY;
+ this.touchEndAnimataion = window.requestAnimationFrame(() => this.movePopup())
+ }
+ /*else {
+ this.offset = this.touchStartY - e.changedTouches[0].clientY;
+ this.popup.style.transform = `translateY(-${this.offset}px)`
+ }*/
+ }
+
+ handleTouchEnd(e) {
+ this.touchEndTime = e.timeStamp
+ cancelAnimationFrame(this.touchEndAnimataion)
+ this.touchEndY = e.changedTouches[0].clientY
+ this.popup.style.transition = 'transform 0.3s'
+ if (this.touchEndTime - this.touchStartTime > 200) {
+ if (this.touchEndY - this.touchStartY > this.threshold) {
+ this.hide()
+ }
+ else {
+ this.show()
+ }
+ }
+ else {
+ if (this.touchEndY > this.touchStartY)
+ this.hide()
+ }
+ }
+
+ movePopup() {
+ this.popup.style.transform = `translateY(${this.offset}px)`
+ }
+
+ connectedCallback() {
+ this.pinned = false
+ this.popupStack
+ this.popupContainer = this.shadowRoot.querySelector('.popup-container')
+ this.popup = this.shadowRoot.querySelector('.popup')
+ this.popupBodySlot = this.shadowRoot.querySelector('.popup-body slot')
+ this.offset
+ this.popupHeader = this.shadowRoot.querySelector('.popup-top')
+ this.touchStartY = 0
+ this.touchEndY = 0
+ this.touchStartTime = 0
+ this.touchEndTime = 0
+ this.threshold = this.popup.getBoundingClientRect().height * 0.3
+ this.touchEndAnimataion;
+
+ if (this.hasAttribute('open'))
+ this.show()
+ this.popupContainer.addEventListener('mousedown', e => {
+ if (e.target === this.popupContainer && !this.pinned) {
+ this.hide()
+ }
+ })
+
+ this.popupBodySlot.addEventListener('slotchange', () => {
+ this.inputFields = this.popupBodySlot.assignedElements().filter(element => element.tagName === 'SM-INPUT' || element.tagName === 'SM-CHECKBOX' || element.tagName === 'TEXTAREA' || element.type === 'radio')
+ })
+
+ this.popupHeader.addEventListener('touchstart', (e) => {
+ this.handleTouchStart(e)
+ })
+ this.popupHeader.addEventListener('touchmove', (e) => {
+ this.handleTouchMove(e)
+ })
+ this.popupHeader.addEventListener('touchend', (e) => {
+ this.handleTouchEnd(e)
+ })
+ }
+ disconnectedCallback() {
+ this.popupHeader.removeEventListener('touchstart', this.handleTouchStart.bind(this))
+ this.popupHeader.removeEventListener('touchmove', this.handleTouchMove.bind(this))
+ this.popupHeader.removeEventListener('touchend', this.handleTouchEnd.bind(this))
+ }
+})
+
+//carousel
+
+const smCarousel = document.createElement('template')
+smCarousel.innerHTML = `
+
+
+
+
+
+
+
+
+
+
+`;
+
+customElements.define('sm-carousel', class extends HTMLElement {
+ constructor() {
+ super()
+ this.attachShadow({ mode: 'open' }).append(smCarousel.content.cloneNode(true))
+ }
+
+ scrollLeft() {
+ this.carousel.scrollBy({
+ top: 0,
+ left: -this.scrollDistance,
+ behavior: 'smooth'
+ })
+ }
+
+ scrollRight() {
+ this.carousel.scrollBy({
+ top: 0,
+ left: this.scrollDistance,
+ behavior: 'smooth'
+ })
+ }
+
+ connectedCallback() {
+ this.carousel = this.shadowRoot.querySelector('.carousel')
+ this.carouselContainer = this.shadowRoot.querySelector('.carousel-container')
+ this.carouselSlot = this.shadowRoot.querySelector('slot')
+ this.nextArrow = this.shadowRoot.querySelector('.next-item')
+ this.previousArrow = this.shadowRoot.querySelector('.previous-item')
+ this.nextGradient = this.shadowRoot.querySelector('.right')
+ this.previousGradient = this.shadowRoot.querySelector('.left')
+ this.carouselItems
+ this.scrollDistance = this.carouselContainer.getBoundingClientRect().width / 3
+ const firstElementObserver = new IntersectionObserver(entries => {
+ if (entries[0].isIntersecting) {
+ this.previousArrow.classList.remove('expand')
+ this.previousGradient.classList.add('hide')
+ }
+ else {
+ this.previousArrow.classList.add('expand')
+ this.previousGradient.classList.remove('hide')
+ }
+ }, {
+ root: this.carouselContainer,
+ threshold: 0.9
+ })
+ const lastElementObserver = new IntersectionObserver(entries => {
+ if (entries[0].isIntersecting) {
+ this.nextArrow.classList.remove('expand')
+ this.nextGradient.classList.add('hide')
+ }
+ else {
+ this.nextArrow.classList.add('expand')
+ this.nextGradient.classList.remove('hide')
+ }
+ }, {
+ root: this.carouselContainer,
+ threshold: 0.9
+ })
+
+ const carouselObserver = new IntersectionObserver(entries => {
+ if (entries[0].isIntersecting) {
+ this.scrollDistance = this.carouselContainer.getBoundingClientRect().width / 3
+ }
+ })
+
+ carouselObserver.observe(this.carouselContainer)
+
+ this.carouselSlot.addEventListener('slotchange', e => {
+ this.carouselItems = this.carouselSlot.assignedElements()
+ firstElementObserver.observe(this.carouselItems[0])
+ lastElementObserver.observe(this.carouselItems[this.carouselItems.length - 1])
+ })
+
+ this.addEventListener('keyup', e => {
+ if (e.code === 'ArrowLeft')
+ this.scrollRight()
+ else
+ this.scrollRight()
+ })
+
+ this.nextArrow.addEventListener('click', this.scrollRight.bind(this))
+ this.previousArrow.addEventListener('click', this.scrollLeft.bind(this))
+ }
+
+ disconnectedCallback() {
+ this.nextArrow.removeEventListener('click', this.scrollRight.bind(this))
+ this.previousArrow.removeEventListener('click', this.scrollLeft.bind(this))
+ }
+})
+
+//notifications
+
+const smNotifications = document.createElement('template')
+smNotifications.innerHTML = `
+
+
+
+`
+
+customElements.define('sm-notifications', class extends HTMLElement {
+ constructor() {
+ super()
+ this.shadow = this.attachShadow({ mode: 'open' }).append(smNotifications.content.cloneNode(true))
+ }
+
+ handleTouchStart(e) {
+ this.notification = e.target.closest('.notification')
+ this.touchStartX = e.changedTouches[0].clientX
+ this.notification.style.transition = 'initial'
+ this.touchStartTime = e.timeStamp
+ }
+
+ handleTouchMove(e) {
+ e.preventDefault()
+ if (this.touchStartX < e.changedTouches[0].clientX) {
+ this.offset = e.changedTouches[0].clientX - this.touchStartX;
+ this.touchEndAnimataion = requestAnimationFrame(this.movePopup)
+ }
+ else {
+ this.offset = -(this.touchStartX - e.changedTouches[0].clientX);
+ this.touchEndAnimataion = requestAnimationFrame(this.movePopup)
+ }
+ }
+
+ handleTouchEnd(e) {
+ this.notification.style.transition = 'transform 0.3s, opacity 0.3s'
+ this.touchEndTime = e.timeStamp
+ cancelAnimationFrame(this.touchEndAnimataion)
+ this.touchEndX = e.changedTouches[0].clientX
+ if (this.touchEndTime - this.touchStartTime > 200) {
+ if (this.touchEndX - this.touchStartX > this.threshold) {
+ this.removeNotification(this.notification)
+ }
+ else if (this.touchStartX - this.touchEndX > this.threshold) {
+ this.removeNotification(this.notification, true)
+ }
+ else {
+ this.resetPosition()
+ }
+ }
+ else {
+ if (this.touchEndX > this.touchStartX) {
+ this.removeNotification(this.notification)
+ }
+ else {
+ this.removeNotification(this.notification, true)
+ }
+ }
+ }
+
+ movePopup = () => {
+ this.notification.style.transform = `translateX(${this.offset}px)`
+ }
+
+ resetPosition() {
+ this.notification.style.transform = `translateX(0)`
+ }
+
+ push(messageBody, type, pinned) {
+ let notification = document.createElement('div'),
+ composition = ``
+ notification.classList.add('notification')
+ if (pinned)
+ notification.classList.add('pinned')
+ if (type === 'error') {
+ composition += `
+
`
+ }
+ else if (type === 'success') {
+ composition += `
+
+ `
+ }
+ composition += `
+
${messageBody}
+
`
+ notification.innerHTML = composition
+ this.notificationPanel.prepend(notification)
+ if (window.innerWidth > 640) {
+ notification.animate([
+ {
+ transform: `translateX(1rem)`,
+ opacity: '0'
+ },
+ {
+ transform: 'translateX(0)',
+ opacity: '1'
+ }
+ ], this.animationOptions).onfinish = () => {
+ notification.setAttribute('style', `transform: none;`);
+ }
+ }
+ else {
+ notification.setAttribute('style', `transform: translateY(0); opacity: 1`)
+ }
+ notification.addEventListener('touchstart', this.handleTouchStart.bind(this))
+ notification.addEventListener('touchmove', this.handleTouchMove.bind(this))
+ notification.addEventListener('touchend', this.handleTouchEnd.bind(this))
+ }
+
+ removeNotification(notification, toLeft) {
+ if (!this.offset)
+ this.offset = 0;
+
+ if (toLeft)
+ notification.animate([
+ {
+ transform: `translateX(${this.offset}px)`,
+ opacity: '1'
+ },
+ {
+ transform: `translateX(-100%)`,
+ opacity: '0'
+ }
+ ], this.animationOptions).onfinish = () => {
+ notification.remove()
+ }
+ else {
+ notification.animate([
+ {
+ transform: `translateX(${this.offset}px)`,
+ opacity: '1'
+ },
+ {
+ transform: `translateX(100%)`,
+ opacity: '0'
+ }
+ ], this.animationOptions).onfinish = () => {
+ notification.remove()
+ }
+ }
+ }
+
+ connectedCallback() {
+ this.notificationPanel = this.shadowRoot.querySelector('.notification-panel')
+ this.animationOptions = {
+ duration: 300,
+ fill: "forwards",
+ easing: "ease"
+ }
+ this.fontSize = Number(window.getComputedStyle(document.body).getPropertyValue('font-size').match(/\d+/)[0])
+ this.notification
+ this.offset
+ this.touchStartX = 0
+ this.touchEndX = 0
+ this.touchStartTime = 0
+ this.touchEndTime = 0
+ this.threshold = this.notificationPanel.getBoundingClientRect().width * 0.3
+ this.touchEndAnimataion;
+
+ this.notificationPanel.addEventListener('click', e => {
+ if (e.target.closest('.close')) (
+ this.removeNotification(e.target.closest('.notification'))
+ )
+ })
+
+ const observer = new MutationObserver(mutationList => {
+ mutationList.forEach(mutation => {
+ if (mutation.type === 'childList') {
+ if (mutation.addedNodes.length) {
+ if (!mutation.addedNodes[0].classList.contains('pinned'))
+ setTimeout(() => {
+ this.removeNotification(mutation.addedNodes[0])
+ }, 4000);
+ if (window.innerWidth > 640)
+ this.notificationPanel.style.padding = '1.5rem 0 3rem 1.5rem';
+ else
+ this.notificationPanel.style.padding = '1rem 1rem 2rem 1rem';
+ }
+ else if (mutation.removedNodes.length && !this.notificationPanel.children.length) {
+ this.notificationPanel.style.padding = 0;
+ }
+ }
+ })
+ })
+ observer.observe(this.notificationPanel, {
+ attributes: true,
+ childList: true,
+ subtree: true
+ })
+ }
+})
+
+
+// sm-menu
+const smMenu = document.createElement('template')
+smMenu.innerHTML = `
+
+
`;
+customElements.define('sm-menu', class extends HTMLElement {
+ constructor() {
+ super()
+ this.attachShadow({ mode: 'open' }).append(smMenu.content.cloneNode(true))
+ }
+ static get observedAttributes() {
+ return ['value']
+ }
+ get value() {
+ return this.getAttribute('value')
+ }
+ set value(val) {
+ this.setAttribute('value', val)
+ }
+ expand = () => {
+ if (!this.open) {
+ /*if (this.containerDimensions.left > this.containerDimensions.width) {
+ this.optionList.setAttribute('style', 'right: 0')
+ }
+ else {
+ this.optionList.setAttribute('style', 'left: 0')
+ }*/
+ this.optionList.classList.remove('hide')
+ this.optionList.classList.add('no-transformations')
+ this.open = true
+ this.icon.classList.add('focused')
+ }
+ }
+ collapse() {
+ if (this.open) {
+ this.open = false
+ this.icon.classList.remove('focused')
+ this.optionList.classList.add('hide')
+ this.optionList.classList.remove('no-transformations')
+ }
+ }
+ connectedCallback() {
+ this.availableOptions
+ this.containerDimensions
+ this.optionList = this.shadowRoot.querySelector('.options')
+ let slot = this.shadowRoot.querySelector('.options slot'),
+ menu = this.shadowRoot.querySelector('.menu')
+ this.icon = this.shadowRoot.querySelector('.icon')
+ this.open = false;
+ menu.addEventListener('click', e => {
+ if (!this.open) {
+ this.expand()
+ } else {
+ this.collapse()
+ }
+ })
+ menu.addEventListener('keydown', e => {
+ if (e.code === 'ArrowDown' || e.code === 'ArrowRight') {
+ e.preventDefault()
+ this.availableOptions[0].focus()
+ }
+ if (e.code === 'Enter' || e.code === 'Space') {
+ e.preventDefault()
+ if (!this.open) {
+ this.expand()
+ } else {
+ this.collapse()
+ }
+ }
+ })
+ this.optionList.addEventListener('keydown', e => {
+ if (e.code === 'ArrowUp' || e.code === 'ArrowRight') {
+ e.preventDefault()
+ if (document.activeElement.previousElementSibling) {
+ document.activeElement.previousElementSibling.focus()
+ }
+ }
+ if (e.code === 'ArrowDown' || e.code === 'ArrowLeft') {
+ e.preventDefault()
+ if (document.activeElement.nextElementSibling)
+ document.activeElement.nextElementSibling.focus()
+ }
+ })
+ this.optionList.addEventListener('click', e => {
+ this.collapse()
+ })
+ slot.addEventListener('slotchange', e => {
+ this.availableOptions = slot.assignedElements()
+ this.containerDimensions = this.optionList.getBoundingClientRect()
+ this.menuDimensions = menu.getBoundingClientRect()
+ /*if (this.containerDimensions.left > this.containerDimensions.width) {
+ this.optionList.style.right = 0
+ }
+ else {
+ this.optionList.style.right = 'auto'
+ }*/
+ });
+ window.addEventListener('mousedown', e => {
+ if (!this.contains(e.target) && e.button !== 2) {
+ this.collapse()
+ }
+ })
+ if (this.hasAttribute('set-context') && this.getAttribute('set-context') === 'true') {
+ this.parentNode.setAttribute('oncontextmenu', 'return false')
+ this.parentNode.addEventListener('mouseup', e => {
+ if (e.button === 2) {
+ this.expand()
+ }
+ })
+ }
+ /* const intersectionObserver = new IntersectionObserver(entries => {
+ entries.forEach(entry => {
+ if (this.open && !entry.isIntersecting) {
+ if (window.innerHeight - entry.intersectionRect.top < this.containerDimensions.height)
+ this.optionList.classList.add('moveUp')
+ else
+ this.optionList.classList.remove('moveUp')
+ console.log(entry.intersectionRect.left > this.containerDimensions.width)
+ if (entry.intersectionRect.left > this.containerDimensions.width) {
+ this.optionList.setAttribute('style', 'right: 0')
+ }
+ else {
+ this.optionList.setAttribute('style', 'left: 0')
+ }
+ }
+ })
+ }, {
+ threshold: 1
+ })
+ intersectionObserver.observe(this.optionList)*/
+ }
+})
+
+// option
+const smMenuOption = document.createElement('template')
+smMenuOption.innerHTML = `
+
+
+
+
`;
+customElements.define('sm-menu-option', class extends HTMLElement {
+ constructor() {
+ super()
+ this.attachShadow({ mode: 'open' }).append(smMenuOption.content.cloneNode(true))
+ }
+
+ connectedCallback() {
+ this.addEventListener('keyup', e => {
+ if (e.code === 'Enter' || e.code === 'Space') {
+ e.preventDefault()
+ this.click()
+ }
+ })
+ this.setAttribute('tabindex', '0')
+ }
+})
+
+// tab-header
+
+const smTabHeader = document.createElement('template')
+smTabHeader.innerHTML = `
+
+
+
+
+`;
+
+customElements.define('sm-tab-header', class extends HTMLElement {
+ constructor() {
+ super()
+ this.attachShadow({ mode: 'open' }).append(smTabHeader.content.cloneNode(true))
+
+ this.indicator = this.shadowRoot.querySelector('.indicator');
+ this.tabSlot = this.shadowRoot.querySelector('slot');
+ this.tabHeader = this.shadowRoot.querySelector('.tab-header');
+ }
+
+ sendDetails(element) {
+ this.dispatchEvent(
+ new CustomEvent("switchtab", {
+ bubbles: true,
+ detail: {
+ target: this.target,
+ rank: parseInt(element.getAttribute('rank'))
+ }
+ })
+ )
+ }
+
+ moveIndiactor(tabDimensions) {
+ //if(this.isTab)
+ this.indicator.setAttribute('style', `width: ${tabDimensions.width}px; transform: translateX(${tabDimensions.left - this.tabHeader.getBoundingClientRect().left + this.tabHeader.scrollLeft}px)`)
+ //else
+ //this.indicator.setAttribute('style', `width: calc(${tabDimensions.width}px - 1.6rem); transform: translateX(calc(${ tabDimensions.left - this.tabHeader.getBoundingClientRect().left + this.tabHeader.scrollLeft}px + 0.8rem)`)
+ }
+
+ connectedCallback() {
+ if (!this.hasAttribute('target') || this.getAttribute('target').value === '') return;
+ this.prevTab
+ this.allTabs
+ this.activeTab
+ this.isTab = false
+ this.target = this.getAttribute('target')
+
+ if (this.hasAttribute('variant') && this.getAttribute('variant') === 'tab') {
+ this.isTab = true
+ }
+
+ this.tabSlot.addEventListener('slotchange', () => {
+ this.tabSlot.assignedElements().forEach((tab, index) => {
+ tab.setAttribute('rank', index)
+ })
+ })
+ this.allTabs = this.tabSlot.assignedElements();
+
+ this.tabSlot.addEventListener('click', e => {
+ if (e.target === this.prevTab || !e.target.closest('sm-tab'))
+ return
+ if (this.prevTab)
+ this.prevTab.classList.remove('active')
+ e.target.classList.add('active')
+
+ e.target.scrollIntoView({ behavior: 'smooth', block: 'nearest', inline: 'center' })
+ this.moveIndiactor(e.target.getBoundingClientRect())
+ this.sendDetails(e.target)
+ this.prevTab = e.target;
+ this.activeTab = e.target;
+ })
+ let resizeObserver = new ResizeObserver(entries => {
+ entries.forEach((entry) => {
+ if (this.prevTab) {
+ let tabDimensions = this.activeTab.getBoundingClientRect();
+ this.moveIndiactor(tabDimensions)
+ }
+ })
+ })
+ resizeObserver.observe(this)
+ let observer = new IntersectionObserver((entries) => {
+ entries.forEach((entry) => {
+ if (entry.isIntersecting) {
+ this.indicator.style.transition = 'none'
+ if (this.activeTab) {
+ let tabDimensions = this.activeTab.getBoundingClientRect();
+ this.moveIndiactor(tabDimensions)
+ }
+ else {
+ this.allTabs[0].classList.add('active')
+ let tabDimensions = this.allTabs[0].getBoundingClientRect();
+ this.moveIndiactor(tabDimensions)
+ this.sendDetails(this.allTabs[0])
+ this.prevTab = this.tabSlot.assignedElements()[0];
+ this.activeTab = this.prevTab;
+ }
+ }
+ })
+ },
+ { threshold: 1.0 })
+ observer.observe(this)
+ }
+})
+
+// tab-panels
+
+const smTabPanels = document.createElement('template')
+smTabPanels.innerHTML = `
+
+
+ Nothing to see here.
+
+`;
+
+customElements.define('sm-tab-panels', class extends HTMLElement {
+ constructor() {
+ super()
+ this.attachShadow({ mode: 'open' }).append(smTabPanels.content.cloneNode(true))
+ this.panelSlot = this.shadowRoot.querySelector('slot');
+ }
+ connectedCallback() {
+
+ //animations
+ let flyInLeft = [
+ {
+ opacity: 0,
+ transform: 'translateX(-1rem)'
+ },
+ {
+ opacity: 1,
+ transform: 'none'
+ }
+ ],
+ flyInRight = [
+ {
+ opacity: 0,
+ transform: 'translateX(1rem)'
+ },
+ {
+ opacity: 1,
+ transform: 'none'
+ }
+ ],
+ flyOutLeft = [
+ {
+ opacity: 1,
+ transform: 'none'
+ },
+ {
+ opacity: 0,
+ transform: 'translateX(-1rem)'
+ }
+ ],
+ flyOutRight = [
+ {
+ opacity: 1,
+ transform: 'none'
+ },
+ {
+ opacity: 0,
+ transform: 'translateX(1rem)'
+ }
+ ],
+ animationOptions = {
+ duration: 300,
+ fill: 'forwards',
+ easing: 'ease'
+ }
+ this.prevPanel
+ this.allPanels
+ this.previousRank
+
+ this.panelSlot.addEventListener('slotchange', () => {
+ this.panelSlot.assignedElements().forEach((panel) => {
+ panel.classList.add('hide-completely')
+ })
+ })
+ this.allPanels = this.panelSlot.assignedElements()
+ this._targetBodyFlyRight = (targetBody) => {
+ targetBody.classList.remove('hide-completely')
+ targetBody.animate(flyInRight, animationOptions)
+ }
+ this._targetBodyFlyLeft = (targetBody) => {
+ targetBody.classList.remove('hide-completely')
+ targetBody.animate(flyInLeft, animationOptions)
+ }
+ document.addEventListener('switchtab', e => {
+ if (e.detail.target !== this.id)
+ return
+
+ if (this.prevPanel) {
+ let targetBody = this.allPanels[e.detail.rank],
+ currentBody = this.prevPanel;
+ if (this.previousRank < e.detail.rank) {
+ if (currentBody && !targetBody)
+ currentBody.animate(flyOutLeft, animationOptions).onfinish = () => {
+ currentBody.classList.add('hide-completely')
+ }
+ else if (targetBody && !currentBody) {
+ this._targetBodyFlyRight(targetBody)
+ }
+ else if (currentBody && targetBody) {
+ currentBody.animate(flyOutLeft, animationOptions).onfinish = () => {
+ currentBody.classList.add('hide-completely')
+ this._targetBodyFlyRight(targetBody)
+ }
+ }
+ } else {
+ if (currentBody && !targetBody)
+ currentBody.animate(flyOutRight, animationOptions).onfinish = () => {
+ currentBody.classList.add('hide-completely')
+ }
+ else if (targetBody && !currentBody) {
+ this._targetBodyFlyLeft(targetBody)
+ }
+ else if (currentBody && targetBody) {
+ currentBody.animate(flyOutRight, animationOptions).onfinish = () => {
+ currentBody.classList.add('hide-completely')
+ this._targetBodyFlyLeft(targetBody)
+ }
+ }
+ }
+ } else {
+ this.allPanels[e.detail.rank].classList.remove('hide-completely')
+ }
+ this.previousRank = e.detail.rank
+ this.prevPanel = this.allPanels[e.detail.rank];
+ })
+ }
+})
+
+
+const slidingSection = document.createElement('template')
+slidingSection.innerHTML = `
+
+
+`
+
+customElements.define('sm-sliding-section', class extends HTMLElement {
+ constructor() {
+ super()
+ this.attachShadow({ mode: 'open' }).append(slidingSection.content.cloneNode(true))
+ }
+ connectedCallback() {
+
+ }
+})
+
+const section = document.createElement('template')
+section.innerHTML = `
+
+
+`
+
+customElements.define('sm-section', class extends HTMLElement {
+ constructor() {
+ super()
+ this.attachShadow({ mode: 'open' }).append(section.content.cloneNode(true))
+ }
+})
\ No newline at end of file
diff --git a/assets/corner.svg b/assets/corner.svg
new file mode 100644
index 0000000..d8a0384
--- /dev/null
+++ b/assets/corner.svg
@@ -0,0 +1,3 @@
+
diff --git a/assets/illustrations.ai b/assets/illustrations.ai
new file mode 100644
index 0000000..6cf2b4f
--- /dev/null
+++ b/assets/illustrations.ai
@@ -0,0 +1,1958 @@
+%PDF-1.5
%âãÏÓ
+1 0 obj
<>/OCGs[5 0 R 27 0 R]>>/Pages 3 0 R/Type/Catalog>>
endobj
2 0 obj
<>stream
+
+
+
+
+ application/pdf
+
+
+ illustrations
+
+
+ Adobe Illustrator CC 23.0 (Windows)
+ 2020-08-13T20:07:11+06:30
+ 2020-08-31T00:38:36+05:30
+ 2020-08-31T00:38:36+05:30
+
+
+
+ 256
+ 116
+ JPEG
+ /9j/4AAQSkZJRgABAgEASABIAAD/7QAsUGhvdG9zaG9wIDMuMAA4QklNA+0AAAAAABAASAAAAAEA
AQBIAAAAAQAB/+4ADkFkb2JlAGTAAAAAAf/bAIQABgQEBAUEBgUFBgkGBQYJCwgGBggLDAoKCwoK
DBAMDAwMDAwQDA4PEA8ODBMTFBQTExwbGxscHx8fHx8fHx8fHwEHBwcNDA0YEBAYGhURFRofHx8f
Hx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8fHx8f/8AAEQgAdAEAAwER
AAIRAQMRAf/EAaIAAAAHAQEBAQEAAAAAAAAAAAQFAwIGAQAHCAkKCwEAAgIDAQEBAQEAAAAAAAAA
AQACAwQFBgcICQoLEAACAQMDAgQCBgcDBAIGAnMBAgMRBAAFIRIxQVEGE2EicYEUMpGhBxWxQiPB
UtHhMxZi8CRygvElQzRTkqKyY3PCNUQnk6OzNhdUZHTD0uIIJoMJChgZhJRFRqS0VtNVKBry4/PE
1OT0ZXWFlaW1xdXl9WZ2hpamtsbW5vY3R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo+Ck5SVlpeYmZ
qbnJ2en5KjpKWmp6ipqqusra6voRAAICAQIDBQUEBQYECAMDbQEAAhEDBCESMUEFURNhIgZxgZEy
obHwFMHR4SNCFVJicvEzJDRDghaSUyWiY7LCB3PSNeJEgxdUkwgJChgZJjZFGidkdFU38qOzwygp
0+PzhJSktMTU5PRldYWVpbXF1eX1RlZmdoaWprbG1ub2R1dnd4eXp7fH1+f3OEhYaHiImKi4yNjo
+DlJWWl5iZmpucnZ6fkqOkpaanqKmqq6ytrq+v/aAAwDAQACEQMRAD8Aigufzvk/Ni58h695/vNC
1OaRjYXMkswtbguaxCIRlQiyr9jalfh67Yq9K/5UZ/zkN/5dSf8A5GXX/NWKu/5UZ/zkN/5dSf8A
5GXX/NWKu/5UZ/zkN/5dSf8A5GXX/NWKpZ5n/Kz/AJyF8ueXNT8wn8zp7lNHtZr+S39W5HNLZDK6
jlyWvFDQEUPfFXsP5G+d9T86/ljpGv6qF/SUolgu3QBVke3laL1OIoBzC8iBtXptirPMVdirsVdi
rsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVdirsVSPzh5rs/Lelm7mHq3EhKWtuDQu9PwVe5x
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
+
+
+
+ proof:pdf
+ uuid:65E6390686CF11DBA6E2D887CEACB407
+ xmp.did:4aa7db9e-e09f-f940-aeb6-10f22907a77c
+ uuid:1bc3089f-8c95-486f-9397-aeec6ccc4164
+
+ uuid:3e593450-be4b-41f3-a1ac-f0c60f6cd9f7
+ xmp.did:e4637d7a-1015-5a4e-8a54-8a417d835ed6
+ uuid:65E6390686CF11DBA6E2D887CEACB407
+ proof:pdf
+
+
+
+
+ saved
+ xmp.iid:4aa7db9e-e09f-f940-aeb6-10f22907a77c
+ 2020-08-13T20:07:09+05:30
+ Adobe Illustrator CC 23.0 (Windows)
+ /
+
+
+
+ Web
+ Document
+ 1
+ False
+ False
+
+ 1920.000000
+ 1080.000000
+ Pixels
+
+
+
+ Cyan
+ Magenta
+ Yellow
+ Black
+
+
+
+
+
+ Default Swatch Group
+ 0
+
+
+
+ White
+ RGB
+ PROCESS
+ 255
+ 255
+ 255
+
+
+ Black
+ RGB
+ PROCESS
+ 0
+ 0
+ 0
+
+
+ RGB Red
+ RGB
+ PROCESS
+ 255
+ 0
+ 0
+
+
+ RGB Yellow
+ RGB
+ PROCESS
+ 255
+ 255
+ 0
+
+
+ RGB Green
+ RGB
+ PROCESS
+ 0
+ 255
+ 0
+
+
+ RGB Cyan
+ RGB
+ PROCESS
+ 0
+ 255
+ 255
+
+
+ RGB Blue
+ RGB
+ PROCESS
+ 0
+ 0
+ 255
+
+
+ RGB Magenta
+ RGB
+ PROCESS
+ 255
+ 0
+ 255
+
+
+ R=193 G=39 B=45
+ RGB
+ PROCESS
+ 193
+ 39
+ 45
+
+
+ R=237 G=28 B=36
+ RGB
+ PROCESS
+ 237
+ 28
+ 36
+
+
+ R=241 G=90 B=36
+ RGB
+ PROCESS
+ 241
+ 90
+ 36
+
+
+ R=247 G=147 B=30
+ RGB
+ PROCESS
+ 247
+ 147
+ 30
+
+
+ R=251 G=176 B=59
+ RGB
+ PROCESS
+ 251
+ 176
+ 59
+
+
+ R=252 G=238 B=33
+ RGB
+ PROCESS
+ 252
+ 238
+ 33
+
+
+ R=217 G=224 B=33
+ RGB
+ PROCESS
+ 217
+ 224
+ 33
+
+
+ R=140 G=198 B=63
+ RGB
+ PROCESS
+ 140
+ 198
+ 63
+
+
+ R=57 G=181 B=74
+ RGB
+ PROCESS
+ 57
+ 181
+ 74
+
+
+ R=0 G=146 B=69
+ RGB
+ PROCESS
+ 0
+ 146
+ 69
+
+
+ R=0 G=104 B=55
+ RGB
+ PROCESS
+ 0
+ 104
+ 55
+
+
+ R=34 G=181 B=115
+ RGB
+ PROCESS
+ 34
+ 181
+ 115
+
+
+ R=0 G=169 B=157
+ RGB
+ PROCESS
+ 0
+ 169
+ 157
+
+
+ R=41 G=171 B=226
+ RGB
+ PROCESS
+ 41
+ 171
+ 226
+
+
+ R=0 G=113 B=188
+ RGB
+ PROCESS
+ 0
+ 113
+ 188
+
+
+ R=46 G=49 B=146
+ RGB
+ PROCESS
+ 46
+ 49
+ 146
+
+
+ R=27 G=20 B=100
+ RGB
+ PROCESS
+ 27
+ 20
+ 100
+
+
+ R=102 G=45 B=145
+ RGB
+ PROCESS
+ 102
+ 45
+ 145
+
+
+ R=147 G=39 B=143
+ RGB
+ PROCESS
+ 147
+ 39
+ 143
+
+
+ R=158 G=0 B=93
+ RGB
+ PROCESS
+ 158
+ 0
+ 93
+
+
+ R=212 G=20 B=90
+ RGB
+ PROCESS
+ 212
+ 20
+ 90
+
+
+ R=237 G=30 B=121
+ RGB
+ PROCESS
+ 237
+ 30
+ 121
+
+
+ R=199 G=178 B=153
+ RGB
+ PROCESS
+ 199
+ 178
+ 153
+
+
+ R=153 G=134 B=117
+ RGB
+ PROCESS
+ 153
+ 134
+ 117
+
+
+ R=115 G=99 B=87
+ RGB
+ PROCESS
+ 115
+ 99
+ 87
+
+
+ R=83 G=71 B=65
+ RGB
+ PROCESS
+ 83
+ 71
+ 65
+
+
+ R=198 G=156 B=109
+ RGB
+ PROCESS
+ 198
+ 156
+ 109
+
+
+ R=166 G=124 B=82
+ RGB
+ PROCESS
+ 166
+ 124
+ 82
+
+
+ R=140 G=98 B=57
+ RGB
+ PROCESS
+ 140
+ 98
+ 57
+
+
+ R=117 G=76 B=36
+ RGB
+ PROCESS
+ 117
+ 76
+ 36
+
+
+ R=96 G=56 B=19
+ RGB
+ PROCESS
+ 96
+ 56
+ 19
+
+
+ R=66 G=33 B=11
+ RGB
+ PROCESS
+ 66
+ 33
+ 11
+
+
+
+
+
+ Grays
+ 1
+
+
+
+ R=0 G=0 B=0
+ RGB
+ PROCESS
+ 0
+ 0
+ 0
+
+
+ R=26 G=26 B=26
+ RGB
+ PROCESS
+ 26
+ 26
+ 26
+
+
+ R=51 G=51 B=51
+ RGB
+ PROCESS
+ 51
+ 51
+ 51
+
+
+ R=77 G=77 B=77
+ RGB
+ PROCESS
+ 77
+ 77
+ 77
+
+
+ R=102 G=102 B=102
+ RGB
+ PROCESS
+ 102
+ 102
+ 102
+
+
+ R=128 G=128 B=128
+ RGB
+ PROCESS
+ 128
+ 128
+ 128
+
+
+ R=153 G=153 B=153
+ RGB
+ PROCESS
+ 153
+ 153
+ 153
+
+
+ R=179 G=179 B=179
+ RGB
+ PROCESS
+ 179
+ 179
+ 179
+
+
+ R=204 G=204 B=204
+ RGB
+ PROCESS
+ 204
+ 204
+ 204
+
+
+ R=230 G=230 B=230
+ RGB
+ PROCESS
+ 230
+ 230
+ 230
+
+
+ R=242 G=242 B=242
+ RGB
+ PROCESS
+ 242
+ 242
+ 242
+
+
+
+
+
+ Web Color Group
+ 1
+
+
+
+ R=63 G=169 B=245
+ RGB
+ PROCESS
+ 63
+ 169
+ 245
+
+
+ R=122 G=201 B=67
+ RGB
+ PROCESS
+ 122
+ 201
+ 67
+
+
+ R=255 G=147 B=30
+ RGB
+ PROCESS
+ 255
+ 147
+ 30
+
+
+ R=255 G=29 B=37
+ RGB
+ PROCESS
+ 255
+ 29
+ 37
+
+
+ R=255 G=123 B=172
+ RGB
+ PROCESS
+ 255
+ 123
+ 172
+
+
+ R=189 G=204 B=212
+ RGB
+ PROCESS
+ 189
+ 204
+ 212
+
+
+
+
+
+
+ Adobe PDF library 15.00
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+endstream
endobj
3 0 obj
<>
endobj
7 0 obj
<>/Resources<>/ExtGState<>/Properties<>>>/Thumb 33 0 R/TrimBox[0.0 0.0 1920.0 1080.0]/Type/Page>>
endobj
29 0 obj
<>stream
+H‰ì—ËŽ,G†÷ýõUÎûeë±2Í‚h^Œ-™³@¼=ß™YU=Ç€X€@²FÓ]]÷øã›ß½mß|÷æ¶oõ¶=~z¸Í»ÆGnÛíñ/|üaûññÍÛ»Ûž_6oÛ—'¬ßÀúó—ÇO0~«îp¡5d¸pôžÊöüᡟ~xìþˆ®oþ(=n»;¼+[:|ö[8\LöÌë3¿uè’òöñ)©ûI‡îê¶§£¶~‘¾)d?99¡™„ë¥|ôÀ…Säîk>bFê¼ód<¹¹¥‹óñHí.^œØQá&õ¤çÅÏœ†}{Gr'Ã-ê@)Á¨P“ÈèEº£…Àñïzü~øýíÝì¶íýí·.ûëö‹×ÿ3^—ß>ðý;¾¿\ìk9\J}k%!Ö¥ËÅn«XŠ»©t¼ÝŽj^¬‡>Ÿ´.øöE|óGs&Öpäë]üÚÑsâÏ81xù#¾¡vC"ýH±Ÿôó±Žr{å‚Z·S‰,Èõ’z2æ•’3YÞá`ßMNó‡ó ;³‘ãnß"žµ‹†r‹dhÂ÷<)L–2nkî°×•åx[ÿÖ[>ûÆû-‡¤@Þ²›¼·Üh$IorÐeEИÞ8À¦¡úö·Ç^Ú¡ØOÆžÉH¹Á©€úIKqÜ„ñƒÑþ´4mãó4shZŽPLç§™DÄ_ªôŒ1%C"¾dÐÎA2ßI‹•ж¼>’ÿœ5&ÚX[$bIñÕA^a¤u oª3ù¯¿1¦x»ýR›h ˜¤»žíiq>¬°ÿÏ*÷¹¥’+DZ|ŠGNµ_Ú‘!¤A¥[çÞYòFÒ4š/ÍæÌ hûå¨9.:ÒæøªV2…,+6q¼òåý“gxÉ¥öß»[ݽ’C.+“¯~Î$%g-qK6C5
+–Jž¹am„êØh-M•PRNʧ#ÓØÑj2¨çÂÔ`úÒfRâ¤Ê£Ç¨É\ô´pƒS·iC=:â;õVÜÍ=Ô]²ù±ò¢TÏjÙЀCã9«Pž~ø˜¸HïŸC’Mêg<¨ðôýñPBÎ_‘³NéQ÷¡t¶QÖ•ó€ûÙø¶ä+à]¤Ž™ý)éÍ~kÇ€\ÌœOg¸ëø÷NxÚ° —Xúá‹»ebÏG½ÎÐÁJ$š:¤*ùså¬ap&O•åÛĉ‡SKR™§è(D¤ªã]RZ˜1Ë5š¤“ÂkɰÌbæI ÎÅ sjÊb€t¬Ÿ=…æ¨-³ xØjÛÚ‘˜ÈxGÊwùŠæÐ…¢Œx>¼³3ƒ$ªŠõæ®ù^¦Œ´QÑeº¡²4Ãt‘^ŽG
+1t‚À2×0WvÀ𦆖JJÐGÊI¡q¦‡_ôFU!êÉ(êÊý”JœŸ·=<Òhƒò4—D¡Db·H:VÂù²àASëŸÂðeiš°ó.YP0ijBM
+Ÿš.’P™)‹Æòaéb,G,qËSóºË•S3ØRw‘Ó˜WÏ?¬Kj»Z>Â×9ê”?ÌÆ\¤–²äôIIJ%äªëѯ©ìSÓ´+tÓB×
+ÏËÜIâ=Ú¶?éE“]Ù)=É«‹Aµ4&ÊbP ¶(hKá[V’•{TÊ>3Wþ•{¢V•0ÂãeÈFªX·¡PYµ/êTnK7`B5GO[Nzš:éé‡ #ŒÃKp¹[óCßÔ$é1ªÿY(yPª¦Úo½³Ëýó«qS¤-m”áQiº÷&î¾8ƒ'B% lùjµH鮌aW4g&!íÊ&Y<И/ZßÍšþâx¶'ßré-Q‡iŠø#ÞYóÜ£…ŽäÜe ,'n)Û™OO
ö^O:[nw²;
+òM•$ýô.!Hm,‘òߺ¥pˆÍã“$ÇR•Õ"{ÅIEžGð7i.ÔA·ØÔ-¿¼Š–Œ¬½ÕN¨KXšÈ'êÆ€î\üsÚ¿L»h¡ó‡ž^†3
+Y¨¯Ïpn.cÝ"®¼Ö«Š]ƒ"[è*r¸2jö{~jS××ZÅøíòÒÅXœ9yÁQæ¶W˜´Û2Áž‹5ß¾±Ø)‚<T"EKÐùDدŸþ>`™Æv±“c½hþdÝ*Äg5º‚Ò4ZÃvÅhYprÈ#Üwš[V+êäd×ÌL´F[-Çy½DÄÊ+ç´ñd‘;!u
—?·mëÿsXKËB©L'R½Eâû²jG±
+btϾ(»?ÎïÌþRV%Êu{$ýc»qÜíyùy:V~®}86››mJɯ¥–›Ö±mÑg†h€Ÿ±—?b:9Î<“^Ýò/æPUOèÁ‹À —^—5’Ñ›wlscrhNp@(”=JȇÖ׳Æ)vÇ¡j–Âë€eîdq&å0†²NÑ–ƒ³Ž6¤ò–-uš=íÅnp/²ßüL”Cg̃Z‘hƒ»°(š28¬Ñ¼%Äãg‘& Xœýn/›ú›¿6y°“‚7ɼ哆‚êÈcœ@"à,Ë©q˜6™¡S$ó“%\2o„båRédpÛÔùzgštJq×taµ:ñ†‡SQ©óýòê?GÒ‰¬ì®Ñƒœï¯¥(•0ªÀkÈ!ÁÀàÈ̬]T¬ 4#aY¢)ÞúAPe¹X$Iž-pqBüvŠ-æµBñÅö–aS±7У•)éëLqªSWÙÔã=S4Öªáë4Ò–ê3¬llc8Ó&[cçíœOZa"ßÃõ†Ò,Óu&*ÃOZPZ^÷©r’áˆÑNÚÑØAª55m€,[ûèI)ÄEjèŒz´²‘È—Eëå2%Í}²/cÙ`Ìa¹=}2¦ïÉÉØi-ìADZ¤'hjjlIn”|£'›™©Ïo±Z¤’¦£Æ>K^¦ÿ€9ƒ6ÊIšçmÝ4‰ª~2…Å…(ì.@%ø3,]`Â>4UuÖˈ»Ñ£³üú»·¯¿0 ó
þØ
+endstream
endobj
33 0 obj
<>stream
+8;Z]"0lFoP&4O-jn)K&Q
\]t[mZ@ED:"tV([98H"P]_sVp
+`^2NLd[YPW#Ur%'DuGXK>5_M^.`&[?gSEcc/4V]mOE*XEdrti>'!`.Ddi8rD/W^#V
+l);M6$\BY$O1IX6MPal[hR%4
+T^TJseIEV1IterrVa;HG/=/O<12lPl[PAO+?089F5!%NGSa]c`>3B399he>V9hcRQ
+%01CN>bM~>
+endstream
endobj
34 0 obj
[/Indexed/DeviceRGB 255 35 0 R]
endobj
35 0 obj
<>stream
+8;X]O>EqN@%''O_@%e@?J;%+8(9e>X=MR6S?i^YgA3=].HDXF.R$lIL@"pJ+EP(%0
+b]6ajmNZn*!='OQZeQ^Y*,=]?C.B+\Ulg9dhD*"iC[;*=3`oP1[!S^)?1)IZ4dup`
+E1r!/,*0[*9.aFIR2&b-C#soRZ7Dl%MLY\.?d>Mn
+6%Q2oYfNRF$$+ON<+]RUJmC0InDZ4OTs0S!saG>GGKUlQ*Q?45:CI&4J'_2j$XKrcYp0n+Xl_nU*O(
+l[$6Nn+Z_Nq0]s7hs]`XX1nZ8&94a\~>
+endstream
endobj
27 0 obj
<>
endobj
36 0 obj
[/View/Design]
endobj
37 0 obj
<>>>
endobj
32 0 obj
<>
endobj
31 0 obj
[/ICCBased 38 0 R]
endobj
38 0 obj
<>stream
+H‰œ–yTSwÇoÉž•°Ãc
[€°5la‘QIBHØADED„ª•2ÖmtFOE.®cÖ}êÒõ0êè8´×Ž8GNg¦Óïï÷9÷wïïÝß½÷ó '¥ªµÕ0 Ö ÏJŒÅb¤
+ 2y.-;!à’ÆK°ZÜ ü‹ž^i½"LÊÀ0ðÿ‰-×é
@8(”µrœ;q®ª7èLöœy¥•&†Qëñq¶4±jž½ç|æ9ÚÄ
+V³)gB£0ñiœWו8#©8wÕ©•õ8_Å٥ʨQãüÜ«QÊj@é&»A)/ÇÙgº>'K‚ó ÈtÕ;\ú”
Ó¥$ÕºF½ZUnÀÜå˜(4TŒ%)ë«”ƒ0C&¯”阤Z£“i˜¿óœ8¦Úbx‘ƒE¡ÁÁBÑ;…ú¯›¿P¦ÞÎӓ̹žAüom?çW=
+€x¯Íú·¶Ò- Œ¯Àòæ[›Ëû 0ñ¾¾øÎ}ø¦y)7ta¾¾õõõ>j¥ÜÇTÐ7úŸ¿@ï¼ÏÇtÜ›ò`qÊ2™±Ê€™ê&¯®ª6ê±ZL®Ä„?â_øóyxg)Ë”z¥ÈçLUáíÖ*ÔuµSkÿSeØO4?׸¸c¯¯Ø°.ò ò· åÒ R´
ßÞô-•’2ð5ßáÞüÜÏ ú÷Sá>Ó£Vš‹“då`r£¾n~ÏôY &à+`œ;ÂA4ˆÉ 䀰ÈA9Ð =¨- t°lÃ`;»Á~pŒƒÁ ðGp| ®[`Lƒ‡`<¯ "AˆYA+äùCb(ЇR¡,¨ *T2B-Ð
+¨ê‡†¡Ðnè÷ÐQètº}MA ï —0Óal»Á¾°ŽSàx ¬‚kà&¸^Á£ð>ø0|>_ƒ'á‡ð,ÂG!"F$H:Rˆ”!z¤éF‘Qd?r9‹\A&‘GÈ”ˆrQ¢áhš‹ÊÑ´íE‡Ñ]èaô4zBgÐ×Á–àE#H ‹*B=¡‹0HØIøˆp†p0MxJ$ùD1„˜D, V›‰½ÄÄÄãÄKÄ»ÄY‰dEò"EÒI2’ÔEÚBÚGúŒt™4MzN¦‘Èþär!YKî ’÷?%_&ß#¿¢°(®”0J:EAi¤ôQÆ(Ç()Ó”WT6U@ æP+¨íÔ!ê~êêmêæD¥eÒÔ´å´!ÚïhŸÓ¦h/èº']B/¢éëèÒÓ¿¢?a0nŒhF!ÃÀXÇØÍ8ÅøšñÜŒkæc&5S˜µ™˜6»lö˜Iaº2c˜K™MÌAæ!æEæ#…寒°d¬VÖë(ëk–Íe‹Øél
»—½‡}Ž}ŸCâ¸qâ9
+N'çÎ)Î].ÂuæJ¸rî
+î÷wšGä xR^¯‡÷[ÞoÆœchžgÞ`>bþ‰ù$á»ñ¥ü*~ÿ ÿ:ÿ¥…EŒ…ÒbÅ~‹ËÏ,m,£-•–Ý–,¯Y¾´Â¬â*6X[ݱF=3ë·YŸ±~dó ·‘ÛtÛ´¹iÛzÚfÙ6Û~`{ÁvÖÎÞ.ÑNg·Åî”Ý#{¾}´}…ý€ý§ö¸‘j‡‡ÏþŠ™c1X6„Æfm“Ž;'_9 œr:œ8Ýq¦:‹ËœœO:ϸ8¸¤¹´¸ìu¹éJq»–»nv=ëúÌMà–ï¶ÊmÜí¾ÀR 4 ö
+n»3Ü£ÜkÜGݯz=Ä•[=¾ô„=ƒ<Ë=GTB(É/ÙSòƒ,]6*›-•–¾W:#—È7Ë*¢ŠÊe¿ò^YDYÙ}U„j£êAyTù`ù#µD=¬þ¶"©b{ųÊôÊ+¬Ê¯: !kJ4Gµm¥ötµ}uCõ%—®K7YV³©fFŸ¢ßYÕ.©=bàá?SŒîƕƩºÈº‘ºçõyõ‡Ø
Ú†žkï5%4ý¦m–7Ÿlqlio™Z³lG+ÔZÚz²Í¹³mzyâò]íÔöÊö?uøuôw|¿"űN»ÎåwW&®ÜÛe֥ﺱ*|ÕöÕèjõê‰5k¶¬yÝèþ¢Ç¯g°ç‡^yïkEk‡Öþ¸®lÝD_pß¶õÄõÚõ×7DmØÕÏîoê¿»1mãál {àûMÅ›Î
nßLÝlÜ<9”úO ¤[þ˜¸™$™™üšhšÕ›B›¯œœ‰œ÷dÒž@ž®ŸŸ‹Ÿú i Ø¡G¡¶¢&¢–££v£æ¤V¤Ç¥8¥©¦¦‹¦ý§n§à¨R¨Ä©7©©ªª««u«é¬\¬ÐD¸®-®¡¯¯‹° °u°ê±`±Ö²K²Â³8³®´%´œµµŠ¶¶y¶ð·h·à¸Y¸Ñ¹J¹Âº;ºµ».»§¼!¼›½½¾
+¾„¾ÿ¿z¿õÀpÀìÁgÁãÂ_ÂÛÃXÃÔÄQÄÎÅKÅÈÆFÆÃÇAÇ¿È=ȼÉ:ɹÊ8Ê·Ë6˶Ì5̵Í5͵Î6ζÏ7ϸÐ9кÑ<ѾÒ?ÒÁÓDÓÆÔIÔËÕNÕÑÖUÖØ×\×àØdØèÙlÙñÚvÚûÛ€ÜÜŠÝÝ–ÞÞ¢ß)߯à6à½áDáÌâSâÛãcãëäsäü儿
æ–çç©è2è¼éFéÐê[êåëpëûì†ííœî(î´ï@ïÌðXðåñrñÿòŒóó§ô4ôÂõPõÞömöû÷Šøø¨ù8ùÇúWúçûwüü˜ý)ýºþKþÜÿmÿÿ ÷„óû
+endstream
endobj
30 0 obj
<>
endobj
39 0 obj
<>
endobj
40 0 obj
<>stream
+%!PS-Adobe-3.0
+%%Creator: Adobe Illustrator(R) 17.0
+%%AI8_CreatorVersion: 23.0.5
+%%For: (sairaj mote) ()
+%%Title: (illustrations.ai)
+%%CreationDate: 8/31/2020 12:38 AM
+%%Canvassize: 16383
+%%BoundingBox: 58 -788 1726 -53
+%%HiResBoundingBox: 58.9851632707469 -787.03901575007 1725.84926401795 -53.8800000000001
+%%DocumentProcessColors: Cyan Magenta Yellow Black
+%AI5_FileFormat 13.0
+%AI12_BuildNumber: 625
+%AI3_ColorUsage: Color
+%AI7_ImageSettings: 0
+%%RGBProcessColor: 0 0 0 ([Registration])
+%AI3_Cropmarks: 0 -1080 1920 0
+%AI3_TemplateBox: 960.5 -540.5 960.5 -540.5
+%AI3_TileBox: 564 -846 1356 -234
+%AI3_DocumentPreview: None
+%AI5_ArtSize: 14400 14400
+%AI5_RulerUnits: 6
+%AI9_ColorModel: 1
+%AI5_ArtFlags: 0 0 0 1 0 0 1 0 0
+%AI5_TargetResolution: 800
+%AI5_NumLayers: 1
+%AI9_OpenToView: -547 365 0.347222222222222 990 602 18 0 0 78 121 0 0 0 1 1 0 1 1 0 1
+%AI5_OpenViewLayers: 7
+%%PageOrigin:560 -840
+%AI7_GridSettings: 72 8 72 8 1 0 0.800000011920929 0.800000011920929 0.800000011920929 0.899999976158142 0.899999976158142 0.899999976158142
+%AI9_Flatten: 1
+%AI12_CMSettings: 00.MS
+%%EndComments
+
+endstream
endobj
41 0 obj
<>stream
+%%BoundingBox: 58 -788 1726 -53
+%%HiResBoundingBox: 58.9851632707469 -787.03901575007 1725.84926401795 -53.8800000000001
+%AI7_Thumbnail: 128 56 8
+%%BeginData: 5079 Hex Bytes
+%0000330000660000990000CC0033000033330033660033990033CC0033FF
+%0066000066330066660066990066CC0066FF009900009933009966009999
+%0099CC0099FF00CC0000CC3300CC6600CC9900CCCC00CCFF00FF3300FF66
+%00FF9900FFCC3300003300333300663300993300CC3300FF333300333333
+%3333663333993333CC3333FF3366003366333366663366993366CC3366FF
+%3399003399333399663399993399CC3399FF33CC0033CC3333CC6633CC99
+%33CCCC33CCFF33FF0033FF3333FF6633FF9933FFCC33FFFF660000660033
+%6600666600996600CC6600FF6633006633336633666633996633CC6633FF
+%6666006666336666666666996666CC6666FF669900669933669966669999
+%6699CC6699FF66CC0066CC3366CC6666CC9966CCCC66CCFF66FF0066FF33
+%66FF6666FF9966FFCC66FFFF9900009900339900669900999900CC9900FF
+%9933009933339933669933999933CC9933FF996600996633996666996699
+%9966CC9966FF9999009999339999669999999999CC9999FF99CC0099CC33
+%99CC6699CC9999CCCC99CCFF99FF0099FF3399FF6699FF9999FFCC99FFFF
+%CC0000CC0033CC0066CC0099CC00CCCC00FFCC3300CC3333CC3366CC3399
+%CC33CCCC33FFCC6600CC6633CC6666CC6699CC66CCCC66FFCC9900CC9933
+%CC9966CC9999CC99CCCC99FFCCCC00CCCC33CCCC66CCCC99CCCCCCCCCCFF
+%CCFF00CCFF33CCFF66CCFF99CCFFCCCCFFFFFF0033FF0066FF0099FF00CC
+%FF3300FF3333FF3366FF3399FF33CCFF33FFFF6600FF6633FF6666FF6699
+%FF66CCFF66FFFF9900FF9933FF9966FF9999FF99CCFF99FFFFCC00FFCC33
+%FFCC66FFCC99FFCCCCFFCCFFFFFF33FFFF66FFFF99FFFFCC110000001100
+%000011111111220000002200000022222222440000004400000044444444
+%550000005500000055555555770000007700000077777777880000008800
+%000088888888AA000000AA000000AAAAAAAABB000000BB000000BBBBBBBB
+%DD000000DD000000DDDDDDDDEE000000EE000000EEEEEEEE0000000000FF
+%00FF0000FFFFFF0000FF00FFFFFF00FFFFFF
+%524C45A8FD137DFD5DFFA8A8527DA8A8A8FD08FFFD14F827FD5BFF7D7D52
+%5252A8A8A87DA8FD06FF52F852FD0FA8FF27F8A8FD59FF7D7D527D527DA8
+%FFFD04A8FD06FF27F8A8FD0FFF7DF8A8FD58FF7D52527D5252275252A8A8
+%A87DA8FD06FF27F8A8FFFFFFA8FD06FFA8FFFFFF52F8A8FD57FFA87D527D
+%525227FD0452FD04A8FD06FFA8F827FFFFFFF87DFD04FF7D27FFFFFF7DF8
+%A8FD57FF7D527D522727A8FFFFA85227FD04A8FD06FFF827FFFFFF27F8FD
+%04FFF8F8FFFFFF52F8A8FD57FF7D7D525227FD05FFA8527DA8A8A8FD06FF
+%F827FFFFFFF8F827FFFF52F827A8FFFF52F8A8FD56FFA87D527D2752FD06
+%FF527DA8A8A8FD06FFF852FFFFFF27F8F87DA8F8F827FFFFFF52F8A8FD57
+%FF7D7D525252FD06FF7D52FFA8FD07FF2727FFFFFFF82727F8F8272727FF
+%FFFF52F8A8FD56FFA87D527D277DFD06FF527DA8A8A8FD06FFF827FFFFFF
+%2727FFF8F8A852F8FFFFFF52F8A8FD57FF527D595252FD07FFA9FFA8FD06
+%FFA82727FFFFFFF827FF7D7DFF2727FFFFFF7DF8A8FD57FF7D527C759FC2
+%C8C2C8A0C9C9CACAFD08FFF852FD0EFF7DF8A8FD54FFCFC8C89FC1C0C1C0
+%C1C0C1C0C1C0C0C0C1C1C199C2C9FFFFFF27F8FD0AA8FFA8A8A852F8A8FD
+%53FFCFC0C7C1C198C1C0C198C1C0C198C1C0C198C198989899FFFFFF52FD
+%10F852FD54FFCAC7C1C8C1C1C0C1C1C1C0C1C1C1C0C1C1C1C0C198BB98FD
+%04FF7D7D527D527D527D527D527D527D527DA8FD54FFCFC1C19FC79EC198
+%C19EC198C19EC198C1C0C198999899FD69FFCFC7C1C8C1C1C0C1C1C1C0C1
+%C1C1C0FD05C198C198FD69FFCFC1C1C1C7C0C198C1C0C198C1C0C198C1C0
+%C198999899FD69FFCAC7C1C7C1C1C0C1C0C1C1C1C0C1C1C1C0C1C1C198C1
+%98FD69FFCF9FC7C1C198C19EC198C19EC198C19EC198C198989899FD69FF
+%CAC7C1C7FD04C1C0C1C1C1C0C1C1C1C0C1C1C198C198FD69FFCFC1C7C1C1
+%9EC1C0C198C1C0C198C1C0C198C199999899FD69FFCAC7C1C8C1C1C0C1C1
+%C1C0C1C1C1C0C1C1C1C0C198BB98FD69FFCFC1C19FC79EC198C19EC198C1
+%9EC198C19EC198999899FD69FFCFC7C1C8C1C1C0C1C1C1C0C1C1C1C0FD05
+%C198C198FD69FFCFC1C1C1C7C0C198C1C0C198C1C0C198C1C0C198999899
+%FD69FFCAC7C1C7C1C1C0C1C0C1C1C1C0C1C1C1C0C1C1C198C198FD69FFCF
+%9FC7C1C198C19EC198C19EC198C19EC198C198989899FD69FFCFC7C1C7C1
+%C1C0C1C0C1C1C1C0C1C1C1C0C1C0C198BA99FD6AFFCAC9C8C89FC1C0C1C0
+%C1C0C198C1C0C19FC8A0C2A0CFFD6FFFC9C198C198C1C1C7C1C7C1FD75FF
+%9F9299989998C7C1C79FC1C9FD74FF98C198C198C1C1C8C1C8C1C8FD74FF
+%9F9899989898C1C1C7C1C7C8FD29FF522752275227522752275227522752
+%275227522752A8FD35FFC998989999C2A0A0C1C7C1FD2AFF2752A8A87DA8
+%7DA87DA87DA87DA87DA87D7D527D2727A8FD11FFA8FD1627A8FD0CFF9998
+%6ECAFFFF7699C0C9FD2AFFA827FD11FFA8FF277DFD11FF2752FFFFFFA8FF
+%A8FFA8FFA8FFA8FFA8FFA8FFA8FFFF7DF8FD0CFFCF989975A19A99C1C8FD
+%2CFF5252FD0FFFA8A8A85252FD10FFA827FD16FF5252FD0CFFC9989998C1
+%C1C8CAFD2CFFA827FD0FFFA8A8FF5252FD10FFA852FD16FF527DFD0EFFCA
+%FD32FF2752FD0EFFA8A8A85252FD10FFA827FD16FF5252FD42FF27FD0EFF
+%A8A8FF527DFD10FFA852FD16FF527DFD42FF27A8FFFFA87DFD07FFA8A87D
+%A8A85252FD10FFA827FD16FF5252FD42FF27FFFF7DF8F852FD05FFA827F8
+%277DFF7DA8FD10FFA852FFFFFF7D525252A8FFFFFFA8FD0452FD06FF527D
+%FD41FFA827A8FF7DA8A87DA8FD05FF7DFF52A8A8FD12FFA827FFFFFF7D7D
+%527DA8FFFFFFA87D527D7DFD06FF5252FD42FF27FD0FFFA8FF7DA8FD10FF
+%A852FD16FF527DFD41FFA827A8FD05FFA8A8597D7DFFFFFFA8A8A85227FD
+%10FFA827FD16FF5252FD42FF27FD05FF7D2020684420F8FFFFA8A8FF527D
+%FD10FFA852FD16FF527DFD41FFA827A8FD04FF2E44B5FCB58D2052FFA8A8
+%7DA8FD11FFA827FD16FF5252FD42FF27FD05FF5944B0B5B58DF8FFFFA8A8
+%FF7DA8FD10FFA852FD07FF7D27522752272752FD07FF527DFD42FF27A8FD
+%05FF27206868F859FFFFA8A8A85252FD10FFA827FD07FFFD08A8FD07FF52
+%52FD42FF27FD07FF7D522EA8FFFFFFA8A8FF5252FD10FFA852FD16FF527D
+%FD42FF277DFD0DFFA8A8A82752FD10FFA827FD16FF5252FD42FFA82727FD
+%0B522752272752FD11FFA827A8FD15FF27A8FD44FFA87DA87DA87DA87DA8
+%7DA87DA87DA8A8FD13FF7DF827FD1352F87DFD69FFA8FD147DA8FD9CFFFF
+%%EndData
+
+endstream
endobj
42 0 obj
<>stream
+%AI12_CompressedDataxœì½k\Ç•%ú] ÿCÞ
؃q:ÞßÁ*+«<î±Û‚äîöE£!ÐTÙf›¢ìñýõwsNÄɪ"%JœnUH$+#2NœxìØÏµÿáÿúôóŸ]}ùúw?³GuxòÉ?üÃõ›»§o_¿ùÅA>>üêÅ‹o¾~û†ý䳟t<*¶ºúUú¢¶ü—»7_?ýêƒ.Žžµ·üþO¾~úüÍÓÿ8¼|ýöŸü”¿{þöŪž·^ñůOŸÿ´?œŸ¾E›ôs«n”Qm~aÓáê7Òæé«¿>ýúëçÿZè`“凧×ß¼úòù«?^ÿï_|:ü,¦„‘špø™—ÿóùgw_Ž9yô`¢Š.d~¯f³Ò>z¥"¿ïÉeœÒ1{öuLIõ͞ϯŸ}óòîÕÛOß¼~v÷õ×ׯ_¼~óõ/×úêð›§BÍÓÃÿ{÷âÅë¿N/ž>û¾sõ+ÿÅíów˜¤—Oß´•½ú•6_œ¾yþâËúæåî0ÁxùÜ~!½þó×è=óßòyüâW/ñÑçwoßâðPY˜Ï~yZŸJùÉ¿}v÷§çmÊÿý§ç7¯¿zùôÍ_øíÃÏ´J˜íŒ)Wµþww/¿zå9ËË‹ipükýKkŒ—*“Üágɼ›Çëj‹e¶îþúüîo¿8üÓëWwuJ®Þ¼ý¼,«sJ•?kÕgß¼¸{óϯž¿Å0ƒ|–Ëœüæõ—w/ð¥‹ÛOe*¤èåÏÚâwOßüéî-6Ãëß¼•M›úS0ï¿~ú÷;.Ÿ®ùíWw¯~÷ú_d¨xÕx°ÁÔѺhV?‡œÕ!(sÐI±ùŒîcÐËŸõIì–¶ÇE.ܧXËß¾yþ§ç¯~áƒâü©ºÌ¿|óüËe•£9¤ò‡<âXw¤æºe“ûI–Ÿ´OÚ™Ç|Rç3üöíÝ«6Iص׿YíAuüÍç|›W_^¿~ÉÅþZŽ(vß+l̯ÿTk—_¤]|óUùàìOß<ÅŽŸ|òO¥.}ñé‹oPùË7¯¿ùêW¯þøúÉ'?)tê_îža}yøíþ¿€äÈù8üîÍÓgè¿÷6 8_ýôñžoî¥ß•_Ûßùþùî8àKåÓ›W½{ñú«UÇ¥ÝczüôÅÓWOߤ¢wøëçEÍSÌÓÒ%Þ½ýý£úÄü
+Ó"½H›¡ÿ{¬ªó¨_?5u!Ÿ=}óöo¯ßü…¶\6Ç»ÿ}÷PŸÿåîí³?}ÖOß»×OŸ¾ý3ˆõÝ«/¿î³P~]f˜³^>{Ì›_?}ñâùŸÞ<ýêÏÏŸNo¾ùúχ߽~ý¢÷¾Sߟ´®“*~ó1ýüï/ÿðúÅó¯_öǬ?ùÓóüÙ‹»ÏÿþõÛ»Çí>û7¯~ûªÌÏüµÁø Êå;ï4úï÷iý[{OBåÿIOùü™ÌÌÞ3¶Uý9õãð)m‘o¾|ŽÃ{@ÝÛæó¿=1øõó?ù·'Ÿ¨ÕºýçÿðÅ üáÿÀÇ{?zU̪X)n(~]УWaUâªäM¹Z•“”kùÿ\Ëü‹ok¹YL¯ÌªØUq›âQ‚s(ÿŠ«’V%£\Õ?¯ôiU®{á¿Ïý·3z¼A9£ÜèÛuYOŸ¯ýØUñÆ¡´?Ë“OÊß&®J^•«U9•òä“ÿçÒš–)Sêr5·ë:¯¯WàËÇU®k챦ëUÎ
Òî:çÕJãOô¸^s–eÍYdµÛºcàü³ü¨Ý5ß)ëm°Êe彬8V»:ʸÚ\ã$«¼¬t_côÈ¿oêÊnW³=ÖÊZºZ¼®W.I)«•¸NXÓ²V\³ëZÎRnj¹e±uA¸5†5Õ²Z®Îªóz]f¬Î‰“7åÛñ}Î2j]GdDWÜ+òÜ[yеÎ!(g{B9Û,½vÖ9Æ%w…ríÎîÆÝb:-Šó2pöWþåìqN1$wÁ‡R¸B9…ëp·Ø”£‹!FˆÐ9žâu<Ç[lIrɧbÊé*Ò9ݤ[l¼{¶ÙeŸC¦”qÊ×ù&ßâ…õ•Å€üU¼JWùêêê„r}u¾º¹ºÅVÒxwò§xJ§ŒªëÓùtsº½V× }2éöÚaÐÂuº¾º>]__Ÿ¯o±í´,†;ãuÎáÏéœÏ§óõùæ|‹M`nÜ¿‰(é¹9Ý\ßàäßÜÜÜrkÜbjn
+^ëÃD9¡ ã[4XÿÈš*YÖþÙͪœWåzUN«rµ)¹ô˜ñø¥ÄU ›âWÅŠ]ìFôhjÙR6µ”õàoÖ?çM¹.SÆ¿O«rµ*yUÒ¦ÄU «‚KÓŠÛ»*fUôª¨¥´iòIý×úÖ?׫r*¥ÕÍznWq»vmÕ¶+µ]¬ztëYÄvþ·³^g{˜a™WÌ×8§u&7s¸·Ílõ
Z†ùÚÎK™“«Z²”TK”jñµ8)¶ì;9Œº¹úQ(¯ÖÖ~NR®jÉRR-8ì8üñ:Ô"Td [K¡Éí ]]é¬ãIÖ-É:yY®†’Ù?Ël_ɾ2›NfOË|ÝÈìœd6Þ.Ê»óù–JÞê,oq%ãŽ2J'£ÂX°qn0¥×§HZi‹§ "ç@ìHFŠ-uƒÉ¾1¼YL DÒXL…vƒe¸!½9M9‚°zX‹Jãî¾Å†8c²N Ã9aŒ ɤÙ%"q³ßb«œ1•§x"ž@ÌCô ëÄ]ƒ¸Å&:czO ýW@—ׂ#¶ô
ûÚŸpqdŸp…ïq™XÜœ¼Æ-6ÞKrÂ…“qñDp9\E’¸Áö¸Æ%u…Ë
+cĵp9\b÷¾Âñ¸Áƹ–k–//c²V¼ªµQºß\[²mkÙÚ–«ŸìÞ•°„ ka(Àf´½æ{O•žpH—–﫲¡·«› 쳌=æ°»ÔîξZ]#rKñ‡7•’»Ê ï+ërcñøËÅW†6Þý^r/æéf´r3¶{ñŠÏlßï<†ll|†p87ÂgèÊiøÎk\K!œ!¿×{6`ùÈžÛ'Çý,/ú2ô¸_÷n'ºý\:ÕßêdÿŸpª/0½§*§*{a×Ò8–\ù•(ÜŠ)ü 0LäH?ªPiºxuÛ¹W\‰ÙˆX² b=ùBŬ"dY
+Y"b!ëZ´NEТ¨U-[-ŠZ׳N"h¥"h=ùD„--åVäï3D"lQÜ2EÜë\®“\Eä
+¹HʰwªØu+b¯"z]Aø¢øåEür"~i‹cEÂÙWùBŰˆÇ²)$-ˆh¶-ú ÈÎ"'_‰Pv±Œ‚YÍ(œYa3nqˆn„«+|Pð,ü9¼(\^à,t£î•²Ÿ;U_ø¸…†^Í _ÓîÕz]tMŸ[þ^Óä°¢ÆÂ/Þº}:;ÑÒ
g#e—ƒÁ‰i±•µ¦ü»‡Níðß’j|ǧº‹¢¥¬5dëŸRp¥ê\ëáDî‘""‡®"íRì¦lu~~(aSÀ l4‰qÐ2¦2WÁy]Nc©Íu9Oeþ¹KÛm ë›\ï³[ìniZĹø%\,]ŸŒãPÒ½%?PÀRzí½rzdНYÎ+èqþto)]Ð㥺÷ü™®×÷þY)ˆTç{M5¢”Òt¨åFiúÕXKÓ¿æZªv=mmûi¤b9BmY½mšàÆõ7MqÑcWÃM1Þ´kI½äZ®z9íÐ,ütöµšéÔ†BíÓ¦bC“.P£KThMyN¢ºL{î¡9SéŒèÒ.Ó˜ÊòEA÷Ò‘GPRˆ•«S÷¦«Ó‘N<’*ÌtàžS}ùOõ;©m7Š[0v×E—*†bòbÖá‚!b0&›¾¹d\S
Ç^LÇ Œ'ÍÇ'1ßÈ¥SÈVXVBÀ#Œl®¦d“oÄœ\Ê–\hôbV.†å+a•i\æa*fš˜ÉŠ™ùÉ'bjNäÊÅÜ|y:w£³—HŽ“†çbz9
+ŸÁÎ_‰úä㦚¢ÕN˜~#Ì?Òžvo1MÓ8½˜§‹úF6¦35y\+Æjš«É»G1Z'ˆYL×W§“ɳ˜°odÓ6JÜhp£½ê6j[(m¥± ·º.TµQÓ…Ž.Ôs¡šµ\ÓÈBWTqC
¸åÉÖÔnKá01 eeÛÒ²zípF3}Zó<û|Í%ª3p%ë‚ï¡"RÇÞþ瀞:œ®_+çr}0øW8$ut8;‡h8-†éˆýÅcÚž¾ÞéóèÑÒ«CÒGÈár‡cCéí¨äA•qÚñWph¦³3:$!¤9šÿºOÉXo²Ó¨¡{}l¿`Œ¨ä7ö &:¯rÂ3u}¢9ZåÝ2´ïõ©å=UDÿ½9üïÑ;>QGAb ¸‚2òi˜e
+ŒŽQF¥Wesy
+[µGɇüĬ?ðq5{T {«ÿA‡QgÂçä0uÖæŒapÁy©Ç ÒÒyƬC®Ç0³·e¬u¸¢ñN‚VKã"ßÅ”E©›Í¼Ry=?à(¾§o⑯ÇÇ&ó÷¹ýÇGïQŽ:)9kr‰ll[±ŸÓyñ¥mî°\dûæÙŸŸIïØú/tlÖŽ±Ç´Õ*‚Ã!ÃáeZkÀ$ÝgA·+-__ïøGê;v˜z/Gcׇ©çJ‘1Z©õd}¨GÔûN»çZºp´÷úp/±}Ê;î˜Ïÿòwnþ…/»¶WþGevÖyÛý+;“»qþº2-ÕË¢2&®{†Æ€ƒóÐÕÒ [JÈ“°£·¢'.lhôJXÏáIèé«d‹ImôyÇÿ·øú6I‹LÑQ’ÿS'…æìpÞøŒú{¼Š÷~F}ä¾÷¸_iѨø‰Q÷#:¯ÚÅ›¨ø¢êS$*í›êUtí»£ÂýÞRÝWꑞR£«AçÅ×|xsYœg®ÉoW^»9Ð4þ:7'šs_¸•ãm‘£(C-N·t¹MâpKI‰rm)]c*q°õÕ½ö»ÿG™åîŽÐ<‘6¾LUݺ!ÿZÌ~E«¢ÚU“—^Ì8ô&Kó$ë¾/Í€ãªS‰)€Õóï\½ýš—ßbÎñÕ—¯øð)aÐo&7‘•«uw¶.öÖâïa»¼ëEæ
b¶Hµd‘‹Ì‚Õjp+²ð"
çi®c‘ˆ‹Lnò¹HÉb5Уœ,×Y\®›ÓµHÊMVÆ)ÛJËÜ%Yäåëª"»éîØ¦Êʾ’¤$Òò•HÊ×MRÆÚYÙV'm_%å\ Õy%%k±ä Ù‰„»óv—!GŸ‹|Ü%d½’)#ûEF^IÈ'‘’EFîÄêfåŠr»vðN*ã¿oú¿·ŸÖïJ=e FÙÞ׿óßÝÆt“½iâf³„¬´À•åo»ùÛ‚ÚßkÇŸâ
+ºik th¶`‡ò{ØÃ:ø¡„T—% XÂnV¡Kàþâ{àC VIÝ?®©HØÁõì`ÄåËö“ú©+çN¶Ž˜Ïö¼¥kßßÓŽïo¬^¿‹Çoóô>¾…J4Ó/hûIn+ÙaIö[¨·G1™,%;um¾Z™ƒC¿Q,öµ‘©n†á³¯ÐÍB9íìÔ³ÓÏFAÅ#W¨(èè“O*%]ÓÒ55]{æn}s·Þ¹Ý?÷É'å6%Éì¡{ÉG÷/]¹Íšsß{¹÷é~š÷<ôGô{<ôý~Õøã†¹êv€WúeÏô•oz-+Ïtôx¿wúåý™ª¥dðKÇÎ^<Ó×~éªïÙÛª,;W§…káwÚî-û7”]Œ]vrJºìg[ý&(?moßÔ)»^¹<”}Ž‚]v{¬;>S*×\9²rô¡)–ñrnäÈ9è!{ÖÉ1e,û6P3Ù1¦ˆ•ÝÈ•mÅÅ‚}8ŲQû-cTKlىØ£[ÖqE¸XqÞrÙsyàéâ½{’N+ûÙr–Öçiuª&Íä1‡@= Nº×ÙE‘ä’
+ž÷#H¾§jEƒžx‚BEvT1bä%ãÊ ŸTTSv¥~€HEc¾ ’Ëùè@5WštE2œu¤‚‰¢U*.G9)*ÐvŒ¤jDðù¬ŽÔr‹ª)Á¤Õ›~ÐÇ”7‰-¬
+I)å\!Øãz «êꎋöHÂ)ß|d©xê6LyXé|8Š~jy¯ïñ¡Uo&ÙQi’õ¢ƒPÞ&\‚¸½,ïÐúHÑ ®t…Š:ð<ì’úŒ|ô^m”"ö1ïªùæåË»7¢)ÿÕÜ¢G[+šÈ¿v¬lá¡* R.Î¥×Õ!õ¦ñÔÕ } æn|náj»ì–«xË¡.AÖ"U·ßâú¿æ.áÓë@ÜûåÂÊŸJìÑ"æ.^5ÉPÊM“!’mWÕï¸tåkQDRD4'¬ «i~RÉ~3l¿±êÑÜ]÷Z·àE¦Œµ¤Zr-•èî€åéN
+ÍOû.§XŠíÅ÷²üÄ^r/W½œ–‚›ë"Ëâ¼±5Ö½‡·1vUdú íº^ü¦Ì?i(y§€cŒWS¹¾PÎ÷”nr¤òï‚Äõñ`‘
©À|e
+9×õ4· óv^‚öo:(Ã=dP«¸©r.q«Jq9%Òàm•yÆ/ƒÅÏ hVxj\;+Ô§à¼\ÕÐtêb•èÉš.%Ôý¾èO¨=)»ØŠÔãëþL²ùÿYöââaÀE}Iª¾W¢Y“uݦ-ñ]}[t%‹WÁèIˆ§åº–¤xäîKp®J]’D#+/È[?‚°ñ&Xü Ÿî£µòÎ25|¾xcmý°ÖiÅ-îya½®º¿U•_[Èj㇟