diff --git a/README.md b/README.md
index 1430b291..5aa3c8b5 100644
--- a/README.md
+++ b/README.md
@@ -48,7 +48,7 @@ More translations are welcome. See [instructions](https://github.com/tinode/chat
* End-to-End encryption.
* Emoji support is weak.
* Mentions, hashtags.
-* Previews not generated for videos, audio, links or docs.
+* Previews not generated for videos, links or docs.
## Other
diff --git a/css/base.css b/css/base.css
index a007ee9d..0b5e9d12 100644
--- a/css/base.css
+++ b/css/base.css
@@ -1121,7 +1121,6 @@ img.channel {
right: 0;
bottom: 0;
background-color: white;
- padding-left: 0.5px;
}
/* END of avatar box */
@@ -2324,7 +2323,7 @@ ul.tabbar li.active > a {
white-space: nowrap;
font-size: 90%;
max-width: 12rem;
- overflow-x: hidden;
+ overflow: hidden;
text-overflow: ellipsis;
}
@@ -2671,11 +2670,11 @@ ul.tabbar li.active > a {
.audio-player .material-icons.large {
font-size: 2.4rem;
- color: #667575;
+ color: #667575CC;
}
.audio-player .material-icons.disabled {
- color: #999;
+ color: #999C;
cursor: default;
}
@@ -2692,13 +2691,13 @@ ul.tabbar li.active > a {
display: flex;
align-items: center;
justify-content: center;
- color: #757575;
+ color: #757575CC;
font-size: small;
}
.audio-player .timer {
font-size: smaller;
- color: #666;
+ color: #666C;
}
/*
diff --git a/css/base.min.css b/css/base.min.css
index 2b5db594..9a5f74ce 100644
--- a/css/base.min.css
+++ b/css/base.min.css
@@ -1 +1 @@
-*{text-rendering:optimizeLegibility;box-sizing:border-box;font-family:Roboto,Arial,sans-serif;margin:0;padding:0}body,html{background-color:silver;box-shadow:inset 0 10rem #3949ab;color:#666;font-size:10pt;height:100%;overflow:hidden;width:100%}tt{font-family:Roboto Mono,Courier,monospace;white-space:nowrap}a{color:#2196f3;text-decoration:none}a:focus,a:hover{color:#0a6ebd;text-decoration:underline}a.danger{color:#d32f2f}a.danger:focus,a.danger:hover{color:#f44336}a.gray:focus,a.gray:hover{color:#999}form{line-height:1.5;padding:.5rem .75rem}form,label{font-size:1.1rem}label{margin-right:auto}label.small{color:#1e88e5;font-size:.95rem}img.avatar{border-radius:50%;height:100%;width:100%}button{border:1px solid #0000;border-radius:4px;box-shadow:0 1px 3px 0 #00000040;cursor:pointer;display:inline-block;font-family:inherit;font-size:1.05rem;font-weight:400;height:2.2rem;line-height:2.2rem;margin:0 .35rem;min-width:5rem;padding-left:1.2rem;padding-right:1.2rem;text-align:center;text-transform:uppercase;touch-action:manipulation;vertical-align:middle;white-space:nowrap}button[disabled],html input[disabled]{box-shadow:none;cursor:default;opacity:.65}button.round{border-radius:50%;box-shadow:0 2px .5rem 0 #00000040;height:3rem;line-height:3.5rem;margin:0;outline:none;padding:0;width:3rem;z-index:2}button.round.small{box-shadow:0 2px .35rem 0 #00000040;height:2rem;line-height:2rem;width:2rem}button:active,button:focus,button:hover{color:#fff}button:active{box-shadow:inset 0 3px .5rem rgba(0,0,0,.125)}button:active.round.small{box-shadow:inset 0 2px .35rem rgba(0,0,0,.125)}button.primary{background-color:#1e88e5;color:#fff}button.primary:active,button.primary:focus,button.primary:hover{background-color:#2962ff}button.secondary{background-color:#fff;color:#2196f3}button.secondary:active,button.secondary:focus,button.secondary:hover{background-color:#e3f2fd}button.outline{background-color:initial;border:1px solid silver;box-shadow:none;color:#2196f3}button.outline:active,button.outline:focus,button.outline:hover{background-color:#e8eaf6}input,textarea{background:#0000;border:none;color:#666;font-family:inherit;font-size:1.1rem;margin:.25rem 0;outline:none;padding:0 .125rem}input[type=email],input[type=password],input[type=search],input[type=text],textarea{border-bottom:1px solid #ccc;box-shadow:0 1px 0 #0000001a;height:2.5rem;transition:all .1s ease-in-out}input[type=email],input[type=password],input[type=text],textarea{width:100%}input[type=email]:focus,input[type=password]:focus,input[type=search]:focus,input[type=text]:focus,textarea:focus{border-bottom:1px solid #2196f3;box-shadow:0 1px 0 #2196f340}input[type=email].invalid,input[type=password].invalid,input[type=search].invalid,input[type=text].invalid,textarea.invalid{border-bottom:1px solid #e57373;box-shadow:0 1px 0 #e5737340}input[type=email]::placeholder,input[type=password]::placeholder,input[type=search]::placeholder,input[type=text]::placeholder,textarea::placeholder{color:#bbb;font-weight:lighter}input[type=password].with-visibility,input[type=text].with-visibility{margin-right:-2rem;padding-right:2rem}textarea{padding-top:.45rem;resize:none}textarea.inplace-edit{font-size:unset;height:unset}::-webkit-scrollbar{width:.6rem}::-webkit-scrollbar-track{background-color:#ffffff1a;-webkit-box-shadow:inset 0 0 6px #0003;box-shadow:inset 0 0 6px #0003}::-webkit-scrollbar-thumb{background-color:#0000004d}*{scrollbar-color:silver;scrollbar-width:thin}ul.menu{background-color:#fff;border-radius:.2rem;box-shadow:0 1px 6px #00000073;list-style:none;padding-bottom:.35rem;padding-top:.35rem;position:absolute;width:12rem;z-index:4}ul.menu>li{padding:.75rem .75rem .75rem 1.25rem}ul.menu>li:hover{background-color:#f5f5f5}ul.menu>li.separator{height:1px;margin:2px;padding:0}ul.menu>li.separator,ul.menu>li.separator:hover{background-color:#ccc}li .menuTrigger{background-color:inherit;border-radius:.7rem;height:1.4rem;line-height:1.4rem;opacity:0;position:absolute;right:.25rem;text-align:center;top:.25rem;width:1.4rem}li:hover .menuTrigger{opacity:.9}li:hover .menuTrigger a{color:#757575}div.alert-container{align-items:center;background:#f0f0f0d9;display:flex;height:100%;justify-content:center;position:absolute;width:100%;z-index:3}div.alert{background-color:#fff;border-radius:.3rem;box-shadow:.15rem .15rem 1.5rem #00000073;margin:auto 2rem;max-width:24rem;min-width:16rem;padding:1rem;position:relative;width:fit-content}div.alert-container .title{color:#2196f3;font-size:1.2rem;font-weight:500;padding:0 0 .35rem;width:100%}div.alert-container .title.with-control{align-items:center;display:flex;flex:none;justify-content:space-between;padding:.5rem .5rem 0}div.alert-container .content{padding:.5rem 0}div.trusted-badge{margin:.25rem 0}.blue{color:#2196f3!important}.lt-blue{color:#64b5f6!important}.verified-color{color:#03a9f4!important}.staff-color{color:#689f38!important}.danger-color{color:#ffc107!important}.green{color:#388e3c}.red{color:#d32f2f!important}.badge-inv{color:#fffd!important}.gray{color:#757575!important}.light-gray{color:#bbb!important}.large{font-size:120%}.small{font-size:90%}.float-right{position:absolute;right:.5rem}.hr{background-color:#f0f0f0;box-shadow:inset 0 .25rem .25rem -.25rem #00000026,inset 0 -.25rem .25rem -.25rem #00000026;display:block;height:.45rem;min-height:.3rem;width:100%}.hr.thin{height:.015rem}.ellipsized{overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.flat-button{align-items:center;display:flex;font-weight:400;height:2em;line-height:2em;margin:.15rem .35rem;text-align:center;text-transform:uppercase;touch-action:manipulation;vertical-align:middle;white-space:nowrap}.flat-button:focus,.flat-button:hover{text-decoration:none}.flat-button.faux{background-color:#eee;border:1px solid #999;border-radius:3px;display:inline-block;height:1.4em;line-height:1.4em;margin:.15rem;padding:0 .35rem;text-transform:none}.action-button{background-color:#fafafa;border-radius:50%;bottom:1rem;box-shadow:0 2px .5rem 0 #00000040;color:#999;display:block;font-size:1.8rem;height:3.25rem;margin:0;min-height:unset;min-width:unset;outline:none;padding:0;position:absolute;right:1rem;transition:all .15s;width:3.25rem;z-index:2}.action-button:focus,.action-button:hover{background-color:#f0f0f0;color:#888}.action-button:active{background-color:#eee;color:#777}.action-button.hidden{bottom:2.625rem;font-size:1px;height:1px;line-height:1px;opacity:0;right:2.625rem;width:1px}.group-focus{outline:none}#mountPoint{height:100%;padding-bottom:3rem;padding-top:1rem}#noscript-message{background-color:#fff;border-radius:.25rem;box-shadow:1px 2px .3rem gray;display:flex;flex-direction:column;margin-left:auto;margin-right:auto;margin-top:5rem;max-width:30rem;overflow:hidden;position:relative}#noscript-title{background-color:#2196f3;color:#bbdefb;font-size:120%;font-weight:bolder;padding:1rem}#noscript-content{padding:1rem}#app-container{background-color:#fff;border-radius:.25rem;box-shadow:1px 2px .3rem gray;display:flex;height:100%;margin-left:auto;margin-right:auto;max-width:84rem;overflow:hidden;position:relative}#sidepanel{flex-grow:0;flex-shrink:0.3;min-width:18rem;width:24rem}#sidepanel,#topic-view{display:flex;flex-direction:column;height:100%;position:relative}#topic-view{overflow-x:hidden;width:100%}#info-view{display:flex;flex-direction:column;flex-grow:0;flex-shrink:0.3;height:100%;min-width:18rem;width:24rem}.center-medium-text{align-items:center;display:flex;font-size:1.4rem;height:100%;justify-content:center;text-align:center;width:100%}.nodisplay{display:none!important}.quoted{margin-left:1rem}.space-right{margin-right:.25rem}.rounded-container{background-color:#fafafa;border-radius:.1rem;margin:.25rem;padding:.25rem;position:relative}.in-place-edit{border-bottom:1px dashed #ddd;cursor:pointer;display:inline-block;font-family:inherit;font-size:1rem;margin:.25rem .125rem 0;vertical-align:initial;width:100%}.in-place-edit.short{font-size:1.1rem;height:2.5rem;line-height:2.25}.in-place-edit.disabled{border-bottom:none;color:#888;cursor:default}.in-place-edit.placeholder{color:#bbb}.in-place-edit span{display:inline-block}.in-place-edit.short span{display:block;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}table.permission-editor{width:100%}table.permission-editor td{font-size:1.1rem;margin:.35rem 0;vertical-align:middle}table.permission-editor td.checkbox{color:#999;text-align:center}.permission-editor .material-icons{font-size:1.3rem;line-height:1.3rem}.material-icons.clickable{border-bottom:none;cursor:pointer}.clickable{border-bottom:1px dashed #ddd}.clean-clickable,.clickable,.image-clickable{cursor:pointer}.panel-title{font-size:1.4rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.panel-title.deleted{text-decoration:line-through}.caption-panel{align-items:center;box-shadow:0 1px 2px gray;display:flex;flex:none;height:4rem;overflow-x:hidden;padding:.5rem;white-space:nowrap;z-index:1}.dialog-buttons{display:flex;justify-content:flex-end;padding:.5rem}.dialog-buttons button{margin:0 .5rem}.avatar-box{flex-grow:0;flex-shrink:0;position:relative}.bot-form{display:flex;flex-direction:column;line-height:2rem;min-width:8rem;overflow:hidden}.bot-form div{min-height:2rem;vertical-align:middle}.bot-form button{background-color:#eef;color:#2196f3;display:inline-block;font-size:inherit;height:2rem;line-height:2rem;margin:.15rem;text-transform:none}.bot-form>div>button{width:auto}.bot-form button:active,.bot-form button:focus,.bot-form button:hover{background-color:#e3f2fd;outline:0}#side-caption-panel{background-color:#2196f3;color:#bbdefb}#side-caption-panel a{color:#bbdefb;line-height:1;padding-left:.5rem}#side-caption-panel :hover{color:#fff}#sidepanel-title{margin-left:.5rem;margin-right:auto}#self-avatar{border-radius:50%;flex:none;height:3rem;min-width:3rem;width:3rem}#self-avatar.avatar-box{font-size:1.8rem}#settings-form ul{list-style:none}#settings-form li{vertical-align:middle}#settings-form label{display:inline-block;padding-left:.5rem}input.search{text-indent:1.4rem}i.search{left:.6rem;position:absolute}.info-box{display:none;overflow:hidden;padding:1rem 1.5rem .75rem .5rem;position:relative}.info-box>span{line-height:1.35rem}.info-box .cancel{position:absolute;right:.25rem;top:.5rem}.info-box.error{background-color:#ffcdd2;border-bottom:1px solid #ffbfc8;color:#b71c1c;display:flex}.info-box.warning{background-color:#fff9c4;border-bottom:1px solid #fff59d;color:#6d4c41;display:flex}.info-box.info{background-color:#e1f5fe;border-bottom:1px solid #b3e5fc;color:#0288d1;display:flex}.info-box .cancel .material-icons{color:#757575;font-size:1rem}.info-box.error .cancel .material-icons{color:#b71c1c}.info-box .icon{display:block;margin-right:.5rem}.info-box .icon .material-icons{font-size:1.5rem}.info-box.warning .icon .material-icons{color:#fbc02d}.info-box.error .icon .material-icons{color:#ef5350}.info-box.info .icon .material-icons{color:#0288d1}.flex-column{display:flex;flex-direction:column;height:100%;overflow-x:hidden}.flex-column.narrow{height:auto}.scrollable-panel{height:100%;margin-bottom:auto;margin-top:.25rem;overflow-x:hidden;overflow-y:auto;scroll-behavior:smooth}.contact-box{list-style:none;overflow-x:hidden}.contact-box>li{background:linear-gradient(90deg,#0000 3.5rem,#eee 1px,#eee) 0 100% /100% 1px no-repeat,#fff;display:flex;flex-grow:0;flex-shrink:0;min-height:3.75rem;overflow-x:hidden;padding:.35rem .25rem .5rem .35rem;position:relative}.contact-box.small>li{min-height:2.5rem;padding:.25rem .25rem .35rem .35rem}.contact-box>li:last-child{background:#fff}.contact-box>li:hover{background-color:#eceff1}.contact-box>li.selected{background-color:#cfd8dc}.contact-box>li.action{border-bottom:none;min-height:2.5rem}.contact-box .text-box{overflow-x:hidden}.contact-box .contact-title{font-size:1.05rem;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.contact-box .contact-title.deleted{opacity:.66;text-decoration:line-through;text-decoration-thickness:.5px}.contact-box .contact-comment{font-weight:lighter}.contact-box .contact-comment,.contact-box .contact-comment>span{overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.contact-box .contact-comment b{font-weight:bolder}.contact-box .contact-comment .material-icons{margin-bottom:.2rem}.contact-box .avatar-box{font-size:1.8rem;height:3rem;margin-right:.35rem;min-height:3rem;min-width:3rem;overflow:hidden;padding:0;position:relative;width:3rem}.contact-box .avatar{border-radius:50%;height:3rem;width:3rem}.contact-box.small .avatar-box{font-size:1.2rem;height:2rem;min-height:2rem;min-width:2rem;width:2rem}.contact-box.small .avatar{height:2rem;width:2rem}.avatar.deleted{filter:grayscale(1);opacity:.75}.contact-box .avatar-box>.material-icons{display:flex;flex-direction:column;font-size:2.4rem;justify-content:space-around;line-height:3rem}.contact-box.small .avatar-box>.material-icons{font-size:1.6rem;line-height:2rem}.contact-box .text-box{display:flex;flex-direction:column;justify-content:space-around}.contact-box .text-box>div{align-items:center;display:flex;flex-direction:row}.contact-box .action-text{cursor:pointer;font-size:.95rem;line-height:2.5rem;margin:0 auto;text-align:center}img.channel{height:1rem;margin-left:.3rem;vertical-align:middle;width:1rem}.large img.channel{height:1.35rem;margin-bottom:.15rem;margin-left:.5rem;width:1.35rem}.avatar-box .online,.offline{border-radius:50%;bottom:.1rem;flex-shrink:0;height:.75rem;min-height:.75rem;min-width:.75rem;position:absolute;right:0;width:.75rem}.avatar-box .online{background-color:#4caf50}.avatar-box .offline{background-color:silver}.online.typing{animation:typing .5s infinite}@keyframes typing{0%,to{transform:translateX(0)}50%{transform:translateX(-.3rem)}}.contact-box .checkmark.material-icons{border:0 solid #0000;color:#0097a7;overflow:visible}.contact-box .checkmark.material-icons,.contact-box .deleted.material-icons{background-color:#fff;bottom:0;font-size:1.5rem;height:1.5rem;padding-left:.5px;position:absolute;right:0;width:1.5rem}.contact-box .deleted.material-icons{color:#999}#add-topic{bottom:1rem;position:absolute;right:1rem}.panel-form{display:flex;flex-direction:column;padding:0;position:relative}.panel-form-row{align-items:center;flex-shrink:0}.panel-form-column,.panel-form-row{display:flex;flex-grow:0;line-height:1.5;padding:.5rem .75rem;position:relative}.panel-form-column{flex-direction:column;overflow-x:hidden}.panel-form-column>.panel-form-column,.panel-form-row>.panel-form-column{flex-grow:1;padding:0!important}.panel-form-column>.panel-form-row,.panel-form-row>.panel-form-row{padding:0!important}.panel-form-column>.group{margin-bottom:.25rem;margin-top:.25rem}.avatar-upload{display:flex;flex-direction:column;flex-shrink:0;font-size:4.5rem;height:10.5rem;padding:0;position:relative;width:10rem}.avatar-upload.read-only{height:auto}.avatar-upload .clear-avatar{background-image:radial-gradient(#fff 40%,#0000 75%);font-size:1rem;opacity:0;position:absolute;right:0;top:0}.avatar-upload:hover .clear-avatar{opacity:1}.avatar-upload .avatar-box{height:10rem;position:relative;width:10rem}.avatar-upload .avatar-box>.material-icons{font-size:4rem;line-height:10rem;position:relative;vertical-align:middle}.avatar-upload:after{clear:both;content:".";display:block;height:0;visibility:hidden}.avatar-upload .blank{border:1px dashed #999;color:#999;flex-shrink:0;font-size:1rem;line-height:10rem;text-align:center;vertical-align:middle}.avatar-upload .blank,.avatar-upload img.preview{border-radius:50%;height:10rem;overflow:hidden;width:10rem}.avatar-upload img.preview:before{background:50% no-repeat url(../img/broken_image.png);border-radius:50%;color:#666;content:" ";display:flex;font-size:.9rem;font-weight:lighter;height:10rem;justify-content:center;left:0;position:absolute;top:0;width:10rem}.avatar-upload .inputfile.hidden{height:.1px;opacity:0;overflow:hidden;position:absolute;width:.1px}.avatar-upload .inputfile+label.round{align-items:center;background-color:#fafafa;border-radius:50%;bottom:0;box-shadow:0 1px 4px #0006;cursor:pointer;display:flex;height:3rem;justify-content:center;line-height:3rem;position:absolute;right:0;width:3rem;z-index:1}.avatar-upload .inputfile:focus+label.round{outline:none}.avatar-upload .inputfile+label:hover,.avatar-upload .inputfile:focus+label{background-color:#e3f2fd;color:#42a5f5}#topic-caption-panel{background-color:#b0bec5}#topic-caption-panel a{color:#757575;text-decoration:none}#topic-caption-panel :hover{color:#000}#topic-caption-panel .avatar-box{font-size:1.8rem;height:3rem;margin-right:.35rem;min-width:3rem;position:relative;width:3rem}#topic-caption-panel .avatar-box>.material-icons{font-size:2.4rem;line-height:3rem}#topic-title-group{overflow-x:hidden}#hide-message-view{display:block;margin-right:.35rem}#topic-users{margin-left:auto;margin-right:1rem}#topic-users .avatar-box{display:inline-block;font-size:1rem;height:1.8rem;margin-right:.2rem;min-height:1.8rem;min-width:1.8rem;width:1.8rem}#topic-users .avatar-box>.material-icons{font-size:1.4rem;line-height:1.8rem}#topic-users>span{line-height:2rem;vertical-align:top}#messages-panel{background-color:#eceff1;background-image:url(../img/bg_messages.png);height:100%;overflow-y:scroll;padding:.75rem;position:relative}#messages-container{height:100%;overflow-y:hidden;position:relative}#write-only-background{background-image:repeating-linear-gradient(45deg,#ffffff80,#ffffff80 .5rem,#fffc 0,#fffc 1rem);height:100%;left:0;position:absolute;top:0;width:100%}#write-only-note{height:auto;top:50%;transform:translate(-50%,-50%);width:auto}#peer-messaging-disabled-note,#write-only-note{background-color:#fff;border-radius:.5rem;box-shadow:0 1px .5px #0000001f;color:#666;left:50%;line-height:2rem;padding:.75rem 1.25rem;position:absolute;text-align:center}#peer-messaging-disabled-note{bottom:4.3rem;transform:translate(-50%);width:fit-content}#send-message-panel{align-items:center;background-color:#eceff1;display:flex;flex:none;min-height:4rem;padding:.4rem .4rem .4rem .6rem;z-index:2}#send-message-panel #writing-disabled{font-size:1.2rem;text-align:center;width:100%}#send-message-wrapper{background-color:#eceff1;box-shadow:0 -2px 3px -1px #0000001a;z-index:2}#sendMessage{overflow:hidden;overflow-wrap:break-word}#send-message-panel .material-icons{font-size:1.6rem;min-width:2rem}#send-message-panel .material-icons.secondary,.material-icons.disabled{color:#999!important}#send-message-panel .material-icons.secondary:hover{color:#2196f3!important}.accept-invite-panel{background-color:#eceff1;box-shadow:0 -2px 3px -1px #0000001a;width:100%;z-index:1}.accept-invite-panel .title{font-size:1.2rem;padding:.75rem}.accept-invite-panel .footer{background-color:#fafafa;padding-bottom:.35rem;text-align:center;white-space:nowrap}.accept-invite-panel button{border:1px solid #0000;box-shadow:0 1px 2px 0 #00000040;font-size:1rem;height:2em;line-height:2em;margin:.25rem}#dummy-view{align-items:center;background-color:#e0f7fa;display:flex;height:100%;justify-content:center;width:100%}#dummy-view a{display:block;text-align:center;text-decoration:none}#image-preview{background-color:#ffffffe6;display:flex;flex-direction:column;height:100%;left:0;position:absolute;top:0;width:100%;z-index:2}#image-preview-caption-panel{background-color:#eceff1;box-shadow:0 1px 2px silver;display:flex;height:4.6rem;justify-content:space-between;line-height:2.5rem;padding:1rem .75rem 0;z-index:3}#image-preview-caption-panel a{color:#757575;text-decoration:none}#image-preview-caption-panel a:hover{color:#000}#image-preview-container{align-items:center;display:flex;height:100%;justify-content:space-around;overflow:hidden;width:100%}#image-preview-footer{background-color:#eceff1;box-shadow:0 -2px 3px -1px #0000001a;display:flex;height:3.2rem;justify-content:space-around;line-height:1.5rem}#image-preview-container .material-icons{font-size:6rem}.chat-box{list-style:none;margin:0 .5rem;padding:0 0 3.5rem;scroll-behavior:smooth}.chat-box.group{margin-left:-.4rem}.chat-box li{align-items:flex-end;display:flex;margin:0;padding:0}.chat-box .right{justify-content:flex-end}.bubble{border-radius:.5rem;box-shadow:0 1px .5px #0000001f;color:#212121;display:flex;height:auto;margin:0;max-width:36rem;min-width:9rem;padding:.75rem .5rem;position:relative;text-align:left;transition:background-color .5s ease-out;transition-delay:.3s}.chat-box li.single{margin-bottom:.75rem;margin-top:.25rem}.chat-box li.first{margin-bottom:.15rem;margin-top:.25rem}.chat-box li.middle{margin-bottom:.15rem;margin-top:.15rem}.chat-box li.last{margin-bottom:.75rem;margin-top:.15rem}.left .bubble{background-color:#c5e1a5;margin-right:.5rem}.left.flash .bubble{background-color:#94a97c}.left .bubble.tip{border-bottom-left-radius:0}.right .bubble{background-color:#fafafa;margin-left:1.75rem}.right.flash .bubble{background-color:#ccc}.right .bubble.tip{border-bottom-right-radius:0}.chat-box .meta{justify-content:center;margin-bottom:.5rem;margin-top:.5rem}.chat-box .meta .bubble{color:#666;min-width:unset}.meta .bubble.deleted{background-color:#e3f2fd;padding:.75rem .75rem .5rem}.meta .bubble.date{background-color:#f4f4f4a8;font-size:smaller;padding:.5rem}.left .bubble.tip:before{background-color:#c5e1a5;border-bottom-left-radius:.3rem;bottom:0;box-shadow:0 1px .5px #0000001f;clip-path:polygon(100% 0,0 110%,100% 110%);-webkit-clip-path:polygon(100% 0,0 110%,100% 110%);content:"";height:.85rem;left:-.8rem;position:absolute;-moz-transition:background-color .5s ease-out;transition:background-color .5s ease-out;transition-delay:.3s;width:.85rem}.left.flash .bubble.tip:before{background-color:#94a97c}.right .bubble.tip:before{background-color:#fafafa;border-bottom-right-radius:.3rem;bottom:0;box-shadow:0 1px .5px #0000001f;clip-path:polygon(0 0,100% 110%,0 110%);-webkit-clip-path:polygon(0 0,100% 110%,0 110%);content:"";height:.85rem;left:99.8%;position:absolute;-moz-transition:background-color .5s ease-out;transition:background-color .5s ease-out;transition-delay:.3s;width:.85rem}.right.flash .bubble.tip:before{background-color:#ccc}.chat-box .avatar-box{font-size:.8rem;height:1.4rem;margin-bottom:.8rem;margin-right:.8rem;min-height:1.4rem;min-width:1.4rem;position:relative;width:1.4rem}.bubble div.content-meta{width:100%}.bubble div.message-content{margin:0;max-width:36rem;overflow-wrap:break-word;padding:0 .75rem;position:relative;width:100%}.bubble div.message-content:after{clear:both;content:".";display:block;height:0;visibility:hidden}.chat-box .timestamp-padding{display:inline-block;height:0;width:4rem}.chat-box .timestamp{float:right;position:relative;top:.35rem;user-select:none;white-space:nowrap}.chat-box .author,.chat-box .timestamp{color:#777;font-size:80%}.image-preview,.inline-image{border-radius:.1rem;overflow:hidden;position:relative}.inline-image{max-height:24rem;max-width:36rem}.inline-image>.rounded-container{border-left:.25rem solid #0000;border-right:.25rem solid #0000;bottom:2rem;margin:.25rem auto;position:relative}img.image-preview:before,img.inline-image:before{background:50% no-repeat #ccc url(../img/broken_image.png);color:#666;display:flex;font-size:.9rem;font-weight:lighter;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%}img.inline-image:before{background-size:2rem 2rem;content:attr(alt)}img.image-preview:before{background-size:10rem 10rem;content:" "}.attachment{display:flex}.attachment:last-of-type{margin-bottom:-.45rem}#info-caption-panel{background-color:#b0bec5}#info-caption-panel a{color:#757575;line-height:1;text-decoration:none}#info-caption-panel :hover{color:#000}#info-title{margin-right:auto}#group-manager{display:flex;flex-direction:column;height:100%;overflow-y:hidden;position:relative}#group-manager-buttons{background-color:#eceff1;border-left:1px solid #ccc;box-shadow:0 -1px #0000001a;display:flex;height:4rem;justify-content:space-around;padding:.4rem;z-index:2}ul.tabbar{background:#eee;display:flex;flex-grow:0;flex-shrink:0;list-style:none;margin:0;overflow:hidden;padding:0 0 0 1rem;width:100%}ul.tabbar>li{box-shadow:inset 0 -2px 2.5px -1px #00000040;height:2.4rem;position:relative}ul.tabbar li.active{background:#fff}ul.tabbar li:after{background:#ccc;bottom:0;content:"";height:.1rem;left:0;position:absolute;width:100%}ul.tabbar li.active:after{animation:tabbar-border-expand .2s cubic-bezier(.4,0,.4,1) 0s alternate forwards;background:#2196f3;bottom:0;content:"";height:.15rem;left:0;position:absolute}@keyframes tabbar-border-expand{0%{opacity:0;width:0}to{opacity:1;width:100%}}ul.tabbar>li>a{color:#2196f399;font-size:1.3rem;font-variant:small-caps;font-weight:400;line-height:2.4rem;overflow:hidden;padding-left:1rem;padding-right:1rem;position:relative;text-align:center;text-decoration:none}ul.tabbar li.active>a{color:#2196f3}.unread{background-color:#0097a7;border-radius:50%;color:#fff;display:inline-block;font-size:.75rem;font-weight:bolder;height:1.35rem;line-height:1.45rem;margin-left:.5rem;text-align:center;vertical-align:middle;width:1.35rem}.material-icons.as-badge{color:#bbb;font-size:1.25rem;padding-left:.2rem}.badge{align-self:flex-start;background-color:#e8e8e8;border:1px solid silver;border-radius:.2rem;color:#666;display:inline-block;font-family:Roboto Mono,Courier,monospace,sans-serif;font-size:.8rem;margin:.05rem .1rem;padding:.05rem .25rem}.badge.green{background-color:#efe;border-color:#aca;color:#383}.badge.yellow{background-color:#ffe;border-color:#cc9;color:#660}.badge.blue{background-color:#eef;border-color:#aad;color:#339}.badge.red{background-color:#fee;border-color:#c99;color:#933}.badge.magenta{background-color:#fef;border-color:#c9c;color:#939}.lettertile{border-radius:50%;padding-bottom:100%;width:100%}.lettertile>div{align-items:center;border-radius:50%;bottom:0;color:#fafafacc;display:flex;flex-grow:0;flex-shrink:0;justify-content:center;left:0;line-height:1;padding-top:.1em;position:absolute;right:0;text-align:center;text-transform:uppercase;top:0}.lettertile:hover{color:#fff}.lettertile.disabled{opacity:.5}.lt-bg-0{background-color:#ef9a9a}.lt-bg-1{background-color:#90caf9}.lt-bg-2{background-color:#b0bec5}.lt-bg-3{background-color:#b39ddb}.lt-bg-4{background-color:#ffab91}.lt-bg-5{background-color:#a5d6a7}.lt-bg-6{background-color:#eee}.lt-bg-7{background-color:#e6ee9c}.lt-bg-8{background-color:#c5e1a5}.lt-bg-9{background-color:#f0e57d}.lt-bg-10{background-color:#f48fb1}.lt-bg-11{background-color:#9fa8da}.lt-bg-12{background-color:#ffe082}.lt-bg-13{background-color:#bcaaa4}.lt-bg-14{background-color:#80deea}.lt-bg-15{background-color:#ce93d8}.dk-bg-0{background-color:#c62828}.dk-bg-1{background-color:#ad1457}.dk-bg-2{background-color:#6a1b9a}.dk-bg-3{background-color:#4527a0}.dk-bg-4{background-color:#283593}.dk-bg-5{background-color:#1565c0}.dk-bg-6{background-color:#0277bd}.dk-bg-7{background-color:#00838f}.dk-bg-8{background-color:#00695c}.dk-bg-9{background-color:#2e7d32}.dk-bg-10{background-color:#558b2f}.dk-bg-11{background-color:#9e9d24}.dk-bg-12{background-color:#f9a825}.dk-bg-13{background-color:#ff8f00}.dk-bg-14{background-color:#ef6c00}.dk-bg-15{background-color:#d84315}.lt-fg-0{color:#ef9a9a!important}.lt-fg-1{color:#90caf9!important}.lt-fg-2{color:#b0bec5!important}.lt-fg-3{color:#b39ddb!important}.lt-fg-4{color:#ffab91!important}.lt-fg-5{color:#a5d6a7!important}.lt-fg-6{color:#eee!important}.lt-fg-7{color:#e6ee9c!important}.lt-fg-8{color:#c5e1a5!important}.lt-fg-9{color:#f0e57d!important}.lt-fg-10{color:#f48fb1!important}.lt-fg-11{color:#9fa8da!important}.lt-fg-12{color:#ffe082!important}.lt-fg-13{color:#bcaaa4!important}.lt-fg-14{color:#80deea!important}.lt-fg-15{color:#ce93d8!important}.dk-fg-0{color:#c62828!important}.dk-fg-1{color:#ad1457!important}.dk-fg-2{color:#6a1b9a!important}.dk-fg-3{color:#4527a0!important}.dk-fg-4{color:#283593!important}.dk-fg-5{color:#1565c0!important}.dk-fg-6{color:#0277bd!important}.dk-fg-7{color:#00838f!important}.dk-fg-8{color:#00695c!important}.dk-fg-9{color:#2e7d32!important}.dk-fg-10{color:#558b2f!important}.dk-fg-11{color:#9e9d24!important}.dk-fg-12{color:#f9a825!important}.dk-fg-13{color:#ff8f00!important}.dk-fg-14{color:#ef6c00!important}.dk-fg-15{color:#d84315!important}.material-icons{font-size:1.4rem;line-height:1;text-align:center;vertical-align:middle}.material-icons.small{font-size:1rem}.material-icons.big{font-size:2.4rem}.material-icons.huge{font-size:4rem}#self-avatar .material-icons{font-size:2.4rem;line-height:3rem}.avatar-box .material-icons{border-radius:50%;color:#fafafacc;height:inherit;width:inherit}.chip-input{align-items:center;background:#0000;border-bottom:1px solid #ccc;box-shadow:0 1px 0 #0000001a;color:#666;cursor:text;display:flex;flex-grow:1;flex-wrap:wrap;font-size:1.1rem;font-weight:400;justify-content:flex-start;margin:.25rem 0;max-height:10rem;min-height:4rem;outline:none;overflow-y:scroll;text-align:center;transition:all .1s ease-in-out}.chip-input.focused{border-bottom:1px solid #2196f3;box-shadow:0 1px 0 #2196f340}.chip-input>input[type=text]{border:none;box-shadow:none;display:inline-block;flex:1 0 auto;min-width:4rem;width:auto}.chip,.chip-input>input[type=text]{height:1.8rem;line-height:1.8;margin:.125rem}.chip{align-items:center;background-color:#eee;border-radius:.9rem;display:flex;flex:0 0 auto;font-size:90%;max-width:12rem}.chip,.chip>span{overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.chip.invalid{background-color:#fee;color:#c66}.chip>a{background-color:#aaa;border-radius:50%;color:#eee;display:inline-block;height:1.175rem;line-height:1.15;margin:.3rem;min-width:1.175rem;text-decoration:none;width:1.175rem}.chip>a:focus,.chip>a:hover{background-color:#bbb;color:#fff;text-decoration:none}.chip .avatar-box{font-size:1rem;height:1.8rem;margin-right:.2rem;min-height:1.8rem;min-width:1.8rem;position:relative;width:1.8rem}.chip .avatar-box .material-icons{font-size:1.4rem;line-height:1.8rem}.chip .spacer{display:inline-block;height:1.175rem;margin:.3rem;width:.25rem}.load-spinner-box{--size-small:2.5rem;--size-large:4rem;background-color:#fff;border-radius:50%;box-shadow:.1rem .1rem .15rem 1px #00000040;height:var(--size-small);left:0;margin-left:auto;margin-right:auto;padding:.25rem;position:absolute;right:0;top:5rem;width:var(--size-small);z-index:2}.load-spinner-box.large{height:var(--size-large);width:var(--size-large)}.load-spinner-box.clear{background-color:#fff8;-x-box-shadow:none;box-shadow:.1rem .1rem .15rem 1px #0000001f}.load-spinner-box.centered{top:calc(var(--size-small)/2 - .25rem)}.load-spinner-box.large.centered{top:calc(var(--size-large)/2 - .25rem)}.loader-spinner{animation:spin 1.5s linear infinite;border:.35rem solid #f3f3f3;border-radius:50%;border-top-color:#1e88e5;height:2rem;width:2rem}.load-spinner-box.large .loader-spinner{height:3.5rem;width:3.5rem}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.uploader{display:flex}.uploader>div{background-color:#cfd8dc;border-radius:.1rem;height:.6rem;line-height:0;margin:.35rem;padding:.15rem;position:relative;width:6rem}.uploader>div>span{background-color:#1e88e5;border-radius:.08rem;display:inline-block;height:.3rem}.highlight{color:teal;font-weight:bolder}.highlight .preview{color:#5f9ea0;font-weight:inherit}.cropper{align-self:center;height:21rem;margin:1rem auto auto;transform:translateZ(0)}.cropper,.cropper .bounding-box{border-radius:.25rem;position:relative;width:18rem}.cropper .bounding-box{background-color:#999;border:2px solid #1e88e5;box-shadow:1px 1px 3px grey;height:18rem;overflow:hidden;z-index:1}.cropper .preview{max-height:none;max-width:none;position:absolute;z-index:-1}.cropper .cutout{border:1px dashed #999;bottom:0;box-shadow:0 0 150rem 150rem #e6f6ffa8;height:17rem;left:0;margin:auto;position:absolute;right:0;top:0;width:17rem;z-index:0}.cropper .cutout.circle{border-radius:50%}.cropper .overlay{cursor:move;position:absolute;touch-action:none;z-index:1}.cropper .zoom-wrapper{height:2rem;margin:1rem auto;text-align:center;width:80%}.cropper .zoom{box-shadow:none;pointer-events:none;z-index:2}.cropper .zoom:focus{outline:none}.reply-quote{border-left:.25rem solid #039be5;border-radius:.25rem;color:#666;cursor:pointer;font-weight:lighter;line-height:1.5em;padding:.15rem .5rem .25rem;position:relative}.chat-box .bubble .reply-quote{margin:.15rem -.75rem .3rem}.chat-box .bubble .reply-quote:first-child{margin-top:-.25rem}.chat-box .left .reply-quote{background-color:#fff6}.chat-box .right .reply-quote{background-color:#8080801f}.reply-quote .inline-image{margin-bottom:.1rem;vertical-align:middle}.reply-quote img.inline-image:before{content:""}#reply-quote-preview{align-items:center;display:flex}#reply-quote-preview .reply-quote{background-color:#fafafa;cursor:auto;margin:.35rem .5rem 0 0;width:100%}#reply-quote-preview .cancel{min-width:2.4rem;text-align:center}#reply-quote-preview .inline-image{background-color:#ccc}#reply-quote-preview img.inline-image:before{content:""}#send-message-panel #reply-quote-preview{width:100%}#send-message-panel #reply-quote-preview .reply-quote{margin-bottom:.35rem}.forwarding-quote{font-size:200%;line-height:200%}.mention{font-weight:500}.forward-dialog{background-color:#fff;border-radius:.3rem;box-shadow:.15rem .15rem 1.5rem #00000073;height:80%;margin:auto 1rem;overflow:hidden;padding:.5rem;position:relative;width:24rem}.forward-dialog .scrollable-panel{height:80%}.audio{align-items:center;background-color:#eee;border-radius:1.5rem;display:flex;flex:none;height:3rem;margin-left:auto}.audio canvas{height:2.6rem;margin-right:2rem;width:14rem}.audio canvas.playback{margin-right:0}.audio .duration{font-size:large}.audio-player{align-items:center;display:flex}.audio-player .material-icons.large{color:#667575;font-size:2.4rem}.audio-player .material-icons.disabled{color:#999;cursor:default}.audio-player .playback{height:2.6rem;width:14rem}.audio-player canvas.playback{display:block}.audio-player div.playback{align-items:center;color:#757575;display:flex;font-size:small;justify-content:center}.audio-player .timer{color:#666;font-size:smaller}@media (max-width:960px){#mountPoint{padding:0}}@media (max-width:640px){#app-container{border-radius:0;box-shadow:none;width:100%}#info-view,#sidepanel{width:100%}.forward-dialog{border-radius:.3rem .3rem 0 0;margin:auto 0 0;width:100%}li .menuTrigger{opacity:.3}}#video-container{display:flex;flex-direction:column;height:100%!important;height:80%;justify-content:center;margin:auto;width:85%}video{width:100%}.video-container-panel{-ms-flex-align:center!important;align-items:center!important;margin-top:10%;position:relative}.video-elem{float:left;position:relative;width:50%;z-index:0}.video-title{background-color:#fff;bottom:0;position:absolute;right:0;z-index:1}#video-container-controls{display:flex;justify-content:center;padding:20px}.video-call-accept{background-color:green;border-radius:10px}.video-call-hangup{background-color:red;border-radius:10px}.video-call-toggle-media{background-color:gray;border-radius:10px}.incoming-call-title{padding:10px;text-align:center}.incoming-call-badges{text-align:center}.incoming-call-actions{padding:20px;text-align:center}
\ No newline at end of file
+*{text-rendering:optimizeLegibility;box-sizing:border-box;font-family:Roboto,Arial,sans-serif;margin:0;padding:0}body,html{background-color:silver;box-shadow:inset 0 10rem #3949ab;color:#666;font-size:10pt;height:100%;overflow:hidden;width:100%}tt{font-family:Roboto Mono,Courier,monospace;white-space:nowrap}a{color:#2196f3;text-decoration:none}a:focus,a:hover{color:#0a6ebd;text-decoration:underline}a.danger{color:#d32f2f}a.danger:focus,a.danger:hover{color:#f44336}a.gray:focus,a.gray:hover{color:#999}form{line-height:1.5;padding:.5rem .75rem}form,label{font-size:1.1rem}label{margin-right:auto}label.small{color:#1e88e5;font-size:.95rem}img.avatar{border-radius:50%;height:100%;width:100%}button{border:1px solid #0000;border-radius:4px;box-shadow:0 1px 3px 0 #00000040;cursor:pointer;display:inline-block;font-family:inherit;font-size:1.05rem;font-weight:400;height:2.2rem;line-height:2.2rem;margin:0 .35rem;min-width:5rem;padding-left:1.2rem;padding-right:1.2rem;text-align:center;text-transform:uppercase;touch-action:manipulation;vertical-align:middle;white-space:nowrap}button[disabled],html input[disabled]{box-shadow:none;cursor:default;opacity:.65}button.round{border-radius:50%;box-shadow:0 2px .5rem 0 #00000040;height:3rem;line-height:3.5rem;margin:0;outline:none;padding:0;width:3rem;z-index:2}button.round.small{box-shadow:0 2px .35rem 0 #00000040;height:2rem;line-height:2rem;width:2rem}button:active,button:focus,button:hover{color:#fff}button:active{box-shadow:inset 0 3px .5rem rgba(0,0,0,.125)}button:active.round.small{box-shadow:inset 0 2px .35rem rgba(0,0,0,.125)}button.primary{background-color:#1e88e5;color:#fff}button.primary:active,button.primary:focus,button.primary:hover{background-color:#2962ff}button.secondary{background-color:#fff;color:#2196f3}button.secondary:active,button.secondary:focus,button.secondary:hover{background-color:#e3f2fd}button.outline{background-color:initial;border:1px solid silver;box-shadow:none;color:#2196f3}button.outline:active,button.outline:focus,button.outline:hover{background-color:#e8eaf6}input,textarea{background:#0000;border:none;color:#666;font-family:inherit;font-size:1.1rem;margin:.25rem 0;outline:none;padding:0 .125rem}input[type=email],input[type=password],input[type=search],input[type=text],textarea{border-bottom:1px solid #ccc;box-shadow:0 1px 0 #0000001a;height:2.5rem;transition:all .1s ease-in-out}input[type=email],input[type=password],input[type=text],textarea{width:100%}input[type=email]:focus,input[type=password]:focus,input[type=search]:focus,input[type=text]:focus,textarea:focus{border-bottom:1px solid #2196f3;box-shadow:0 1px 0 #2196f340}input[type=email].invalid,input[type=password].invalid,input[type=search].invalid,input[type=text].invalid,textarea.invalid{border-bottom:1px solid #e57373;box-shadow:0 1px 0 #e5737340}input[type=email]::placeholder,input[type=password]::placeholder,input[type=search]::placeholder,input[type=text]::placeholder,textarea::placeholder{color:#bbb;font-weight:lighter}input[type=password].with-visibility,input[type=text].with-visibility{margin-right:-2rem;padding-right:2rem}textarea{padding-top:.45rem;resize:none}textarea.inplace-edit{font-size:unset;height:unset}::-webkit-scrollbar{width:.6rem}::-webkit-scrollbar-track{background-color:#ffffff1a;-webkit-box-shadow:inset 0 0 6px #0003;box-shadow:inset 0 0 6px #0003}::-webkit-scrollbar-thumb{background-color:#0000004d}*{scrollbar-color:silver;scrollbar-width:thin}ul.menu{background-color:#fff;border-radius:.2rem;box-shadow:0 1px 6px #00000073;list-style:none;padding-bottom:.35rem;padding-top:.35rem;position:absolute;width:12rem;z-index:4}ul.menu>li{padding:.75rem .75rem .75rem 1.25rem}ul.menu>li:hover{background-color:#f5f5f5}ul.menu>li.separator{height:1px;margin:2px;padding:0}ul.menu>li.separator,ul.menu>li.separator:hover{background-color:#ccc}li .menuTrigger{background-color:inherit;border-radius:.7rem;height:1.4rem;line-height:1.4rem;opacity:0;position:absolute;right:.25rem;text-align:center;top:.25rem;width:1.4rem}li:hover .menuTrigger{opacity:.9}li:hover .menuTrigger a{color:#757575}div.alert-container{align-items:center;background:#f0f0f0d9;display:flex;height:100%;justify-content:center;position:absolute;width:100%;z-index:3}div.alert{background-color:#fff;border-radius:.3rem;box-shadow:.15rem .15rem 1.5rem #00000073;margin:auto 2rem;max-width:24rem;min-width:16rem;padding:1rem;position:relative;width:fit-content}div.alert-container .title{color:#2196f3;font-size:1.2rem;font-weight:500;padding:0 0 .35rem;width:100%}div.alert-container .title.with-control{align-items:center;display:flex;flex:none;justify-content:space-between;padding:.5rem .5rem 0}div.alert-container .content{padding:.5rem 0}div.trusted-badge{margin:.25rem 0}.blue{color:#2196f3!important}.lt-blue{color:#64b5f6!important}.verified-color{color:#03a9f4!important}.staff-color{color:#689f38!important}.danger-color{color:#ffc107!important}.green{color:#388e3c}.red{color:#d32f2f!important}.badge-inv{color:#fffd!important}.gray{color:#757575!important}.light-gray{color:#bbb!important}.large{font-size:120%}.small{font-size:90%}.float-right{position:absolute;right:.5rem}.hr{background-color:#f0f0f0;box-shadow:inset 0 .25rem .25rem -.25rem #00000026,inset 0 -.25rem .25rem -.25rem #00000026;display:block;height:.45rem;min-height:.3rem;width:100%}.hr.thin{height:.015rem}.ellipsized{overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.flat-button{align-items:center;display:flex;font-weight:400;height:2em;line-height:2em;margin:.15rem .35rem;text-align:center;text-transform:uppercase;touch-action:manipulation;vertical-align:middle;white-space:nowrap}.flat-button:focus,.flat-button:hover{text-decoration:none}.flat-button.faux{background-color:#eee;border:1px solid #999;border-radius:3px;display:inline-block;height:1.4em;line-height:1.4em;margin:.15rem;padding:0 .35rem;text-transform:none}.action-button{background-color:#fafafa;border-radius:50%;bottom:1rem;box-shadow:0 2px .5rem 0 #00000040;color:#999;display:block;font-size:1.8rem;height:3.25rem;margin:0;min-height:unset;min-width:unset;outline:none;padding:0;position:absolute;right:1rem;transition:all .15s;width:3.25rem;z-index:2}.action-button:focus,.action-button:hover{background-color:#f0f0f0;color:#888}.action-button:active{background-color:#eee;color:#777}.action-button.hidden{bottom:2.625rem;font-size:1px;height:1px;line-height:1px;opacity:0;right:2.625rem;width:1px}.group-focus{outline:none}#mountPoint{height:100%;padding-bottom:3rem;padding-top:1rem}#noscript-message{background-color:#fff;border-radius:.25rem;box-shadow:1px 2px .3rem gray;display:flex;flex-direction:column;margin-left:auto;margin-right:auto;margin-top:5rem;max-width:30rem;overflow:hidden;position:relative}#noscript-title{background-color:#2196f3;color:#bbdefb;font-size:120%;font-weight:bolder;padding:1rem}#noscript-content{padding:1rem}#app-container{background-color:#fff;border-radius:.25rem;box-shadow:1px 2px .3rem gray;display:flex;height:100%;margin-left:auto;margin-right:auto;max-width:84rem;overflow:hidden;position:relative}#sidepanel{flex-grow:0;flex-shrink:0.3;min-width:18rem;width:24rem}#sidepanel,#topic-view{display:flex;flex-direction:column;height:100%;position:relative}#topic-view{overflow-x:hidden;width:100%}#info-view{display:flex;flex-direction:column;flex-grow:0;flex-shrink:0.3;height:100%;min-width:18rem;width:24rem}.center-medium-text{align-items:center;display:flex;font-size:1.4rem;height:100%;justify-content:center;text-align:center;width:100%}.nodisplay{display:none!important}.quoted{margin-left:1rem}.space-right{margin-right:.25rem}.rounded-container{background-color:#fafafa;border-radius:.1rem;margin:.25rem;padding:.25rem;position:relative}.in-place-edit{border-bottom:1px dashed #ddd;cursor:pointer;display:inline-block;font-family:inherit;font-size:1rem;margin:.25rem .125rem 0;vertical-align:initial;width:100%}.in-place-edit.short{font-size:1.1rem;height:2.5rem;line-height:2.25}.in-place-edit.disabled{border-bottom:none;color:#888;cursor:default}.in-place-edit.placeholder{color:#bbb}.in-place-edit span{display:inline-block}.in-place-edit.short span{display:block;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}table.permission-editor{width:100%}table.permission-editor td{font-size:1.1rem;margin:.35rem 0;vertical-align:middle}table.permission-editor td.checkbox{color:#999;text-align:center}.permission-editor .material-icons{font-size:1.3rem;line-height:1.3rem}.material-icons.clickable{border-bottom:none;cursor:pointer}.clickable{border-bottom:1px dashed #ddd}.clean-clickable,.clickable,.image-clickable{cursor:pointer}.panel-title{font-size:1.4rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.panel-title.deleted{text-decoration:line-through}.caption-panel{align-items:center;box-shadow:0 1px 2px gray;display:flex;flex:none;height:4rem;overflow-x:hidden;padding:.5rem;white-space:nowrap;z-index:1}.dialog-buttons{display:flex;justify-content:flex-end;padding:.5rem}.dialog-buttons button{margin:0 .5rem}.avatar-box{flex-grow:0;flex-shrink:0;position:relative}.bot-form{display:flex;flex-direction:column;line-height:2rem;min-width:8rem;overflow:hidden}.bot-form div{min-height:2rem;vertical-align:middle}.bot-form button{background-color:#eef;color:#2196f3;display:inline-block;font-size:inherit;height:2rem;line-height:2rem;margin:.15rem;text-transform:none}.bot-form>div>button{width:auto}.bot-form button:active,.bot-form button:focus,.bot-form button:hover{background-color:#e3f2fd;outline:0}#side-caption-panel{background-color:#2196f3;color:#bbdefb}#side-caption-panel a{color:#bbdefb;line-height:1;padding-left:.5rem}#side-caption-panel :hover{color:#fff}#sidepanel-title{margin-left:.5rem;margin-right:auto}#self-avatar{border-radius:50%;flex:none;height:3rem;min-width:3rem;width:3rem}#self-avatar.avatar-box{font-size:1.8rem}#settings-form ul{list-style:none}#settings-form li{vertical-align:middle}#settings-form label{display:inline-block;padding-left:.5rem}input.search{text-indent:1.4rem}i.search{left:.6rem;position:absolute}.info-box{display:none;overflow:hidden;padding:1rem 1.5rem .75rem .5rem;position:relative}.info-box>span{line-height:1.35rem}.info-box .cancel{position:absolute;right:.25rem;top:.5rem}.info-box.error{background-color:#ffcdd2;border-bottom:1px solid #ffbfc8;color:#b71c1c;display:flex}.info-box.warning{background-color:#fff9c4;border-bottom:1px solid #fff59d;color:#6d4c41;display:flex}.info-box.info{background-color:#e1f5fe;border-bottom:1px solid #b3e5fc;color:#0288d1;display:flex}.info-box .cancel .material-icons{color:#757575;font-size:1rem}.info-box.error .cancel .material-icons{color:#b71c1c}.info-box .icon{display:block;margin-right:.5rem}.info-box .icon .material-icons{font-size:1.5rem}.info-box.warning .icon .material-icons{color:#fbc02d}.info-box.error .icon .material-icons{color:#ef5350}.info-box.info .icon .material-icons{color:#0288d1}.flex-column{display:flex;flex-direction:column;height:100%;overflow-x:hidden}.flex-column.narrow{height:auto}.scrollable-panel{height:100%;margin-bottom:auto;margin-top:.25rem;overflow-x:hidden;overflow-y:auto;scroll-behavior:smooth}.contact-box{list-style:none;overflow-x:hidden}.contact-box>li{background:linear-gradient(90deg,#0000 3.5rem,#eee 1px,#eee) 0 100% /100% 1px no-repeat,#fff;display:flex;flex-grow:0;flex-shrink:0;min-height:3.75rem;overflow-x:hidden;padding:.35rem .25rem .5rem .35rem;position:relative}.contact-box.small>li{min-height:2.5rem;padding:.25rem .25rem .35rem .35rem}.contact-box>li:last-child{background:#fff}.contact-box>li:hover{background-color:#eceff1}.contact-box>li.selected{background-color:#cfd8dc}.contact-box>li.action{border-bottom:none;min-height:2.5rem}.contact-box .text-box{overflow-x:hidden}.contact-box .contact-title{font-size:1.05rem;overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.contact-box .contact-title.deleted{opacity:.66;text-decoration:line-through;text-decoration-thickness:.5px}.contact-box .contact-comment{font-weight:lighter}.contact-box .contact-comment,.contact-box .contact-comment>span{overflow-x:hidden;text-overflow:ellipsis;white-space:nowrap}.contact-box .contact-comment b{font-weight:bolder}.contact-box .contact-comment .material-icons{margin-bottom:.2rem}.contact-box .avatar-box{font-size:1.8rem;height:3rem;margin-right:.35rem;min-height:3rem;min-width:3rem;overflow:hidden;padding:0;position:relative;width:3rem}.contact-box .avatar{border-radius:50%;height:3rem;width:3rem}.contact-box.small .avatar-box{font-size:1.2rem;height:2rem;min-height:2rem;min-width:2rem;width:2rem}.contact-box.small .avatar{height:2rem;width:2rem}.avatar.deleted{filter:grayscale(1);opacity:.75}.contact-box .avatar-box>.material-icons{display:flex;flex-direction:column;font-size:2.4rem;justify-content:space-around;line-height:3rem}.contact-box.small .avatar-box>.material-icons{font-size:1.6rem;line-height:2rem}.contact-box .text-box{display:flex;flex-direction:column;justify-content:space-around}.contact-box .text-box>div{align-items:center;display:flex;flex-direction:row}.contact-box .action-text{cursor:pointer;font-size:.95rem;line-height:2.5rem;margin:0 auto;text-align:center}img.channel{height:1rem;margin-left:.3rem;vertical-align:middle;width:1rem}.large img.channel{height:1.35rem;margin-bottom:.15rem;margin-left:.5rem;width:1.35rem}.avatar-box .online,.offline{border-radius:50%;bottom:.1rem;flex-shrink:0;height:.75rem;min-height:.75rem;min-width:.75rem;position:absolute;right:0;width:.75rem}.avatar-box .online{background-color:#4caf50}.avatar-box .offline{background-color:silver}.online.typing{animation:typing .5s infinite}@keyframes typing{0%,to{transform:translateX(0)}50%{transform:translateX(-.3rem)}}.contact-box .checkmark.material-icons{border:0 solid #0000;color:#0097a7;overflow:visible;padding-left:.5px}.contact-box .checkmark.material-icons,.contact-box .deleted.material-icons{background-color:#fff;bottom:0;font-size:1.5rem;height:1.5rem;position:absolute;right:0;width:1.5rem}.contact-box .deleted.material-icons{color:#999}#add-topic{bottom:1rem;position:absolute;right:1rem}.panel-form{display:flex;flex-direction:column;padding:0;position:relative}.panel-form-row{align-items:center;flex-shrink:0}.panel-form-column,.panel-form-row{display:flex;flex-grow:0;line-height:1.5;padding:.5rem .75rem;position:relative}.panel-form-column{flex-direction:column;overflow-x:hidden}.panel-form-column>.panel-form-column,.panel-form-row>.panel-form-column{flex-grow:1;padding:0!important}.panel-form-column>.panel-form-row,.panel-form-row>.panel-form-row{padding:0!important}.panel-form-column>.group{margin-bottom:.25rem;margin-top:.25rem}.avatar-upload{display:flex;flex-direction:column;flex-shrink:0;font-size:4.5rem;height:10.5rem;padding:0;position:relative;width:10rem}.avatar-upload.read-only{height:auto}.avatar-upload .clear-avatar{background-image:radial-gradient(#fff 40%,#0000 75%);font-size:1rem;opacity:0;position:absolute;right:0;top:0}.avatar-upload:hover .clear-avatar{opacity:1}.avatar-upload .avatar-box{height:10rem;position:relative;width:10rem}.avatar-upload .avatar-box>.material-icons{font-size:4rem;line-height:10rem;position:relative;vertical-align:middle}.avatar-upload:after{clear:both;content:".";display:block;height:0;visibility:hidden}.avatar-upload .blank{border:1px dashed #999;color:#999;flex-shrink:0;font-size:1rem;line-height:10rem;text-align:center;vertical-align:middle}.avatar-upload .blank,.avatar-upload img.preview{border-radius:50%;height:10rem;overflow:hidden;width:10rem}.avatar-upload img.preview:before{background:50% no-repeat url(../img/broken_image.png);border-radius:50%;color:#666;content:" ";display:flex;font-size:.9rem;font-weight:lighter;height:10rem;justify-content:center;left:0;position:absolute;top:0;width:10rem}.avatar-upload .inputfile.hidden{height:.1px;opacity:0;overflow:hidden;position:absolute;width:.1px}.avatar-upload .inputfile+label.round{align-items:center;background-color:#fafafa;border-radius:50%;bottom:0;box-shadow:0 1px 4px #0006;cursor:pointer;display:flex;height:3rem;justify-content:center;line-height:3rem;position:absolute;right:0;width:3rem;z-index:1}.avatar-upload .inputfile:focus+label.round{outline:none}.avatar-upload .inputfile+label:hover,.avatar-upload .inputfile:focus+label{background-color:#e3f2fd;color:#42a5f5}#topic-caption-panel{background-color:#b0bec5}#topic-caption-panel a{color:#757575;text-decoration:none}#topic-caption-panel :hover{color:#000}#topic-caption-panel .avatar-box{font-size:1.8rem;height:3rem;margin-right:.35rem;min-width:3rem;position:relative;width:3rem}#topic-caption-panel .avatar-box>.material-icons{font-size:2.4rem;line-height:3rem}#topic-title-group{overflow-x:hidden}#hide-message-view{display:block;margin-right:.35rem}#topic-users{margin-left:auto;margin-right:1rem}#topic-users .avatar-box{display:inline-block;font-size:1rem;height:1.8rem;margin-right:.2rem;min-height:1.8rem;min-width:1.8rem;width:1.8rem}#topic-users .avatar-box>.material-icons{font-size:1.4rem;line-height:1.8rem}#topic-users>span{line-height:2rem;vertical-align:top}#messages-panel{background-color:#eceff1;background-image:url(../img/bg_messages.png);height:100%;overflow-y:scroll;padding:.75rem;position:relative}#messages-container{height:100%;overflow-y:hidden;position:relative}#write-only-background{background-image:repeating-linear-gradient(45deg,#ffffff80,#ffffff80 .5rem,#fffc 0,#fffc 1rem);height:100%;left:0;position:absolute;top:0;width:100%}#write-only-note{height:auto;top:50%;transform:translate(-50%,-50%);width:auto}#peer-messaging-disabled-note,#write-only-note{background-color:#fff;border-radius:.5rem;box-shadow:0 1px .5px #0000001f;color:#666;left:50%;line-height:2rem;padding:.75rem 1.25rem;position:absolute;text-align:center}#peer-messaging-disabled-note{bottom:4.3rem;transform:translate(-50%);width:fit-content}#send-message-panel{align-items:center;background-color:#eceff1;display:flex;flex:none;min-height:4rem;padding:.4rem .4rem .4rem .6rem;z-index:2}#send-message-panel #writing-disabled{font-size:1.2rem;text-align:center;width:100%}#send-message-wrapper{background-color:#eceff1;box-shadow:0 -2px 3px -1px #0000001a;z-index:2}#sendMessage{overflow:hidden;overflow-wrap:break-word}#send-message-panel .material-icons{font-size:1.6rem;min-width:2rem}#send-message-panel .material-icons.secondary,.material-icons.disabled{color:#999!important}#send-message-panel .material-icons.secondary:hover{color:#2196f3!important}.accept-invite-panel{background-color:#eceff1;box-shadow:0 -2px 3px -1px #0000001a;width:100%;z-index:1}.accept-invite-panel .title{font-size:1.2rem;padding:.75rem}.accept-invite-panel .footer{background-color:#fafafa;padding-bottom:.35rem;text-align:center;white-space:nowrap}.accept-invite-panel button{border:1px solid #0000;box-shadow:0 1px 2px 0 #00000040;font-size:1rem;height:2em;line-height:2em;margin:.25rem}#dummy-view{align-items:center;background-color:#e0f7fa;display:flex;height:100%;justify-content:center;width:100%}#dummy-view a{display:block;text-align:center;text-decoration:none}#image-preview{background-color:#ffffffe6;display:flex;flex-direction:column;height:100%;left:0;position:absolute;top:0;width:100%;z-index:2}#image-preview-caption-panel{background-color:#eceff1;box-shadow:0 1px 2px silver;display:flex;height:4.6rem;justify-content:space-between;line-height:2.5rem;padding:1rem .75rem 0;z-index:3}#image-preview-caption-panel a{color:#757575;text-decoration:none}#image-preview-caption-panel a:hover{color:#000}#image-preview-container{align-items:center;display:flex;height:100%;justify-content:space-around;overflow:hidden;width:100%}#image-preview-footer{background-color:#eceff1;box-shadow:0 -2px 3px -1px #0000001a;display:flex;height:3.2rem;justify-content:space-around;line-height:1.5rem}#image-preview-container .material-icons{font-size:6rem}.chat-box{list-style:none;margin:0 .5rem;padding:0 0 3.5rem;scroll-behavior:smooth}.chat-box.group{margin-left:-.4rem}.chat-box li{align-items:flex-end;display:flex;margin:0;padding:0}.chat-box .right{justify-content:flex-end}.bubble{border-radius:.5rem;box-shadow:0 1px .5px #0000001f;color:#212121;display:flex;height:auto;margin:0;max-width:36rem;min-width:9rem;padding:.75rem .5rem;position:relative;text-align:left;transition:background-color .5s ease-out;transition-delay:.3s}.chat-box li.single{margin-bottom:.75rem;margin-top:.25rem}.chat-box li.first{margin-bottom:.15rem;margin-top:.25rem}.chat-box li.middle{margin-bottom:.15rem;margin-top:.15rem}.chat-box li.last{margin-bottom:.75rem;margin-top:.15rem}.left .bubble{background-color:#c5e1a5;margin-right:.5rem}.left.flash .bubble{background-color:#94a97c}.left .bubble.tip{border-bottom-left-radius:0}.right .bubble{background-color:#fafafa;margin-left:1.75rem}.right.flash .bubble{background-color:#ccc}.right .bubble.tip{border-bottom-right-radius:0}.chat-box .meta{justify-content:center;margin-bottom:.5rem;margin-top:.5rem}.chat-box .meta .bubble{color:#666;min-width:unset}.meta .bubble.deleted{background-color:#e3f2fd;padding:.75rem .75rem .5rem}.meta .bubble.date{background-color:#f4f4f4a8;font-size:smaller;padding:.5rem}.left .bubble.tip:before{background-color:#c5e1a5;border-bottom-left-radius:.3rem;bottom:0;box-shadow:0 1px .5px #0000001f;clip-path:polygon(100% 0,0 110%,100% 110%);-webkit-clip-path:polygon(100% 0,0 110%,100% 110%);content:"";height:.85rem;left:-.8rem;position:absolute;-moz-transition:background-color .5s ease-out;transition:background-color .5s ease-out;transition-delay:.3s;width:.85rem}.left.flash .bubble.tip:before{background-color:#94a97c}.right .bubble.tip:before{background-color:#fafafa;border-bottom-right-radius:.3rem;bottom:0;box-shadow:0 1px .5px #0000001f;clip-path:polygon(0 0,100% 110%,0 110%);-webkit-clip-path:polygon(0 0,100% 110%,0 110%);content:"";height:.85rem;left:99.8%;position:absolute;-moz-transition:background-color .5s ease-out;transition:background-color .5s ease-out;transition-delay:.3s;width:.85rem}.right.flash .bubble.tip:before{background-color:#ccc}.chat-box .avatar-box{font-size:.8rem;height:1.4rem;margin-bottom:.8rem;margin-right:.8rem;min-height:1.4rem;min-width:1.4rem;position:relative;width:1.4rem}.bubble div.content-meta{width:100%}.bubble div.message-content{margin:0;max-width:36rem;overflow-wrap:break-word;padding:0 .75rem;position:relative;width:100%}.bubble div.message-content:after{clear:both;content:".";display:block;height:0;visibility:hidden}.chat-box .timestamp-padding{display:inline-block;height:0;width:4rem}.chat-box .timestamp{float:right;position:relative;top:.35rem;user-select:none;white-space:nowrap}.chat-box .author,.chat-box .timestamp{color:#777;font-size:80%}.image-preview,.inline-image{border-radius:.1rem;overflow:hidden;position:relative}.inline-image{max-height:24rem;max-width:36rem}.inline-image>.rounded-container{border-left:.25rem solid #0000;border-right:.25rem solid #0000;bottom:2rem;margin:.25rem auto;position:relative}img.image-preview:before,img.inline-image:before{background:50% no-repeat #ccc url(../img/broken_image.png);color:#666;display:flex;font-size:.9rem;font-weight:lighter;height:100%;justify-content:center;left:0;position:absolute;top:0;width:100%}img.inline-image:before{background-size:2rem 2rem;content:attr(alt)}img.image-preview:before{background-size:10rem 10rem;content:" "}.attachment{display:flex}.attachment:last-of-type{margin-bottom:-.45rem}#info-caption-panel{background-color:#b0bec5}#info-caption-panel a{color:#757575;line-height:1;text-decoration:none}#info-caption-panel :hover{color:#000}#info-title{margin-right:auto}#group-manager{display:flex;flex-direction:column;height:100%;overflow-y:hidden;position:relative}#group-manager-buttons{background-color:#eceff1;border-left:1px solid #ccc;box-shadow:0 -1px #0000001a;display:flex;height:4rem;justify-content:space-around;padding:.4rem;z-index:2}ul.tabbar{background:#eee;display:flex;flex-grow:0;flex-shrink:0;list-style:none;margin:0;overflow:hidden;padding:0 0 0 1rem;width:100%}ul.tabbar>li{box-shadow:inset 0 -2px 2.5px -1px #00000040;height:2.4rem;position:relative}ul.tabbar li.active{background:#fff}ul.tabbar li:after{background:#ccc;bottom:0;content:"";height:.1rem;left:0;position:absolute;width:100%}ul.tabbar li.active:after{animation:tabbar-border-expand .2s cubic-bezier(.4,0,.4,1) 0s alternate forwards;background:#2196f3;bottom:0;content:"";height:.15rem;left:0;position:absolute}@keyframes tabbar-border-expand{0%{opacity:0;width:0}to{opacity:1;width:100%}}ul.tabbar>li>a{color:#2196f399;font-size:1.3rem;font-variant:small-caps;font-weight:400;line-height:2.4rem;overflow:hidden;padding-left:1rem;padding-right:1rem;position:relative;text-align:center;text-decoration:none}ul.tabbar li.active>a{color:#2196f3}.unread{background-color:#0097a7;border-radius:50%;color:#fff;display:inline-block;font-size:.75rem;font-weight:bolder;height:1.35rem;line-height:1.45rem;margin-left:.5rem;text-align:center;vertical-align:middle;width:1.35rem}.material-icons.as-badge{color:#bbb;font-size:1.25rem;padding-left:.2rem}.badge{align-self:flex-start;background-color:#e8e8e8;border:1px solid silver;border-radius:.2rem;color:#666;display:inline-block;font-family:Roboto Mono,Courier,monospace,sans-serif;font-size:.8rem;margin:.05rem .1rem;padding:.05rem .25rem}.badge.green{background-color:#efe;border-color:#aca;color:#383}.badge.yellow{background-color:#ffe;border-color:#cc9;color:#660}.badge.blue{background-color:#eef;border-color:#aad;color:#339}.badge.red{background-color:#fee;border-color:#c99;color:#933}.badge.magenta{background-color:#fef;border-color:#c9c;color:#939}.lettertile{border-radius:50%;padding-bottom:100%;width:100%}.lettertile>div{align-items:center;border-radius:50%;bottom:0;color:#fafafacc;display:flex;flex-grow:0;flex-shrink:0;justify-content:center;left:0;line-height:1;padding-top:.1em;position:absolute;right:0;text-align:center;text-transform:uppercase;top:0}.lettertile:hover{color:#fff}.lettertile.disabled{opacity:.5}.lt-bg-0{background-color:#ef9a9a}.lt-bg-1{background-color:#90caf9}.lt-bg-2{background-color:#b0bec5}.lt-bg-3{background-color:#b39ddb}.lt-bg-4{background-color:#ffab91}.lt-bg-5{background-color:#a5d6a7}.lt-bg-6{background-color:#eee}.lt-bg-7{background-color:#e6ee9c}.lt-bg-8{background-color:#c5e1a5}.lt-bg-9{background-color:#f0e57d}.lt-bg-10{background-color:#f48fb1}.lt-bg-11{background-color:#9fa8da}.lt-bg-12{background-color:#ffe082}.lt-bg-13{background-color:#bcaaa4}.lt-bg-14{background-color:#80deea}.lt-bg-15{background-color:#ce93d8}.dk-bg-0{background-color:#c62828}.dk-bg-1{background-color:#ad1457}.dk-bg-2{background-color:#6a1b9a}.dk-bg-3{background-color:#4527a0}.dk-bg-4{background-color:#283593}.dk-bg-5{background-color:#1565c0}.dk-bg-6{background-color:#0277bd}.dk-bg-7{background-color:#00838f}.dk-bg-8{background-color:#00695c}.dk-bg-9{background-color:#2e7d32}.dk-bg-10{background-color:#558b2f}.dk-bg-11{background-color:#9e9d24}.dk-bg-12{background-color:#f9a825}.dk-bg-13{background-color:#ff8f00}.dk-bg-14{background-color:#ef6c00}.dk-bg-15{background-color:#d84315}.lt-fg-0{color:#ef9a9a!important}.lt-fg-1{color:#90caf9!important}.lt-fg-2{color:#b0bec5!important}.lt-fg-3{color:#b39ddb!important}.lt-fg-4{color:#ffab91!important}.lt-fg-5{color:#a5d6a7!important}.lt-fg-6{color:#eee!important}.lt-fg-7{color:#e6ee9c!important}.lt-fg-8{color:#c5e1a5!important}.lt-fg-9{color:#f0e57d!important}.lt-fg-10{color:#f48fb1!important}.lt-fg-11{color:#9fa8da!important}.lt-fg-12{color:#ffe082!important}.lt-fg-13{color:#bcaaa4!important}.lt-fg-14{color:#80deea!important}.lt-fg-15{color:#ce93d8!important}.dk-fg-0{color:#c62828!important}.dk-fg-1{color:#ad1457!important}.dk-fg-2{color:#6a1b9a!important}.dk-fg-3{color:#4527a0!important}.dk-fg-4{color:#283593!important}.dk-fg-5{color:#1565c0!important}.dk-fg-6{color:#0277bd!important}.dk-fg-7{color:#00838f!important}.dk-fg-8{color:#00695c!important}.dk-fg-9{color:#2e7d32!important}.dk-fg-10{color:#558b2f!important}.dk-fg-11{color:#9e9d24!important}.dk-fg-12{color:#f9a825!important}.dk-fg-13{color:#ff8f00!important}.dk-fg-14{color:#ef6c00!important}.dk-fg-15{color:#d84315!important}.material-icons{font-size:1.4rem;line-height:1;text-align:center;vertical-align:middle}.material-icons.small{font-size:1rem}.material-icons.big{font-size:2.4rem}.material-icons.huge{font-size:4rem}#self-avatar .material-icons{font-size:2.4rem;line-height:3rem}.avatar-box .material-icons{border-radius:50%;color:#fafafacc;height:inherit;width:inherit}.chip-input{align-items:center;background:#0000;border-bottom:1px solid #ccc;box-shadow:0 1px 0 #0000001a;color:#666;cursor:text;display:flex;flex-grow:1;flex-wrap:wrap;font-size:1.1rem;font-weight:400;justify-content:flex-start;margin:.25rem 0;max-height:10rem;min-height:4rem;outline:none;overflow-y:scroll;text-align:center;transition:all .1s ease-in-out}.chip-input.focused{border-bottom:1px solid #2196f3;box-shadow:0 1px 0 #2196f340}.chip-input>input[type=text]{border:none;box-shadow:none;display:inline-block;flex:1 0 auto;min-width:4rem;width:auto}.chip,.chip-input>input[type=text]{height:1.8rem;line-height:1.8;margin:.125rem}.chip{align-items:center;background-color:#eee;border-radius:.9rem;display:flex;flex:0 0 auto;font-size:90%;max-width:12rem;overflow:hidden}.chip,.chip>span{text-overflow:ellipsis;white-space:nowrap}.chip>span{overflow-x:hidden}.chip.invalid{background-color:#fee;color:#c66}.chip>a{background-color:#aaa;border-radius:50%;color:#eee;display:inline-block;height:1.175rem;line-height:1.15;margin:.3rem;min-width:1.175rem;text-decoration:none;width:1.175rem}.chip>a:focus,.chip>a:hover{background-color:#bbb;color:#fff;text-decoration:none}.chip .avatar-box{font-size:1rem;height:1.8rem;margin-right:.2rem;min-height:1.8rem;min-width:1.8rem;position:relative;width:1.8rem}.chip .avatar-box .material-icons{font-size:1.4rem;line-height:1.8rem}.chip .spacer{display:inline-block;height:1.175rem;margin:.3rem;width:.25rem}.load-spinner-box{--size-small:2.5rem;--size-large:4rem;background-color:#fff;border-radius:50%;box-shadow:.1rem .1rem .15rem 1px #00000040;height:var(--size-small);left:0;margin-left:auto;margin-right:auto;padding:.25rem;position:absolute;right:0;top:5rem;width:var(--size-small);z-index:2}.load-spinner-box.large{height:var(--size-large);width:var(--size-large)}.load-spinner-box.clear{background-color:#fff8;-x-box-shadow:none;box-shadow:.1rem .1rem .15rem 1px #0000001f}.load-spinner-box.centered{top:calc(var(--size-small)/2 - .25rem)}.load-spinner-box.large.centered{top:calc(var(--size-large)/2 - .25rem)}.loader-spinner{animation:spin 1.5s linear infinite;border:.35rem solid #f3f3f3;border-radius:50%;border-top-color:#1e88e5;height:2rem;width:2rem}.load-spinner-box.large .loader-spinner{height:3.5rem;width:3.5rem}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.uploader{display:flex}.uploader>div{background-color:#cfd8dc;border-radius:.1rem;height:.6rem;line-height:0;margin:.35rem;padding:.15rem;position:relative;width:6rem}.uploader>div>span{background-color:#1e88e5;border-radius:.08rem;display:inline-block;height:.3rem}.highlight{color:teal;font-weight:bolder}.highlight .preview{color:#5f9ea0;font-weight:inherit}.cropper{align-self:center;height:21rem;margin:1rem auto auto;transform:translateZ(0)}.cropper,.cropper .bounding-box{border-radius:.25rem;position:relative;width:18rem}.cropper .bounding-box{background-color:#999;border:2px solid #1e88e5;box-shadow:1px 1px 3px grey;height:18rem;overflow:hidden;z-index:1}.cropper .preview{max-height:none;max-width:none;position:absolute;z-index:-1}.cropper .cutout{border:1px dashed #999;bottom:0;box-shadow:0 0 150rem 150rem #e6f6ffa8;height:17rem;left:0;margin:auto;position:absolute;right:0;top:0;width:17rem;z-index:0}.cropper .cutout.circle{border-radius:50%}.cropper .overlay{cursor:move;position:absolute;touch-action:none;z-index:1}.cropper .zoom-wrapper{height:2rem;margin:1rem auto;text-align:center;width:80%}.cropper .zoom{box-shadow:none;pointer-events:none;z-index:2}.cropper .zoom:focus{outline:none}.reply-quote{border-left:.25rem solid #039be5;border-radius:.25rem;color:#666;cursor:pointer;font-weight:lighter;line-height:1.5em;padding:.15rem .5rem .25rem;position:relative}.chat-box .bubble .reply-quote{margin:.15rem -.75rem .3rem}.chat-box .bubble .reply-quote:first-child{margin-top:-.25rem}.chat-box .left .reply-quote{background-color:#fff6}.chat-box .right .reply-quote{background-color:#8080801f}.reply-quote .inline-image{margin-bottom:.1rem;vertical-align:middle}.reply-quote img.inline-image:before{content:""}#reply-quote-preview{align-items:center;display:flex}#reply-quote-preview .reply-quote{background-color:#fafafa;cursor:auto;margin:.35rem .5rem 0 0;width:100%}#reply-quote-preview .cancel{min-width:2.4rem;text-align:center}#reply-quote-preview .inline-image{background-color:#ccc}#reply-quote-preview img.inline-image:before{content:""}#send-message-panel #reply-quote-preview{width:100%}#send-message-panel #reply-quote-preview .reply-quote{margin-bottom:.35rem}.forwarding-quote{font-size:200%;line-height:200%}.mention{font-weight:500}.forward-dialog{background-color:#fff;border-radius:.3rem;box-shadow:.15rem .15rem 1.5rem #00000073;height:80%;margin:auto 1rem;overflow:hidden;padding:.5rem;position:relative;width:24rem}.forward-dialog .scrollable-panel{height:80%}.audio{align-items:center;background-color:#eee;border-radius:1.5rem;display:flex;flex:none;height:3rem;margin-left:auto}.audio canvas{height:2.6rem;margin-right:2rem;width:14rem}.audio canvas.playback{margin-right:0}.audio .duration{font-size:large}.audio-player{align-items:center;display:flex}.audio-player .material-icons.large{color:#667575cc;font-size:2.4rem}.audio-player .material-icons.disabled{color:#999c;cursor:default}.audio-player .playback{height:2.6rem;width:14rem}.audio-player canvas.playback{display:block}.audio-player div.playback{align-items:center;color:#757575cc;display:flex;font-size:small;justify-content:center}.audio-player .timer{color:#666c;font-size:smaller}@media (max-width:960px){#mountPoint{padding:0}}@media (max-width:640px){#app-container{border-radius:0;box-shadow:none;width:100%}#info-view,#sidepanel{width:100%}.forward-dialog{border-radius:.3rem .3rem 0 0;margin:auto 0 0;width:100%}li .menuTrigger{opacity:.3}}#video-container{display:flex;flex-direction:column;height:100%!important;height:80%;justify-content:center;margin:auto;width:85%}video{width:100%}.video-container-panel{-ms-flex-align:center!important;align-items:center!important;margin-top:10%;position:relative}.video-elem{float:left;position:relative;width:50%;z-index:0}.video-title{background-color:#fff;bottom:0;position:absolute;right:0;z-index:1}#video-container-controls{display:flex;justify-content:center;padding:20px}.video-call-accept{background-color:green;border-radius:10px}.video-call-hangup{background-color:red;border-radius:10px}.video-call-toggle-media{background-color:gray;border-radius:10px}.incoming-call-title{padding:10px;text-align:center}.incoming-call-badges{text-align:center}.incoming-call-actions{padding:20px;text-align:center}
\ No newline at end of file
diff --git a/package.json b/package.json
index 417b43fe..2424082d 100644
--- a/package.json
+++ b/package.json
@@ -71,7 +71,6 @@
"react": "^17.0.2",
"react-dom": "^17.0.2",
"react-intl": "^5.20.2",
- "react-intl-formatted-duration": "^4.0.0",
"tinode-sdk": "^0.20.0-alpha1",
"webrtc-adapter": "^8.1.1"
},
diff --git a/src/config.js b/src/config.js
index 5ef4e417..dafe34d6 100644
--- a/src/config.js
+++ b/src/config.js
@@ -16,7 +16,7 @@ export const DEFAULT_HOST = KNOWN_HOSTS.hosted;
export const LOGGING_ENABLED = true;
// Minimum time between two keypress notifications, milliseconds.
-export const KEYPRESS_DELAY = 3*1000;
+export const KEYPRESS_DELAY = 3_000;
// Delay before sending a {note} for reciving a message, milliseconds.
export const RECEIVED_DELAY = 500;
// Delay before sending a read notification, milliseconds.
@@ -64,7 +64,7 @@ export const MESSAGES_PAGE = 24;
// for instance 1024 bytes.
// Increase this limit to a greater value in production, if desired. Also increase
// max_message_size in the server config.
-export const MAX_INBAND_ATTACHMENT_SIZE = 262144;
+export const MAX_INBAND_ATTACHMENT_SIZE = 262_144;
// Default absolute maximum attachment size to be used with the server = 8MB.
// Used when the server-provided value is unavailable. Increase to something like 100MB in production.
@@ -98,8 +98,13 @@ export const QUOTED_REPLY_LENGTH = 30;
// Length of a preview of a forwarded message.
export const FORWARDED_PREVIEW_LENGTH = 84;
+// Minimum duration of an audio recording in milliseconds (2 sec).
+export const MIN_DURATION = 2_000;
+// Maximum duration of an audio recording in milliseconds (10 min).
+export const MAX_DURATION = 600_000;
+
// Link for "Contact Us".
-export const LINK_CONTACT_US = 'email:support@tinode.co';
+export const LINK_CONTACT_US = 'mailto:support@tinode.co';
// Link to Privacy Policy.
export const LINK_PRIVACY_POLICY = 'https://tinode.co/privacy.html';
diff --git a/src/i18n/de.json b/src/i18n/de.json
index 028fa2aa..d8907fd5 100644
--- a/src/i18n/de.json
+++ b/src/i18n/de.json
@@ -1373,7 +1373,7 @@
"defaultMessage": "unavailable",
"description": "Message shown when media preview is not available",
"missing": false,
- "obsolete": false
+ "obsolete": true
},
"calls_incoming": {
"translation": "",
diff --git a/src/i18n/en.json b/src/i18n/en.json
index b14f7441..cc362b20 100644
--- a/src/i18n/en.json
+++ b/src/i18n/en.json
@@ -1373,7 +1373,7 @@
"defaultMessage": "unavailable",
"description": "Message shown when media preview is not available",
"missing": false,
- "obsolete": false
+ "obsolete": true
},
"calls_incoming": {
"translation": "Incoming Call",
diff --git a/src/i18n/es.json b/src/i18n/es.json
index 0f4b097d..1a1d1039 100644
--- a/src/i18n/es.json
+++ b/src/i18n/es.json
@@ -1373,7 +1373,7 @@
"defaultMessage": "unavailable",
"description": "Message shown when media preview is not available",
"missing": false,
- "obsolete": false
+ "obsolete": true
},
"calls_incoming": {
"translation": "",
diff --git a/src/i18n/ex/base-en.json b/src/i18n/ex/base-en.json
index 4ee34a23..0627d0fc 100644
--- a/src/i18n/ex/base-en.json
+++ b/src/i18n/ex/base-en.json
@@ -628,10 +628,6 @@
"defaultMessage": "phone",
"description": "Dative case of 'phone', i.e. 'phone' in 'by phone'"
},
- "preview_unavailable": {
- "defaultMessage": "unavailable",
- "description": "Message shown when media preview is not available"
- },
"private_editing_placeholder": {
"defaultMessage": "Visible to you only",
"description": "Placeholder for editing 'private'"
diff --git a/src/i18n/ko.json b/src/i18n/ko.json
index 85f3bdd6..544f4c82 100644
--- a/src/i18n/ko.json
+++ b/src/i18n/ko.json
@@ -1373,7 +1373,7 @@
"defaultMessage": "unavailable",
"description": "Message shown when media preview is not available",
"missing": false,
- "obsolete": false
+ "obsolete": true
},
"calls_incoming": {
"translation": "",
diff --git a/src/i18n/ro.json b/src/i18n/ro.json
index bbbf6500..66fa06fd 100644
--- a/src/i18n/ro.json
+++ b/src/i18n/ro.json
@@ -1373,7 +1373,7 @@
"defaultMessage": "unavailable",
"description": "Message shown when media preview is not available",
"missing": false,
- "obsolete": false
+ "obsolete": true
},
"calls_incoming": {
"translation": "",
diff --git a/src/i18n/ru.json b/src/i18n/ru.json
index 41ce0a8c..7e349309 100644
--- a/src/i18n/ru.json
+++ b/src/i18n/ru.json
@@ -1373,7 +1373,7 @@
"defaultMessage": "unavailable",
"description": "Message shown when media preview is not available",
"missing": false,
- "obsolete": false
+ "obsolete": true
},
"calls_incoming": {
"translation": "",
diff --git a/src/i18n/zh-TW.json b/src/i18n/zh-TW.json
index 4981a8af..9f80d769 100644
--- a/src/i18n/zh-TW.json
+++ b/src/i18n/zh-TW.json
@@ -1373,7 +1373,7 @@
"defaultMessage": "unavailable",
"description": "Message shown when media preview is not available",
"missing": false,
- "obsolete": false
+ "obsolete": true
},
"calls_incoming": {
"translation": "",
diff --git a/src/i18n/zh.json b/src/i18n/zh.json
index e30bad92..95082ec5 100644
--- a/src/i18n/zh.json
+++ b/src/i18n/zh.json
@@ -1373,7 +1373,7 @@
"defaultMessage": "unavailable",
"description": "Message shown when media preview is not available",
"missing": false,
- "obsolete": false
+ "obsolete": true
},
"calls_incoming": {
"translation": "",
diff --git a/src/lib/blob-helpers.js b/src/lib/blob-helpers.js
index 092c2f2e..5ac8c766 100644
--- a/src/lib/blob-helpers.js
+++ b/src/lib/blob-helpers.js
@@ -199,7 +199,7 @@ export function blobToBase64(blob) {
// File pasted from the clipboard. It's either an inline image or a file attachment.
export function filePasted(event, onImageSuccess, onAttachmentSuccess, onError) {
const items = (event.clipboardData || event.originalEvent.clipboardData || {}).items;
- if (!Array.isArray(items)) {
+ if (!items || !items.length) {
return false;
}
diff --git a/src/lib/strformat.js b/src/lib/strformat.js
index 5d8270e9..541703ec 100644
--- a/src/lib/strformat.js
+++ b/src/lib/strformat.js
@@ -16,16 +16,21 @@ export function shortDateFormat(then, locale) {
return then.toLocaleDateString(locale, {year: 'numeric', month: 'short', day: 'numeric'});
}
-// Convert seconds to minutes:seconds, i.e. 156 sec -> 2:36.
+// Convert seconds to [hours:]minutes:seconds, i.e. 156 sec -> 2:36, 3756 sec -> 1:02:36.
// If fixedMins is true, then minutes are represented by at least two digits.
export function secondsToTime(seconds, fixedMin) {
let min = Math.floor(seconds / 60) | 0;
- if (fixedMin) {
+ let hours = Math.floor(min / 60) | 0;
+
+ if (fixedMin || hours > 0) {
min = min < 10 ? `0${min}` : min;
}
let sec = (seconds % 60) | 0;
sec = sec < 10 ? `0${sec}` : sec;
- return `${min}:${sec}`;
+ if (hours == 0) {
+ return `${min}:${sec}`;
+ }
+ return `${hours}:${min}:${sec}`;
}
// Convert a number of bytes to human-readable format.
diff --git a/src/messages.json b/src/messages.json
index 89731c11..96430670 100644
--- a/src/messages.json
+++ b/src/messages.json
@@ -1 +1 @@
-{"de":{"action_block_contact":"Kontakt blockieren","action_cancel":"Abbrechen","action_clear_messages":"Nachrichten leeren","action_delete_messages":"Nachrichten für alle löschen","action_leave_chat":"Unterhaltung verlassen","action_report_chat":"Unterhaltung melden","archived_contacts":"Archivierte Kontakte ({count})","badge_danger":"Verdächtig","badge_owner":"Besitzer","badge_staff":"Verwaltung","badge_verified":"Verifiziert","badge_you":"Sie","block_contact_warning":"Möchten Sie diesen Kontakt wirklich blockieren?","blocked_contacts_link":"Blockierte Kontakte ({count})","button_add_another":"Hinzufügen","button_add_members":"Mitglieder hinzufügen","button_cancel":"Abbrechen","button_confirm":"Bestätigen","button_create":"Erstellen","button_delete_account":"Konto löschen","button_edit":"Bearbeiten","button_logout":"Abmelden","button_ok":"OK","button_reset":"Zurücksetzen","button_send_request":"Anfrage senden","button_sign_in":"Anmelden","button_sign_up":"Anmelden","button_subscribe":"Abbonieren","button_update":"Aktualisieren","cannot_initiate_file_upload":"Datei kann nicht hochgeladen werden.","channel":"Sender","channel_prompt":"Dies ist ein Sender","chat_invitation":"Sie sind eingeladen, an einem neuen Chat teilzunehmen. Was möchten Sie tun?","chat_invitation_accept":"Akzeptieren","chat_invitation_block":"Blockieren","chat_invitation_ignore":"Ignorieren","clear_messages_warning":"Sind Sie sicher, dass Sie diese Unterhaltung für alle leeren wollen? Das kann nicht rückgängig gemacht werden.","code_doesnot_match":"Code stimmt nicht überein","contacts_not_found":"Sie haben keine Unterhaltungen ¯∖_(ツ)_/¯","contacts_not_found_short":"Keine Kontakte für ''{query}''","credential_email_prompt":"E-Mail Adresse für Registrierung","delete_account":"Konto löschen","delete_account_warning":"Möchten Sie das Konto wirklich löschen? Das kann nicht rückgängig gemacht werden","delete_messages_warning":"Sind Sie sicher, dass Sie diese Unterhaltung für alle löschen wollen? Das kann nicht rückgängig gemacht werden.","deleted_content":"Inhalt gelöscht","download_action":"herunterladen","drafty_attachment":"Dateianhang","drafty_form":"Formular:","drafty_image":"Bild","email_dative":"E-Mail","email_prompt":"E-Mail, z.B. lisam@beispiel.de","enable_peers_messaging":"Aktivieren","enter_confirmation_code_prompt":"Geben Sie den Bestätigungscode ein, der per {method} geschickt wurde:","error_invalid_id":"ungültige ID","file_attachment_too_large":"Die Dateigröße {size} überschreitet das Limit von {limit}.","forgot_password_link":"Passwort vergessen?","full_name_prompt":"Vollständiger Name, z.B. Lisa Musterfrau","granted_permissions":"Erteilt","group_has_no_members":"Keine Mitglieder","group_user_id_prompt":"Gruppe oder Benutzer ID","image_caption_prompt":"Bildunterschrift","invalid_content":"ungültiger Inhalt","invalid_security_token":"Ungültiger Sicherheitsschlüssel","label_client":"Client:","label_content_type":"Inhaltsart:","label_default_access_mode":"Standard Zugriffsmodus:","label_file_name":"Dateiname:","label_group_members":"Gruppenmitglieder:","label_incognito_mode":"inkognito-Modus:","label_message_sound":"Benachrichtigungston:","label_muting_topic":"Stumm geschaltet:","label_other_user":"Andere","label_password":"Passwort","label_permissions":"Berechtigungen:","label_private":"Privater Kommentar","label_push_notifications":"Benachrichtigungsmeldungen:","label_push_notifications_disabled":"Benachrichtigungsmeldungen (erfordert HTTPS):","label_reset_password":"Passwort per E-Mail wiederherstellen:","label_sdk":"SDK:","label_server":"Server:","label_server_address":"Server Adresse:","label_server_to_use":"Server verwenden:","label_size":"Größe:","label_topic_name":"Name","label_user_contacts":"Kontakte:","label_user_id":"ID:","label_wire_transport":"Übertragung per Kabel:","label_you":"Sie:","label_your_name":"Ihr Name","label_your_permissions":"Ihre Berechtigungen:","last_seen_timestamp":"Zuletzt gesehen","leave_chat_warning":"Möchten Sie diese Unterhaltung wirklich verlassen?","link_contact_us":"Kontakt","link_privacy_policy":"Datenschutzerklärung","link_terms_of_service":"Nutzungsbedingungen","login_prompt":"Anmelden","menu_item_archive_topic":"Archivieren","menu_item_block":"Blockieren","menu_item_clear_messages":"Nachrichten leeren","menu_item_clear_messages_for_all":"Für alle leeren","menu_item_delete":"Löschen","menu_item_delete_for_all":"Für alle löschen","menu_item_delete_topic":"Entfernen","menu_item_edit_permissions":"Berechtigungen ändern","menu_item_info":"Info","menu_item_member_delete":"Entfernen","menu_item_mute":"Unterhaltung stumm schalten","menu_item_restore_topic":"Wiederherstellen","menu_item_send_retry":"Wiederholen","menu_item_unblock":"Blockierung aufheben","menu_item_unmute":"Stumm schalten beenden","message_sending":"wird gesendet...","message_sending_failed":"fehlgeschlagen","messages_not_readable":"Neue Nachrichten können nicht gelesen werden","messaging_disabled_prompt":"Nachrichtenübermittlung deaktiviert","more_online_members":"+{overflow} mehr","new_message_prompt":"Neue Nachricht","new_password_placeholder":"Geben Sie ein neues Passwort ein","no_connection":"Keine Verbindung","no_contacts":"Sie haben keine Kontakte :-(","numeric_confirmation_code_prompt":"Nur zahlen","online_now":"jetzt online","password_prompt":"Passwort","password_unchanged_prompt":"unverändert","peers_messaging_disabled":"Gruppennachrichten sind deaktiviert","permission_admin":"Bestätigen ({val})","permission_delete":"Entfernen ({val})","permission_join":"Beitreten ({val})","permission_owner":"Besitzer ({val})","permission_pres":"Benachrichtigt werden ({val})","permission_read":"Lesen ({val})","permission_share":"Teilen ({val})","permission_write":"Schreiben ({val})","phone_dative":"Telefon","private_editing_placeholder":"Nur für Sie sichtbar","push_init_failed":"Initialisierung von Push-Benachrichtigungen fehlgeschlagen","reconnect_countdown":"Getrennt. Wiederverbinden in {seconds}…","reconnect_now":"Jetzt probieren","reload_update":"Neu laden","report_chat_warning":"Möchten Sie diese Unterhaltung wirklich blockieren und melden?","requested_permissions":"Angefordert","save_attachment":"Speichern","search_for_contacts":"Nutzen Sie die Suche um Kontakte zu finden","search_no_results":"Die Suche hatte keine Ergebnisse","search_placeholder":"Liste: email:lisa@beispiel.de, tel:17025550003...","sidepanel_title_acc_notifications":"Benachrichtigungen","sidepanel_title_acc_support":"Unterstützung","sidepanel_title_account_settings":"Konto-Einstellungen","sidepanel_title_archive":"Archivierte Unterhaltungen","sidepanel_title_blocked":"Blockierte Unterhaltungen","sidepanel_title_cred":"Anmeldeinformationen bestätigen","sidepanel_title_login":"Anmelden","sidepanel_title_newtpk":"Neue Unterhaltung starten","sidepanel_title_register":"Konto erstellen","sidepanel_title_reset":"Passwort zurücksetzen","sidepanel_title_settings":"Einstellungen","stay_logged_in":"Angemeldet bleiben","tabtitle_find_user":"Suchen","tabtitle_group_by_id":"nach ID","tabtitle_new_group":"Neue Gruppe","tags_editor_no_tags":"Schlagworte hinzufügen","tags_not_found":"Keine Schlagworte definiert. Erstellen Sie welche.","title_all_contacts":"Alle Kontakte","title_group_members":"Gruppenmitglieder","panel_title_info":"Info","title_manage_tags":"Verwalten","title_not_found":"Nicht gefunden","title_permissions":"Berechtigungen","title_tag_manager":"Schlagworte (Nutzer entdecken)","topic_block_warning":"Möchten Sie diese Unterhaltung wirklich blockieren?","topic_delete_warning":"Möchten Sie diese Unterhaltung wirklich löschen?","topic_name_editing_placeholder":"Freiform Name der Gruppe","unnamed_topic":"Unbenannt","update_available":"Aktualisierung verfügbar.","upload_finishing":"wird abgeschlossen...","user_not_found":"Nicht gefunden","validate_credential_action":"bestätigen","description_editing_placeholder":"Beschreibung (optional)","label_description":"Beschreibung","button_security":"Sicherheit","panel_title_general":"Allgemein","panel_title_security":"Sicherheit","panel_title_crop":"Zum Anpassen ziehen","panel_title_members":"Mitglieder","permissions_anonymous":"Anonym","permissions_authenticated":"Authentifiziert","topic_delete":"Chat löschen","permissions_user":"Benutzerberechtigungen","password_reset_email_sent":"Eine E-Mail wurde an {email} gesendet. Folgen Sie den Anweisungen in der E-Mail, um Ihr Passwort zurückzusetzen.","label_unarchive_topic":"Archiviert:","menu_item_reply":"Antwort","menu_item_forward":"Nach vorne","forward_to":"Weiterleiten","forward_to_search_placeholder":"Kontakte durchsuchen","label_new_password":"Neues Kennwort","drafty_unknown":"Nicht unterstützt","preview_unavailable":"nicht verfügbar"},"en":{"action_block_contact":"Block Contact","action_cancel":"cancel","action_clear_messages":"Clear Messages","action_delete_messages":"Clear Messages for All","action_leave_chat":"Leave Conversation","action_report_chat":"Report Conversation","archived_contacts":"Archived contacts ({count})","badge_danger":"Untrustworthy","badge_owner":"owner","badge_staff":"Staff-managed","badge_verified":"Verified/official","badge_you":"you","block_contact_warning":"Are you sure you want to block this contact?","blocked_contacts_link":"Blocked contacts ({count})","button_add_another":"Add another","button_add_members":"Add members","button_cancel":"Cancel","button_confirm":"Confirm","button_create":"Create","button_delete_account":"Delete account","button_edit":"Edit","button_logout":"Logout","button_ok":"OK","button_reset":"Reset","button_send_request":"Send request","button_sign_in":"Sign in","button_sign_up":"Sign up","button_subscribe":"Subscribe","button_update":"Update","cannot_initiate_file_upload":"Cannot initiate file upload.","channel":"channel","channel_prompt":"This is a channel","chat_invitation":"You are invited to start a new chat. What would you like to do?","chat_invitation_accept":"Accept","chat_invitation_block":"Block","chat_invitation_ignore":"Ignore","clear_messages_warning":"Are you sure you want to clear all messages? It cannot be undone.","code_doesnot_match":"Code does not match","contacts_not_found":"You have no chats ¯∖_(ツ)_/¯","contacts_not_found_short":"No contacts match ''{query}''","credential_email_prompt":"Your registration email","delete_account":"Delete account","delete_account_warning":"Are you sure you want to delete your account? It cannot be undone.","delete_messages_warning":"Are you sure you want to delete all messages for everyone? It cannot be undone.","deleted_content":"content deleted","download_action":"download","drafty_attachment":"Attachment","drafty_form":"Form:","drafty_image":"Picture","email_dative":"email","email_prompt":"Email, e.g. jdoe@example.com","enable_peers_messaging":"Enable","enter_confirmation_code_prompt":"Enter confirmation code sent to you by {method}:","error_invalid_id":"Invalid ID","file_attachment_too_large":"The file size {size} exceeds the {limit} limit.","forgot_password_link":"Forgot password?","full_name_prompt":"Full name, e.g. John Doe","granted_permissions":"Granted","group_has_no_members":"No members","group_user_id_prompt":"Group or User ID","image_caption_prompt":"Image caption","invalid_content":"invalid content","invalid_security_token":"Invalid security token","label_client":"Client:","label_content_type":"Content type:","label_default_access_mode":"Default access mode:","label_file_name":"File name:","label_group_members":"Group members:","label_incognito_mode":"Incognito mode:","label_message_sound":"Message sound:","label_muting_topic":"Muted:","label_other_user":"Other","label_password":"Password","label_permissions":"Permissions:","label_private":"Private comment","label_push_notifications":"Notification alerts:","label_push_notifications_disabled":"Notification alerts (requires HTTPS):","label_reset_password":"Send a password reset email:","label_sdk":"SDK:","label_server":"Server:","label_server_address":"Server address:","label_server_to_use":"Server to use:","label_size":"Size:","label_topic_name":"Name","label_user_contacts":"Contacts:","label_user_id":"ID:","label_wire_transport":"Wire transport:","label_you":"You:","label_your_name":"Your name","label_your_permissions":"Your permissions:","last_seen_timestamp":"Last seen","leave_chat_warning":"Are you sure you want to leave this conversation?","link_contact_us":"Contact Us","link_privacy_policy":"Privacy Policy","link_terms_of_service":"Terms of Service","login_prompt":"Login","menu_item_archive_topic":"Archive","menu_item_block":"Block","menu_item_clear_messages":"Clear messages","menu_item_clear_messages_for_all":"Clear for All","menu_item_delete":"Delete","menu_item_delete_for_all":"Delete for All","menu_item_delete_topic":"Delete","menu_item_edit_permissions":"Edit permissions","menu_item_info":"Info","menu_item_member_delete":"Remove","menu_item_mute":"Mute","menu_item_reply":"Reply","menu_item_restore_topic":"Restore","menu_item_send_retry":"Retry","menu_item_unblock":"Unblock","menu_item_unmute":"Unmute","message_sending":"sending...","message_sending_failed":"failed","messages_not_readable":"no access to messages","messaging_disabled_prompt":"Messaging disabled","more_online_members":"+{overflow} more","new_message_prompt":"New message","new_password_placeholder":"Enter new password","no_connection":"No connection","no_contacts":"You have no contacts :-(","numeric_confirmation_code_prompt":"Numbers only","online_now":"online now","password_prompt":"Password","password_unchanged_prompt":"Unchanged","peers_messaging_disabled":"Peer's messaging is disabled.","permission_admin":"Approve ({val})","permission_delete":"Delete ({val})","permission_join":"Join ({val})","permission_owner":"Owner ({val})","permission_pres":"Get notified ({val})","permission_read":"Read ({val})","permission_share":"Share ({val})","permission_write":"Write ({val})","phone_dative":"phone","private_editing_placeholder":"Visible to you only","push_init_failed":"Failed to initialize push notifications","reconnect_countdown":"Disconnected. Reconnecting in {seconds}…","reconnect_now":"Try now","reload_update":"Reload","report_chat_warning":"Are you sure you want to block and report this conversation?","requested_permissions":"Requested","save_attachment":"save","search_for_contacts":"Use search to find contacts","search_no_results":"Search returned no results","search_placeholder":"List like email:alice@example.com, tel:17025550003...","sidepanel_title_acc_notifications":"Notifications","sidepanel_title_acc_support":"Support","sidepanel_title_account_settings":"Account Settings","sidepanel_title_archive":"Archived Chats","sidepanel_title_blocked":"Blocked Chats","sidepanel_title_cred":"Confirm Credentials","sidepanel_title_login":"Sign In","sidepanel_title_newtpk":"Start New Chat","sidepanel_title_register":"Create Account","sidepanel_title_reset":"Reset Password","sidepanel_title_settings":"Settings","stay_logged_in":"Stay logged in","tabtitle_find_user":"find","tabtitle_group_by_id":"by id","tabtitle_new_group":"new group","tags_editor_no_tags":"Add some tags","tags_not_found":"No tags defined. Add some.","title_all_contacts":"All Contacts","title_group_members":"Group Members","title_manage_tags":"Manage","title_not_found":"Not found","title_permissions":"Permissions","title_tag_manager":"Tags (search & discovery)","topic_block_warning":"Are you sure you want to block this conversation?","topic_delete_warning":"Are you sure you want to delete this conversation?","topic_name_editing_placeholder":"Freeform name of the group","unnamed_topic":"Unnamed","update_available":"Update available.","upload_finishing":"finishing...","user_not_found":"Not found","validate_credential_action":"confirm","description_editing_placeholder":"Optional description","label_description":"Description","button_security":"Security","panel_title_crop":"Drag to Adjust","panel_title_general":"General","panel_title_members":"Members","panel_title_security":"Security","panel_title_info":"Info","permissions_anonymous":"Anonymous","permissions_authenticated":"Authenticated","topic_delete":"Delete Conversation","permissions_user":"User's Permissions","password_reset_email_sent":"An email has been sent to {email}. Follow the directions in the email to reset your password.","label_unarchive_topic":"Archived:","menu_item_forward":"Forward","forward_to":"Forward to","forward_to_search_placeholder":"Search contacts","label_new_password":"New password","drafty_unknown":"Unsupported","preview_unavailable":"unavailable","calls_incoming":"Incoming Call","calls_incoming_title":"Incoming Call","calls_outgoing":"Outgoing Call","calls_you_label":"You","menu_item_video_call":"Video Call"},"es":{"action_block_contact":"Bloquear contacto","action_cancel":"cancelar","action_clear_messages":"Borrar mensajes","action_delete_messages":"Borrar mensajes para todos","action_leave_chat":"Dejar conversación","action_report_chat":"Reportar conversación","archived_contacts":"Contactos archivados ({count})","badge_danger":"Suspicaz","badge_owner":"propietario","badge_staff":"Administración","badge_verified":"Verificado","badge_you":"tú","block_contact_warning":"¿Estás seguro de que quieres bloquear a este contacto?","blocked_contacts_link":"Contactos bloqueados ({count})","button_add_another":"Añadir contacto","button_add_members":"Añadir miembros","button_cancel":"Cancelar","button_confirm":"Confirmar","button_create":"Crear","button_delete_account":"Eliminar cuenta","button_edit":"Editar","button_logout":"Cerrar sesión","button_ok":"OK","button_reset":"Restablecer","button_send_request":"Enviar petición","button_sign_in":"Entrar","button_sign_up":"Regístrate","button_subscribe":"Suscribirse","button_update":"Actualizar","cannot_initiate_file_upload":"No se pudo iniciar la carga del archivo.","channel":"canal","channel_prompt":"Este es un canal","chat_invitation":"Estás invitado a participar en un nuevo chat. ¿Qué te gustaría hacer?","chat_invitation_accept":"Aceptar","chat_invitation_block":"Bloquear","chat_invitation_ignore":"Ignorar","clear_messages_warning":"¿Estás seguro de que quieres eliminar todos los mensajes? Esta acción es irreversible.","code_doesnot_match":"El código no coincide","contacts_not_found":"No tienes chats ¯∖_(ツ)_/¯","contacts_not_found_short":"Ningún contacto coincide con ''{query}''","credential_email_prompt":"Tu correo electrónico de registro","delete_account":"Eliminar cuenta","delete_account_warning":"¿Estás seguro de que deseas eliminar permanentemente tu cuenta? Esta acción es irreversible.","delete_messages_warning":"¿Estás seguro de que quieres eliminar todos los mensajes para todos? Esta acción es irreversible.","deleted_content":"este mensaje fue eliminado","download_action":"descargar","drafty_attachment":"Archivo","drafty_form":"Formulario:","drafty_image":"Imagen","email_dative":"correo electrónico","email_prompt":"Correo electrónico, p.ej. juan@example.com","enable_peers_messaging":"Habilitar","enter_confirmation_code_prompt":"Introduzca el código de confirmación enviado a tu {method}:","error_invalid_id":"ID inválido","file_attachment_too_large":"El tamaño del archivo {size} excede el límite de {limit}.","forgot_password_link":"¿Olvidaste tu contraseña?","full_name_prompt":"Nombre completo, p.ej. Juan González Hernández","granted_permissions":"Otorgados","group_has_no_members":"No hay miembros","group_user_id_prompt":"ID del grupo o usuario","image_caption_prompt":"Añade un comentario","invalid_content":"contenido inválido","invalid_security_token":"Token de seguridad inválido","label_client":"Cliente:","label_content_type":"Tipo de contenido:","label_default_access_mode":"Modo de acceso predeterminado:","label_file_name":"Nombre del archivo:","label_group_members":"Miembros del grupo:","label_incognito_mode":"Modo incógnito:","label_message_sound":"Sonido de mensaje:","label_muting_topic":"Silenciado:","label_other_user":"Otros","label_password":"Contraseña","label_permissions":"Permisos:","label_private":"Comentario privado","label_push_notifications":"Alertas de notificaciones:","label_push_notifications_disabled":"Alertas de notificaciones (requiere HTTPS):","label_reset_password":"Enviar un correo electrónico de restablecimiento de contraseña:","label_sdk":"SDK:","label_server":"Servidor:","label_server_address":"Dirección del servidor:","label_server_to_use":"Servidor para usar:","label_size":"Tamaño:","label_topic_name":"Nombre del tema","label_user_contacts":"Contactos:","label_user_id":"ID:","label_wire_transport":"Transporte de alambre:","label_you":"Tú:","label_your_name":"Tu nombre","label_your_permissions":"Tus permisos:","last_seen_timestamp":"Últ. vez","leave_chat_warning":"¿Estás seguro de que quieres dejar esta conversación?","link_contact_us":"Contáctanos","link_privacy_policy":"Política de privacidad","link_terms_of_service":"Términos de uso","login_prompt":"Nombre de usuario","menu_item_archive_topic":"Archivar","menu_item_block":"Bloquear","menu_item_clear_messages":"Borrar mensajes","menu_item_clear_messages_for_all":"Borrar para todos","menu_item_delete":"Eliminar","menu_item_delete_for_all":"Eliminar para todos","menu_item_delete_topic":"Eliminar","menu_item_edit_permissions":"Editar permisos","menu_item_info":"Información","menu_item_member_delete":"Eliminar","menu_item_mute":"Silenciar","menu_item_restore_topic":"Restaurar","menu_item_send_retry":"Inténtalo de nuevo","menu_item_unblock":"Desbloquear","menu_item_unmute":"Anular el silencio","message_sending":"enviando...","message_sending_failed":"no se pudo enviar el mensaje","messages_not_readable":"sin acceso a mensajes","messaging_disabled_prompt":"El envío de mensajes está deshabilitado","more_online_members":"+{overflow} más","new_message_prompt":"Nuevo mensaje","new_password_placeholder":"Introduzca una nueva contraseña","no_connection":"Sin conexión","no_contacts":"No tienes contactos :-(","numeric_confirmation_code_prompt":"Sólo números","online_now":"en línea","password_prompt":"Contraseña","password_unchanged_prompt":"Sin cambios","peers_messaging_disabled":"La mensajería Peer está deshabilitada.","permission_admin":"Approbar ({val})","permission_delete":"Eliminar ({val})","permission_join":"Unirse ({val})","permission_owner":"Propietario ({val})","permission_pres":"Ser notificado ({val})","permission_read":"Leer ({val})","permission_share":"Compartir ({val})","permission_write":"Escribir ({val})","phone_dative":"teléfono","private_editing_placeholder":"Sólo visible para tí","push_init_failed":"Error al inicializar las notificaciones push","reconnect_countdown":"Desconectado. Reconectando en {seconds}…","reconnect_now":"Reintentar","reload_update":"Recargar","report_chat_warning":"¿Estás seguro de que quieres bloquear y reportar a esta conversación?","requested_permissions":"Solicitados","save_attachment":"guardar","search_for_contacts":"Usa la búsqueda para encontrar contactos","search_no_results":"La búsqueda no arrojó resultados","search_placeholder":"Ej. email:alice@example.com, tel:17025550003...","sidepanel_title_acc_notifications":"Notificaciones","sidepanel_title_acc_support":"Soporte","sidepanel_title_account_settings":"Ajustes de la cuenta","sidepanel_title_archive":"Chats archivados","sidepanel_title_blocked":"Chats bloqueados","sidepanel_title_cred":"Confirmar credenciales","sidepanel_title_login":"Iniciar sesión","sidepanel_title_newtpk":"Iniciar un nuevo chat","sidepanel_title_register":"Crear cuenta","sidepanel_title_reset":"Restablecer contraseña","sidepanel_title_settings":"Ajustes","stay_logged_in":"Permanecer conectado","tabtitle_find_user":"encontrar","tabtitle_group_by_id":"por ID","tabtitle_new_group":"nuevo grupo","tags_editor_no_tags":"Añadir etiquetas","tags_not_found":"No hay etiquetas definidas. Añade unas.","title_all_contacts":"Todos los contactos","title_group_members":"Miembros del grupo","title_manage_tags":"Gestionar","title_not_found":"No encontrado","title_permissions":"Permisos","title_tag_manager":"Etiquetas (descubrimiento de usuarios)","topic_block_warning":"¿Estás seguro de que quieres bloquear esta conversación","topic_delete_warning":"¿Estás seguro de que quieres eliminar esta conversación?","topic_name_editing_placeholder":"Nombre del grupo","unnamed_topic":"Sin nombre","update_available":"Actualización disponible.","upload_finishing":"terminando...","user_not_found":"Usuario no encontrado","validate_credential_action":"confirmar","description_editing_placeholder":"Descripción (opcional)","label_description":"Descripción","button_security":"Seguridad","panel_title_crop":"Arrastra para ajustar","panel_title_general":"General","panel_title_members":"Miembros","panel_title_security":"Seguridad","panel_title_info":"Información","permissions_anonymous":"Anónimo","permissions_authenticated":"Autenticado","topic_delete":"Eliminar chat","permissions_user":"Permisos del usuario","password_reset_email_sent":"Se ha enviado un correo electrónico a {email}. Siga las instrucciones del correo electrónico para restablecer su contraseña.","label_unarchive_topic":"Archivado:","menu_item_reply":"Respuesta","menu_item_forward":"Reenviar","forward_to":"Reenviar a","forward_to_search_placeholder":"Buscar contactos","label_new_password":"Nueva contraseña","drafty_unknown":"No soportado","preview_unavailable":"indisponible"},"ko":{"action_block_contact":"연락차단","action_cancel":"취소","action_clear_messages":"메시지지우기","action_delete_messages":"모든메시지지우기","action_leave_chat":"대화나누기","action_report_chat":"대화기록","archived_contacts":"보관된연락처({수})","badge_danger":"의심 많은","badge_owner":"소유자","badge_staff":"직원 관리하에","badge_verified":"확인 됨","badge_you":"당신","block_contact_warning":"이연락처를차단하시겠습니까?","blocked_contacts_link":"차단된연락처({수})","button_add_another":"다른항목추가","button_add_members":"회원추가","button_cancel":"취소","button_confirm":"확인","button_create":"작성","button_delete_account":"계정삭제","button_edit":"편집","button_logout":"로그아웃","button_ok":"OK","button_reset":"재설정","button_send_request":"요청보내기","button_sign_in":"로그인","button_sign_up":"가입","button_subscribe":"구독","button_update":"업데이트","cannot_initiate_file_upload":"파일업로드를시작할수없습니다.","channel":"채널","channel_prompt":"이 채널입니다","chat_invitation":"새로운대화를시작하도록초대되었습니다.무엇을하시겠습니까?","chat_invitation_accept":"수락","chat_invitation_block":"차단","chat_invitation_ignore":"무시","clear_messages_warning":"모든메시지를지우시겠습니까?실행취소할수없습니다.","code_doesnot_match":"코드가일치하지않습니다","contacts_not_found":"채팅이없습니다 ¯∖_(ツ)_/¯","contacts_not_found_short":"'{문의}'와일치하는연락처가없습니다.","credential_email_prompt":"등록이메일","delete_account":"계정삭제","delete_account_warning":"계정을삭제하시겠습니까?실행취소할수없습니다.","delete_messages_warning":"모든사람의모든메시지를삭제하시겠습니까?실행취소할수없습니다.","deleted_content":"내용이 삭제되었습니다","download_action":"다운로드","drafty_attachment":"부착","drafty_form":"형태:","drafty_image":"이미지","email_dative":"이메일","email_prompt":"이메일(예:hong@example.com)","enable_peers_messaging":"활성화","enter_confirmation_code_prompt":"{방법}으로보낸확인코드를입력하십시오:","error_invalid_id":"잘못된ID","file_attachment_too_large":"파일크기{크기}이(가){제한}제한을초과합니다.","forgot_password_link":"비밀번호를잊으셨습니까?","full_name_prompt":"전체이름(예:홍길동)","granted_permissions":"승낙하다","group_has_no_members":"회원없음","group_user_id_prompt":"그룹또는사용자ID","image_caption_prompt":"이미지설명","invalid_content":"잘못된내용","invalid_security_token":"유효하지않은보안토큰","label_client":"클라이언트: ","label_content_type":"컨텐츠유형: ","label_default_access_mode":"기본액세스모드: ","label_file_name":"파일이름: ","label_group_members":"그룹회원: ","label_incognito_mode":"시크릿모드: ","label_message_sound":"메시지소리: ","label_muting_topic":"음소거: ","label_other_user":"기타","label_password":"비밀번호","label_permissions":"권한: ","label_private":"개인코멘트","label_push_notifications":"통지경보: ","label_push_notifications_disabled":"통지경보(HTTPS필요): ","label_reset_password":"비밀번호재설정이메일보내기: ","label_sdk":"SDK:","label_server":"서버: ","label_server_address":"서버주소: ","label_server_to_use":"사용할서버:","label_size":"크기: ","label_topic_name":"이름","label_user_contacts":"연락처: ","label_user_id":"ID:","label_wire_transport":"와이어수송:","label_you":"당신: ","label_your_name":"이름","label_your_permissions":"권한: ","last_seen_timestamp":"마지막으로본","leave_chat_warning":"이대화를나가시겠습니까?","link_contact_us":"문의처","link_privacy_policy":"개인정보보호정책","link_terms_of_service":"서비스약관","login_prompt":"로그인","menu_item_archive_topic":"보관","menu_item_block":"차단","menu_item_clear_messages":"메시지지우기","menu_item_clear_messages_for_all":"모두지우기","menu_item_delete":"삭제","menu_item_delete_for_all":"모두삭제","menu_item_delete_topic":"삭제","menu_item_edit_permissions":"편집권한","menu_item_info":"정보","menu_item_member_delete":"제거","menu_item_mute":"음소거","menu_item_restore_topic":"복원","menu_item_send_retry":"다시시도","menu_item_unblock":"차단해제","menu_item_unmute":"음소거해제","message_sending":"보내기...","message_sending_failed":"실패","messages_not_readable":"메시지에 액세스 할 수 없습니다","messaging_disabled_prompt":"메시지비활성화","more_online_members":"+{넘침}더보기","new_message_prompt":"새메시지","new_password_placeholder":"새비밀번호입력","no_connection":"연결없음","no_contacts":"연락처가없습니다 (._.)","numeric_confirmation_code_prompt":"숫자만","online_now":"현재접속중","password_prompt":"비밀번호","password_unchanged_prompt":"변경되지않음","peers_messaging_disabled":"동료의메시지가비활성화되었습니다.","permission_admin":"승인({val})","permission_delete":"삭제({val})","permission_join":"참여({val})","permission_owner":"소유자({val})","permission_pres":"알림받기({val})","permission_read":"읽기({val})","permission_share":"공유({val})","permission_write":"쓰기({val})","phone_dative":"전화","private_editing_placeholder":"나만볼수있습니다","push_init_failed":"푸시알림을초기화하지못했습니다","reconnect_countdown":"연결이끊어졌습니다.다시연결하는중{초}…","reconnect_now":"지금시도","reload_update":"재로드","report_chat_warning":"이대화를차단하고기록하시겠습니까?","requested_permissions":"요청","save_attachment":"저장","search_for_contacts":"검색을사용하여연락처찾기","search_no_results":"검색결과가없습니다","search_placeholder":"email:alice@example.com,tel:17025550003...와같은목록","sidepanel_title_acc_notifications":"알림","sidepanel_title_acc_support":"지원","sidepanel_title_account_settings":"계정설정","sidepanel_title_archive":"보관된채팅","sidepanel_title_blocked":"차단된채팅","sidepanel_title_cred":"자격증명확인","sidepanel_title_login":"로그인","sidepanel_title_newtpk":"새채팅시작","sidepanel_title_register":"계정만들기","sidepanel_title_reset":"비밀번호재설정","sidepanel_title_settings":"설정","stay_logged_in":"로그인상태유지","tabtitle_find_user":"찾기","tabtitle_group_by_id":"id로","tabtitle_new_group":"새그룹","tags_editor_no_tags":"일부태그추가","tags_not_found":"태그가정의되지않았습니다.일부를추가하십시오.","title_all_contacts":"모든연락처","title_group_members":"그룹구성원","title_manage_tags":"관리","title_not_found":"찾을수없음","title_permissions":"권한","title_tag_manager":"태그(사용자검색)","topic_block_warning":"이대화를차단하시겠습니까?","topic_delete_warning":"이대화를삭제하시겠습니까?","topic_name_editing_placeholder":"그룹의자유형이름","unnamed_topic":"이름없는","update_available":"업데이트가능.","upload_finishing":"마무리...","user_not_found":"찾을수없음","validate_credential_action":"확인","description_editing_placeholder":"설명(선택 사항)","label_description":"설명","button_security":"보안","panel_title_crop":"드래그하여 조정","panel_title_general":"일반","panel_title_members":"구성원","panel_title_security":"보안","panel_title_info":"정보","permissions_anonymous":"익명","permissions_authenticated":"인증됨","topic_delete":"채팅 삭제","permissions_user":"사용자 권한","password_reset_email_sent":"이메일이 {email}(으)로 전송되었습니다. 이메일의 지침에 따라 비밀번호를 재설정하세요.","label_unarchive_topic":"보관됨:","menu_item_reply":"회신하다","menu_item_forward":"리디렉션","forward_to":"메시지를 리디렉션","forward_to_search_placeholder":"연락처 검색","label_new_password":"새 비밀번호","drafty_unknown":"지원되지 않음","preview_unavailable":"없는"},"ro":{"action_block_contact":"Blochează contact","action_cancel":"anulează","action_clear_messages":"Șterge mesajele","action_delete_messages":"Șterge toate mesajele","action_leave_chat":"Ieși din conversație","action_report_chat":"Raportează conversația","archived_contacts":"Contacte arhivate ({count})","badge_danger":"Suspicios","badge_owner":"owner","badge_staff":"Administrare","badge_verified":"Verificat","badge_you":"tu","block_contact_warning":"Ești sigur că dorești să blochezi acest contact?","blocked_contacts_link":"Contact blocate ({count})","button_add_another":"Adaugă","button_add_members":"Adaugă persoane","button_cancel":"Anulează","button_confirm":"Confirmă","button_create":"Creează","button_delete_account":"Șterge cont","button_edit":"Editează","button_logout":"Deconectare","button_ok":"OK","button_reset":"Resetează","button_send_request":"Trimite cerere","button_sign_in":"Conectează-te","button_sign_up":"Creează cont","button_subscribe":"Subscribe","button_update":"Actualizează","cannot_initiate_file_upload":"Nu se poate face încărcarea.","channel":"canal","channel_prompt":"Acesta este un canal","chat_invitation":"Ai primit invitație într-o conversație. Accepți?","chat_invitation_accept":"Da, accept","chat_invitation_block":"Blochează","chat_invitation_ignore":"Ignoră","clear_messages_warning":"Ești sigur că dorești să ștergi mesajele? Acestea nu pot fi recuperate.","code_doesnot_match":"Codul furnizat nu este valid","contacts_not_found":"Nu ai contacte salvate ¯∖_(ツ)_/¯","contacts_not_found_short":"Niciun contact găsit după criteriile ''{query}''","credential_email_prompt":"Adresa de e-mail","delete_account":"Șterge contul","delete_account_warning":"Ești sigur că dorești să ștergi contul? Acesta nu va putea fi recuperat.","delete_messages_warning":"Ești sigur că dorești să șterge mesajele din toate conversațiile? Acestea nu pot fi recuperate.","deleted_content":"conținut șters","download_action":"download","drafty_attachment":"Atasament","drafty_form":"Formă:","drafty_image":"Imagine","email_dative":"email","email_prompt":"Adresa de e-mail","enable_peers_messaging":"Activează","enter_confirmation_code_prompt":"Introu codul de confirmare trimis pe {method}:","error_invalid_id":"ID Invalid","file_attachment_too_large":"Dimensiunea fișiterului {size} depășește limita de {limit}.","forgot_password_link":"Ți-ai uitat parola?","full_name_prompt":"Numele tău","granted_permissions":"Oferite","group_has_no_members":"În acest grup nu se află persoane","group_user_id_prompt":"Grup sau user ID","image_caption_prompt":"Titlul imaginii","invalid_content":"conținut invalid","invalid_security_token":"Codul de securitate este invalid","label_client":"Client:","label_content_type":"Tip conținut:","label_default_access_mode":"Default access mode:","label_file_name":"Nume fișier:","label_group_members":"Membrii grupului:","label_incognito_mode":"Mod incognito:","label_message_sound":"Sunet de mesaj:","label_muting_topic":"Mod silențios (muted):","label_other_user":"Altele","label_password":"Parola","label_permissions":"Permisiuni:","label_private":"Comentariu privat","label_push_notifications":"Alerte de notificare:","label_push_notifications_disabled":"Alerte de notificare (necesită HTTPS):","label_reset_password":"Resetează parola:","label_sdk":"SDK:","label_server":"Server:","label_server_address":"Adresa serverului:","label_server_to_use":"Server de utilizat:","label_size":"Size:","label_topic_name":"Nume","label_user_contacts":"Contacte:","label_user_id":"ID:","label_wire_transport":"Transportul legat:","label_you":"Tu:","label_your_name":"Numele tău","label_your_permissions":"Permisiuniile tale:","last_seen_timestamp":"Văzut ultima dată","leave_chat_warning":"Ești sigur că dorești să ieși din conersație?","link_contact_us":"Contactează-ne","link_privacy_policy":"Politica de Confidențialitate","link_terms_of_service":"Termenii Serviciului","login_prompt":"Conectează-te","menu_item_archive_topic":"Arhivează","menu_item_block":"Blochează","menu_item_clear_messages":"Șterge mesajele","menu_item_clear_messages_for_all":"Ștergele pe toate","menu_item_delete":"Șterge","menu_item_delete_for_all":"Ștergele pe toate","menu_item_delete_topic":"Șterge","menu_item_edit_permissions":"Editează permisiuni","menu_item_info":"Info","menu_item_member_delete":"Șterge persoană","menu_item_mute":"Mute","menu_item_restore_topic":"Restabili","menu_item_send_retry":"Reîncearcă","menu_item_unblock":"Deblochează","menu_item_unmute":"Unmute","message_sending":"se trimite...","message_sending_failed":"eroare","messages_not_readable":"Mesajele nu pot fi citite","messaging_disabled_prompt":"Mesageria este dezactivată","more_online_members":"+{overflow} mai mult","new_message_prompt":"Mesaj nou","new_password_placeholder":"Introdu parolă","no_connection":"Nu există conexiune","no_contacts":"Nu ai contacte adăugate :-(","numeric_confirmation_code_prompt":"Doar cifre","online_now":"online acum","password_prompt":"Parola","password_unchanged_prompt":"Neschimbată","peers_messaging_disabled":"Mesageria de tip Peer este dezactivată.","permission_admin":"Aprobare ({val})","permission_delete":"Ștergere ({val})","permission_join":"Participare ({val})","permission_owner":"Deținător ({val})","permission_pres":"Notificare ({val})","permission_read":"Citire ({val})","permission_share":"Distribuire ({val})","permission_write":"Scriere ({val})","phone_dative":"telefon","private_editing_placeholder":"Vizibil doar ție","push_init_failed":"Nu s-a reușit inițializarea tip push notifications","reconnect_countdown":"Deconectat. Se încearcă conectarea în {seconds}…","reconnect_now":"Încearcă din nou","reload_update":"Reîncarcă","report_chat_warning":"Ești sigur că dorești să blochezi și să raportezi această conversație?","requested_permissions":"Necesare","save_attachment":"salvează","search_for_contacts":"Caută în contacte","search_no_results":"Nu s-au găsit rezultate","search_placeholder":"Caută după e-mail sau număr telefon...","sidepanel_title_acc_notifications":"Notificări","sidepanel_title_acc_support":"Ajutor","sidepanel_title_account_settings":"Setările Contului","sidepanel_title_archive":"Conversații Arhivate","sidepanel_title_blocked":"Conversații Blocate","sidepanel_title_cred":"Confirmă credențiale","sidepanel_title_login":"Conectează-te","sidepanel_title_newtpk":"Creeză un nou Chat","sidepanel_title_register":"Creează Cont","sidepanel_title_reset":"Resetează Parola","sidepanel_title_settings":"Setări","stay_logged_in":"Rămâi conectat","tabtitle_find_user":"caută","tabtitle_group_by_id":"după id","tabtitle_new_group":"grup nou","tags_editor_no_tags":"Adaugă tag-uri","tags_not_found":"Niciun tag definit. Adaugă.","title_all_contacts":"Toate Contactele","title_group_members":"Persoanele din grup","title_manage_tags":"Administrează","title_not_found":"Nu a fost găsit","title_permissions":"Permisiuni","title_tag_manager":"Tag-uri (user discovery)","topic_block_warning":"Ești sigur că dorești să blochezi această conversație?","topic_delete_warning":"Ești sigur că dorești să șterge această conversație?","topic_name_editing_placeholder":"Numele grupului","unnamed_topic":"Nedenumit","update_available":"Actualizare disponibilă.","upload_finishing":"se încarcă...","user_not_found":"Utilizatorul nu a fost găsit","validate_credential_action":"confirmă","description_editing_placeholder":"Descriere (opțional)","label_description":"Descriere","button_security":"Securitate","panel_title_crop":"Trageți pentru a ajusta","panel_title_general":"Generale","panel_title_members":"Membri","panel_title_security":"Securitate","panel_title_info":"Info","permissions_anonymous":"Anonim","permissions_authenticated":"Autentificat","topic_delete":"Ștergeți Chat","permissions_user":"Permisiunile utilizatorului","password_reset_email_sent":"Un e-mail a fost trimis către {email}. Urmați instrucțiunile din e-mail pentru a vă reseta parola.","label_unarchive_topic":"Arhivat:","menu_item_reply":"A raspunde","menu_item_forward":"Redirecţiona","forward_to":"Redirecționați către","forward_to_search_placeholder":"Căutați contacte","label_new_password":"Parolă Nouă","drafty_unknown":"Neacceptat","preview_unavailable":"indisponibil"},"ru":{"action_block_contact":"Заблокировать контакт","action_cancel":"отменить","action_clear_messages":"Удалить сообщения","action_delete_messages":"Удалить сообщения","action_leave_chat":"Уйти из чата","action_report_chat":"Сообщить о нарушении","archived_contacts":"Чаты в архиве ({count})","badge_danger":"Подозрительный","badge_owner":"влад.","badge_staff":"Администрация","badge_verified":"Верифицированный","badge_you":"вы","block_contact_warning":"Вы действительно заблокировать этот контакт?","blocked_contacts_link":"Заблокированные ({count})","button_add_another":"Добавить","button_add_members":"Добавить","button_cancel":"Отменить","button_confirm":"Подтвердить","button_create":"Создать","button_delete_account":"Удалить аккаунт","button_edit":"Редактировать","button_logout":"Выйти","button_ok":"OK","button_reset":"Изменить","button_send_request":"Отправить","button_sign_in":"Войти","button_sign_up":"Создать аккаунт","button_subscribe":"Подписаться","button_update":"Применить","cannot_initiate_file_upload":"Ошибка загрузки файла.","channel":"канал","channel_prompt":"Создать канал","chat_invitation":"Вас пригласили начать новый чат. Как вы хотите поступить?","chat_invitation_accept":"Принять","chat_invitation_block":"Заблокировать","chat_invitation_ignore":"Игнорировать","clear_messages_warning":"Вы действительно хотите удалить все сообщения в чате? Их будет невозможно восстановить.","code_doesnot_match":"Код не совпадает","contacts_not_found":"Чатов нет ¯∖_(ツ)_/¯","contacts_not_found_short":"Нет контактов для запроса ''{query}''","credential_email_prompt":"Регистрационный емейл","delete_account":"Удалить аккаунт","delete_account_warning":"Вы уверены, что ходите удалить свой аккаунт? Его невозможно будет восстановить.","delete_messages_warning":"Вы действительно хотите удалить все сообщения?","deleted_content":"удалено","download_action":"скачать","drafty_attachment":"Аттачмент","drafty_form":"Форма:","drafty_image":"Картинка","email_dative":"емейлу","email_prompt":"Email, напр. ivan@example.com","enable_peers_messaging":"Разблокировать.","enter_confirmation_code_prompt":"Код подтверждения, полученный по {method}:","error_invalid_id":"Неверный ID","file_attachment_too_large":"Размер файла {size} превышает {limit} лимит.","forgot_password_link":"Напомнить пароль","full_name_prompt":"Полное имя, напр. Иван Петров","granted_permissions":"Получены","group_has_no_members":"Нет участников","group_user_id_prompt":"ID чата или пользователя","image_caption_prompt":"Подпись к фото","invalid_content":"сообщение не читается","invalid_security_token":"Токен некорректен","label_client":"Клиент:","label_content_type":"Тип:","label_default_access_mode":"Доступ по умолчанию:","label_file_name":"Имя файла:","label_group_members":"Участники чата:","label_incognito_mode":"Режим инкогнито:","label_message_sound":"Звук нового сообщения:","label_muting_topic":"Без уведомлений","label_other_user":"Второй","label_password":"Пароль","label_permissions":"Права доступа:","label_private":"Комментарий","label_push_notifications":"Уведомления:","label_push_notifications_disabled":"Уведомления (требуют HTTPS):","label_reset_password":"Отправить емейл для смены пароля:","label_sdk":"SDK:","label_server":"Сервер:","label_server_address":"Адрес сервера:","label_server_to_use":"Использовать сервер:","label_size":"Размер:","label_topic_name":"Название","label_user_contacts":"Конакты:","label_user_id":"ID:","label_wire_transport":"Соединение:","label_you":"Вы:","label_your_name":"Ваше имя","label_your_permissions":"Ваши права доступа:","last_seen_timestamp":"Был активен","leave_chat_warning":"Вы действительно хотите покинуть этот чат?","link_contact_us":"Связаться с нами","link_privacy_policy":"Политика конфиденциальности","link_terms_of_service":"Условия сервиса","login_prompt":"Логин","menu_item_archive_topic":"В архив","menu_item_block":"Заблокировать","menu_item_clear_messages":"Удалить сообщения","menu_item_clear_messages_for_all":"Удалить для всех","menu_item_delete":"Удалить","menu_item_delete_for_all":"Удалить для всех","menu_item_delete_topic":"Удалить чат","menu_item_edit_permissions":"Права доступа","menu_item_info":"Информация","menu_item_member_delete":"Отписать","menu_item_mute":"Не уведомлять","menu_item_restore_topic":"Разархивировать","menu_item_send_retry":"Отправить заново","menu_item_unblock":"Разблокировать","menu_item_unmute":"Уведомлять","message_sending":"в пути...","message_sending_failed":"ошибка","messages_not_readable":"нет доступа к сообщениям","messaging_disabled_prompt":"Отправка недоступна","more_online_members":"+еще {overflow}","new_message_prompt":"Новое сообщение","new_password_placeholder":"Введите новый пароль","no_connection":"Нет связи","no_contacts":"Ничего нет :-(","numeric_confirmation_code_prompt":"Только цифры","online_now":"онлайн","password_prompt":"Пароль","password_unchanged_prompt":"Не изменен","peers_messaging_disabled":"Чат заблокирован у корреспондента.","permission_admin":"Подтверждать ({val})","permission_delete":"Удалять ({val})","permission_join":"Подписываться ({val})","permission_owner":"Владелец ({val})","permission_pres":"Уведомлять ({val})","permission_read":"Читать ({val})","permission_share":"Приглашать ({val})","permission_write":"Писать ({val})","phone_dative":"телефону","private_editing_placeholder":"Виден только вам","push_init_failed":"Ошибка инициализации пуш уведомлений","reconnect_countdown":"Нет связи. Подключение через {seconds}…","reconnect_now":"Подключить сейчас.","reload_update":"Обновить","report_chat_warning":"Вы действительно хотите сообщить о нарушении и заблокировать этот чат?","requested_permissions":"Требуются","save_attachment":"сохранить","search_for_contacts":"Поиск контактов","search_no_results":"Ничего не найдено","search_placeholder":"Список, напр. email:alice@example.com, tel:+17025550003...","sidepanel_title_acc_notifications":"Уведомления","sidepanel_title_acc_support":"Поддержка","sidepanel_title_account_settings":"Настройки аккаунта","sidepanel_title_archive":"Архив чатов","sidepanel_title_blocked":"Заблокированные чаты","sidepanel_title_cred":"Подтвердить","sidepanel_title_login":"Авторизация","sidepanel_title_newtpk":"Новый чат","sidepanel_title_register":"Зарегистрироваться","sidepanel_title_reset":"Сменить пароль","sidepanel_title_settings":"Настройки","stay_logged_in":"Запомнить","tabtitle_find_user":"найти","tabtitle_group_by_id":"по id","tabtitle_new_group":"создать","tags_editor_no_tags":"Добавьте теги","tags_not_found":"Тегов нет. Добавьте","title_all_contacts":"Все контакты","title_group_members":"Участники","title_manage_tags":"Редактировать","title_not_found":"Не найден","title_permissions":"Права доступа","title_tag_manager":"Теги для поиска","topic_block_warning":"Вы действительно хотите заблокировать этот чат?","topic_delete_warning":"Вы действительно хотите удалить этот чат?","topic_name_editing_placeholder":"Название чата","unnamed_topic":"Без названия","update_available":"Есть новая версия приложения.","upload_finishing":"завершение...","user_not_found":"Не найден","validate_credential_action":"подтвердить","description_editing_placeholder":"Описание (не обязательно)","label_description":"Описание","button_security":"Безопасность","panel_title_crop":"Обрезать картинку","panel_title_general":"Общие настройки","panel_title_members":"Участники","panel_title_security":"Безопасность","panel_title_info":"Подробности","permissions_anonymous":"Анонимный","permissions_authenticated":"Авторизованный","topic_delete":"Удалить чат","permissions_user":"Права доступа","password_reset_email_sent":"Сообщение было отправлено на адрес {email}. Следуйте инструкциям в сообщении, чтобы изменить пароль.","label_unarchive_topic":"Архивирован:","menu_item_reply":"Ответить","menu_item_forward":"Переслать","forward_to":"Переслать","forward_to_search_placeholder":"Поиск контактов","label_new_password":"Новый пароль","drafty_unknown":"Не поддерживается","preview_unavailable":"недоступно"},"zh-TW":{"action_block_contact":"封鎖聯絡人","action_cancel":"取消","action_clear_messages":"清除訊息","action_delete_messages":"為所有人清除訊息","action_leave_chat":"離開對話","action_report_chat":"檢舉對話","archived_contacts":"已封存的聯絡人 ({count})","badge_danger":"不可信","badge_owner":"擁有者","badge_staff":"員工管理","badge_verified":"已驗證/官方","badge_you":"您","block_contact_warning":"您確定要封鎖此聯絡人嗎?","blocked_contacts_link":"已封鎖的聯絡人 ({count})","button_add_another":"新增其他人","button_add_members":"新增成員","button_cancel":"取消","button_confirm":"確認","button_create":"建立","button_delete_account":"刪除帳號","button_edit":"編輯","button_logout":"登出","button_ok":"OK","button_reset":"重設","button_send_request":"傳送要求","button_sign_in":"登入","button_sign_up":"註冊","button_subscribe":"訂閱","button_update":"更新","cannot_initiate_file_upload":"無法為檔案上傳初始化。","channel":"頻道","channel_prompt":"這是頻道","chat_invitation":"您已被邀請開始新對話。您接下來要做什麼呢?","chat_invitation_accept":"接受","chat_invitation_block":"封鎖","chat_invitation_ignore":"忽略","clear_messages_warning":"您確定要清除所有訊息嗎?此操作無法復原。","code_doesnot_match":"代碼不相符","contacts_not_found":"您沒有任何對話 ¯∖_(ツ)_/¯","contacts_not_found_short":"沒有符合 ''{query}'' 的聯絡人","credential_email_prompt":"您的註冊電子郵件地址","delete_account":"刪除帳號","delete_account_warning":"您確定要刪除您的帳戶嗎?此操作無法撤消。","delete_messages_warning":"您確定要為所有人刪除所有訊息嗎?此操作無法復原。","deleted_content":"內容已被刪除","download_action":"下載","drafty_attachment":"附加檔案","drafty_form":"表單:","drafty_image":"圖片","email_dative":"電子郵件地址","email_prompt":"電子郵件地址,例如:jdoe@example.com","enable_peers_messaging":"啟用","enter_confirmation_code_prompt":"輸入透過 {method} 傳送給您的確認碼:","error_invalid_id":"ID 無效","file_attachment_too_large":"檔案大小 {size} 超出 {limit} 限制。","forgot_password_link":"忘記密碼?","full_name_prompt":"全名,例如:王小明","granted_permissions":"已授權","group_has_no_members":"無成員","group_user_id_prompt":"群組或使用者 ID","image_caption_prompt":"圖片說明","invalid_content":"內容無效","invalid_security_token":"安全權杖無效","label_client":"客戶端:","label_content_type":"類型:","label_default_access_mode":"預設存取模式:","label_file_name":"檔名:","label_group_members":"群組成員:","label_incognito_mode":"無痕模式:","label_message_sound":"訊息提示聲:","label_muting_topic":"靜音:","label_other_user":"其他","label_password":"密碼","label_permissions":"權限:","label_private":"私人留言","label_push_notifications":"通知:","label_push_notifications_disabled":"通知 (需要 HTTPS):","label_reset_password":"傳送重設密碼郵件:","label_sdk":"SDK:","label_server":"伺服器:","label_server_address":"伺服器位址:","label_server_to_use":"使用的伺服器:","label_size":"大小:","label_topic_name":"名稱","label_user_contacts":"聯絡人:","label_user_id":"ID:","label_wire_transport":"Wire transport:","label_you":"您:","label_your_name":"您的名字","label_your_permissions":"您的權限:","last_seen_timestamp":"最後上線","leave_chat_warning":"您確定要離開此對話嗎?","link_contact_us":"聯絡我們","link_privacy_policy":"隱私權政策","link_terms_of_service":"服務條款","login_prompt":"登入","menu_item_archive_topic":"封存","menu_item_block":"封鎖","menu_item_clear_messages":"清除訊息","menu_item_clear_messages_for_all":"為所有人清除訊息","menu_item_delete":"刪除","menu_item_delete_for_all":"為所有人刪除","menu_item_delete_topic":"刪除","menu_item_edit_permissions":"編輯權限","menu_item_info":"Info","menu_item_member_delete":"移除","menu_item_mute":"靜音","menu_item_restore_topic":"恢復","menu_item_send_retry":"重試","menu_item_unblock":"解除封鎖","menu_item_unmute":"解除靜音","message_sending":"正在傳送...","message_sending_failed":"失敗","messages_not_readable":"沒有存取訊息的權限","messaging_disabled_prompt":"停用訊息","more_online_members":"+{overflow}","new_message_prompt":"新訊息","new_password_placeholder":"輸入新的密碼","no_connection":"無連線","no_contacts":"您沒有任何聯絡人 :-(","numeric_confirmation_code_prompt":"僅數字","online_now":"上線中","password_prompt":"密碼","password_unchanged_prompt":"未修改","peers_messaging_disabled":"Peer 已停用訊息。","permission_admin":"核可 ({val})","permission_delete":"刪除 ({val})","permission_join":"加入 ({val})","permission_owner":"擁有者 ({val})","permission_pres":"收到通知 ({val})","permission_read":"讀取 ({val})","permission_share":"分享 ({val})","permission_write":"撰寫 ({val})","phone_dative":"phone","private_editing_placeholder":"僅您可見","push_init_failed":"初始化通知失敗。","reconnect_countdown":"已斷線。將在 {seconds} 秒後重新連線…","reconnect_now":"現在重試","reload_update":"重新載入","report_chat_warning":"您確定要封鎖並檢舉此對話嗎?","requested_permissions":"重新請求","save_attachment":"儲存","search_for_contacts":"使用搜尋來尋找聯絡人","search_no_results":"搜尋無結果","search_placeholder":"例如 email:alice@example.com, tel:17025550003... 的清單","sidepanel_title_acc_notifications":"通知","sidepanel_title_acc_support":"支援","sidepanel_title_account_settings":"帳號設定","sidepanel_title_archive":"已封存的對話","sidepanel_title_blocked":"已封鎖的對話","sidepanel_title_cred":"確認認證","sidepanel_title_login":"登入","sidepanel_title_newtpk":"開始新對話","sidepanel_title_register":"建立帳號","sidepanel_title_reset":"重設密碼","sidepanel_title_settings":"設定","stay_logged_in":"保持登入","tabtitle_find_user":"尋找","tabtitle_group_by_id":"以 id","tabtitle_new_group":"新群組","tags_editor_no_tags":"新增一些標籤","tags_not_found":"未定義任何標籤。請新增一些標籤。","title_all_contacts":"所有聯絡人","title_group_members":"群組成員","title_manage_tags":"管理","title_not_found":"找不到","title_permissions":"權限","title_tag_manager":"標籤 (使用者探索)","topic_block_warning":"您確定要封鎖此對話嗎?","topic_delete_warning":"您確定要刪除此對話嗎?","topic_name_editing_placeholder":"群組的任意名稱","unnamed_topic":"未命名","update_available":"有可用的更新。","upload_finishing":"正在完成...","user_not_found":"找不到","validate_credential_action":"確認","description_editing_placeholder":"說明(可選)","label_description":"說明","button_security":"安全性","panel_title_crop":"拖動調整","panel_title_general":"一般","panel_title_members":"成員","panel_title_security":"安全性","panel_title_info":"資訊","permissions_anonymous":"匿名","permissions_authenticated":"已認證","topic_delete":"刪除聊天","permissions_user":"用戶權限","password_reset_email_sent":"一封電子郵件已發送至 {email}。按照電子郵件中的說明重置密碼。","label_unarchive_topic":"存檔聊天:","menu_item_reply":"回答","menu_item_forward":"重定向","forward_to":"重定向消息","forward_to_search_placeholder":"搜索聯繫人","label_new_password":"新密碼","drafty_unknown":"不支持","preview_unavailable":"不可用"},"zh":{"action_block_contact":"屏蔽联系人","action_cancel":"取消","action_clear_messages":"删除讯息","action_delete_messages":"删除所有帖子","action_leave_chat":"离开","action_report_chat":"检举垃圾邮件","archived_contacts":"已归档联系人 ({count})","badge_danger":"可疑的","badge_owner":"所有者","badge_staff":"在员工管理下","badge_verified":"值得信赖","badge_you":"你","block_contact_warning":"您确定要阻止此联系人吗?","blocked_contacts_link":"封锁的联络人 ({count})","button_add_another":"加上另一个","button_add_members":"添加成员","button_cancel":"取消","button_confirm":"确认","button_create":"创建","button_delete_account":"删除帐户","button_edit":"编辑","button_logout":"登出","button_ok":"好","button_reset":"重置","button_send_request":"发送请求","button_sign_in":"登录","button_sign_up":"注册","button_subscribe":"订阅","button_update":"更新","cannot_initiate_file_upload":"无法初始化文件上传。","channel":"频道","channel_prompt":"这是一个频道","chat_invitation":"你受邀开始新会话。你想怎么做?","chat_invitation_accept":"接受","chat_invitation_block":"屏蔽","chat_invitation_ignore":"忽略","clear_messages_warning":"您确定要清除所有消息吗?无法撤消。","code_doesnot_match":"代码不匹配","contacts_not_found":"你尚无会话 ¯∖_(ツ)_/¯","contacts_not_found_short":"无联系人匹配''{query}''","credential_email_prompt":"你的注册邮箱","delete_account":"删除帐户","delete_account_warning":"您确定要删除您的帐户吗?无法撤消。","delete_messages_warning":"您确定要删除所有消息吗?无法撤消。","deleted_content":"内容已删除","download_action":"下载","drafty_attachment":"附件","drafty_form":"形式:","drafty_image":"图像","email_dative":"电子邮件","email_prompt":"电子邮件,例如 zhang@example.com","enable_peers_messaging":"启用","enter_confirmation_code_prompt":"输入通过{method}发送的验证码:","error_invalid_id":"无效 ID","file_attachment_too_large":"文件大小 {size} 超过 {limit} 限制。","forgot_password_link":"忘记密码?","full_name_prompt":"全名,例如张伟","granted_permissions":"已授予","group_has_no_members":"无成员","group_user_id_prompt":"群组或用户 ID","image_caption_prompt":"图片标题","invalid_content":"无效内容","invalid_security_token":"无效的安全令牌","label_client":"客户端:","label_content_type":"内容类型:","label_default_access_mode":"蓦然访问模式:","label_file_name":"文件名:","label_group_members":"群组成员:","label_incognito_mode":"无痕模式:","label_message_sound":"消息提示音:","label_muting_topic":"已静音:","label_other_user":"其他","label_password":"密码","label_permissions":"权限:","label_private":"私人评论","label_push_notifications":"通知提醒:","label_push_notifications_disabled":"通知提醒(需要 HTTPS):","label_reset_password":"发送密码重置邮件:","label_sdk":"开发包:","label_server":"服务器:","label_server_address":"服务器地址:","label_server_to_use":"使用的服务器:","label_size":"大小:","label_topic_name":"名称","label_user_contacts":"往来:","label_user_id":"地址:","label_wire_transport":"线路传输:","label_you":"你:","label_your_name":"你的姓名","label_your_permissions":"你的权限:","last_seen_timestamp":"最后可见","leave_chat_warning":"您确定要退出此对话吗?","link_contact_us":"联系我们","link_privacy_policy":"隐私政策","link_terms_of_service":"条款和条件","login_prompt":"登录","menu_item_archive_topic":"归档","menu_item_block":"屏蔽","menu_item_clear_messages":"清空消息","menu_item_clear_messages_for_all":"全部清除","menu_item_delete":"删除","menu_item_delete_for_all":"全部删除","menu_item_delete_topic":"删除","menu_item_edit_permissions":"编辑权限","menu_item_info":"信息","menu_item_member_delete":"移除","menu_item_mute":"静音","menu_item_restore_topic":"从存档中恢复","menu_item_send_retry":"重试","menu_item_unblock":"取消屏蔽","menu_item_unmute":"取消静音","message_sending":"正在发送...","message_sending_failed":"发送失败","messages_not_readable":"无消息访问权限","messaging_disabled_prompt":"消息已禁用","more_online_members":"还有{overflow}个","new_message_prompt":"新消息","new_password_placeholder":"输入新密码","no_connection":"无连接","no_contacts":"你尚无联系人 (._.)","numeric_confirmation_code_prompt":"仅数字","online_now":"在线","password_prompt":"密码","password_unchanged_prompt":"未改变","peers_messaging_disabled":"成员间消息已禁用。","permission_admin":"批准 ({val})","permission_delete":"删除 ({val})","permission_join":"加入 ({val})","permission_owner":"所有者 ({val})","permission_pres":"获取通知 ({val})","permission_read":"读取 ({val})","permission_share":"分享 ({val})","permission_write":"写入 ({val})","phone_dative":"电话","private_editing_placeholder":"仅自己可见","push_init_failed":"初始化推送通知失败","reconnect_countdown":"连接已断开。{seconds} 秒后重新连接…","reconnect_now":"立即尝试","reload_update":"重新载入","report_chat_warning":"您确定要停止并报告此对话吗?","requested_permissions":"已请求","save_attachment":"保存","search_for_contacts":"使用搜索寻找联系人","search_no_results":"搜索返回任何结果","search_placeholder":"列表如 email:alice@example.com, tel:+17025550003...","sidepanel_title_acc_notifications":"通知","sidepanel_title_acc_support":"支持","sidepanel_title_account_settings":"帐号设定","sidepanel_title_archive":"已存档会话","sidepanel_title_blocked":"被阻止的聊天","sidepanel_title_cred":"确认凭据","sidepanel_title_login":"登录","sidepanel_title_newtpk":"开始新会话","sidepanel_title_register":"创建账户","sidepanel_title_reset":"重置密码","sidepanel_title_settings":"设置","stay_logged_in":"保持登录","tabtitle_find_user":"搜索","tabtitle_group_by_id":"通过 id","tabtitle_new_group":"新群组","tags_editor_no_tags":"添加一些标签","tags_not_found":"尚未定义标签。添加一些。","title_all_contacts":"全部联系人","title_group_members":"群组成员","title_manage_tags":"管理标签","title_not_found":"无法找到","title_permissions":"权限","title_tag_manager":"标签(用户发现)","topic_block_warning":"您确定要阻止此对话吗?","topic_delete_warning":"您确定要删除此对话吗?","topic_name_editing_placeholder":"群组自由格式名称","unnamed_topic":"未命名","update_available":"更新可用。","upload_finishing":"正在结束...","user_not_found":"未找到","validate_credential_action":"确认","description_editing_placeholder":"说明(可选)","label_description":"说明","button_security":"安全","panel_title_crop":"拖动调整","panel_title_general":"常用设定","panel_title_members":"成员","panel_title_security":"安全","panel_title_info":"信息","permissions_anonymous":"匿名","permissions_authenticated":"已认证","topic_delete":"删除聊天","permissions_user":"用户权限","password_reset_email_sent":"一封电子邮件已发送至 {email}。按照电子邮件中的说明重置密码。","label_unarchive_topic":"存档:","menu_item_reply":"回复","menu_item_forward":"重定向","forward_to":"重定向消息","forward_to_search_placeholder":"搜索联系人","label_new_password":"新密码","drafty_unknown":"不支持","preview_unavailable":"不可用"}}
\ No newline at end of file
+{"de":{"action_block_contact":"Kontakt blockieren","action_cancel":"Abbrechen","action_clear_messages":"Nachrichten leeren","action_delete_messages":"Nachrichten für alle löschen","action_leave_chat":"Unterhaltung verlassen","action_report_chat":"Unterhaltung melden","archived_contacts":"Archivierte Kontakte ({count})","badge_danger":"Verdächtig","badge_owner":"Besitzer","badge_staff":"Verwaltung","badge_verified":"Verifiziert","badge_you":"Sie","block_contact_warning":"Möchten Sie diesen Kontakt wirklich blockieren?","blocked_contacts_link":"Blockierte Kontakte ({count})","button_add_another":"Hinzufügen","button_add_members":"Mitglieder hinzufügen","button_cancel":"Abbrechen","button_confirm":"Bestätigen","button_create":"Erstellen","button_delete_account":"Konto löschen","button_edit":"Bearbeiten","button_logout":"Abmelden","button_ok":"OK","button_reset":"Zurücksetzen","button_send_request":"Anfrage senden","button_sign_in":"Anmelden","button_sign_up":"Anmelden","button_subscribe":"Abbonieren","button_update":"Aktualisieren","cannot_initiate_file_upload":"Datei kann nicht hochgeladen werden.","channel":"Sender","channel_prompt":"Dies ist ein Sender","chat_invitation":"Sie sind eingeladen, an einem neuen Chat teilzunehmen. Was möchten Sie tun?","chat_invitation_accept":"Akzeptieren","chat_invitation_block":"Blockieren","chat_invitation_ignore":"Ignorieren","clear_messages_warning":"Sind Sie sicher, dass Sie diese Unterhaltung für alle leeren wollen? Das kann nicht rückgängig gemacht werden.","code_doesnot_match":"Code stimmt nicht überein","contacts_not_found":"Sie haben keine Unterhaltungen ¯∖_(ツ)_/¯","contacts_not_found_short":"Keine Kontakte für ''{query}''","credential_email_prompt":"E-Mail Adresse für Registrierung","delete_account":"Konto löschen","delete_account_warning":"Möchten Sie das Konto wirklich löschen? Das kann nicht rückgängig gemacht werden","delete_messages_warning":"Sind Sie sicher, dass Sie diese Unterhaltung für alle löschen wollen? Das kann nicht rückgängig gemacht werden.","deleted_content":"Inhalt gelöscht","download_action":"herunterladen","drafty_attachment":"Dateianhang","drafty_form":"Formular:","drafty_image":"Bild","email_dative":"E-Mail","email_prompt":"E-Mail, z.B. lisam@beispiel.de","enable_peers_messaging":"Aktivieren","enter_confirmation_code_prompt":"Geben Sie den Bestätigungscode ein, der per {method} geschickt wurde:","error_invalid_id":"ungültige ID","file_attachment_too_large":"Die Dateigröße {size} überschreitet das Limit von {limit}.","forgot_password_link":"Passwort vergessen?","full_name_prompt":"Vollständiger Name, z.B. Lisa Musterfrau","granted_permissions":"Erteilt","group_has_no_members":"Keine Mitglieder","group_user_id_prompt":"Gruppe oder Benutzer ID","image_caption_prompt":"Bildunterschrift","invalid_content":"ungültiger Inhalt","invalid_security_token":"Ungültiger Sicherheitsschlüssel","label_client":"Client:","label_content_type":"Inhaltsart:","label_default_access_mode":"Standard Zugriffsmodus:","label_file_name":"Dateiname:","label_group_members":"Gruppenmitglieder:","label_incognito_mode":"inkognito-Modus:","label_message_sound":"Benachrichtigungston:","label_muting_topic":"Stumm geschaltet:","label_other_user":"Andere","label_password":"Passwort","label_permissions":"Berechtigungen:","label_private":"Privater Kommentar","label_push_notifications":"Benachrichtigungsmeldungen:","label_push_notifications_disabled":"Benachrichtigungsmeldungen (erfordert HTTPS):","label_reset_password":"Passwort per E-Mail wiederherstellen:","label_sdk":"SDK:","label_server":"Server:","label_server_address":"Server Adresse:","label_server_to_use":"Server verwenden:","label_size":"Größe:","label_topic_name":"Name","label_user_contacts":"Kontakte:","label_user_id":"ID:","label_wire_transport":"Übertragung per Kabel:","label_you":"Sie:","label_your_name":"Ihr Name","label_your_permissions":"Ihre Berechtigungen:","last_seen_timestamp":"Zuletzt gesehen","leave_chat_warning":"Möchten Sie diese Unterhaltung wirklich verlassen?","link_contact_us":"Kontakt","link_privacy_policy":"Datenschutzerklärung","link_terms_of_service":"Nutzungsbedingungen","login_prompt":"Anmelden","menu_item_archive_topic":"Archivieren","menu_item_block":"Blockieren","menu_item_clear_messages":"Nachrichten leeren","menu_item_clear_messages_for_all":"Für alle leeren","menu_item_delete":"Löschen","menu_item_delete_for_all":"Für alle löschen","menu_item_delete_topic":"Entfernen","menu_item_edit_permissions":"Berechtigungen ändern","menu_item_info":"Info","menu_item_member_delete":"Entfernen","menu_item_mute":"Unterhaltung stumm schalten","menu_item_restore_topic":"Wiederherstellen","menu_item_send_retry":"Wiederholen","menu_item_unblock":"Blockierung aufheben","menu_item_unmute":"Stumm schalten beenden","message_sending":"wird gesendet...","message_sending_failed":"fehlgeschlagen","messages_not_readable":"Neue Nachrichten können nicht gelesen werden","messaging_disabled_prompt":"Nachrichtenübermittlung deaktiviert","more_online_members":"+{overflow} mehr","new_message_prompt":"Neue Nachricht","new_password_placeholder":"Geben Sie ein neues Passwort ein","no_connection":"Keine Verbindung","no_contacts":"Sie haben keine Kontakte :-(","numeric_confirmation_code_prompt":"Nur zahlen","online_now":"jetzt online","password_prompt":"Passwort","password_unchanged_prompt":"unverändert","peers_messaging_disabled":"Gruppennachrichten sind deaktiviert","permission_admin":"Bestätigen ({val})","permission_delete":"Entfernen ({val})","permission_join":"Beitreten ({val})","permission_owner":"Besitzer ({val})","permission_pres":"Benachrichtigt werden ({val})","permission_read":"Lesen ({val})","permission_share":"Teilen ({val})","permission_write":"Schreiben ({val})","phone_dative":"Telefon","private_editing_placeholder":"Nur für Sie sichtbar","push_init_failed":"Initialisierung von Push-Benachrichtigungen fehlgeschlagen","reconnect_countdown":"Getrennt. Wiederverbinden in {seconds}…","reconnect_now":"Jetzt probieren","reload_update":"Neu laden","report_chat_warning":"Möchten Sie diese Unterhaltung wirklich blockieren und melden?","requested_permissions":"Angefordert","save_attachment":"Speichern","search_for_contacts":"Nutzen Sie die Suche um Kontakte zu finden","search_no_results":"Die Suche hatte keine Ergebnisse","search_placeholder":"Liste: email:lisa@beispiel.de, tel:17025550003...","sidepanel_title_acc_notifications":"Benachrichtigungen","sidepanel_title_acc_support":"Unterstützung","sidepanel_title_account_settings":"Konto-Einstellungen","sidepanel_title_archive":"Archivierte Unterhaltungen","sidepanel_title_blocked":"Blockierte Unterhaltungen","sidepanel_title_cred":"Anmeldeinformationen bestätigen","sidepanel_title_login":"Anmelden","sidepanel_title_newtpk":"Neue Unterhaltung starten","sidepanel_title_register":"Konto erstellen","sidepanel_title_reset":"Passwort zurücksetzen","sidepanel_title_settings":"Einstellungen","stay_logged_in":"Angemeldet bleiben","tabtitle_find_user":"Suchen","tabtitle_group_by_id":"nach ID","tabtitle_new_group":"Neue Gruppe","tags_editor_no_tags":"Schlagworte hinzufügen","tags_not_found":"Keine Schlagworte definiert. Erstellen Sie welche.","title_all_contacts":"Alle Kontakte","title_group_members":"Gruppenmitglieder","panel_title_info":"Info","title_manage_tags":"Verwalten","title_not_found":"Nicht gefunden","title_permissions":"Berechtigungen","title_tag_manager":"Schlagworte (Nutzer entdecken)","topic_block_warning":"Möchten Sie diese Unterhaltung wirklich blockieren?","topic_delete_warning":"Möchten Sie diese Unterhaltung wirklich löschen?","topic_name_editing_placeholder":"Freiform Name der Gruppe","unnamed_topic":"Unbenannt","update_available":"Aktualisierung verfügbar.","upload_finishing":"wird abgeschlossen...","user_not_found":"Nicht gefunden","validate_credential_action":"bestätigen","description_editing_placeholder":"Beschreibung (optional)","label_description":"Beschreibung","button_security":"Sicherheit","panel_title_general":"Allgemein","panel_title_security":"Sicherheit","panel_title_crop":"Zum Anpassen ziehen","panel_title_members":"Mitglieder","permissions_anonymous":"Anonym","permissions_authenticated":"Authentifiziert","topic_delete":"Chat löschen","permissions_user":"Benutzerberechtigungen","password_reset_email_sent":"Eine E-Mail wurde an {email} gesendet. Folgen Sie den Anweisungen in der E-Mail, um Ihr Passwort zurückzusetzen.","label_unarchive_topic":"Archiviert:","menu_item_reply":"Antwort","menu_item_forward":"Nach vorne","forward_to":"Weiterleiten","forward_to_search_placeholder":"Kontakte durchsuchen","label_new_password":"Neues Kennwort","drafty_unknown":"Nicht unterstützt"},"en":{"action_block_contact":"Block Contact","action_cancel":"cancel","action_clear_messages":"Clear Messages","action_delete_messages":"Clear Messages for All","action_leave_chat":"Leave Conversation","action_report_chat":"Report Conversation","archived_contacts":"Archived contacts ({count})","badge_danger":"Untrustworthy","badge_owner":"owner","badge_staff":"Staff-managed","badge_verified":"Verified/official","badge_you":"you","block_contact_warning":"Are you sure you want to block this contact?","blocked_contacts_link":"Blocked contacts ({count})","button_add_another":"Add another","button_add_members":"Add members","button_cancel":"Cancel","button_confirm":"Confirm","button_create":"Create","button_delete_account":"Delete account","button_edit":"Edit","button_logout":"Logout","button_ok":"OK","button_reset":"Reset","button_send_request":"Send request","button_sign_in":"Sign in","button_sign_up":"Sign up","button_subscribe":"Subscribe","button_update":"Update","cannot_initiate_file_upload":"Cannot initiate file upload.","channel":"channel","channel_prompt":"This is a channel","chat_invitation":"You are invited to start a new chat. What would you like to do?","chat_invitation_accept":"Accept","chat_invitation_block":"Block","chat_invitation_ignore":"Ignore","clear_messages_warning":"Are you sure you want to clear all messages? It cannot be undone.","code_doesnot_match":"Code does not match","contacts_not_found":"You have no chats ¯∖_(ツ)_/¯","contacts_not_found_short":"No contacts match ''{query}''","credential_email_prompt":"Your registration email","delete_account":"Delete account","delete_account_warning":"Are you sure you want to delete your account? It cannot be undone.","delete_messages_warning":"Are you sure you want to delete all messages for everyone? It cannot be undone.","deleted_content":"content deleted","download_action":"download","drafty_attachment":"Attachment","drafty_form":"Form:","drafty_image":"Picture","email_dative":"email","email_prompt":"Email, e.g. jdoe@example.com","enable_peers_messaging":"Enable","enter_confirmation_code_prompt":"Enter confirmation code sent to you by {method}:","error_invalid_id":"Invalid ID","file_attachment_too_large":"The file size {size} exceeds the {limit} limit.","forgot_password_link":"Forgot password?","full_name_prompt":"Full name, e.g. John Doe","granted_permissions":"Granted","group_has_no_members":"No members","group_user_id_prompt":"Group or User ID","image_caption_prompt":"Image caption","invalid_content":"invalid content","invalid_security_token":"Invalid security token","label_client":"Client:","label_content_type":"Content type:","label_default_access_mode":"Default access mode:","label_file_name":"File name:","label_group_members":"Group members:","label_incognito_mode":"Incognito mode:","label_message_sound":"Message sound:","label_muting_topic":"Muted:","label_other_user":"Other","label_password":"Password","label_permissions":"Permissions:","label_private":"Private comment","label_push_notifications":"Notification alerts:","label_push_notifications_disabled":"Notification alerts (requires HTTPS):","label_reset_password":"Send a password reset email:","label_sdk":"SDK:","label_server":"Server:","label_server_address":"Server address:","label_server_to_use":"Server to use:","label_size":"Size:","label_topic_name":"Name","label_user_contacts":"Contacts:","label_user_id":"ID:","label_wire_transport":"Wire transport:","label_you":"You:","label_your_name":"Your name","label_your_permissions":"Your permissions:","last_seen_timestamp":"Last seen","leave_chat_warning":"Are you sure you want to leave this conversation?","link_contact_us":"Contact Us","link_privacy_policy":"Privacy Policy","link_terms_of_service":"Terms of Service","login_prompt":"Login","menu_item_archive_topic":"Archive","menu_item_block":"Block","menu_item_clear_messages":"Clear messages","menu_item_clear_messages_for_all":"Clear for All","menu_item_delete":"Delete","menu_item_delete_for_all":"Delete for All","menu_item_delete_topic":"Delete","menu_item_edit_permissions":"Edit permissions","menu_item_info":"Info","menu_item_member_delete":"Remove","menu_item_mute":"Mute","menu_item_reply":"Reply","menu_item_restore_topic":"Restore","menu_item_send_retry":"Retry","menu_item_unblock":"Unblock","menu_item_unmute":"Unmute","message_sending":"sending...","message_sending_failed":"failed","messages_not_readable":"no access to messages","messaging_disabled_prompt":"Messaging disabled","more_online_members":"+{overflow} more","new_message_prompt":"New message","new_password_placeholder":"Enter new password","no_connection":"No connection","no_contacts":"You have no contacts :-(","numeric_confirmation_code_prompt":"Numbers only","online_now":"online now","password_prompt":"Password","password_unchanged_prompt":"Unchanged","peers_messaging_disabled":"Peer's messaging is disabled.","permission_admin":"Approve ({val})","permission_delete":"Delete ({val})","permission_join":"Join ({val})","permission_owner":"Owner ({val})","permission_pres":"Get notified ({val})","permission_read":"Read ({val})","permission_share":"Share ({val})","permission_write":"Write ({val})","phone_dative":"phone","private_editing_placeholder":"Visible to you only","push_init_failed":"Failed to initialize push notifications","reconnect_countdown":"Disconnected. Reconnecting in {seconds}…","reconnect_now":"Try now","reload_update":"Reload","report_chat_warning":"Are you sure you want to block and report this conversation?","requested_permissions":"Requested","save_attachment":"save","search_for_contacts":"Use search to find contacts","search_no_results":"Search returned no results","search_placeholder":"List like email:alice@example.com, tel:17025550003...","sidepanel_title_acc_notifications":"Notifications","sidepanel_title_acc_support":"Support","sidepanel_title_account_settings":"Account Settings","sidepanel_title_archive":"Archived Chats","sidepanel_title_blocked":"Blocked Chats","sidepanel_title_cred":"Confirm Credentials","sidepanel_title_login":"Sign In","sidepanel_title_newtpk":"Start New Chat","sidepanel_title_register":"Create Account","sidepanel_title_reset":"Reset Password","sidepanel_title_settings":"Settings","stay_logged_in":"Stay logged in","tabtitle_find_user":"find","tabtitle_group_by_id":"by id","tabtitle_new_group":"new group","tags_editor_no_tags":"Add some tags","tags_not_found":"No tags defined. Add some.","title_all_contacts":"All Contacts","title_group_members":"Group Members","title_manage_tags":"Manage","title_not_found":"Not found","title_permissions":"Permissions","title_tag_manager":"Tags (search & discovery)","topic_block_warning":"Are you sure you want to block this conversation?","topic_delete_warning":"Are you sure you want to delete this conversation?","topic_name_editing_placeholder":"Freeform name of the group","unnamed_topic":"Unnamed","update_available":"Update available.","upload_finishing":"finishing...","user_not_found":"Not found","validate_credential_action":"confirm","description_editing_placeholder":"Optional description","label_description":"Description","button_security":"Security","panel_title_crop":"Drag to Adjust","panel_title_general":"General","panel_title_members":"Members","panel_title_security":"Security","panel_title_info":"Info","permissions_anonymous":"Anonymous","permissions_authenticated":"Authenticated","topic_delete":"Delete Conversation","permissions_user":"User's Permissions","password_reset_email_sent":"An email has been sent to {email}. Follow the directions in the email to reset your password.","label_unarchive_topic":"Archived:","menu_item_forward":"Forward","forward_to":"Forward to","forward_to_search_placeholder":"Search contacts","label_new_password":"New password","drafty_unknown":"Unsupported","calls_incoming":"Incoming Call","calls_incoming_title":"Incoming Call","calls_outgoing":"Outgoing Call","calls_you_label":"You","menu_item_video_call":"Video Call"},"es":{"action_block_contact":"Bloquear contacto","action_cancel":"cancelar","action_clear_messages":"Borrar mensajes","action_delete_messages":"Borrar mensajes para todos","action_leave_chat":"Dejar conversación","action_report_chat":"Reportar conversación","archived_contacts":"Contactos archivados ({count})","badge_danger":"Suspicaz","badge_owner":"propietario","badge_staff":"Administración","badge_verified":"Verificado","badge_you":"tú","block_contact_warning":"¿Estás seguro de que quieres bloquear a este contacto?","blocked_contacts_link":"Contactos bloqueados ({count})","button_add_another":"Añadir contacto","button_add_members":"Añadir miembros","button_cancel":"Cancelar","button_confirm":"Confirmar","button_create":"Crear","button_delete_account":"Eliminar cuenta","button_edit":"Editar","button_logout":"Cerrar sesión","button_ok":"OK","button_reset":"Restablecer","button_send_request":"Enviar petición","button_sign_in":"Entrar","button_sign_up":"Regístrate","button_subscribe":"Suscribirse","button_update":"Actualizar","cannot_initiate_file_upload":"No se pudo iniciar la carga del archivo.","channel":"canal","channel_prompt":"Este es un canal","chat_invitation":"Estás invitado a participar en un nuevo chat. ¿Qué te gustaría hacer?","chat_invitation_accept":"Aceptar","chat_invitation_block":"Bloquear","chat_invitation_ignore":"Ignorar","clear_messages_warning":"¿Estás seguro de que quieres eliminar todos los mensajes? Esta acción es irreversible.","code_doesnot_match":"El código no coincide","contacts_not_found":"No tienes chats ¯∖_(ツ)_/¯","contacts_not_found_short":"Ningún contacto coincide con ''{query}''","credential_email_prompt":"Tu correo electrónico de registro","delete_account":"Eliminar cuenta","delete_account_warning":"¿Estás seguro de que deseas eliminar permanentemente tu cuenta? Esta acción es irreversible.","delete_messages_warning":"¿Estás seguro de que quieres eliminar todos los mensajes para todos? Esta acción es irreversible.","deleted_content":"este mensaje fue eliminado","download_action":"descargar","drafty_attachment":"Archivo","drafty_form":"Formulario:","drafty_image":"Imagen","email_dative":"correo electrónico","email_prompt":"Correo electrónico, p.ej. juan@example.com","enable_peers_messaging":"Habilitar","enter_confirmation_code_prompt":"Introduzca el código de confirmación enviado a tu {method}:","error_invalid_id":"ID inválido","file_attachment_too_large":"El tamaño del archivo {size} excede el límite de {limit}.","forgot_password_link":"¿Olvidaste tu contraseña?","full_name_prompt":"Nombre completo, p.ej. Juan González Hernández","granted_permissions":"Otorgados","group_has_no_members":"No hay miembros","group_user_id_prompt":"ID del grupo o usuario","image_caption_prompt":"Añade un comentario","invalid_content":"contenido inválido","invalid_security_token":"Token de seguridad inválido","label_client":"Cliente:","label_content_type":"Tipo de contenido:","label_default_access_mode":"Modo de acceso predeterminado:","label_file_name":"Nombre del archivo:","label_group_members":"Miembros del grupo:","label_incognito_mode":"Modo incógnito:","label_message_sound":"Sonido de mensaje:","label_muting_topic":"Silenciado:","label_other_user":"Otros","label_password":"Contraseña","label_permissions":"Permisos:","label_private":"Comentario privado","label_push_notifications":"Alertas de notificaciones:","label_push_notifications_disabled":"Alertas de notificaciones (requiere HTTPS):","label_reset_password":"Enviar un correo electrónico de restablecimiento de contraseña:","label_sdk":"SDK:","label_server":"Servidor:","label_server_address":"Dirección del servidor:","label_server_to_use":"Servidor para usar:","label_size":"Tamaño:","label_topic_name":"Nombre del tema","label_user_contacts":"Contactos:","label_user_id":"ID:","label_wire_transport":"Transporte de alambre:","label_you":"Tú:","label_your_name":"Tu nombre","label_your_permissions":"Tus permisos:","last_seen_timestamp":"Últ. vez","leave_chat_warning":"¿Estás seguro de que quieres dejar esta conversación?","link_contact_us":"Contáctanos","link_privacy_policy":"Política de privacidad","link_terms_of_service":"Términos de uso","login_prompt":"Nombre de usuario","menu_item_archive_topic":"Archivar","menu_item_block":"Bloquear","menu_item_clear_messages":"Borrar mensajes","menu_item_clear_messages_for_all":"Borrar para todos","menu_item_delete":"Eliminar","menu_item_delete_for_all":"Eliminar para todos","menu_item_delete_topic":"Eliminar","menu_item_edit_permissions":"Editar permisos","menu_item_info":"Información","menu_item_member_delete":"Eliminar","menu_item_mute":"Silenciar","menu_item_restore_topic":"Restaurar","menu_item_send_retry":"Inténtalo de nuevo","menu_item_unblock":"Desbloquear","menu_item_unmute":"Anular el silencio","message_sending":"enviando...","message_sending_failed":"no se pudo enviar el mensaje","messages_not_readable":"sin acceso a mensajes","messaging_disabled_prompt":"El envío de mensajes está deshabilitado","more_online_members":"+{overflow} más","new_message_prompt":"Nuevo mensaje","new_password_placeholder":"Introduzca una nueva contraseña","no_connection":"Sin conexión","no_contacts":"No tienes contactos :-(","numeric_confirmation_code_prompt":"Sólo números","online_now":"en línea","password_prompt":"Contraseña","password_unchanged_prompt":"Sin cambios","peers_messaging_disabled":"La mensajería Peer está deshabilitada.","permission_admin":"Approbar ({val})","permission_delete":"Eliminar ({val})","permission_join":"Unirse ({val})","permission_owner":"Propietario ({val})","permission_pres":"Ser notificado ({val})","permission_read":"Leer ({val})","permission_share":"Compartir ({val})","permission_write":"Escribir ({val})","phone_dative":"teléfono","private_editing_placeholder":"Sólo visible para tí","push_init_failed":"Error al inicializar las notificaciones push","reconnect_countdown":"Desconectado. Reconectando en {seconds}…","reconnect_now":"Reintentar","reload_update":"Recargar","report_chat_warning":"¿Estás seguro de que quieres bloquear y reportar a esta conversación?","requested_permissions":"Solicitados","save_attachment":"guardar","search_for_contacts":"Usa la búsqueda para encontrar contactos","search_no_results":"La búsqueda no arrojó resultados","search_placeholder":"Ej. email:alice@example.com, tel:17025550003...","sidepanel_title_acc_notifications":"Notificaciones","sidepanel_title_acc_support":"Soporte","sidepanel_title_account_settings":"Ajustes de la cuenta","sidepanel_title_archive":"Chats archivados","sidepanel_title_blocked":"Chats bloqueados","sidepanel_title_cred":"Confirmar credenciales","sidepanel_title_login":"Iniciar sesión","sidepanel_title_newtpk":"Iniciar un nuevo chat","sidepanel_title_register":"Crear cuenta","sidepanel_title_reset":"Restablecer contraseña","sidepanel_title_settings":"Ajustes","stay_logged_in":"Permanecer conectado","tabtitle_find_user":"encontrar","tabtitle_group_by_id":"por ID","tabtitle_new_group":"nuevo grupo","tags_editor_no_tags":"Añadir etiquetas","tags_not_found":"No hay etiquetas definidas. Añade unas.","title_all_contacts":"Todos los contactos","title_group_members":"Miembros del grupo","title_manage_tags":"Gestionar","title_not_found":"No encontrado","title_permissions":"Permisos","title_tag_manager":"Etiquetas (descubrimiento de usuarios)","topic_block_warning":"¿Estás seguro de que quieres bloquear esta conversación","topic_delete_warning":"¿Estás seguro de que quieres eliminar esta conversación?","topic_name_editing_placeholder":"Nombre del grupo","unnamed_topic":"Sin nombre","update_available":"Actualización disponible.","upload_finishing":"terminando...","user_not_found":"Usuario no encontrado","validate_credential_action":"confirmar","description_editing_placeholder":"Descripción (opcional)","label_description":"Descripción","button_security":"Seguridad","panel_title_crop":"Arrastra para ajustar","panel_title_general":"General","panel_title_members":"Miembros","panel_title_security":"Seguridad","panel_title_info":"Información","permissions_anonymous":"Anónimo","permissions_authenticated":"Autenticado","topic_delete":"Eliminar chat","permissions_user":"Permisos del usuario","password_reset_email_sent":"Se ha enviado un correo electrónico a {email}. Siga las instrucciones del correo electrónico para restablecer su contraseña.","label_unarchive_topic":"Archivado:","menu_item_reply":"Respuesta","menu_item_forward":"Reenviar","forward_to":"Reenviar a","forward_to_search_placeholder":"Buscar contactos","label_new_password":"Nueva contraseña","drafty_unknown":"No soportado"},"ko":{"action_block_contact":"연락차단","action_cancel":"취소","action_clear_messages":"메시지지우기","action_delete_messages":"모든메시지지우기","action_leave_chat":"대화나누기","action_report_chat":"대화기록","archived_contacts":"보관된연락처({수})","badge_danger":"의심 많은","badge_owner":"소유자","badge_staff":"직원 관리하에","badge_verified":"확인 됨","badge_you":"당신","block_contact_warning":"이연락처를차단하시겠습니까?","blocked_contacts_link":"차단된연락처({수})","button_add_another":"다른항목추가","button_add_members":"회원추가","button_cancel":"취소","button_confirm":"확인","button_create":"작성","button_delete_account":"계정삭제","button_edit":"편집","button_logout":"로그아웃","button_ok":"OK","button_reset":"재설정","button_send_request":"요청보내기","button_sign_in":"로그인","button_sign_up":"가입","button_subscribe":"구독","button_update":"업데이트","cannot_initiate_file_upload":"파일업로드를시작할수없습니다.","channel":"채널","channel_prompt":"이 채널입니다","chat_invitation":"새로운대화를시작하도록초대되었습니다.무엇을하시겠습니까?","chat_invitation_accept":"수락","chat_invitation_block":"차단","chat_invitation_ignore":"무시","clear_messages_warning":"모든메시지를지우시겠습니까?실행취소할수없습니다.","code_doesnot_match":"코드가일치하지않습니다","contacts_not_found":"채팅이없습니다 ¯∖_(ツ)_/¯","contacts_not_found_short":"'{문의}'와일치하는연락처가없습니다.","credential_email_prompt":"등록이메일","delete_account":"계정삭제","delete_account_warning":"계정을삭제하시겠습니까?실행취소할수없습니다.","delete_messages_warning":"모든사람의모든메시지를삭제하시겠습니까?실행취소할수없습니다.","deleted_content":"내용이 삭제되었습니다","download_action":"다운로드","drafty_attachment":"부착","drafty_form":"형태:","drafty_image":"이미지","email_dative":"이메일","email_prompt":"이메일(예:hong@example.com)","enable_peers_messaging":"활성화","enter_confirmation_code_prompt":"{방법}으로보낸확인코드를입력하십시오:","error_invalid_id":"잘못된ID","file_attachment_too_large":"파일크기{크기}이(가){제한}제한을초과합니다.","forgot_password_link":"비밀번호를잊으셨습니까?","full_name_prompt":"전체이름(예:홍길동)","granted_permissions":"승낙하다","group_has_no_members":"회원없음","group_user_id_prompt":"그룹또는사용자ID","image_caption_prompt":"이미지설명","invalid_content":"잘못된내용","invalid_security_token":"유효하지않은보안토큰","label_client":"클라이언트: ","label_content_type":"컨텐츠유형: ","label_default_access_mode":"기본액세스모드: ","label_file_name":"파일이름: ","label_group_members":"그룹회원: ","label_incognito_mode":"시크릿모드: ","label_message_sound":"메시지소리: ","label_muting_topic":"음소거: ","label_other_user":"기타","label_password":"비밀번호","label_permissions":"권한: ","label_private":"개인코멘트","label_push_notifications":"통지경보: ","label_push_notifications_disabled":"통지경보(HTTPS필요): ","label_reset_password":"비밀번호재설정이메일보내기: ","label_sdk":"SDK:","label_server":"서버: ","label_server_address":"서버주소: ","label_server_to_use":"사용할서버:","label_size":"크기: ","label_topic_name":"이름","label_user_contacts":"연락처: ","label_user_id":"ID:","label_wire_transport":"와이어수송:","label_you":"당신: ","label_your_name":"이름","label_your_permissions":"권한: ","last_seen_timestamp":"마지막으로본","leave_chat_warning":"이대화를나가시겠습니까?","link_contact_us":"문의처","link_privacy_policy":"개인정보보호정책","link_terms_of_service":"서비스약관","login_prompt":"로그인","menu_item_archive_topic":"보관","menu_item_block":"차단","menu_item_clear_messages":"메시지지우기","menu_item_clear_messages_for_all":"모두지우기","menu_item_delete":"삭제","menu_item_delete_for_all":"모두삭제","menu_item_delete_topic":"삭제","menu_item_edit_permissions":"편집권한","menu_item_info":"정보","menu_item_member_delete":"제거","menu_item_mute":"음소거","menu_item_restore_topic":"복원","menu_item_send_retry":"다시시도","menu_item_unblock":"차단해제","menu_item_unmute":"음소거해제","message_sending":"보내기...","message_sending_failed":"실패","messages_not_readable":"메시지에 액세스 할 수 없습니다","messaging_disabled_prompt":"메시지비활성화","more_online_members":"+{넘침}더보기","new_message_prompt":"새메시지","new_password_placeholder":"새비밀번호입력","no_connection":"연결없음","no_contacts":"연락처가없습니다 (._.)","numeric_confirmation_code_prompt":"숫자만","online_now":"현재접속중","password_prompt":"비밀번호","password_unchanged_prompt":"변경되지않음","peers_messaging_disabled":"동료의메시지가비활성화되었습니다.","permission_admin":"승인({val})","permission_delete":"삭제({val})","permission_join":"참여({val})","permission_owner":"소유자({val})","permission_pres":"알림받기({val})","permission_read":"읽기({val})","permission_share":"공유({val})","permission_write":"쓰기({val})","phone_dative":"전화","private_editing_placeholder":"나만볼수있습니다","push_init_failed":"푸시알림을초기화하지못했습니다","reconnect_countdown":"연결이끊어졌습니다.다시연결하는중{초}…","reconnect_now":"지금시도","reload_update":"재로드","report_chat_warning":"이대화를차단하고기록하시겠습니까?","requested_permissions":"요청","save_attachment":"저장","search_for_contacts":"검색을사용하여연락처찾기","search_no_results":"검색결과가없습니다","search_placeholder":"email:alice@example.com,tel:17025550003...와같은목록","sidepanel_title_acc_notifications":"알림","sidepanel_title_acc_support":"지원","sidepanel_title_account_settings":"계정설정","sidepanel_title_archive":"보관된채팅","sidepanel_title_blocked":"차단된채팅","sidepanel_title_cred":"자격증명확인","sidepanel_title_login":"로그인","sidepanel_title_newtpk":"새채팅시작","sidepanel_title_register":"계정만들기","sidepanel_title_reset":"비밀번호재설정","sidepanel_title_settings":"설정","stay_logged_in":"로그인상태유지","tabtitle_find_user":"찾기","tabtitle_group_by_id":"id로","tabtitle_new_group":"새그룹","tags_editor_no_tags":"일부태그추가","tags_not_found":"태그가정의되지않았습니다.일부를추가하십시오.","title_all_contacts":"모든연락처","title_group_members":"그룹구성원","title_manage_tags":"관리","title_not_found":"찾을수없음","title_permissions":"권한","title_tag_manager":"태그(사용자검색)","topic_block_warning":"이대화를차단하시겠습니까?","topic_delete_warning":"이대화를삭제하시겠습니까?","topic_name_editing_placeholder":"그룹의자유형이름","unnamed_topic":"이름없는","update_available":"업데이트가능.","upload_finishing":"마무리...","user_not_found":"찾을수없음","validate_credential_action":"확인","description_editing_placeholder":"설명(선택 사항)","label_description":"설명","button_security":"보안","panel_title_crop":"드래그하여 조정","panel_title_general":"일반","panel_title_members":"구성원","panel_title_security":"보안","panel_title_info":"정보","permissions_anonymous":"익명","permissions_authenticated":"인증됨","topic_delete":"채팅 삭제","permissions_user":"사용자 권한","password_reset_email_sent":"이메일이 {email}(으)로 전송되었습니다. 이메일의 지침에 따라 비밀번호를 재설정하세요.","label_unarchive_topic":"보관됨:","menu_item_reply":"회신하다","menu_item_forward":"리디렉션","forward_to":"메시지를 리디렉션","forward_to_search_placeholder":"연락처 검색","label_new_password":"새 비밀번호","drafty_unknown":"지원되지 않음"},"ro":{"action_block_contact":"Blochează contact","action_cancel":"anulează","action_clear_messages":"Șterge mesajele","action_delete_messages":"Șterge toate mesajele","action_leave_chat":"Ieși din conversație","action_report_chat":"Raportează conversația","archived_contacts":"Contacte arhivate ({count})","badge_danger":"Suspicios","badge_owner":"owner","badge_staff":"Administrare","badge_verified":"Verificat","badge_you":"tu","block_contact_warning":"Ești sigur că dorești să blochezi acest contact?","blocked_contacts_link":"Contact blocate ({count})","button_add_another":"Adaugă","button_add_members":"Adaugă persoane","button_cancel":"Anulează","button_confirm":"Confirmă","button_create":"Creează","button_delete_account":"Șterge cont","button_edit":"Editează","button_logout":"Deconectare","button_ok":"OK","button_reset":"Resetează","button_send_request":"Trimite cerere","button_sign_in":"Conectează-te","button_sign_up":"Creează cont","button_subscribe":"Subscribe","button_update":"Actualizează","cannot_initiate_file_upload":"Nu se poate face încărcarea.","channel":"canal","channel_prompt":"Acesta este un canal","chat_invitation":"Ai primit invitație într-o conversație. Accepți?","chat_invitation_accept":"Da, accept","chat_invitation_block":"Blochează","chat_invitation_ignore":"Ignoră","clear_messages_warning":"Ești sigur că dorești să ștergi mesajele? Acestea nu pot fi recuperate.","code_doesnot_match":"Codul furnizat nu este valid","contacts_not_found":"Nu ai contacte salvate ¯∖_(ツ)_/¯","contacts_not_found_short":"Niciun contact găsit după criteriile ''{query}''","credential_email_prompt":"Adresa de e-mail","delete_account":"Șterge contul","delete_account_warning":"Ești sigur că dorești să ștergi contul? Acesta nu va putea fi recuperat.","delete_messages_warning":"Ești sigur că dorești să șterge mesajele din toate conversațiile? Acestea nu pot fi recuperate.","deleted_content":"conținut șters","download_action":"download","drafty_attachment":"Atasament","drafty_form":"Formă:","drafty_image":"Imagine","email_dative":"email","email_prompt":"Adresa de e-mail","enable_peers_messaging":"Activează","enter_confirmation_code_prompt":"Introu codul de confirmare trimis pe {method}:","error_invalid_id":"ID Invalid","file_attachment_too_large":"Dimensiunea fișiterului {size} depășește limita de {limit}.","forgot_password_link":"Ți-ai uitat parola?","full_name_prompt":"Numele tău","granted_permissions":"Oferite","group_has_no_members":"În acest grup nu se află persoane","group_user_id_prompt":"Grup sau user ID","image_caption_prompt":"Titlul imaginii","invalid_content":"conținut invalid","invalid_security_token":"Codul de securitate este invalid","label_client":"Client:","label_content_type":"Tip conținut:","label_default_access_mode":"Default access mode:","label_file_name":"Nume fișier:","label_group_members":"Membrii grupului:","label_incognito_mode":"Mod incognito:","label_message_sound":"Sunet de mesaj:","label_muting_topic":"Mod silențios (muted):","label_other_user":"Altele","label_password":"Parola","label_permissions":"Permisiuni:","label_private":"Comentariu privat","label_push_notifications":"Alerte de notificare:","label_push_notifications_disabled":"Alerte de notificare (necesită HTTPS):","label_reset_password":"Resetează parola:","label_sdk":"SDK:","label_server":"Server:","label_server_address":"Adresa serverului:","label_server_to_use":"Server de utilizat:","label_size":"Size:","label_topic_name":"Nume","label_user_contacts":"Contacte:","label_user_id":"ID:","label_wire_transport":"Transportul legat:","label_you":"Tu:","label_your_name":"Numele tău","label_your_permissions":"Permisiuniile tale:","last_seen_timestamp":"Văzut ultima dată","leave_chat_warning":"Ești sigur că dorești să ieși din conersație?","link_contact_us":"Contactează-ne","link_privacy_policy":"Politica de Confidențialitate","link_terms_of_service":"Termenii Serviciului","login_prompt":"Conectează-te","menu_item_archive_topic":"Arhivează","menu_item_block":"Blochează","menu_item_clear_messages":"Șterge mesajele","menu_item_clear_messages_for_all":"Ștergele pe toate","menu_item_delete":"Șterge","menu_item_delete_for_all":"Ștergele pe toate","menu_item_delete_topic":"Șterge","menu_item_edit_permissions":"Editează permisiuni","menu_item_info":"Info","menu_item_member_delete":"Șterge persoană","menu_item_mute":"Mute","menu_item_restore_topic":"Restabili","menu_item_send_retry":"Reîncearcă","menu_item_unblock":"Deblochează","menu_item_unmute":"Unmute","message_sending":"se trimite...","message_sending_failed":"eroare","messages_not_readable":"Mesajele nu pot fi citite","messaging_disabled_prompt":"Mesageria este dezactivată","more_online_members":"+{overflow} mai mult","new_message_prompt":"Mesaj nou","new_password_placeholder":"Introdu parolă","no_connection":"Nu există conexiune","no_contacts":"Nu ai contacte adăugate :-(","numeric_confirmation_code_prompt":"Doar cifre","online_now":"online acum","password_prompt":"Parola","password_unchanged_prompt":"Neschimbată","peers_messaging_disabled":"Mesageria de tip Peer este dezactivată.","permission_admin":"Aprobare ({val})","permission_delete":"Ștergere ({val})","permission_join":"Participare ({val})","permission_owner":"Deținător ({val})","permission_pres":"Notificare ({val})","permission_read":"Citire ({val})","permission_share":"Distribuire ({val})","permission_write":"Scriere ({val})","phone_dative":"telefon","private_editing_placeholder":"Vizibil doar ție","push_init_failed":"Nu s-a reușit inițializarea tip push notifications","reconnect_countdown":"Deconectat. Se încearcă conectarea în {seconds}…","reconnect_now":"Încearcă din nou","reload_update":"Reîncarcă","report_chat_warning":"Ești sigur că dorești să blochezi și să raportezi această conversație?","requested_permissions":"Necesare","save_attachment":"salvează","search_for_contacts":"Caută în contacte","search_no_results":"Nu s-au găsit rezultate","search_placeholder":"Caută după e-mail sau număr telefon...","sidepanel_title_acc_notifications":"Notificări","sidepanel_title_acc_support":"Ajutor","sidepanel_title_account_settings":"Setările Contului","sidepanel_title_archive":"Conversații Arhivate","sidepanel_title_blocked":"Conversații Blocate","sidepanel_title_cred":"Confirmă credențiale","sidepanel_title_login":"Conectează-te","sidepanel_title_newtpk":"Creeză un nou Chat","sidepanel_title_register":"Creează Cont","sidepanel_title_reset":"Resetează Parola","sidepanel_title_settings":"Setări","stay_logged_in":"Rămâi conectat","tabtitle_find_user":"caută","tabtitle_group_by_id":"după id","tabtitle_new_group":"grup nou","tags_editor_no_tags":"Adaugă tag-uri","tags_not_found":"Niciun tag definit. Adaugă.","title_all_contacts":"Toate Contactele","title_group_members":"Persoanele din grup","title_manage_tags":"Administrează","title_not_found":"Nu a fost găsit","title_permissions":"Permisiuni","title_tag_manager":"Tag-uri (user discovery)","topic_block_warning":"Ești sigur că dorești să blochezi această conversație?","topic_delete_warning":"Ești sigur că dorești să șterge această conversație?","topic_name_editing_placeholder":"Numele grupului","unnamed_topic":"Nedenumit","update_available":"Actualizare disponibilă.","upload_finishing":"se încarcă...","user_not_found":"Utilizatorul nu a fost găsit","validate_credential_action":"confirmă","description_editing_placeholder":"Descriere (opțional)","label_description":"Descriere","button_security":"Securitate","panel_title_crop":"Trageți pentru a ajusta","panel_title_general":"Generale","panel_title_members":"Membri","panel_title_security":"Securitate","panel_title_info":"Info","permissions_anonymous":"Anonim","permissions_authenticated":"Autentificat","topic_delete":"Ștergeți Chat","permissions_user":"Permisiunile utilizatorului","password_reset_email_sent":"Un e-mail a fost trimis către {email}. Urmați instrucțiunile din e-mail pentru a vă reseta parola.","label_unarchive_topic":"Arhivat:","menu_item_reply":"A raspunde","menu_item_forward":"Redirecţiona","forward_to":"Redirecționați către","forward_to_search_placeholder":"Căutați contacte","label_new_password":"Parolă Nouă","drafty_unknown":"Neacceptat"},"ru":{"action_block_contact":"Заблокировать контакт","action_cancel":"отменить","action_clear_messages":"Удалить сообщения","action_delete_messages":"Удалить сообщения","action_leave_chat":"Уйти из чата","action_report_chat":"Сообщить о нарушении","archived_contacts":"Чаты в архиве ({count})","badge_danger":"Подозрительный","badge_owner":"влад.","badge_staff":"Администрация","badge_verified":"Верифицированный","badge_you":"вы","block_contact_warning":"Вы действительно заблокировать этот контакт?","blocked_contacts_link":"Заблокированные ({count})","button_add_another":"Добавить","button_add_members":"Добавить","button_cancel":"Отменить","button_confirm":"Подтвердить","button_create":"Создать","button_delete_account":"Удалить аккаунт","button_edit":"Редактировать","button_logout":"Выйти","button_ok":"OK","button_reset":"Изменить","button_send_request":"Отправить","button_sign_in":"Войти","button_sign_up":"Создать аккаунт","button_subscribe":"Подписаться","button_update":"Применить","cannot_initiate_file_upload":"Ошибка загрузки файла.","channel":"канал","channel_prompt":"Создать канал","chat_invitation":"Вас пригласили начать новый чат. Как вы хотите поступить?","chat_invitation_accept":"Принять","chat_invitation_block":"Заблокировать","chat_invitation_ignore":"Игнорировать","clear_messages_warning":"Вы действительно хотите удалить все сообщения в чате? Их будет невозможно восстановить.","code_doesnot_match":"Код не совпадает","contacts_not_found":"Чатов нет ¯∖_(ツ)_/¯","contacts_not_found_short":"Нет контактов для запроса ''{query}''","credential_email_prompt":"Регистрационный емейл","delete_account":"Удалить аккаунт","delete_account_warning":"Вы уверены, что ходите удалить свой аккаунт? Его невозможно будет восстановить.","delete_messages_warning":"Вы действительно хотите удалить все сообщения?","deleted_content":"удалено","download_action":"скачать","drafty_attachment":"Аттачмент","drafty_form":"Форма:","drafty_image":"Картинка","email_dative":"емейлу","email_prompt":"Email, напр. ivan@example.com","enable_peers_messaging":"Разблокировать.","enter_confirmation_code_prompt":"Код подтверждения, полученный по {method}:","error_invalid_id":"Неверный ID","file_attachment_too_large":"Размер файла {size} превышает {limit} лимит.","forgot_password_link":"Напомнить пароль","full_name_prompt":"Полное имя, напр. Иван Петров","granted_permissions":"Получены","group_has_no_members":"Нет участников","group_user_id_prompt":"ID чата или пользователя","image_caption_prompt":"Подпись к фото","invalid_content":"сообщение не читается","invalid_security_token":"Токен некорректен","label_client":"Клиент:","label_content_type":"Тип:","label_default_access_mode":"Доступ по умолчанию:","label_file_name":"Имя файла:","label_group_members":"Участники чата:","label_incognito_mode":"Режим инкогнито:","label_message_sound":"Звук нового сообщения:","label_muting_topic":"Без уведомлений","label_other_user":"Второй","label_password":"Пароль","label_permissions":"Права доступа:","label_private":"Комментарий","label_push_notifications":"Уведомления:","label_push_notifications_disabled":"Уведомления (требуют HTTPS):","label_reset_password":"Отправить емейл для смены пароля:","label_sdk":"SDK:","label_server":"Сервер:","label_server_address":"Адрес сервера:","label_server_to_use":"Использовать сервер:","label_size":"Размер:","label_topic_name":"Название","label_user_contacts":"Конакты:","label_user_id":"ID:","label_wire_transport":"Соединение:","label_you":"Вы:","label_your_name":"Ваше имя","label_your_permissions":"Ваши права доступа:","last_seen_timestamp":"Был активен","leave_chat_warning":"Вы действительно хотите покинуть этот чат?","link_contact_us":"Связаться с нами","link_privacy_policy":"Политика конфиденциальности","link_terms_of_service":"Условия сервиса","login_prompt":"Логин","menu_item_archive_topic":"В архив","menu_item_block":"Заблокировать","menu_item_clear_messages":"Удалить сообщения","menu_item_clear_messages_for_all":"Удалить для всех","menu_item_delete":"Удалить","menu_item_delete_for_all":"Удалить для всех","menu_item_delete_topic":"Удалить чат","menu_item_edit_permissions":"Права доступа","menu_item_info":"Информация","menu_item_member_delete":"Отписать","menu_item_mute":"Не уведомлять","menu_item_restore_topic":"Разархивировать","menu_item_send_retry":"Отправить заново","menu_item_unblock":"Разблокировать","menu_item_unmute":"Уведомлять","message_sending":"в пути...","message_sending_failed":"ошибка","messages_not_readable":"нет доступа к сообщениям","messaging_disabled_prompt":"Отправка недоступна","more_online_members":"+еще {overflow}","new_message_prompt":"Новое сообщение","new_password_placeholder":"Введите новый пароль","no_connection":"Нет связи","no_contacts":"Ничего нет :-(","numeric_confirmation_code_prompt":"Только цифры","online_now":"онлайн","password_prompt":"Пароль","password_unchanged_prompt":"Не изменен","peers_messaging_disabled":"Чат заблокирован у корреспондента.","permission_admin":"Подтверждать ({val})","permission_delete":"Удалять ({val})","permission_join":"Подписываться ({val})","permission_owner":"Владелец ({val})","permission_pres":"Уведомлять ({val})","permission_read":"Читать ({val})","permission_share":"Приглашать ({val})","permission_write":"Писать ({val})","phone_dative":"телефону","private_editing_placeholder":"Виден только вам","push_init_failed":"Ошибка инициализации пуш уведомлений","reconnect_countdown":"Нет связи. Подключение через {seconds}…","reconnect_now":"Подключить сейчас.","reload_update":"Обновить","report_chat_warning":"Вы действительно хотите сообщить о нарушении и заблокировать этот чат?","requested_permissions":"Требуются","save_attachment":"сохранить","search_for_contacts":"Поиск контактов","search_no_results":"Ничего не найдено","search_placeholder":"Список, напр. email:alice@example.com, tel:+17025550003...","sidepanel_title_acc_notifications":"Уведомления","sidepanel_title_acc_support":"Поддержка","sidepanel_title_account_settings":"Настройки аккаунта","sidepanel_title_archive":"Архив чатов","sidepanel_title_blocked":"Заблокированные чаты","sidepanel_title_cred":"Подтвердить","sidepanel_title_login":"Авторизация","sidepanel_title_newtpk":"Новый чат","sidepanel_title_register":"Зарегистрироваться","sidepanel_title_reset":"Сменить пароль","sidepanel_title_settings":"Настройки","stay_logged_in":"Запомнить","tabtitle_find_user":"найти","tabtitle_group_by_id":"по id","tabtitle_new_group":"создать","tags_editor_no_tags":"Добавьте теги","tags_not_found":"Тегов нет. Добавьте","title_all_contacts":"Все контакты","title_group_members":"Участники","title_manage_tags":"Редактировать","title_not_found":"Не найден","title_permissions":"Права доступа","title_tag_manager":"Теги для поиска","topic_block_warning":"Вы действительно хотите заблокировать этот чат?","topic_delete_warning":"Вы действительно хотите удалить этот чат?","topic_name_editing_placeholder":"Название чата","unnamed_topic":"Без названия","update_available":"Есть новая версия приложения.","upload_finishing":"завершение...","user_not_found":"Не найден","validate_credential_action":"подтвердить","description_editing_placeholder":"Описание (не обязательно)","label_description":"Описание","button_security":"Безопасность","panel_title_crop":"Обрезать картинку","panel_title_general":"Общие настройки","panel_title_members":"Участники","panel_title_security":"Безопасность","panel_title_info":"Подробности","permissions_anonymous":"Анонимный","permissions_authenticated":"Авторизованный","topic_delete":"Удалить чат","permissions_user":"Права доступа","password_reset_email_sent":"Сообщение было отправлено на адрес {email}. Следуйте инструкциям в сообщении, чтобы изменить пароль.","label_unarchive_topic":"Архивирован:","menu_item_reply":"Ответить","menu_item_forward":"Переслать","forward_to":"Переслать","forward_to_search_placeholder":"Поиск контактов","label_new_password":"Новый пароль","drafty_unknown":"Не поддерживается"},"zh-TW":{"action_block_contact":"封鎖聯絡人","action_cancel":"取消","action_clear_messages":"清除訊息","action_delete_messages":"為所有人清除訊息","action_leave_chat":"離開對話","action_report_chat":"檢舉對話","archived_contacts":"已封存的聯絡人 ({count})","badge_danger":"不可信","badge_owner":"擁有者","badge_staff":"員工管理","badge_verified":"已驗證/官方","badge_you":"您","block_contact_warning":"您確定要封鎖此聯絡人嗎?","blocked_contacts_link":"已封鎖的聯絡人 ({count})","button_add_another":"新增其他人","button_add_members":"新增成員","button_cancel":"取消","button_confirm":"確認","button_create":"建立","button_delete_account":"刪除帳號","button_edit":"編輯","button_logout":"登出","button_ok":"OK","button_reset":"重設","button_send_request":"傳送要求","button_sign_in":"登入","button_sign_up":"註冊","button_subscribe":"訂閱","button_update":"更新","cannot_initiate_file_upload":"無法為檔案上傳初始化。","channel":"頻道","channel_prompt":"這是頻道","chat_invitation":"您已被邀請開始新對話。您接下來要做什麼呢?","chat_invitation_accept":"接受","chat_invitation_block":"封鎖","chat_invitation_ignore":"忽略","clear_messages_warning":"您確定要清除所有訊息嗎?此操作無法復原。","code_doesnot_match":"代碼不相符","contacts_not_found":"您沒有任何對話 ¯∖_(ツ)_/¯","contacts_not_found_short":"沒有符合 ''{query}'' 的聯絡人","credential_email_prompt":"您的註冊電子郵件地址","delete_account":"刪除帳號","delete_account_warning":"您確定要刪除您的帳戶嗎?此操作無法撤消。","delete_messages_warning":"您確定要為所有人刪除所有訊息嗎?此操作無法復原。","deleted_content":"內容已被刪除","download_action":"下載","drafty_attachment":"附加檔案","drafty_form":"表單:","drafty_image":"圖片","email_dative":"電子郵件地址","email_prompt":"電子郵件地址,例如:jdoe@example.com","enable_peers_messaging":"啟用","enter_confirmation_code_prompt":"輸入透過 {method} 傳送給您的確認碼:","error_invalid_id":"ID 無效","file_attachment_too_large":"檔案大小 {size} 超出 {limit} 限制。","forgot_password_link":"忘記密碼?","full_name_prompt":"全名,例如:王小明","granted_permissions":"已授權","group_has_no_members":"無成員","group_user_id_prompt":"群組或使用者 ID","image_caption_prompt":"圖片說明","invalid_content":"內容無效","invalid_security_token":"安全權杖無效","label_client":"客戶端:","label_content_type":"類型:","label_default_access_mode":"預設存取模式:","label_file_name":"檔名:","label_group_members":"群組成員:","label_incognito_mode":"無痕模式:","label_message_sound":"訊息提示聲:","label_muting_topic":"靜音:","label_other_user":"其他","label_password":"密碼","label_permissions":"權限:","label_private":"私人留言","label_push_notifications":"通知:","label_push_notifications_disabled":"通知 (需要 HTTPS):","label_reset_password":"傳送重設密碼郵件:","label_sdk":"SDK:","label_server":"伺服器:","label_server_address":"伺服器位址:","label_server_to_use":"使用的伺服器:","label_size":"大小:","label_topic_name":"名稱","label_user_contacts":"聯絡人:","label_user_id":"ID:","label_wire_transport":"Wire transport:","label_you":"您:","label_your_name":"您的名字","label_your_permissions":"您的權限:","last_seen_timestamp":"最後上線","leave_chat_warning":"您確定要離開此對話嗎?","link_contact_us":"聯絡我們","link_privacy_policy":"隱私權政策","link_terms_of_service":"服務條款","login_prompt":"登入","menu_item_archive_topic":"封存","menu_item_block":"封鎖","menu_item_clear_messages":"清除訊息","menu_item_clear_messages_for_all":"為所有人清除訊息","menu_item_delete":"刪除","menu_item_delete_for_all":"為所有人刪除","menu_item_delete_topic":"刪除","menu_item_edit_permissions":"編輯權限","menu_item_info":"Info","menu_item_member_delete":"移除","menu_item_mute":"靜音","menu_item_restore_topic":"恢復","menu_item_send_retry":"重試","menu_item_unblock":"解除封鎖","menu_item_unmute":"解除靜音","message_sending":"正在傳送...","message_sending_failed":"失敗","messages_not_readable":"沒有存取訊息的權限","messaging_disabled_prompt":"停用訊息","more_online_members":"+{overflow}","new_message_prompt":"新訊息","new_password_placeholder":"輸入新的密碼","no_connection":"無連線","no_contacts":"您沒有任何聯絡人 :-(","numeric_confirmation_code_prompt":"僅數字","online_now":"上線中","password_prompt":"密碼","password_unchanged_prompt":"未修改","peers_messaging_disabled":"Peer 已停用訊息。","permission_admin":"核可 ({val})","permission_delete":"刪除 ({val})","permission_join":"加入 ({val})","permission_owner":"擁有者 ({val})","permission_pres":"收到通知 ({val})","permission_read":"讀取 ({val})","permission_share":"分享 ({val})","permission_write":"撰寫 ({val})","phone_dative":"phone","private_editing_placeholder":"僅您可見","push_init_failed":"初始化通知失敗。","reconnect_countdown":"已斷線。將在 {seconds} 秒後重新連線…","reconnect_now":"現在重試","reload_update":"重新載入","report_chat_warning":"您確定要封鎖並檢舉此對話嗎?","requested_permissions":"重新請求","save_attachment":"儲存","search_for_contacts":"使用搜尋來尋找聯絡人","search_no_results":"搜尋無結果","search_placeholder":"例如 email:alice@example.com, tel:17025550003... 的清單","sidepanel_title_acc_notifications":"通知","sidepanel_title_acc_support":"支援","sidepanel_title_account_settings":"帳號設定","sidepanel_title_archive":"已封存的對話","sidepanel_title_blocked":"已封鎖的對話","sidepanel_title_cred":"確認認證","sidepanel_title_login":"登入","sidepanel_title_newtpk":"開始新對話","sidepanel_title_register":"建立帳號","sidepanel_title_reset":"重設密碼","sidepanel_title_settings":"設定","stay_logged_in":"保持登入","tabtitle_find_user":"尋找","tabtitle_group_by_id":"以 id","tabtitle_new_group":"新群組","tags_editor_no_tags":"新增一些標籤","tags_not_found":"未定義任何標籤。請新增一些標籤。","title_all_contacts":"所有聯絡人","title_group_members":"群組成員","title_manage_tags":"管理","title_not_found":"找不到","title_permissions":"權限","title_tag_manager":"標籤 (使用者探索)","topic_block_warning":"您確定要封鎖此對話嗎?","topic_delete_warning":"您確定要刪除此對話嗎?","topic_name_editing_placeholder":"群組的任意名稱","unnamed_topic":"未命名","update_available":"有可用的更新。","upload_finishing":"正在完成...","user_not_found":"找不到","validate_credential_action":"確認","description_editing_placeholder":"說明(可選)","label_description":"說明","button_security":"安全性","panel_title_crop":"拖動調整","panel_title_general":"一般","panel_title_members":"成員","panel_title_security":"安全性","panel_title_info":"資訊","permissions_anonymous":"匿名","permissions_authenticated":"已認證","topic_delete":"刪除聊天","permissions_user":"用戶權限","password_reset_email_sent":"一封電子郵件已發送至 {email}。按照電子郵件中的說明重置密碼。","label_unarchive_topic":"存檔聊天:","menu_item_reply":"回答","menu_item_forward":"重定向","forward_to":"重定向消息","forward_to_search_placeholder":"搜索聯繫人","label_new_password":"新密碼","drafty_unknown":"不支持"},"zh":{"action_block_contact":"屏蔽联系人","action_cancel":"取消","action_clear_messages":"删除讯息","action_delete_messages":"删除所有帖子","action_leave_chat":"离开","action_report_chat":"检举垃圾邮件","archived_contacts":"已归档联系人 ({count})","badge_danger":"可疑的","badge_owner":"所有者","badge_staff":"在员工管理下","badge_verified":"值得信赖","badge_you":"你","block_contact_warning":"您确定要阻止此联系人吗?","blocked_contacts_link":"封锁的联络人 ({count})","button_add_another":"加上另一个","button_add_members":"添加成员","button_cancel":"取消","button_confirm":"确认","button_create":"创建","button_delete_account":"删除帐户","button_edit":"编辑","button_logout":"登出","button_ok":"好","button_reset":"重置","button_send_request":"发送请求","button_sign_in":"登录","button_sign_up":"注册","button_subscribe":"订阅","button_update":"更新","cannot_initiate_file_upload":"无法初始化文件上传。","channel":"频道","channel_prompt":"这是一个频道","chat_invitation":"你受邀开始新会话。你想怎么做?","chat_invitation_accept":"接受","chat_invitation_block":"屏蔽","chat_invitation_ignore":"忽略","clear_messages_warning":"您确定要清除所有消息吗?无法撤消。","code_doesnot_match":"代码不匹配","contacts_not_found":"你尚无会话 ¯∖_(ツ)_/¯","contacts_not_found_short":"无联系人匹配''{query}''","credential_email_prompt":"你的注册邮箱","delete_account":"删除帐户","delete_account_warning":"您确定要删除您的帐户吗?无法撤消。","delete_messages_warning":"您确定要删除所有消息吗?无法撤消。","deleted_content":"内容已删除","download_action":"下载","drafty_attachment":"附件","drafty_form":"形式:","drafty_image":"图像","email_dative":"电子邮件","email_prompt":"电子邮件,例如 zhang@example.com","enable_peers_messaging":"启用","enter_confirmation_code_prompt":"输入通过{method}发送的验证码:","error_invalid_id":"无效 ID","file_attachment_too_large":"文件大小 {size} 超过 {limit} 限制。","forgot_password_link":"忘记密码?","full_name_prompt":"全名,例如张伟","granted_permissions":"已授予","group_has_no_members":"无成员","group_user_id_prompt":"群组或用户 ID","image_caption_prompt":"图片标题","invalid_content":"无效内容","invalid_security_token":"无效的安全令牌","label_client":"客户端:","label_content_type":"内容类型:","label_default_access_mode":"蓦然访问模式:","label_file_name":"文件名:","label_group_members":"群组成员:","label_incognito_mode":"无痕模式:","label_message_sound":"消息提示音:","label_muting_topic":"已静音:","label_other_user":"其他","label_password":"密码","label_permissions":"权限:","label_private":"私人评论","label_push_notifications":"通知提醒:","label_push_notifications_disabled":"通知提醒(需要 HTTPS):","label_reset_password":"发送密码重置邮件:","label_sdk":"开发包:","label_server":"服务器:","label_server_address":"服务器地址:","label_server_to_use":"使用的服务器:","label_size":"大小:","label_topic_name":"名称","label_user_contacts":"往来:","label_user_id":"地址:","label_wire_transport":"线路传输:","label_you":"你:","label_your_name":"你的姓名","label_your_permissions":"你的权限:","last_seen_timestamp":"最后可见","leave_chat_warning":"您确定要退出此对话吗?","link_contact_us":"联系我们","link_privacy_policy":"隐私政策","link_terms_of_service":"条款和条件","login_prompt":"登录","menu_item_archive_topic":"归档","menu_item_block":"屏蔽","menu_item_clear_messages":"清空消息","menu_item_clear_messages_for_all":"全部清除","menu_item_delete":"删除","menu_item_delete_for_all":"全部删除","menu_item_delete_topic":"删除","menu_item_edit_permissions":"编辑权限","menu_item_info":"信息","menu_item_member_delete":"移除","menu_item_mute":"静音","menu_item_restore_topic":"从存档中恢复","menu_item_send_retry":"重试","menu_item_unblock":"取消屏蔽","menu_item_unmute":"取消静音","message_sending":"正在发送...","message_sending_failed":"发送失败","messages_not_readable":"无消息访问权限","messaging_disabled_prompt":"消息已禁用","more_online_members":"还有{overflow}个","new_message_prompt":"新消息","new_password_placeholder":"输入新密码","no_connection":"无连接","no_contacts":"你尚无联系人 (._.)","numeric_confirmation_code_prompt":"仅数字","online_now":"在线","password_prompt":"密码","password_unchanged_prompt":"未改变","peers_messaging_disabled":"成员间消息已禁用。","permission_admin":"批准 ({val})","permission_delete":"删除 ({val})","permission_join":"加入 ({val})","permission_owner":"所有者 ({val})","permission_pres":"获取通知 ({val})","permission_read":"读取 ({val})","permission_share":"分享 ({val})","permission_write":"写入 ({val})","phone_dative":"电话","private_editing_placeholder":"仅自己可见","push_init_failed":"初始化推送通知失败","reconnect_countdown":"连接已断开。{seconds} 秒后重新连接…","reconnect_now":"立即尝试","reload_update":"重新载入","report_chat_warning":"您确定要停止并报告此对话吗?","requested_permissions":"已请求","save_attachment":"保存","search_for_contacts":"使用搜索寻找联系人","search_no_results":"搜索返回任何结果","search_placeholder":"列表如 email:alice@example.com, tel:+17025550003...","sidepanel_title_acc_notifications":"通知","sidepanel_title_acc_support":"支持","sidepanel_title_account_settings":"帐号设定","sidepanel_title_archive":"已存档会话","sidepanel_title_blocked":"被阻止的聊天","sidepanel_title_cred":"确认凭据","sidepanel_title_login":"登录","sidepanel_title_newtpk":"开始新会话","sidepanel_title_register":"创建账户","sidepanel_title_reset":"重置密码","sidepanel_title_settings":"设置","stay_logged_in":"保持登录","tabtitle_find_user":"搜索","tabtitle_group_by_id":"通过 id","tabtitle_new_group":"新群组","tags_editor_no_tags":"添加一些标签","tags_not_found":"尚未定义标签。添加一些。","title_all_contacts":"全部联系人","title_group_members":"群组成员","title_manage_tags":"管理标签","title_not_found":"无法找到","title_permissions":"权限","title_tag_manager":"标签(用户发现)","topic_block_warning":"您确定要阻止此对话吗?","topic_delete_warning":"您确定要删除此对话吗?","topic_name_editing_placeholder":"群组自由格式名称","unnamed_topic":"未命名","update_available":"更新可用。","upload_finishing":"正在结束...","user_not_found":"未找到","validate_credential_action":"确认","description_editing_placeholder":"说明(可选)","label_description":"说明","button_security":"安全","panel_title_crop":"拖动调整","panel_title_general":"常用设定","panel_title_members":"成员","panel_title_security":"安全","panel_title_info":"信息","permissions_anonymous":"匿名","permissions_authenticated":"已认证","topic_delete":"删除聊天","permissions_user":"用户权限","password_reset_email_sent":"一封电子邮件已发送至 {email}。按照电子邮件中的说明重置密码。","label_unarchive_topic":"存档:","menu_item_reply":"回复","menu_item_forward":"重定向","forward_to":"重定向消息","forward_to_search_placeholder":"搜索联系人","label_new_password":"新密码","drafty_unknown":"不支持"}}
\ No newline at end of file
diff --git a/src/views/messages-view.jsx b/src/views/messages-view.jsx
index a869c97b..6721df4f 100644
--- a/src/views/messages-view.jsx
+++ b/src/views/messages-view.jsx
@@ -241,16 +241,6 @@ class MessagesView extends React.Component {
} else if (nextProps.topic != prevState.topic) {
const topic = nextProps.tinode.getTopic(nextProps.topic);
- let reply = null;
- if (nextProps.forwardMessage) {
- // We are forwarding a message. Show preview.
- const preview = nextProps.forwardMessage.preview;
- reply = {
- content: preview,
- seq: null
- };
- }
-
nextState = {
topic: nextProps.topic,
docPreview: null,
@@ -260,11 +250,18 @@ class MessagesView extends React.Component {
typingIndicator: false,
scrollPosition: 0,
fetchingMessages: false,
- reply: reply,
showGoToLastButton: false,
deleted: topic._deleted
};
+ if (nextProps.forwardMessage) {
+ // We are forwarding a message. Show preview.
+ nextState.reply = {
+ content: nextProps.forwardMessage.preview,
+ seq: null
+ };
+ }
+
if (topic) {
// Topic exists.
const subs = [];
@@ -461,7 +458,8 @@ class MessagesView extends React.Component {
const pos = event.target.scrollHeight - event.target.scrollTop - event.target.offsetHeight;
this.setState({
scrollPosition: pos,
- showGoToLastButton: pos > SHOW_GO_TO_LAST_DIST,
+ // Show [go to latest message] if far enough from bottom and scrolling down.
+ showGoToLastButton: (pos > SHOW_GO_TO_LAST_DIST) && (pos < this.state.scrollPosition),
});
if (this.state.fetchingMessages) {
@@ -609,8 +607,8 @@ class MessagesView extends React.Component {
clearTimeout(this.keyPressTimer)
this.setState({messageCount: topic.messageCount(), typingIndicator: false});
- // Scroll to the bottom if the message is added to the end of the message list.
- // TODO: This should be replaced by showing a "scroll to bottom" button.
+ // Scroll to the bottom if the message is added to the end of the message
+ // list if already at the bottom, otherwise show [go to latest] button.
if (topic.isNewMessage(msg.seq)) {
if (this.state.scrollPosition > SHOW_GO_TO_LAST_DIST) {
this.setState({showGoToLastButton: true});
@@ -961,7 +959,6 @@ class MessagesView extends React.Component {
// seq: seq ID of the source message
// context: message content.
- // forwarded: true if the source message is also a forwarded message.
// senderId: UID of the sender of the source message.
// senderName: full name of the sender of the original message.
handlePickReply(seq, content, senderId, senderName) {
diff --git a/src/views/tinode-web.jsx b/src/views/tinode-web.jsx
index 1f65012a..45fdde6e 100644
--- a/src/views/tinode-web.jsx
+++ b/src/views/tinode-web.jsx
@@ -347,21 +347,7 @@ class TinodeWeb extends React.Component {
// Tinode received a push notification from the server.
handlePushMessage(payload) {
- const data = payload.data || {};
- switch (data.what) {
- case 'msg':
- if (Tinode.isChannelTopicName(data.topic)) {
- // The last argument is a fake user Id: otherwise the update is seen as one from the current user.
- this.tinode.oobNotification('msg', data.topic, data.seq, 'fake-uid');
- }
- break;
- case 'read':
- // Message read on another device, clear it here.
- this.tinode.oobNotification('read', data.topic, data.seq);
- break;
- default:
- console.warn("Unknown push type ignored", data.what, data);
- }
+ this.tinode.oobNotification(payload.data || {});
}
initFCMessaging() {
@@ -622,7 +608,7 @@ class TinodeWeb extends React.Component {
this.handleError(
formatMessage(messages.reconnect_countdown, {seconds: timeLeft}),
'warn',
- () => {
+ _ => {
clearInterval(this.reconnectCountdown);
this.tinode.reconnect();
},
@@ -1532,6 +1518,12 @@ class TinodeWeb extends React.Component {
defaultTopicContextMenu(topicName) {
const topic = this.tinode.getTopic(topicName);
+ if (topic._deleted) {
+ return [
+ 'topic_delete'
+ ];
+ }
+
let muted = false, blocked = false, self_blocked = false, subscribed = false, deleter = false, archived = false;
if (topic) {
subscribed = topic.isSubscribed();
diff --git a/src/widgets/audio-player.jsx b/src/widgets/audio-player.jsx
index 3e03dd57..e9b6431f 100644
--- a/src/widgets/audio-player.jsx
+++ b/src/widgets/audio-player.jsx
@@ -1,7 +1,6 @@
// Audio recorder widget.
import React from 'react';
-import { FormattedMessage } from 'react-intl';
import { secondsToTime } from '../lib/strformat';
import { base64ToIntArray } from '../lib/blob-helpers';
@@ -13,9 +12,9 @@ const LINE_WIDTH = 3 * CANVAS_UPSCALING;
// Spacing between two visualization bars.
const SPACING = 2 * CANVAS_UPSCALING;
// Color of histogram bars.
-const BAR_COLOR = '#bbb';
-const BAR_COLOR_DARK = '#888';
-const THUMB_COLOR = '#666';
+const BAR_COLOR = '#888A';
+const BAR_COLOR_DARK = '#666C';
+const THUMB_COLOR = '#444E';
// Minimum number of amplitude bars to draw.
const MIN_PREVIEW_LENGTH = 16;
@@ -24,7 +23,7 @@ export default class AudioPlayer extends React.PureComponent {
super(props);
let preview = base64ToIntArray(this.props.preview);
- if (Array.isArray(preview) && preview.length < MIN_PREVIEW_LENGTH) {
+ if (!Array.isArray(preview) || preview.length < MIN_PREVIEW_LENGTH) {
preview = null;
}
@@ -57,9 +56,7 @@ export default class AudioPlayer extends React.PureComponent {
this.initAudio();
}
- if (this.state.preview) {
- this.initCanvas();
- }
+ this.initCanvas();
}
componentWillUnmount() {
@@ -79,7 +76,7 @@ export default class AudioPlayer extends React.PureComponent {
if (this.props.preview != prevProps.preview) {
let preview = base64ToIntArray(this.props.preview);
- if (Array.isArray(preview) && preview.length < MIN_PREVIEW_LENGTH) {
+ if (!Array.isArray(preview) || preview.length < MIN_PREVIEW_LENGTH) {
preview = null;
}
this.setState({preview: preview}, this.initCanvas);
@@ -99,7 +96,7 @@ export default class AudioPlayer extends React.PureComponent {
}
initCanvas() {
- // Force canvas aspect ration to match one of the element + upscale canvas to reduce blurring.
+ // Force canvas aspect ratio to match one of the element + upscale canvas to reduce blurring.
this.canvasRef.current.width = this.canvasRef.current.offsetWidth * CANVAS_UPSCALING;
this.canvasRef.current.height = this.canvasRef.current.offsetHeight * CANVAS_UPSCALING;
@@ -122,7 +119,7 @@ export default class AudioPlayer extends React.PureComponent {
this.canvasContext.lineWidth = LINE_WIDTH;
const drawFrame = () => {
- if (!this.canvasRef.current) {
+ if (!this.canvasRef.current || !this.audioPlayer) {
// The component is unmounted.
return;
}
@@ -134,7 +131,7 @@ export default class AudioPlayer extends React.PureComponent {
window.requestAnimationFrame(drawFrame);
}
- // Current pplayback position.
+ // Current playback position.
const thumbAt = this.props.duration ?
Math.max(0, Math.min(this.audioPlayer.currentTime * 1000 / this.props.duration, 1)) * (width - LINE_WIDTH * 2) : -1;
@@ -173,27 +170,36 @@ export default class AudioPlayer extends React.PureComponent {
// Quick and dirty downsampling of the original preview bars into a smaller (or equal) number of bars we can display here.
resampleBars(original) {
- const barCount = Math.min(original.length, ((this.canvasRef.current.width - SPACING) / (LINE_WIDTH + SPACING)) | 0);
- const factor = original.length / barCount;
- let amps = [];
- let max = -1;
- for (let i=0;i 0.01);
}
- if (max > 0) {
- // Remove extra padding on the right due to fractional bar which is not drawn.
- this.effectiveWidth = barCount * (LINE_WIDTH + SPACING) + SPACING;
- return amps.map(a => a / max);
+ const factor = original.length / dstCount;
+ let amps = [];
+ let maxAmp = -1;
+ for (let i=0; i 0) {
+ return amps.map(a => a / maxAmp);
+ }
+ return Array.apply(null, Array(dstCount)).map(_ => 0.01);
}
handlePlay(e) {
@@ -211,7 +217,7 @@ export default class AudioPlayer extends React.PureComponent {
}
handleError(err) {
- console.log(err);
+ console.error(err);
}
handleSeek(e) {
@@ -221,7 +227,7 @@ export default class AudioPlayer extends React.PureComponent {
const offset = (e.clientX - rect.left) / this.effectiveWidth * CANVAS_UPSCALING;
this.audioPlayer.currentTime = this.props.duration * offset / 1000;
this.setState({currentTime: secondsToTime(this.audioPlayer.currentTime, this.state.longMin)});
- if (!this.state.playing && this.state.preview) {
+ if (!this.state.playing) {
this.visualize();
}
}
@@ -237,25 +243,14 @@ export default class AudioPlayer extends React.PureComponent {
);
return (
{this.props.short ?
<>
-
- {this.state.preview ?
- :
-
-
- }
-
+
{play}
>
:
<>
{play}
- {this.state.preview ?
- :
-
-
-
- }
+
{this.state.currentTime}/{this.state.duration}
>
diff --git a/src/widgets/audio-recorder.jsx b/src/widgets/audio-recorder.jsx
index 5c4f6d2a..076329ce 100644
--- a/src/widgets/audio-recorder.jsx
+++ b/src/widgets/audio-recorder.jsx
@@ -8,6 +8,7 @@ import fixWebmDuration from 'fix-webm-duration';
import { intArrayToBase64 } from '../lib/blob-helpers.js'
import { secondsToTime } from '../lib/strformat';
+import { MAX_DURATION, MIN_DURATION } from '../config.js';
// FFT resolution.
const BUFFER_SIZE = 256;
@@ -20,13 +21,9 @@ const SPACING = 2 * CANVAS_UPSCALING;
// Duration represented by one visualization bar.
const MILLIS_PER_BAR = 100;
// Color of histogram bars
-const BAR_COLOR = '#bbb';
+const BAR_COLOR = '#BBBD';
// Vertical scaling for visualization bars.
const BAR_SCALE = 64.0;
-// Minimum duration of a recording in milliseconds.
-const MIN_DURATION = 200;
-// Maximum duration of a recording in milliseconds (10 min).
-const MAX_DURATION = 600000;
// Number of bars in preview.
const VISUALIZATION_BARS = 96;
// Maximum number of samples per bar.
diff --git a/src/widgets/chat-message.jsx b/src/widgets/chat-message.jsx
index 35d53d05..7d4b53a6 100644
--- a/src/widgets/chat-message.jsx
+++ b/src/widgets/chat-message.jsx
@@ -2,7 +2,6 @@
import React from 'react';
import { FormattedMessage, injectIntl } from 'react-intl';
-import FormattedDuration from 'react-intl-formatted-duration';
import { Drafty, Tinode } from 'tinode-sdk';
import Attachment from './attachment.jsx';
@@ -11,6 +10,7 @@ import ReceivedMarker from './received-marker.jsx'
import { fullFormatter } from '../lib/formatters.js';
import { isVideoCall, sanitizeUrl } from '../lib/utils.js';
+import { secondsToTime } from '../lib/strformat.js';
class BaseChatMessage extends React.PureComponent {
constructor(props) {
@@ -157,9 +157,7 @@ class BaseChatMessage extends React.PureComponent {
defaultMessage="Outgoing Call" description="Outgoing call label" />;
const isCallDropped = this.props.content == 'disconnected';
content = <>{direction}{text}
- { !isCallDropped && this.props.duration ?
- [' (', , ')'] :
- null}
+ { !isCallDropped && this.props.duration ? [' (', secondsToTime(this.props.duration / 1000), ')'] : null}
>
} else if (typeof content != 'string') {
content = <>warning_amber
diff --git a/src/widgets/contact-list.jsx b/src/widgets/contact-list.jsx
index b05787b8..b3c69ea8 100644
--- a/src/widgets/contact-list.jsx
+++ b/src/widgets/contact-list.jsx
@@ -116,12 +116,12 @@ class ContactList extends React.Component {
selected={selected}
showOnline={this.props.showOnline && !isChannel}
isChannel={isChannel}
- onSelected={this.props.onTopicSelected}
showContextMenu={this.props.showContextMenu}
isVerified={c.trusted && c.trusted.verified}
isStaff={c.trusted && c.trusted.staff}
isDangerous={c.trusted && c.trusted.danger}
deleted={c._deleted}
+ onSelected={this.props.onTopicSelected}
item={key}
index={contactNodes.length}
key={key} />
diff --git a/src/widgets/send-message.jsx b/src/widgets/send-message.jsx
index fec7a7e8..a477bad6 100644
--- a/src/widgets/send-message.jsx
+++ b/src/widgets/send-message.jsx
@@ -84,7 +84,8 @@ class SendMessage extends React.PureComponent {
if (prevProps.topicName != this.props.topicName) {
this.setState({message: '', audioRec: false, quote: null});
- } else if (prevProps.reply != this.props.reply) {
+ }
+ if (prevProps.reply != this.props.reply) {
this.setState({quote: this.formatReply()});
}
}
@@ -103,12 +104,8 @@ class SendMessage extends React.PureComponent {
}
// FIXME: handle large files too.
if (filePasted(e,
- (bits, mime, width, height, fname) => {
- this.props.onAttachImage(mime, bits, width, height, fname);
- },
- (mime, bits, fname) => {
- this.props.onAttachFile(mime, bits, fname);
- },
+ file => { this.props.onAttachImage(file); },
+ file => { this.props.onAttachFile(file); },
this.props.onError)) {
// If a file was pasted, don't paste base64 data into input field.
@@ -196,17 +193,17 @@ class SendMessage extends React.PureComponent {
formatMessage(messages[this.props.messagePrompt]) :
formatMessage(messages.type_new_message));
- const quote =
+ const quote = this.state.quote ?
(
{!this.props.disabled ?
<>
@@ -222,7 +219,7 @@ class SendMessage extends React.PureComponent {
:
null}
{this.props.noInput ?
- (this.state.quote ? quote : ) :
+ (quote || ) :
(this.state.audioRec ?
this.setState({audioRec: false})}
diff --git a/umd/index.dev.js b/umd/index.dev.js
index fab848a4..945fbfd2 100644
--- a/umd/index.dev.js
+++ b/umd/index.dev.js
@@ -11,7 +11,6 @@
__webpack_require__.r(__webpack_exports__);
/* harmony export */ __webpack_require__.d(__webpack_exports__, {
/* harmony export */ "CONSTANTS": () => (/* binding */ CONSTANTS),
-/* harmony export */ "DBWrapper": () => (/* binding */ DBWrapper),
/* harmony export */ "Deferred": () => (/* binding */ Deferred),
/* harmony export */ "ErrorFactory": () => (/* binding */ ErrorFactory),
/* harmony export */ "FirebaseError": () => (/* binding */ FirebaseError),
@@ -34,7 +33,6 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export */ "deepCopy": () => (/* binding */ deepCopy),
/* harmony export */ "deepEqual": () => (/* binding */ deepEqual),
/* harmony export */ "deepExtend": () => (/* binding */ deepExtend),
-/* harmony export */ "deleteDB": () => (/* binding */ deleteDB),
/* harmony export */ "errorPrefix": () => (/* binding */ errorPrefix),
/* harmony export */ "extractQuerystring": () => (/* binding */ extractQuerystring),
/* harmony export */ "getGlobal": () => (/* binding */ getGlobal),
@@ -58,7 +56,6 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export */ "issuedAtTime": () => (/* binding */ issuedAtTime),
/* harmony export */ "jsonEval": () => (/* binding */ jsonEval),
/* harmony export */ "map": () => (/* binding */ map),
-/* harmony export */ "openDB": () => (/* binding */ openDB),
/* harmony export */ "ordinal": () => (/* binding */ ordinal),
/* harmony export */ "querystring": () => (/* binding */ querystring),
/* harmony export */ "querystringDecode": () => (/* binding */ querystringDecode),
@@ -1969,2331 +1966,10 @@ function getModularInstance(service) {
}
}
-/**
- * @license
- * Copyright 2022 Google LLC
- *
- * Licensed under the Apache License, Version 2.0 (the "License");
- * you may not use this file except in compliance with the License.
- * You may obtain a copy of the License at
- *
- * http://www.apache.org/licenses/LICENSE-2.0
- *
- * Unless required by applicable law or agreed to in writing, software
- * distributed under the License is distributed on an "AS IS" BASIS,
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- * See the License for the specific language governing permissions and
- * limitations under the License.
- */
-/**
- * @internal
- */
-function promisifyRequest(request, errorMessage) {
- return new Promise((resolve, reject) => {
- request.onsuccess = event => {
- resolve(event.target.result);
- };
- request.onerror = event => {
- var _a;
- reject(`${errorMessage}: ${(_a = event.target.error) === null || _a === void 0 ? void 0 : _a.message}`);
- };
- });
-}
-/**
- * @internal
- */
-class DBWrapper {
- constructor(_db) {
- this._db = _db;
- this.objectStoreNames = this._db.objectStoreNames;
- }
- transaction(storeNames, mode = 'readonly') {
- return new TransactionWrapper(this._db.transaction.call(this._db, storeNames, mode));
- }
- createObjectStore(storeName, options) {
- return new ObjectStoreWrapper(this._db.createObjectStore(storeName, options));
- }
- close() {
- this._db.close();
- }
-}
-/**
- * @internal
- */
-class TransactionWrapper {
- constructor(_transaction) {
- this._transaction = _transaction;
- this.complete = new Promise((resolve, reject) => {
- this._transaction.oncomplete = function () {
- resolve();
- };
- this._transaction.onerror = () => {
- reject(this._transaction.error);
- };
- this._transaction.onabort = () => {
- reject(this._transaction.error);
- };
- });
- }
- objectStore(storeName) {
- return new ObjectStoreWrapper(this._transaction.objectStore(storeName));
- }
-}
-/**
- * @internal
- */
-class ObjectStoreWrapper {
- constructor(_store) {
- this._store = _store;
- }
- index(name) {
- return new IndexWrapper(this._store.index(name));
- }
- createIndex(name, keypath, options) {
- return new IndexWrapper(this._store.createIndex(name, keypath, options));
- }
- get(key) {
- const request = this._store.get(key);
- return promisifyRequest(request, 'Error reading from IndexedDB');
- }
- put(value, key) {
- const request = this._store.put(value, key);
- return promisifyRequest(request, 'Error writing to IndexedDB');
- }
- delete(key) {
- const request = this._store.delete(key);
- return promisifyRequest(request, 'Error deleting from IndexedDB');
- }
- clear() {
- const request = this._store.clear();
- return promisifyRequest(request, 'Error clearing IndexedDB object store');
- }
-}
-/**
- * @internal
- */
-class IndexWrapper {
- constructor(_index) {
- this._index = _index;
- }
- get(key) {
- const request = this._index.get(key);
- return promisifyRequest(request, 'Error reading from IndexedDB');
- }
-}
-/**
- * @internal
- */
-function openDB(dbName, dbVersion, upgradeCallback) {
- return new Promise((resolve, reject) => {
- try {
- const request = indexedDB.open(dbName, dbVersion);
- request.onsuccess = event => {
- resolve(new DBWrapper(event.target.result));
- };
- request.onerror = event => {
- var _a;
- reject(`Error opening indexedDB: ${(_a = event.target.error) === null || _a === void 0 ? void 0 : _a.message}`);
- };
- request.onupgradeneeded = event => {
- upgradeCallback(new DBWrapper(request.result), event.oldVersion, event.newVersion, new TransactionWrapper(request.transaction));
- };
- }
- catch (e) {
- reject(`Error opening indexedDB: ${e.message}`);
- }
- });
-}
-/**
- * @internal
- */
-async function deleteDB(dbName) {
- return new Promise((resolve, reject) => {
- try {
- const request = indexedDB.deleteDatabase(dbName);
- request.onsuccess = () => {
- resolve();
- };
- request.onerror = event => {
- var _a;
- reject(`Error deleting indexedDB database "${dbName}": ${(_a = event.target.error) === null || _a === void 0 ? void 0 : _a.message}`);
- };
- }
- catch (e) {
- reject(`Error deleting indexedDB database "${dbName}": ${e.message}`);
- }
- });
-}
-
//# sourceMappingURL=index.esm2017.js.map
-/***/ }),
-
-/***/ "./node_modules/@formatjs/fast-memoize/lib/index.js":
-/*!**********************************************************!*\
- !*** ./node_modules/@formatjs/fast-memoize/lib/index.js ***!
- \**********************************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ "default": () => (/* binding */ memoize),
-/* harmony export */ "strategies": () => (/* binding */ strategies)
-/* harmony export */ });
-//
-// Main
-//
-function memoize(fn, options) {
- var cache = options && options.cache ? options.cache : cacheDefault;
- var serializer = options && options.serializer ? options.serializer : serializerDefault;
- var strategy = options && options.strategy ? options.strategy : strategyDefault;
- return strategy(fn, {
- cache: cache,
- serializer: serializer,
- });
-}
-//
-// Strategy
-//
-function isPrimitive(value) {
- return (value == null || typeof value === 'number' || typeof value === 'boolean'); // || typeof value === "string" 'unsafe' primitive for our needs
-}
-function monadic(fn, cache, serializer, arg) {
- var cacheKey = isPrimitive(arg) ? arg : serializer(arg);
- var computedValue = cache.get(cacheKey);
- if (typeof computedValue === 'undefined') {
- computedValue = fn.call(this, arg);
- cache.set(cacheKey, computedValue);
- }
- return computedValue;
-}
-function variadic(fn, cache, serializer) {
- var args = Array.prototype.slice.call(arguments, 3);
- var cacheKey = serializer(args);
- var computedValue = cache.get(cacheKey);
- if (typeof computedValue === 'undefined') {
- computedValue = fn.apply(this, args);
- cache.set(cacheKey, computedValue);
- }
- return computedValue;
-}
-function assemble(fn, context, strategy, cache, serialize) {
- return strategy.bind(context, fn, cache, serialize);
-}
-function strategyDefault(fn, options) {
- var strategy = fn.length === 1 ? monadic : variadic;
- return assemble(fn, this, strategy, options.cache.create(), options.serializer);
-}
-function strategyVariadic(fn, options) {
- return assemble(fn, this, variadic, options.cache.create(), options.serializer);
-}
-function strategyMonadic(fn, options) {
- return assemble(fn, this, monadic, options.cache.create(), options.serializer);
-}
-//
-// Serializer
-//
-var serializerDefault = function () {
- return JSON.stringify(arguments);
-};
-//
-// Cache
-//
-function ObjectWithoutPrototypeCache() {
- this.cache = Object.create(null);
-}
-ObjectWithoutPrototypeCache.prototype.get = function (key) {
- return this.cache[key];
-};
-ObjectWithoutPrototypeCache.prototype.set = function (key, value) {
- this.cache[key] = value;
-};
-var cacheDefault = {
- create: function create() {
- // @ts-ignore
- return new ObjectWithoutPrototypeCache();
- },
-};
-var strategies = {
- variadic: strategyVariadic,
- monadic: strategyMonadic,
-};
-
-
-/***/ }),
-
-/***/ "./node_modules/@formatjs/icu-messageformat-parser/lib/error.js":
-/*!**********************************************************************!*\
- !*** ./node_modules/@formatjs/icu-messageformat-parser/lib/error.js ***!
- \**********************************************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ "ErrorKind": () => (/* binding */ ErrorKind)
-/* harmony export */ });
-var ErrorKind;
-(function (ErrorKind) {
- /** Argument is unclosed (e.g. `{0`) */
- ErrorKind[ErrorKind["EXPECT_ARGUMENT_CLOSING_BRACE"] = 1] = "EXPECT_ARGUMENT_CLOSING_BRACE";
- /** Argument is empty (e.g. `{}`). */
- ErrorKind[ErrorKind["EMPTY_ARGUMENT"] = 2] = "EMPTY_ARGUMENT";
- /** Argument is malformed (e.g. `{foo!}``) */
- ErrorKind[ErrorKind["MALFORMED_ARGUMENT"] = 3] = "MALFORMED_ARGUMENT";
- /** Expect an argument type (e.g. `{foo,}`) */
- ErrorKind[ErrorKind["EXPECT_ARGUMENT_TYPE"] = 4] = "EXPECT_ARGUMENT_TYPE";
- /** Unsupported argument type (e.g. `{foo,foo}`) */
- ErrorKind[ErrorKind["INVALID_ARGUMENT_TYPE"] = 5] = "INVALID_ARGUMENT_TYPE";
- /** Expect an argument style (e.g. `{foo, number, }`) */
- ErrorKind[ErrorKind["EXPECT_ARGUMENT_STYLE"] = 6] = "EXPECT_ARGUMENT_STYLE";
- /** The number skeleton is invalid. */
- ErrorKind[ErrorKind["INVALID_NUMBER_SKELETON"] = 7] = "INVALID_NUMBER_SKELETON";
- /** The date time skeleton is invalid. */
- ErrorKind[ErrorKind["INVALID_DATE_TIME_SKELETON"] = 8] = "INVALID_DATE_TIME_SKELETON";
- /** Exepct a number skeleton following the `::` (e.g. `{foo, number, ::}`) */
- ErrorKind[ErrorKind["EXPECT_NUMBER_SKELETON"] = 9] = "EXPECT_NUMBER_SKELETON";
- /** Exepct a date time skeleton following the `::` (e.g. `{foo, date, ::}`) */
- ErrorKind[ErrorKind["EXPECT_DATE_TIME_SKELETON"] = 10] = "EXPECT_DATE_TIME_SKELETON";
- /** Unmatched apostrophes in the argument style (e.g. `{foo, number, 'test`) */
- ErrorKind[ErrorKind["UNCLOSED_QUOTE_IN_ARGUMENT_STYLE"] = 11] = "UNCLOSED_QUOTE_IN_ARGUMENT_STYLE";
- /** Missing select argument options (e.g. `{foo, select}`) */
- ErrorKind[ErrorKind["EXPECT_SELECT_ARGUMENT_OPTIONS"] = 12] = "EXPECT_SELECT_ARGUMENT_OPTIONS";
- /** Expecting an offset value in `plural` or `selectordinal` argument (e.g `{foo, plural, offset}`) */
- ErrorKind[ErrorKind["EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE"] = 13] = "EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE";
- /** Offset value in `plural` or `selectordinal` is invalid (e.g. `{foo, plural, offset: x}`) */
- ErrorKind[ErrorKind["INVALID_PLURAL_ARGUMENT_OFFSET_VALUE"] = 14] = "INVALID_PLURAL_ARGUMENT_OFFSET_VALUE";
- /** Expecting a selector in `select` argument (e.g `{foo, select}`) */
- ErrorKind[ErrorKind["EXPECT_SELECT_ARGUMENT_SELECTOR"] = 15] = "EXPECT_SELECT_ARGUMENT_SELECTOR";
- /** Expecting a selector in `plural` or `selectordinal` argument (e.g `{foo, plural}`) */
- ErrorKind[ErrorKind["EXPECT_PLURAL_ARGUMENT_SELECTOR"] = 16] = "EXPECT_PLURAL_ARGUMENT_SELECTOR";
- /** Expecting a message fragment after the `select` selector (e.g. `{foo, select, apple}`) */
- ErrorKind[ErrorKind["EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT"] = 17] = "EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT";
- /**
- * Expecting a message fragment after the `plural` or `selectordinal` selector
- * (e.g. `{foo, plural, one}`)
- */
- ErrorKind[ErrorKind["EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT"] = 18] = "EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT";
- /** Selector in `plural` or `selectordinal` is malformed (e.g. `{foo, plural, =x {#}}`) */
- ErrorKind[ErrorKind["INVALID_PLURAL_ARGUMENT_SELECTOR"] = 19] = "INVALID_PLURAL_ARGUMENT_SELECTOR";
- /**
- * Duplicate selectors in `plural` or `selectordinal` argument.
- * (e.g. {foo, plural, one {#} one {#}})
- */
- ErrorKind[ErrorKind["DUPLICATE_PLURAL_ARGUMENT_SELECTOR"] = 20] = "DUPLICATE_PLURAL_ARGUMENT_SELECTOR";
- /** Duplicate selectors in `select` argument.
- * (e.g. {foo, select, apple {apple} apple {apple}})
- */
- ErrorKind[ErrorKind["DUPLICATE_SELECT_ARGUMENT_SELECTOR"] = 21] = "DUPLICATE_SELECT_ARGUMENT_SELECTOR";
- /** Plural or select argument option must have `other` clause. */
- ErrorKind[ErrorKind["MISSING_OTHER_CLAUSE"] = 22] = "MISSING_OTHER_CLAUSE";
- /** The tag is malformed. (e.g. `foo) */
- ErrorKind[ErrorKind["INVALID_TAG"] = 23] = "INVALID_TAG";
- /** The tag name is invalid. (e.g. `<123>foo123>`) */
- ErrorKind[ErrorKind["INVALID_TAG_NAME"] = 25] = "INVALID_TAG_NAME";
- /** The closing tag does not match the opening tag. (e.g. `foo`) */
- ErrorKind[ErrorKind["UNMATCHED_CLOSING_TAG"] = 26] = "UNMATCHED_CLOSING_TAG";
- /** The opening tag has unmatched closing tag. (e.g. `foo`) */
- ErrorKind[ErrorKind["UNCLOSED_TAG"] = 27] = "UNCLOSED_TAG";
-})(ErrorKind || (ErrorKind = {}));
-
-
-/***/ }),
-
-/***/ "./node_modules/@formatjs/icu-messageformat-parser/lib/index.js":
-/*!**********************************************************************!*\
- !*** ./node_modules/@formatjs/icu-messageformat-parser/lib/index.js ***!
- \**********************************************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ "SKELETON_TYPE": () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_2__.SKELETON_TYPE),
-/* harmony export */ "TYPE": () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_2__.TYPE),
-/* harmony export */ "createLiteralElement": () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_2__.createLiteralElement),
-/* harmony export */ "createNumberElement": () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_2__.createNumberElement),
-/* harmony export */ "isArgumentElement": () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_2__.isArgumentElement),
-/* harmony export */ "isDateElement": () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_2__.isDateElement),
-/* harmony export */ "isDateTimeSkeleton": () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_2__.isDateTimeSkeleton),
-/* harmony export */ "isLiteralElement": () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_2__.isLiteralElement),
-/* harmony export */ "isNumberElement": () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_2__.isNumberElement),
-/* harmony export */ "isNumberSkeleton": () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_2__.isNumberSkeleton),
-/* harmony export */ "isPluralElement": () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_2__.isPluralElement),
-/* harmony export */ "isPoundElement": () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_2__.isPoundElement),
-/* harmony export */ "isSelectElement": () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_2__.isSelectElement),
-/* harmony export */ "isTagElement": () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_2__.isTagElement),
-/* harmony export */ "isTimeElement": () => (/* reexport safe */ _types__WEBPACK_IMPORTED_MODULE_2__.isTimeElement),
-/* harmony export */ "parse": () => (/* binding */ parse)
-/* harmony export */ });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
-/* harmony import */ var _error__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./error */ "./node_modules/@formatjs/icu-messageformat-parser/lib/error.js");
-/* harmony import */ var _parser__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./parser */ "./node_modules/@formatjs/icu-messageformat-parser/lib/parser.js");
-/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./types */ "./node_modules/@formatjs/icu-messageformat-parser/lib/types.js");
-
-
-
-
-function pruneLocation(els) {
- els.forEach(function (el) {
- delete el.location;
- if ((0,_types__WEBPACK_IMPORTED_MODULE_2__.isSelectElement)(el) || (0,_types__WEBPACK_IMPORTED_MODULE_2__.isPluralElement)(el)) {
- for (var k in el.options) {
- delete el.options[k].location;
- pruneLocation(el.options[k].value);
- }
- }
- else if ((0,_types__WEBPACK_IMPORTED_MODULE_2__.isNumberElement)(el) && (0,_types__WEBPACK_IMPORTED_MODULE_2__.isNumberSkeleton)(el.style)) {
- delete el.style.location;
- }
- else if (((0,_types__WEBPACK_IMPORTED_MODULE_2__.isDateElement)(el) || (0,_types__WEBPACK_IMPORTED_MODULE_2__.isTimeElement)(el)) &&
- (0,_types__WEBPACK_IMPORTED_MODULE_2__.isDateTimeSkeleton)(el.style)) {
- delete el.style.location;
- }
- else if ((0,_types__WEBPACK_IMPORTED_MODULE_2__.isTagElement)(el)) {
- pruneLocation(el.children);
- }
- });
-}
-function parse(message, opts) {
- if (opts === void 0) { opts = {}; }
- opts = (0,tslib__WEBPACK_IMPORTED_MODULE_3__.__assign)({ shouldParseSkeletons: true, requiresOtherClause: true }, opts);
- var result = new _parser__WEBPACK_IMPORTED_MODULE_1__.Parser(message, opts).parse();
- if (result.err) {
- var error = SyntaxError(_error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind[result.err.kind]);
- // @ts-expect-error Assign to error object
- error.location = result.err.location;
- // @ts-expect-error Assign to error object
- error.originalMessage = result.err.message;
- throw error;
- }
- if (!(opts === null || opts === void 0 ? void 0 : opts.captureLocation)) {
- pruneLocation(result.val);
- }
- return result.val;
-}
-
-
-
-/***/ }),
-
-/***/ "./node_modules/@formatjs/icu-messageformat-parser/lib/parser.js":
-/*!***********************************************************************!*\
- !*** ./node_modules/@formatjs/icu-messageformat-parser/lib/parser.js ***!
- \***********************************************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ "Parser": () => (/* binding */ Parser)
-/* harmony export */ });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
-/* harmony import */ var _error__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./error */ "./node_modules/@formatjs/icu-messageformat-parser/lib/error.js");
-/* harmony import */ var _types__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./types */ "./node_modules/@formatjs/icu-messageformat-parser/lib/types.js");
-/* harmony import */ var _regex_generated__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./regex.generated */ "./node_modules/@formatjs/icu-messageformat-parser/lib/regex.generated.js");
-/* harmony import */ var _formatjs_icu_skeleton_parser__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @formatjs/icu-skeleton-parser */ "./node_modules/@formatjs/icu-skeleton-parser/lib/index.js");
-var _a;
-
-
-
-
-
-var SPACE_SEPARATOR_START_REGEX = new RegExp("^".concat(_regex_generated__WEBPACK_IMPORTED_MODULE_2__.SPACE_SEPARATOR_REGEX.source, "*"));
-var SPACE_SEPARATOR_END_REGEX = new RegExp("".concat(_regex_generated__WEBPACK_IMPORTED_MODULE_2__.SPACE_SEPARATOR_REGEX.source, "*$"));
-function createLocation(start, end) {
- return { start: start, end: end };
-}
-// #region Ponyfills
-// Consolidate these variables up top for easier toggling during debugging
-var hasNativeStartsWith = !!String.prototype.startsWith;
-var hasNativeFromCodePoint = !!String.fromCodePoint;
-var hasNativeFromEntries = !!Object.fromEntries;
-var hasNativeCodePointAt = !!String.prototype.codePointAt;
-var hasTrimStart = !!String.prototype.trimStart;
-var hasTrimEnd = !!String.prototype.trimEnd;
-var hasNativeIsSafeInteger = !!Number.isSafeInteger;
-var isSafeInteger = hasNativeIsSafeInteger
- ? Number.isSafeInteger
- : function (n) {
- return (typeof n === 'number' &&
- isFinite(n) &&
- Math.floor(n) === n &&
- Math.abs(n) <= 0x1fffffffffffff);
- };
-// IE11 does not support y and u.
-var REGEX_SUPPORTS_U_AND_Y = true;
-try {
- var re = RE('([^\\p{White_Space}\\p{Pattern_Syntax}]*)', 'yu');
- /**
- * legacy Edge or Xbox One browser
- * Unicode flag support: supported
- * Pattern_Syntax support: not supported
- * See https://github.com/formatjs/formatjs/issues/2822
- */
- REGEX_SUPPORTS_U_AND_Y = ((_a = re.exec('a')) === null || _a === void 0 ? void 0 : _a[0]) === 'a';
-}
-catch (_) {
- REGEX_SUPPORTS_U_AND_Y = false;
-}
-var startsWith = hasNativeStartsWith
- ? // Native
- function startsWith(s, search, position) {
- return s.startsWith(search, position);
- }
- : // For IE11
- function startsWith(s, search, position) {
- return s.slice(position, position + search.length) === search;
- };
-var fromCodePoint = hasNativeFromCodePoint
- ? String.fromCodePoint
- : // IE11
- function fromCodePoint() {
- var codePoints = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- codePoints[_i] = arguments[_i];
- }
- var elements = '';
- var length = codePoints.length;
- var i = 0;
- var code;
- while (length > i) {
- code = codePoints[i++];
- if (code > 0x10ffff)
- throw RangeError(code + ' is not a valid code point');
- elements +=
- code < 0x10000
- ? String.fromCharCode(code)
- : String.fromCharCode(((code -= 0x10000) >> 10) + 0xd800, (code % 0x400) + 0xdc00);
- }
- return elements;
- };
-var fromEntries =
-// native
-hasNativeFromEntries
- ? Object.fromEntries
- : // Ponyfill
- function fromEntries(entries) {
- var obj = {};
- for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {
- var _a = entries_1[_i], k = _a[0], v = _a[1];
- obj[k] = v;
- }
- return obj;
- };
-var codePointAt = hasNativeCodePointAt
- ? // Native
- function codePointAt(s, index) {
- return s.codePointAt(index);
- }
- : // IE 11
- function codePointAt(s, index) {
- var size = s.length;
- if (index < 0 || index >= size) {
- return undefined;
- }
- var first = s.charCodeAt(index);
- var second;
- return first < 0xd800 ||
- first > 0xdbff ||
- index + 1 === size ||
- (second = s.charCodeAt(index + 1)) < 0xdc00 ||
- second > 0xdfff
- ? first
- : ((first - 0xd800) << 10) + (second - 0xdc00) + 0x10000;
- };
-var trimStart = hasTrimStart
- ? // Native
- function trimStart(s) {
- return s.trimStart();
- }
- : // Ponyfill
- function trimStart(s) {
- return s.replace(SPACE_SEPARATOR_START_REGEX, '');
- };
-var trimEnd = hasTrimEnd
- ? // Native
- function trimEnd(s) {
- return s.trimEnd();
- }
- : // Ponyfill
- function trimEnd(s) {
- return s.replace(SPACE_SEPARATOR_END_REGEX, '');
- };
-// Prevent minifier to translate new RegExp to literal form that might cause syntax error on IE11.
-function RE(s, flag) {
- return new RegExp(s, flag);
-}
-// #endregion
-var matchIdentifierAtIndex;
-if (REGEX_SUPPORTS_U_AND_Y) {
- // Native
- var IDENTIFIER_PREFIX_RE_1 = RE('([^\\p{White_Space}\\p{Pattern_Syntax}]*)', 'yu');
- matchIdentifierAtIndex = function matchIdentifierAtIndex(s, index) {
- var _a;
- IDENTIFIER_PREFIX_RE_1.lastIndex = index;
- var match = IDENTIFIER_PREFIX_RE_1.exec(s);
- return (_a = match[1]) !== null && _a !== void 0 ? _a : '';
- };
-}
-else {
- // IE11
- matchIdentifierAtIndex = function matchIdentifierAtIndex(s, index) {
- var match = [];
- while (true) {
- var c = codePointAt(s, index);
- if (c === undefined || _isWhiteSpace(c) || _isPatternSyntax(c)) {
- break;
- }
- match.push(c);
- index += c >= 0x10000 ? 2 : 1;
- }
- return fromCodePoint.apply(void 0, match);
- };
-}
-var Parser = /** @class */ (function () {
- function Parser(message, options) {
- if (options === void 0) { options = {}; }
- this.message = message;
- this.position = { offset: 0, line: 1, column: 1 };
- this.ignoreTag = !!options.ignoreTag;
- this.requiresOtherClause = !!options.requiresOtherClause;
- this.shouldParseSkeletons = !!options.shouldParseSkeletons;
- }
- Parser.prototype.parse = function () {
- if (this.offset() !== 0) {
- throw Error('parser can only be used once');
- }
- return this.parseMessage(0, '', false);
- };
- Parser.prototype.parseMessage = function (nestingLevel, parentArgType, expectingCloseTag) {
- var elements = [];
- while (!this.isEOF()) {
- var char = this.char();
- if (char === 123 /* `{` */) {
- var result = this.parseArgument(nestingLevel, expectingCloseTag);
- if (result.err) {
- return result;
- }
- elements.push(result.val);
- }
- else if (char === 125 /* `}` */ && nestingLevel > 0) {
- break;
- }
- else if (char === 35 /* `#` */ &&
- (parentArgType === 'plural' || parentArgType === 'selectordinal')) {
- var position = this.clonePosition();
- this.bump();
- elements.push({
- type: _types__WEBPACK_IMPORTED_MODULE_1__.TYPE.pound,
- location: createLocation(position, this.clonePosition()),
- });
- }
- else if (char === 60 /* `<` */ &&
- !this.ignoreTag &&
- this.peek() === 47 // char code for '/'
- ) {
- if (expectingCloseTag) {
- break;
- }
- else {
- return this.error(_error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.UNMATCHED_CLOSING_TAG, createLocation(this.clonePosition(), this.clonePosition()));
- }
- }
- else if (char === 60 /* `<` */ &&
- !this.ignoreTag &&
- _isAlpha(this.peek() || 0)) {
- var result = this.parseTag(nestingLevel, parentArgType);
- if (result.err) {
- return result;
- }
- elements.push(result.val);
- }
- else {
- var result = this.parseLiteral(nestingLevel, parentArgType);
- if (result.err) {
- return result;
- }
- elements.push(result.val);
- }
- }
- return { val: elements, err: null };
- };
- /**
- * A tag name must start with an ASCII lower/upper case letter. The grammar is based on the
- * [custom element name][] except that a dash is NOT always mandatory and uppercase letters
- * are accepted:
- *
- * ```
- * tag ::= "<" tagName (whitespace)* "/>" | "<" tagName (whitespace)* ">" message "" tagName (whitespace)* ">"
- * tagName ::= [a-z] (PENChar)*
- * PENChar ::=
- * "-" | "." | [0-9] | "_" | [a-z] | [A-Z] | #xB7 | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x37D] |
- * [#x37F-#x1FFF] | [#x200C-#x200D] | [#x203F-#x2040] | [#x2070-#x218F] | [#x2C00-#x2FEF] |
- * [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]
- * ```
- *
- * [custom element name]: https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name
- * NOTE: We're a bit more lax here since HTML technically does not allow uppercase HTML element but we do
- * since other tag-based engines like React allow it
- */
- Parser.prototype.parseTag = function (nestingLevel, parentArgType) {
- var startPosition = this.clonePosition();
- this.bump(); // `<`
- var tagName = this.parseTagName();
- this.bumpSpace();
- if (this.bumpIf('/>')) {
- // Self closing tag
- return {
- val: {
- type: _types__WEBPACK_IMPORTED_MODULE_1__.TYPE.literal,
- value: "<".concat(tagName, "/>"),
- location: createLocation(startPosition, this.clonePosition()),
- },
- err: null,
- };
- }
- else if (this.bumpIf('>')) {
- var childrenResult = this.parseMessage(nestingLevel + 1, parentArgType, true);
- if (childrenResult.err) {
- return childrenResult;
- }
- var children = childrenResult.val;
- // Expecting a close tag
- var endTagStartPosition = this.clonePosition();
- if (this.bumpIf('')) {
- if (this.isEOF() || !_isAlpha(this.char())) {
- return this.error(_error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.INVALID_TAG, createLocation(endTagStartPosition, this.clonePosition()));
- }
- var closingTagNameStartPosition = this.clonePosition();
- var closingTagName = this.parseTagName();
- if (tagName !== closingTagName) {
- return this.error(_error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.UNMATCHED_CLOSING_TAG, createLocation(closingTagNameStartPosition, this.clonePosition()));
- }
- this.bumpSpace();
- if (!this.bumpIf('>')) {
- return this.error(_error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.INVALID_TAG, createLocation(endTagStartPosition, this.clonePosition()));
- }
- return {
- val: {
- type: _types__WEBPACK_IMPORTED_MODULE_1__.TYPE.tag,
- value: tagName,
- children: children,
- location: createLocation(startPosition, this.clonePosition()),
- },
- err: null,
- };
- }
- else {
- return this.error(_error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.UNCLOSED_TAG, createLocation(startPosition, this.clonePosition()));
- }
- }
- else {
- return this.error(_error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.INVALID_TAG, createLocation(startPosition, this.clonePosition()));
- }
- };
- /**
- * This method assumes that the caller has peeked ahead for the first tag character.
- */
- Parser.prototype.parseTagName = function () {
- var startOffset = this.offset();
- this.bump(); // the first tag name character
- while (!this.isEOF() && _isPotentialElementNameChar(this.char())) {
- this.bump();
- }
- return this.message.slice(startOffset, this.offset());
- };
- Parser.prototype.parseLiteral = function (nestingLevel, parentArgType) {
- var start = this.clonePosition();
- var value = '';
- while (true) {
- var parseQuoteResult = this.tryParseQuote(parentArgType);
- if (parseQuoteResult) {
- value += parseQuoteResult;
- continue;
- }
- var parseUnquotedResult = this.tryParseUnquoted(nestingLevel, parentArgType);
- if (parseUnquotedResult) {
- value += parseUnquotedResult;
- continue;
- }
- var parseLeftAngleResult = this.tryParseLeftAngleBracket();
- if (parseLeftAngleResult) {
- value += parseLeftAngleResult;
- continue;
- }
- break;
- }
- var location = createLocation(start, this.clonePosition());
- return {
- val: { type: _types__WEBPACK_IMPORTED_MODULE_1__.TYPE.literal, value: value, location: location },
- err: null,
- };
- };
- Parser.prototype.tryParseLeftAngleBracket = function () {
- if (!this.isEOF() &&
- this.char() === 60 /* `<` */ &&
- (this.ignoreTag ||
- // If at the opening tag or closing tag position, bail.
- !_isAlphaOrSlash(this.peek() || 0))) {
- this.bump(); // `<`
- return '<';
- }
- return null;
- };
- /**
- * Starting with ICU 4.8, an ASCII apostrophe only starts quoted text if it immediately precedes
- * a character that requires quoting (that is, "only where needed"), and works the same in
- * nested messages as on the top level of the pattern. The new behavior is otherwise compatible.
- */
- Parser.prototype.tryParseQuote = function (parentArgType) {
- if (this.isEOF() || this.char() !== 39 /* `'` */) {
- return null;
- }
- // Parse escaped char following the apostrophe, or early return if there is no escaped char.
- // Check if is valid escaped character
- switch (this.peek()) {
- case 39 /* `'` */:
- // double quote, should return as a single quote.
- this.bump();
- this.bump();
- return "'";
- // '{', '<', '>', '}'
- case 123:
- case 60:
- case 62:
- case 125:
- break;
- case 35: // '#'
- if (parentArgType === 'plural' || parentArgType === 'selectordinal') {
- break;
- }
- return null;
- default:
- return null;
- }
- this.bump(); // apostrophe
- var codePoints = [this.char()]; // escaped char
- this.bump();
- // read chars until the optional closing apostrophe is found
- while (!this.isEOF()) {
- var ch = this.char();
- if (ch === 39 /* `'` */) {
- if (this.peek() === 39 /* `'` */) {
- codePoints.push(39);
- // Bump one more time because we need to skip 2 characters.
- this.bump();
- }
- else {
- // Optional closing apostrophe.
- this.bump();
- break;
- }
- }
- else {
- codePoints.push(ch);
- }
- this.bump();
- }
- return fromCodePoint.apply(void 0, codePoints);
- };
- Parser.prototype.tryParseUnquoted = function (nestingLevel, parentArgType) {
- if (this.isEOF()) {
- return null;
- }
- var ch = this.char();
- if (ch === 60 /* `<` */ ||
- ch === 123 /* `{` */ ||
- (ch === 35 /* `#` */ &&
- (parentArgType === 'plural' || parentArgType === 'selectordinal')) ||
- (ch === 125 /* `}` */ && nestingLevel > 0)) {
- return null;
- }
- else {
- this.bump();
- return fromCodePoint(ch);
- }
- };
- Parser.prototype.parseArgument = function (nestingLevel, expectingCloseTag) {
- var openingBracePosition = this.clonePosition();
- this.bump(); // `{`
- this.bumpSpace();
- if (this.isEOF()) {
- return this.error(_error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));
- }
- if (this.char() === 125 /* `}` */) {
- this.bump();
- return this.error(_error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.EMPTY_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));
- }
- // argument name
- var value = this.parseIdentifierIfPossible().value;
- if (!value) {
- return this.error(_error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));
- }
- this.bumpSpace();
- if (this.isEOF()) {
- return this.error(_error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));
- }
- switch (this.char()) {
- // Simple argument: `{name}`
- case 125 /* `}` */: {
- this.bump(); // `}`
- return {
- val: {
- type: _types__WEBPACK_IMPORTED_MODULE_1__.TYPE.argument,
- // value does not include the opening and closing braces.
- value: value,
- location: createLocation(openingBracePosition, this.clonePosition()),
- },
- err: null,
- };
- }
- // Argument with options: `{name, format, ...}`
- case 44 /* `,` */: {
- this.bump(); // `,`
- this.bumpSpace();
- if (this.isEOF()) {
- return this.error(_error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));
- }
- return this.parseArgumentOptions(nestingLevel, expectingCloseTag, value, openingBracePosition);
- }
- default:
- return this.error(_error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));
- }
- };
- /**
- * Advance the parser until the end of the identifier, if it is currently on
- * an identifier character. Return an empty string otherwise.
- */
- Parser.prototype.parseIdentifierIfPossible = function () {
- var startingPosition = this.clonePosition();
- var startOffset = this.offset();
- var value = matchIdentifierAtIndex(this.message, startOffset);
- var endOffset = startOffset + value.length;
- this.bumpTo(endOffset);
- var endPosition = this.clonePosition();
- var location = createLocation(startingPosition, endPosition);
- return { value: value, location: location };
- };
- Parser.prototype.parseArgumentOptions = function (nestingLevel, expectingCloseTag, value, openingBracePosition) {
- var _a;
- // Parse this range:
- // {name, type, style}
- // ^---^
- var typeStartPosition = this.clonePosition();
- var argType = this.parseIdentifierIfPossible().value;
- var typeEndPosition = this.clonePosition();
- switch (argType) {
- case '':
- // Expecting a style string number, date, time, plural, selectordinal, or select.
- return this.error(_error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.EXPECT_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));
- case 'number':
- case 'date':
- case 'time': {
- // Parse this range:
- // {name, number, style}
- // ^-------^
- this.bumpSpace();
- var styleAndLocation = null;
- if (this.bumpIf(',')) {
- this.bumpSpace();
- var styleStartPosition = this.clonePosition();
- var result = this.parseSimpleArgStyleIfPossible();
- if (result.err) {
- return result;
- }
- var style = trimEnd(result.val);
- if (style.length === 0) {
- return this.error(_error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.EXPECT_ARGUMENT_STYLE, createLocation(this.clonePosition(), this.clonePosition()));
- }
- var styleLocation = createLocation(styleStartPosition, this.clonePosition());
- styleAndLocation = { style: style, styleLocation: styleLocation };
- }
- var argCloseResult = this.tryParseArgumentClose(openingBracePosition);
- if (argCloseResult.err) {
- return argCloseResult;
- }
- var location_1 = createLocation(openingBracePosition, this.clonePosition());
- // Extract style or skeleton
- if (styleAndLocation && startsWith(styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style, '::', 0)) {
- // Skeleton starts with `::`.
- var skeleton = trimStart(styleAndLocation.style.slice(2));
- if (argType === 'number') {
- var result = this.parseNumberSkeletonFromString(skeleton, styleAndLocation.styleLocation);
- if (result.err) {
- return result;
- }
- return {
- val: { type: _types__WEBPACK_IMPORTED_MODULE_1__.TYPE.number, value: value, location: location_1, style: result.val },
- err: null,
- };
- }
- else {
- if (skeleton.length === 0) {
- return this.error(_error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.EXPECT_DATE_TIME_SKELETON, location_1);
- }
- var style = {
- type: _types__WEBPACK_IMPORTED_MODULE_1__.SKELETON_TYPE.dateTime,
- pattern: skeleton,
- location: styleAndLocation.styleLocation,
- parsedOptions: this.shouldParseSkeletons
- ? (0,_formatjs_icu_skeleton_parser__WEBPACK_IMPORTED_MODULE_3__.parseDateTimeSkeleton)(skeleton)
- : {},
- };
- var type = argType === 'date' ? _types__WEBPACK_IMPORTED_MODULE_1__.TYPE.date : _types__WEBPACK_IMPORTED_MODULE_1__.TYPE.time;
- return {
- val: { type: type, value: value, location: location_1, style: style },
- err: null,
- };
- }
- }
- // Regular style or no style.
- return {
- val: {
- type: argType === 'number'
- ? _types__WEBPACK_IMPORTED_MODULE_1__.TYPE.number
- : argType === 'date'
- ? _types__WEBPACK_IMPORTED_MODULE_1__.TYPE.date
- : _types__WEBPACK_IMPORTED_MODULE_1__.TYPE.time,
- value: value,
- location: location_1,
- style: (_a = styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style) !== null && _a !== void 0 ? _a : null,
- },
- err: null,
- };
- }
- case 'plural':
- case 'selectordinal':
- case 'select': {
- // Parse this range:
- // {name, plural, options}
- // ^---------^
- var typeEndPosition_1 = this.clonePosition();
- this.bumpSpace();
- if (!this.bumpIf(',')) {
- return this.error(_error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.EXPECT_SELECT_ARGUMENT_OPTIONS, createLocation(typeEndPosition_1, (0,tslib__WEBPACK_IMPORTED_MODULE_4__.__assign)({}, typeEndPosition_1)));
- }
- this.bumpSpace();
- // Parse offset:
- // {name, plural, offset:1, options}
- // ^-----^
- //
- // or the first option:
- //
- // {name, plural, one {...} other {...}}
- // ^--^
- var identifierAndLocation = this.parseIdentifierIfPossible();
- var pluralOffset = 0;
- if (argType !== 'select' && identifierAndLocation.value === 'offset') {
- if (!this.bumpIf(':')) {
- return this.error(_error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, createLocation(this.clonePosition(), this.clonePosition()));
- }
- this.bumpSpace();
- var result = this.tryParseDecimalInteger(_error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, _error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE);
- if (result.err) {
- return result;
- }
- // Parse another identifier for option parsing
- this.bumpSpace();
- identifierAndLocation = this.parseIdentifierIfPossible();
- pluralOffset = result.val;
- }
- var optionsResult = this.tryParsePluralOrSelectOptions(nestingLevel, argType, expectingCloseTag, identifierAndLocation);
- if (optionsResult.err) {
- return optionsResult;
- }
- var argCloseResult = this.tryParseArgumentClose(openingBracePosition);
- if (argCloseResult.err) {
- return argCloseResult;
- }
- var location_2 = createLocation(openingBracePosition, this.clonePosition());
- if (argType === 'select') {
- return {
- val: {
- type: _types__WEBPACK_IMPORTED_MODULE_1__.TYPE.select,
- value: value,
- options: fromEntries(optionsResult.val),
- location: location_2,
- },
- err: null,
- };
- }
- else {
- return {
- val: {
- type: _types__WEBPACK_IMPORTED_MODULE_1__.TYPE.plural,
- value: value,
- options: fromEntries(optionsResult.val),
- offset: pluralOffset,
- pluralType: argType === 'plural' ? 'cardinal' : 'ordinal',
- location: location_2,
- },
- err: null,
- };
- }
- }
- default:
- return this.error(_error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.INVALID_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));
- }
- };
- Parser.prototype.tryParseArgumentClose = function (openingBracePosition) {
- // Parse: {value, number, ::currency/GBP }
- //
- if (this.isEOF() || this.char() !== 125 /* `}` */) {
- return this.error(_error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));
- }
- this.bump(); // `}`
- return { val: true, err: null };
- };
- /**
- * See: https://github.com/unicode-org/icu/blob/af7ed1f6d2298013dc303628438ec4abe1f16479/icu4c/source/common/messagepattern.cpp#L659
- */
- Parser.prototype.parseSimpleArgStyleIfPossible = function () {
- var nestedBraces = 0;
- var startPosition = this.clonePosition();
- while (!this.isEOF()) {
- var ch = this.char();
- switch (ch) {
- case 39 /* `'` */: {
- // Treat apostrophe as quoting but include it in the style part.
- // Find the end of the quoted literal text.
- this.bump();
- var apostrophePosition = this.clonePosition();
- if (!this.bumpUntil("'")) {
- return this.error(_error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE, createLocation(apostrophePosition, this.clonePosition()));
- }
- this.bump();
- break;
- }
- case 123 /* `{` */: {
- nestedBraces += 1;
- this.bump();
- break;
- }
- case 125 /* `}` */: {
- if (nestedBraces > 0) {
- nestedBraces -= 1;
- }
- else {
- return {
- val: this.message.slice(startPosition.offset, this.offset()),
- err: null,
- };
- }
- break;
- }
- default:
- this.bump();
- break;
- }
- }
- return {
- val: this.message.slice(startPosition.offset, this.offset()),
- err: null,
- };
- };
- Parser.prototype.parseNumberSkeletonFromString = function (skeleton, location) {
- var tokens = [];
- try {
- tokens = (0,_formatjs_icu_skeleton_parser__WEBPACK_IMPORTED_MODULE_3__.parseNumberSkeletonFromString)(skeleton);
- }
- catch (e) {
- return this.error(_error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.INVALID_NUMBER_SKELETON, location);
- }
- return {
- val: {
- type: _types__WEBPACK_IMPORTED_MODULE_1__.SKELETON_TYPE.number,
- tokens: tokens,
- location: location,
- parsedOptions: this.shouldParseSkeletons
- ? (0,_formatjs_icu_skeleton_parser__WEBPACK_IMPORTED_MODULE_3__.parseNumberSkeleton)(tokens)
- : {},
- },
- err: null,
- };
- };
- /**
- * @param nesting_level The current nesting level of messages.
- * This can be positive when parsing message fragment in select or plural argument options.
- * @param parent_arg_type The parent argument's type.
- * @param parsed_first_identifier If provided, this is the first identifier-like selector of
- * the argument. It is a by-product of a previous parsing attempt.
- * @param expecting_close_tag If true, this message is directly or indirectly nested inside
- * between a pair of opening and closing tags. The nested message will not parse beyond
- * the closing tag boundary.
- */
- Parser.prototype.tryParsePluralOrSelectOptions = function (nestingLevel, parentArgType, expectCloseTag, parsedFirstIdentifier) {
- var _a;
- var hasOtherClause = false;
- var options = [];
- var parsedSelectors = new Set();
- var selector = parsedFirstIdentifier.value, selectorLocation = parsedFirstIdentifier.location;
- // Parse:
- // one {one apple}
- // ^--^
- while (true) {
- if (selector.length === 0) {
- var startPosition = this.clonePosition();
- if (parentArgType !== 'select' && this.bumpIf('=')) {
- // Try parse `={number}` selector
- var result = this.tryParseDecimalInteger(_error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, _error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.INVALID_PLURAL_ARGUMENT_SELECTOR);
- if (result.err) {
- return result;
- }
- selectorLocation = createLocation(startPosition, this.clonePosition());
- selector = this.message.slice(startPosition.offset, this.offset());
- }
- else {
- break;
- }
- }
- // Duplicate selector clauses
- if (parsedSelectors.has(selector)) {
- return this.error(parentArgType === 'select'
- ? _error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.DUPLICATE_SELECT_ARGUMENT_SELECTOR
- : _error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.DUPLICATE_PLURAL_ARGUMENT_SELECTOR, selectorLocation);
- }
- if (selector === 'other') {
- hasOtherClause = true;
- }
- // Parse:
- // one {one apple}
- // ^----------^
- this.bumpSpace();
- var openingBracePosition = this.clonePosition();
- if (!this.bumpIf('{')) {
- return this.error(parentArgType === 'select'
- ? _error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT
- : _error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT, createLocation(this.clonePosition(), this.clonePosition()));
- }
- var fragmentResult = this.parseMessage(nestingLevel + 1, parentArgType, expectCloseTag);
- if (fragmentResult.err) {
- return fragmentResult;
- }
- var argCloseResult = this.tryParseArgumentClose(openingBracePosition);
- if (argCloseResult.err) {
- return argCloseResult;
- }
- options.push([
- selector,
- {
- value: fragmentResult.val,
- location: createLocation(openingBracePosition, this.clonePosition()),
- },
- ]);
- // Keep track of the existing selectors
- parsedSelectors.add(selector);
- // Prep next selector clause.
- this.bumpSpace();
- (_a = this.parseIdentifierIfPossible(), selector = _a.value, selectorLocation = _a.location);
- }
- if (options.length === 0) {
- return this.error(parentArgType === 'select'
- ? _error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR
- : _error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, createLocation(this.clonePosition(), this.clonePosition()));
- }
- if (this.requiresOtherClause && !hasOtherClause) {
- return this.error(_error__WEBPACK_IMPORTED_MODULE_0__.ErrorKind.MISSING_OTHER_CLAUSE, createLocation(this.clonePosition(), this.clonePosition()));
- }
- return { val: options, err: null };
- };
- Parser.prototype.tryParseDecimalInteger = function (expectNumberError, invalidNumberError) {
- var sign = 1;
- var startingPosition = this.clonePosition();
- if (this.bumpIf('+')) {
- }
- else if (this.bumpIf('-')) {
- sign = -1;
- }
- var hasDigits = false;
- var decimal = 0;
- while (!this.isEOF()) {
- var ch = this.char();
- if (ch >= 48 /* `0` */ && ch <= 57 /* `9` */) {
- hasDigits = true;
- decimal = decimal * 10 + (ch - 48);
- this.bump();
- }
- else {
- break;
- }
- }
- var location = createLocation(startingPosition, this.clonePosition());
- if (!hasDigits) {
- return this.error(expectNumberError, location);
- }
- decimal *= sign;
- if (!isSafeInteger(decimal)) {
- return this.error(invalidNumberError, location);
- }
- return { val: decimal, err: null };
- };
- Parser.prototype.offset = function () {
- return this.position.offset;
- };
- Parser.prototype.isEOF = function () {
- return this.offset() === this.message.length;
- };
- Parser.prototype.clonePosition = function () {
- // This is much faster than `Object.assign` or spread.
- return {
- offset: this.position.offset,
- line: this.position.line,
- column: this.position.column,
- };
- };
- /**
- * Return the code point at the current position of the parser.
- * Throws if the index is out of bound.
- */
- Parser.prototype.char = function () {
- var offset = this.position.offset;
- if (offset >= this.message.length) {
- throw Error('out of bound');
- }
- var code = codePointAt(this.message, offset);
- if (code === undefined) {
- throw Error("Offset ".concat(offset, " is at invalid UTF-16 code unit boundary"));
- }
- return code;
- };
- Parser.prototype.error = function (kind, location) {
- return {
- val: null,
- err: {
- kind: kind,
- message: this.message,
- location: location,
- },
- };
- };
- /** Bump the parser to the next UTF-16 code unit. */
- Parser.prototype.bump = function () {
- if (this.isEOF()) {
- return;
- }
- var code = this.char();
- if (code === 10 /* '\n' */) {
- this.position.line += 1;
- this.position.column = 1;
- this.position.offset += 1;
- }
- else {
- this.position.column += 1;
- // 0 ~ 0x10000 -> unicode BMP, otherwise skip the surrogate pair.
- this.position.offset += code < 0x10000 ? 1 : 2;
- }
- };
- /**
- * If the substring starting at the current position of the parser has
- * the given prefix, then bump the parser to the character immediately
- * following the prefix and return true. Otherwise, don't bump the parser
- * and return false.
- */
- Parser.prototype.bumpIf = function (prefix) {
- if (startsWith(this.message, prefix, this.offset())) {
- for (var i = 0; i < prefix.length; i++) {
- this.bump();
- }
- return true;
- }
- return false;
- };
- /**
- * Bump the parser until the pattern character is found and return `true`.
- * Otherwise bump to the end of the file and return `false`.
- */
- Parser.prototype.bumpUntil = function (pattern) {
- var currentOffset = this.offset();
- var index = this.message.indexOf(pattern, currentOffset);
- if (index >= 0) {
- this.bumpTo(index);
- return true;
- }
- else {
- this.bumpTo(this.message.length);
- return false;
- }
- };
- /**
- * Bump the parser to the target offset.
- * If target offset is beyond the end of the input, bump the parser to the end of the input.
- */
- Parser.prototype.bumpTo = function (targetOffset) {
- if (this.offset() > targetOffset) {
- throw Error("targetOffset ".concat(targetOffset, " must be greater than or equal to the current offset ").concat(this.offset()));
- }
- targetOffset = Math.min(targetOffset, this.message.length);
- while (true) {
- var offset = this.offset();
- if (offset === targetOffset) {
- break;
- }
- if (offset > targetOffset) {
- throw Error("targetOffset ".concat(targetOffset, " is at invalid UTF-16 code unit boundary"));
- }
- this.bump();
- if (this.isEOF()) {
- break;
- }
- }
- };
- /** advance the parser through all whitespace to the next non-whitespace code unit. */
- Parser.prototype.bumpSpace = function () {
- while (!this.isEOF() && _isWhiteSpace(this.char())) {
- this.bump();
- }
- };
- /**
- * Peek at the *next* Unicode codepoint in the input without advancing the parser.
- * If the input has been exhausted, then this returns null.
- */
- Parser.prototype.peek = function () {
- if (this.isEOF()) {
- return null;
- }
- var code = this.char();
- var offset = this.offset();
- var nextCode = this.message.charCodeAt(offset + (code >= 0x10000 ? 2 : 1));
- return nextCode !== null && nextCode !== void 0 ? nextCode : null;
- };
- return Parser;
-}());
-
-/**
- * This check if codepoint is alphabet (lower & uppercase)
- * @param codepoint
- * @returns
- */
-function _isAlpha(codepoint) {
- return ((codepoint >= 97 && codepoint <= 122) ||
- (codepoint >= 65 && codepoint <= 90));
-}
-function _isAlphaOrSlash(codepoint) {
- return _isAlpha(codepoint) || codepoint === 47; /* '/' */
-}
-/** See `parseTag` function docs. */
-function _isPotentialElementNameChar(c) {
- return (c === 45 /* '-' */ ||
- c === 46 /* '.' */ ||
- (c >= 48 && c <= 57) /* 0..9 */ ||
- c === 95 /* '_' */ ||
- (c >= 97 && c <= 122) /** a..z */ ||
- (c >= 65 && c <= 90) /* A..Z */ ||
- c == 0xb7 ||
- (c >= 0xc0 && c <= 0xd6) ||
- (c >= 0xd8 && c <= 0xf6) ||
- (c >= 0xf8 && c <= 0x37d) ||
- (c >= 0x37f && c <= 0x1fff) ||
- (c >= 0x200c && c <= 0x200d) ||
- (c >= 0x203f && c <= 0x2040) ||
- (c >= 0x2070 && c <= 0x218f) ||
- (c >= 0x2c00 && c <= 0x2fef) ||
- (c >= 0x3001 && c <= 0xd7ff) ||
- (c >= 0xf900 && c <= 0xfdcf) ||
- (c >= 0xfdf0 && c <= 0xfffd) ||
- (c >= 0x10000 && c <= 0xeffff));
-}
-/**
- * Code point equivalent of regex `\p{White_Space}`.
- * From: https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt
- */
-function _isWhiteSpace(c) {
- return ((c >= 0x0009 && c <= 0x000d) ||
- c === 0x0020 ||
- c === 0x0085 ||
- (c >= 0x200e && c <= 0x200f) ||
- c === 0x2028 ||
- c === 0x2029);
-}
-/**
- * Code point equivalent of regex `\p{Pattern_Syntax}`.
- * See https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt
- */
-function _isPatternSyntax(c) {
- return ((c >= 0x0021 && c <= 0x0023) ||
- c === 0x0024 ||
- (c >= 0x0025 && c <= 0x0027) ||
- c === 0x0028 ||
- c === 0x0029 ||
- c === 0x002a ||
- c === 0x002b ||
- c === 0x002c ||
- c === 0x002d ||
- (c >= 0x002e && c <= 0x002f) ||
- (c >= 0x003a && c <= 0x003b) ||
- (c >= 0x003c && c <= 0x003e) ||
- (c >= 0x003f && c <= 0x0040) ||
- c === 0x005b ||
- c === 0x005c ||
- c === 0x005d ||
- c === 0x005e ||
- c === 0x0060 ||
- c === 0x007b ||
- c === 0x007c ||
- c === 0x007d ||
- c === 0x007e ||
- c === 0x00a1 ||
- (c >= 0x00a2 && c <= 0x00a5) ||
- c === 0x00a6 ||
- c === 0x00a7 ||
- c === 0x00a9 ||
- c === 0x00ab ||
- c === 0x00ac ||
- c === 0x00ae ||
- c === 0x00b0 ||
- c === 0x00b1 ||
- c === 0x00b6 ||
- c === 0x00bb ||
- c === 0x00bf ||
- c === 0x00d7 ||
- c === 0x00f7 ||
- (c >= 0x2010 && c <= 0x2015) ||
- (c >= 0x2016 && c <= 0x2017) ||
- c === 0x2018 ||
- c === 0x2019 ||
- c === 0x201a ||
- (c >= 0x201b && c <= 0x201c) ||
- c === 0x201d ||
- c === 0x201e ||
- c === 0x201f ||
- (c >= 0x2020 && c <= 0x2027) ||
- (c >= 0x2030 && c <= 0x2038) ||
- c === 0x2039 ||
- c === 0x203a ||
- (c >= 0x203b && c <= 0x203e) ||
- (c >= 0x2041 && c <= 0x2043) ||
- c === 0x2044 ||
- c === 0x2045 ||
- c === 0x2046 ||
- (c >= 0x2047 && c <= 0x2051) ||
- c === 0x2052 ||
- c === 0x2053 ||
- (c >= 0x2055 && c <= 0x205e) ||
- (c >= 0x2190 && c <= 0x2194) ||
- (c >= 0x2195 && c <= 0x2199) ||
- (c >= 0x219a && c <= 0x219b) ||
- (c >= 0x219c && c <= 0x219f) ||
- c === 0x21a0 ||
- (c >= 0x21a1 && c <= 0x21a2) ||
- c === 0x21a3 ||
- (c >= 0x21a4 && c <= 0x21a5) ||
- c === 0x21a6 ||
- (c >= 0x21a7 && c <= 0x21ad) ||
- c === 0x21ae ||
- (c >= 0x21af && c <= 0x21cd) ||
- (c >= 0x21ce && c <= 0x21cf) ||
- (c >= 0x21d0 && c <= 0x21d1) ||
- c === 0x21d2 ||
- c === 0x21d3 ||
- c === 0x21d4 ||
- (c >= 0x21d5 && c <= 0x21f3) ||
- (c >= 0x21f4 && c <= 0x22ff) ||
- (c >= 0x2300 && c <= 0x2307) ||
- c === 0x2308 ||
- c === 0x2309 ||
- c === 0x230a ||
- c === 0x230b ||
- (c >= 0x230c && c <= 0x231f) ||
- (c >= 0x2320 && c <= 0x2321) ||
- (c >= 0x2322 && c <= 0x2328) ||
- c === 0x2329 ||
- c === 0x232a ||
- (c >= 0x232b && c <= 0x237b) ||
- c === 0x237c ||
- (c >= 0x237d && c <= 0x239a) ||
- (c >= 0x239b && c <= 0x23b3) ||
- (c >= 0x23b4 && c <= 0x23db) ||
- (c >= 0x23dc && c <= 0x23e1) ||
- (c >= 0x23e2 && c <= 0x2426) ||
- (c >= 0x2427 && c <= 0x243f) ||
- (c >= 0x2440 && c <= 0x244a) ||
- (c >= 0x244b && c <= 0x245f) ||
- (c >= 0x2500 && c <= 0x25b6) ||
- c === 0x25b7 ||
- (c >= 0x25b8 && c <= 0x25c0) ||
- c === 0x25c1 ||
- (c >= 0x25c2 && c <= 0x25f7) ||
- (c >= 0x25f8 && c <= 0x25ff) ||
- (c >= 0x2600 && c <= 0x266e) ||
- c === 0x266f ||
- (c >= 0x2670 && c <= 0x2767) ||
- c === 0x2768 ||
- c === 0x2769 ||
- c === 0x276a ||
- c === 0x276b ||
- c === 0x276c ||
- c === 0x276d ||
- c === 0x276e ||
- c === 0x276f ||
- c === 0x2770 ||
- c === 0x2771 ||
- c === 0x2772 ||
- c === 0x2773 ||
- c === 0x2774 ||
- c === 0x2775 ||
- (c >= 0x2794 && c <= 0x27bf) ||
- (c >= 0x27c0 && c <= 0x27c4) ||
- c === 0x27c5 ||
- c === 0x27c6 ||
- (c >= 0x27c7 && c <= 0x27e5) ||
- c === 0x27e6 ||
- c === 0x27e7 ||
- c === 0x27e8 ||
- c === 0x27e9 ||
- c === 0x27ea ||
- c === 0x27eb ||
- c === 0x27ec ||
- c === 0x27ed ||
- c === 0x27ee ||
- c === 0x27ef ||
- (c >= 0x27f0 && c <= 0x27ff) ||
- (c >= 0x2800 && c <= 0x28ff) ||
- (c >= 0x2900 && c <= 0x2982) ||
- c === 0x2983 ||
- c === 0x2984 ||
- c === 0x2985 ||
- c === 0x2986 ||
- c === 0x2987 ||
- c === 0x2988 ||
- c === 0x2989 ||
- c === 0x298a ||
- c === 0x298b ||
- c === 0x298c ||
- c === 0x298d ||
- c === 0x298e ||
- c === 0x298f ||
- c === 0x2990 ||
- c === 0x2991 ||
- c === 0x2992 ||
- c === 0x2993 ||
- c === 0x2994 ||
- c === 0x2995 ||
- c === 0x2996 ||
- c === 0x2997 ||
- c === 0x2998 ||
- (c >= 0x2999 && c <= 0x29d7) ||
- c === 0x29d8 ||
- c === 0x29d9 ||
- c === 0x29da ||
- c === 0x29db ||
- (c >= 0x29dc && c <= 0x29fb) ||
- c === 0x29fc ||
- c === 0x29fd ||
- (c >= 0x29fe && c <= 0x2aff) ||
- (c >= 0x2b00 && c <= 0x2b2f) ||
- (c >= 0x2b30 && c <= 0x2b44) ||
- (c >= 0x2b45 && c <= 0x2b46) ||
- (c >= 0x2b47 && c <= 0x2b4c) ||
- (c >= 0x2b4d && c <= 0x2b73) ||
- (c >= 0x2b74 && c <= 0x2b75) ||
- (c >= 0x2b76 && c <= 0x2b95) ||
- c === 0x2b96 ||
- (c >= 0x2b97 && c <= 0x2bff) ||
- (c >= 0x2e00 && c <= 0x2e01) ||
- c === 0x2e02 ||
- c === 0x2e03 ||
- c === 0x2e04 ||
- c === 0x2e05 ||
- (c >= 0x2e06 && c <= 0x2e08) ||
- c === 0x2e09 ||
- c === 0x2e0a ||
- c === 0x2e0b ||
- c === 0x2e0c ||
- c === 0x2e0d ||
- (c >= 0x2e0e && c <= 0x2e16) ||
- c === 0x2e17 ||
- (c >= 0x2e18 && c <= 0x2e19) ||
- c === 0x2e1a ||
- c === 0x2e1b ||
- c === 0x2e1c ||
- c === 0x2e1d ||
- (c >= 0x2e1e && c <= 0x2e1f) ||
- c === 0x2e20 ||
- c === 0x2e21 ||
- c === 0x2e22 ||
- c === 0x2e23 ||
- c === 0x2e24 ||
- c === 0x2e25 ||
- c === 0x2e26 ||
- c === 0x2e27 ||
- c === 0x2e28 ||
- c === 0x2e29 ||
- (c >= 0x2e2a && c <= 0x2e2e) ||
- c === 0x2e2f ||
- (c >= 0x2e30 && c <= 0x2e39) ||
- (c >= 0x2e3a && c <= 0x2e3b) ||
- (c >= 0x2e3c && c <= 0x2e3f) ||
- c === 0x2e40 ||
- c === 0x2e41 ||
- c === 0x2e42 ||
- (c >= 0x2e43 && c <= 0x2e4f) ||
- (c >= 0x2e50 && c <= 0x2e51) ||
- c === 0x2e52 ||
- (c >= 0x2e53 && c <= 0x2e7f) ||
- (c >= 0x3001 && c <= 0x3003) ||
- c === 0x3008 ||
- c === 0x3009 ||
- c === 0x300a ||
- c === 0x300b ||
- c === 0x300c ||
- c === 0x300d ||
- c === 0x300e ||
- c === 0x300f ||
- c === 0x3010 ||
- c === 0x3011 ||
- (c >= 0x3012 && c <= 0x3013) ||
- c === 0x3014 ||
- c === 0x3015 ||
- c === 0x3016 ||
- c === 0x3017 ||
- c === 0x3018 ||
- c === 0x3019 ||
- c === 0x301a ||
- c === 0x301b ||
- c === 0x301c ||
- c === 0x301d ||
- (c >= 0x301e && c <= 0x301f) ||
- c === 0x3020 ||
- c === 0x3030 ||
- c === 0xfd3e ||
- c === 0xfd3f ||
- (c >= 0xfe45 && c <= 0xfe46));
-}
-
-
-/***/ }),
-
-/***/ "./node_modules/@formatjs/icu-messageformat-parser/lib/regex.generated.js":
-/*!********************************************************************************!*\
- !*** ./node_modules/@formatjs/icu-messageformat-parser/lib/regex.generated.js ***!
- \********************************************************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ "SPACE_SEPARATOR_REGEX": () => (/* binding */ SPACE_SEPARATOR_REGEX),
-/* harmony export */ "WHITE_SPACE_REGEX": () => (/* binding */ WHITE_SPACE_REGEX)
-/* harmony export */ });
-// @generated from regex-gen.ts
-var SPACE_SEPARATOR_REGEX = /[ \xA0\u1680\u2000-\u200A\u202F\u205F\u3000]/;
-var WHITE_SPACE_REGEX = /[\t-\r \x85\u200E\u200F\u2028\u2029]/;
-
-
-/***/ }),
-
-/***/ "./node_modules/@formatjs/icu-messageformat-parser/lib/types.js":
-/*!**********************************************************************!*\
- !*** ./node_modules/@formatjs/icu-messageformat-parser/lib/types.js ***!
- \**********************************************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ "SKELETON_TYPE": () => (/* binding */ SKELETON_TYPE),
-/* harmony export */ "TYPE": () => (/* binding */ TYPE),
-/* harmony export */ "createLiteralElement": () => (/* binding */ createLiteralElement),
-/* harmony export */ "createNumberElement": () => (/* binding */ createNumberElement),
-/* harmony export */ "isArgumentElement": () => (/* binding */ isArgumentElement),
-/* harmony export */ "isDateElement": () => (/* binding */ isDateElement),
-/* harmony export */ "isDateTimeSkeleton": () => (/* binding */ isDateTimeSkeleton),
-/* harmony export */ "isLiteralElement": () => (/* binding */ isLiteralElement),
-/* harmony export */ "isNumberElement": () => (/* binding */ isNumberElement),
-/* harmony export */ "isNumberSkeleton": () => (/* binding */ isNumberSkeleton),
-/* harmony export */ "isPluralElement": () => (/* binding */ isPluralElement),
-/* harmony export */ "isPoundElement": () => (/* binding */ isPoundElement),
-/* harmony export */ "isSelectElement": () => (/* binding */ isSelectElement),
-/* harmony export */ "isTagElement": () => (/* binding */ isTagElement),
-/* harmony export */ "isTimeElement": () => (/* binding */ isTimeElement)
-/* harmony export */ });
-var TYPE;
-(function (TYPE) {
- /**
- * Raw text
- */
- TYPE[TYPE["literal"] = 0] = "literal";
- /**
- * Variable w/o any format, e.g `var` in `this is a {var}`
- */
- TYPE[TYPE["argument"] = 1] = "argument";
- /**
- * Variable w/ number format
- */
- TYPE[TYPE["number"] = 2] = "number";
- /**
- * Variable w/ date format
- */
- TYPE[TYPE["date"] = 3] = "date";
- /**
- * Variable w/ time format
- */
- TYPE[TYPE["time"] = 4] = "time";
- /**
- * Variable w/ select format
- */
- TYPE[TYPE["select"] = 5] = "select";
- /**
- * Variable w/ plural format
- */
- TYPE[TYPE["plural"] = 6] = "plural";
- /**
- * Only possible within plural argument.
- * This is the `#` symbol that will be substituted with the count.
- */
- TYPE[TYPE["pound"] = 7] = "pound";
- /**
- * XML-like tag
- */
- TYPE[TYPE["tag"] = 8] = "tag";
-})(TYPE || (TYPE = {}));
-var SKELETON_TYPE;
-(function (SKELETON_TYPE) {
- SKELETON_TYPE[SKELETON_TYPE["number"] = 0] = "number";
- SKELETON_TYPE[SKELETON_TYPE["dateTime"] = 1] = "dateTime";
-})(SKELETON_TYPE || (SKELETON_TYPE = {}));
-/**
- * Type Guards
- */
-function isLiteralElement(el) {
- return el.type === TYPE.literal;
-}
-function isArgumentElement(el) {
- return el.type === TYPE.argument;
-}
-function isNumberElement(el) {
- return el.type === TYPE.number;
-}
-function isDateElement(el) {
- return el.type === TYPE.date;
-}
-function isTimeElement(el) {
- return el.type === TYPE.time;
-}
-function isSelectElement(el) {
- return el.type === TYPE.select;
-}
-function isPluralElement(el) {
- return el.type === TYPE.plural;
-}
-function isPoundElement(el) {
- return el.type === TYPE.pound;
-}
-function isTagElement(el) {
- return el.type === TYPE.tag;
-}
-function isNumberSkeleton(el) {
- return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.number);
-}
-function isDateTimeSkeleton(el) {
- return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.dateTime);
-}
-function createLiteralElement(value) {
- return {
- type: TYPE.literal,
- value: value,
- };
-}
-function createNumberElement(value, style) {
- return {
- type: TYPE.number,
- value: value,
- style: style,
- };
-}
-
-
-/***/ }),
-
-/***/ "./node_modules/@formatjs/icu-skeleton-parser/lib/date-time.js":
-/*!*********************************************************************!*\
- !*** ./node_modules/@formatjs/icu-skeleton-parser/lib/date-time.js ***!
- \*********************************************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ "parseDateTimeSkeleton": () => (/* binding */ parseDateTimeSkeleton)
-/* harmony export */ });
-/**
- * https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table
- * Credit: https://github.com/caridy/intl-datetimeformat-pattern/blob/master/index.js
- * with some tweaks
- */
-var DATE_TIME_REGEX = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;
-/**
- * Parse Date time skeleton into Intl.DateTimeFormatOptions
- * Ref: https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table
- * @public
- * @param skeleton skeleton string
- */
-function parseDateTimeSkeleton(skeleton) {
- var result = {};
- skeleton.replace(DATE_TIME_REGEX, function (match) {
- var len = match.length;
- switch (match[0]) {
- // Era
- case 'G':
- result.era = len === 4 ? 'long' : len === 5 ? 'narrow' : 'short';
- break;
- // Year
- case 'y':
- result.year = len === 2 ? '2-digit' : 'numeric';
- break;
- case 'Y':
- case 'u':
- case 'U':
- case 'r':
- throw new RangeError('`Y/u/U/r` (year) patterns are not supported, use `y` instead');
- // Quarter
- case 'q':
- case 'Q':
- throw new RangeError('`q/Q` (quarter) patterns are not supported');
- // Month
- case 'M':
- case 'L':
- result.month = ['numeric', '2-digit', 'short', 'long', 'narrow'][len - 1];
- break;
- // Week
- case 'w':
- case 'W':
- throw new RangeError('`w/W` (week) patterns are not supported');
- case 'd':
- result.day = ['numeric', '2-digit'][len - 1];
- break;
- case 'D':
- case 'F':
- case 'g':
- throw new RangeError('`D/F/g` (day) patterns are not supported, use `d` instead');
- // Weekday
- case 'E':
- result.weekday = len === 4 ? 'short' : len === 5 ? 'narrow' : 'short';
- break;
- case 'e':
- if (len < 4) {
- throw new RangeError('`e..eee` (weekday) patterns are not supported');
- }
- result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];
- break;
- case 'c':
- if (len < 4) {
- throw new RangeError('`c..ccc` (weekday) patterns are not supported');
- }
- result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];
- break;
- // Period
- case 'a': // AM, PM
- result.hour12 = true;
- break;
- case 'b': // am, pm, noon, midnight
- case 'B': // flexible day periods
- throw new RangeError('`b/B` (period) patterns are not supported, use `a` instead');
- // Hour
- case 'h':
- result.hourCycle = 'h12';
- result.hour = ['numeric', '2-digit'][len - 1];
- break;
- case 'H':
- result.hourCycle = 'h23';
- result.hour = ['numeric', '2-digit'][len - 1];
- break;
- case 'K':
- result.hourCycle = 'h11';
- result.hour = ['numeric', '2-digit'][len - 1];
- break;
- case 'k':
- result.hourCycle = 'h24';
- result.hour = ['numeric', '2-digit'][len - 1];
- break;
- case 'j':
- case 'J':
- case 'C':
- throw new RangeError('`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead');
- // Minute
- case 'm':
- result.minute = ['numeric', '2-digit'][len - 1];
- break;
- // Second
- case 's':
- result.second = ['numeric', '2-digit'][len - 1];
- break;
- case 'S':
- case 'A':
- throw new RangeError('`S/A` (second) patterns are not supported, use `s` instead');
- // Zone
- case 'z': // 1..3, 4: specific non-location format
- result.timeZoneName = len < 4 ? 'short' : 'long';
- break;
- case 'Z': // 1..3, 4, 5: The ISO8601 varios formats
- case 'O': // 1, 4: miliseconds in day short, long
- case 'v': // 1, 4: generic non-location format
- case 'V': // 1, 2, 3, 4: time zone ID or city
- case 'X': // 1, 2, 3, 4: The ISO8601 varios formats
- case 'x': // 1, 2, 3, 4: The ISO8601 varios formats
- throw new RangeError('`Z/O/v/V/X/x` (timeZone) patterns are not supported, use `z` instead');
- }
- return '';
- });
- return result;
-}
-
-
-/***/ }),
-
-/***/ "./node_modules/@formatjs/icu-skeleton-parser/lib/index.js":
-/*!*****************************************************************!*\
- !*** ./node_modules/@formatjs/icu-skeleton-parser/lib/index.js ***!
- \*****************************************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ "parseDateTimeSkeleton": () => (/* reexport safe */ _date_time__WEBPACK_IMPORTED_MODULE_0__.parseDateTimeSkeleton),
-/* harmony export */ "parseNumberSkeleton": () => (/* reexport safe */ _number__WEBPACK_IMPORTED_MODULE_1__.parseNumberSkeleton),
-/* harmony export */ "parseNumberSkeletonFromString": () => (/* reexport safe */ _number__WEBPACK_IMPORTED_MODULE_1__.parseNumberSkeletonFromString)
-/* harmony export */ });
-/* harmony import */ var _date_time__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./date-time */ "./node_modules/@formatjs/icu-skeleton-parser/lib/date-time.js");
-/* harmony import */ var _number__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./number */ "./node_modules/@formatjs/icu-skeleton-parser/lib/number.js");
-
-
-
-
-/***/ }),
-
-/***/ "./node_modules/@formatjs/icu-skeleton-parser/lib/number.js":
-/*!******************************************************************!*\
- !*** ./node_modules/@formatjs/icu-skeleton-parser/lib/number.js ***!
- \******************************************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ "parseNumberSkeleton": () => (/* binding */ parseNumberSkeleton),
-/* harmony export */ "parseNumberSkeletonFromString": () => (/* binding */ parseNumberSkeletonFromString)
-/* harmony export */ });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
-/* harmony import */ var _regex_generated__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./regex.generated */ "./node_modules/@formatjs/icu-skeleton-parser/lib/regex.generated.js");
-
-
-function parseNumberSkeletonFromString(skeleton) {
- if (skeleton.length === 0) {
- throw new Error('Number skeleton cannot be empty');
- }
- // Parse the skeleton
- var stringTokens = skeleton
- .split(_regex_generated__WEBPACK_IMPORTED_MODULE_0__.WHITE_SPACE_REGEX)
- .filter(function (x) { return x.length > 0; });
- var tokens = [];
- for (var _i = 0, stringTokens_1 = stringTokens; _i < stringTokens_1.length; _i++) {
- var stringToken = stringTokens_1[_i];
- var stemAndOptions = stringToken.split('/');
- if (stemAndOptions.length === 0) {
- throw new Error('Invalid number skeleton');
- }
- var stem = stemAndOptions[0], options = stemAndOptions.slice(1);
- for (var _a = 0, options_1 = options; _a < options_1.length; _a++) {
- var option = options_1[_a];
- if (option.length === 0) {
- throw new Error('Invalid number skeleton');
- }
- }
- tokens.push({ stem: stem, options: options });
- }
- return tokens;
-}
-function icuUnitToEcma(unit) {
- return unit.replace(/^(.*?)-/, '');
-}
-var FRACTION_PRECISION_REGEX = /^\.(?:(0+)(\*)?|(#+)|(0+)(#+))$/g;
-var SIGNIFICANT_PRECISION_REGEX = /^(@+)?(\+|#+)?[rs]?$/g;
-var INTEGER_WIDTH_REGEX = /(\*)(0+)|(#+)(0+)|(0+)/g;
-var CONCISE_INTEGER_WIDTH_REGEX = /^(0+)$/;
-function parseSignificantPrecision(str) {
- var result = {};
- if (str[str.length - 1] === 'r') {
- result.roundingPriority = 'morePrecision';
- }
- else if (str[str.length - 1] === 's') {
- result.roundingPriority = 'lessPrecision';
- }
- str.replace(SIGNIFICANT_PRECISION_REGEX, function (_, g1, g2) {
- // @@@ case
- if (typeof g2 !== 'string') {
- result.minimumSignificantDigits = g1.length;
- result.maximumSignificantDigits = g1.length;
- }
- // @@@+ case
- else if (g2 === '+') {
- result.minimumSignificantDigits = g1.length;
- }
- // .### case
- else if (g1[0] === '#') {
- result.maximumSignificantDigits = g1.length;
- }
- // .@@## or .@@@ case
- else {
- result.minimumSignificantDigits = g1.length;
- result.maximumSignificantDigits =
- g1.length + (typeof g2 === 'string' ? g2.length : 0);
- }
- return '';
- });
- return result;
-}
-function parseSign(str) {
- switch (str) {
- case 'sign-auto':
- return {
- signDisplay: 'auto',
- };
- case 'sign-accounting':
- case '()':
- return {
- currencySign: 'accounting',
- };
- case 'sign-always':
- case '+!':
- return {
- signDisplay: 'always',
- };
- case 'sign-accounting-always':
- case '()!':
- return {
- signDisplay: 'always',
- currencySign: 'accounting',
- };
- case 'sign-except-zero':
- case '+?':
- return {
- signDisplay: 'exceptZero',
- };
- case 'sign-accounting-except-zero':
- case '()?':
- return {
- signDisplay: 'exceptZero',
- currencySign: 'accounting',
- };
- case 'sign-never':
- case '+_':
- return {
- signDisplay: 'never',
- };
- }
-}
-function parseConciseScientificAndEngineeringStem(stem) {
- // Engineering
- var result;
- if (stem[0] === 'E' && stem[1] === 'E') {
- result = {
- notation: 'engineering',
- };
- stem = stem.slice(2);
- }
- else if (stem[0] === 'E') {
- result = {
- notation: 'scientific',
- };
- stem = stem.slice(1);
- }
- if (result) {
- var signDisplay = stem.slice(0, 2);
- if (signDisplay === '+!') {
- result.signDisplay = 'always';
- stem = stem.slice(2);
- }
- else if (signDisplay === '+?') {
- result.signDisplay = 'exceptZero';
- stem = stem.slice(2);
- }
- if (!CONCISE_INTEGER_WIDTH_REGEX.test(stem)) {
- throw new Error('Malformed concise eng/scientific notation');
- }
- result.minimumIntegerDigits = stem.length;
- }
- return result;
-}
-function parseNotationOptions(opt) {
- var result = {};
- var signOpts = parseSign(opt);
- if (signOpts) {
- return signOpts;
- }
- return result;
-}
-/**
- * https://github.com/unicode-org/icu/blob/master/docs/userguide/format_parse/numbers/skeletons.md#skeleton-stems-and-options
- */
-function parseNumberSkeleton(tokens) {
- var result = {};
- for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {
- var token = tokens_1[_i];
- switch (token.stem) {
- case 'percent':
- case '%':
- result.style = 'percent';
- continue;
- case '%x100':
- result.style = 'percent';
- result.scale = 100;
- continue;
- case 'currency':
- result.style = 'currency';
- result.currency = token.options[0];
- continue;
- case 'group-off':
- case ',_':
- result.useGrouping = false;
- continue;
- case 'precision-integer':
- case '.':
- result.maximumFractionDigits = 0;
- continue;
- case 'measure-unit':
- case 'unit':
- result.style = 'unit';
- result.unit = icuUnitToEcma(token.options[0]);
- continue;
- case 'compact-short':
- case 'K':
- result.notation = 'compact';
- result.compactDisplay = 'short';
- continue;
- case 'compact-long':
- case 'KK':
- result.notation = 'compact';
- result.compactDisplay = 'long';
- continue;
- case 'scientific':
- result = (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)({}, result), { notation: 'scientific' }), token.options.reduce(function (all, opt) { return ((0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)({}, all), parseNotationOptions(opt))); }, {}));
- continue;
- case 'engineering':
- result = (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)({}, result), { notation: 'engineering' }), token.options.reduce(function (all, opt) { return ((0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)({}, all), parseNotationOptions(opt))); }, {}));
- continue;
- case 'notation-simple':
- result.notation = 'standard';
- continue;
- // https://github.com/unicode-org/icu/blob/master/icu4c/source/i18n/unicode/unumberformatter.h
- case 'unit-width-narrow':
- result.currencyDisplay = 'narrowSymbol';
- result.unitDisplay = 'narrow';
- continue;
- case 'unit-width-short':
- result.currencyDisplay = 'code';
- result.unitDisplay = 'short';
- continue;
- case 'unit-width-full-name':
- result.currencyDisplay = 'name';
- result.unitDisplay = 'long';
- continue;
- case 'unit-width-iso-code':
- result.currencyDisplay = 'symbol';
- continue;
- case 'scale':
- result.scale = parseFloat(token.options[0]);
- continue;
- // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width
- case 'integer-width':
- if (token.options.length > 1) {
- throw new RangeError('integer-width stems only accept a single optional option');
- }
- token.options[0].replace(INTEGER_WIDTH_REGEX, function (_, g1, g2, g3, g4, g5) {
- if (g1) {
- result.minimumIntegerDigits = g2.length;
- }
- else if (g3 && g4) {
- throw new Error('We currently do not support maximum integer digits');
- }
- else if (g5) {
- throw new Error('We currently do not support exact integer digits');
- }
- return '';
- });
- continue;
- }
- // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width
- if (CONCISE_INTEGER_WIDTH_REGEX.test(token.stem)) {
- result.minimumIntegerDigits = token.stem.length;
- continue;
- }
- if (FRACTION_PRECISION_REGEX.test(token.stem)) {
- // Precision
- // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#fraction-precision
- // precision-integer case
- if (token.options.length > 1) {
- throw new RangeError('Fraction-precision stems only accept a single optional option');
- }
- token.stem.replace(FRACTION_PRECISION_REGEX, function (_, g1, g2, g3, g4, g5) {
- // .000* case (before ICU67 it was .000+)
- if (g2 === '*') {
- result.minimumFractionDigits = g1.length;
- }
- // .### case
- else if (g3 && g3[0] === '#') {
- result.maximumFractionDigits = g3.length;
- }
- // .00## case
- else if (g4 && g5) {
- result.minimumFractionDigits = g4.length;
- result.maximumFractionDigits = g4.length + g5.length;
- }
- else {
- result.minimumFractionDigits = g1.length;
- result.maximumFractionDigits = g1.length;
- }
- return '';
- });
- var opt = token.options[0];
- // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#trailing-zero-display
- if (opt === 'w') {
- result = (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)({}, result), { trailingZeroDisplay: 'stripIfInteger' });
- }
- else if (opt) {
- result = (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)({}, result), parseSignificantPrecision(opt));
- }
- continue;
- }
- // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#significant-digits-precision
- if (SIGNIFICANT_PRECISION_REGEX.test(token.stem)) {
- result = (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)({}, result), parseSignificantPrecision(token.stem));
- continue;
- }
- var signOpts = parseSign(token.stem);
- if (signOpts) {
- result = (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)({}, result), signOpts);
- }
- var conciseScientificAndEngineeringOpts = parseConciseScientificAndEngineeringStem(token.stem);
- if (conciseScientificAndEngineeringOpts) {
- result = (0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_1__.__assign)({}, result), conciseScientificAndEngineeringOpts);
- }
- }
- return result;
-}
-
-
-/***/ }),
-
-/***/ "./node_modules/@formatjs/icu-skeleton-parser/lib/regex.generated.js":
-/*!***************************************************************************!*\
- !*** ./node_modules/@formatjs/icu-skeleton-parser/lib/regex.generated.js ***!
- \***************************************************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ "WHITE_SPACE_REGEX": () => (/* binding */ WHITE_SPACE_REGEX)
-/* harmony export */ });
-// @generated from regex-gen.ts
-var WHITE_SPACE_REGEX = /[\t-\r \x85\u200E\u200F\u2028\u2029]/i;
-
-
/***/ }),
/***/ "./src/config.js":
@@ -4323,6 +1999,7 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export */ "LINK_TERMS_OF_SERVICE": () => (/* binding */ LINK_TERMS_OF_SERVICE),
/* harmony export */ "LOGGING_ENABLED": () => (/* binding */ LOGGING_ENABLED),
/* harmony export */ "MAX_AVATAR_BYTES": () => (/* binding */ MAX_AVATAR_BYTES),
+/* harmony export */ "MAX_DURATION": () => (/* binding */ MAX_DURATION),
/* harmony export */ "MAX_EXTERN_ATTACHMENT_SIZE": () => (/* binding */ MAX_EXTERN_ATTACHMENT_SIZE),
/* harmony export */ "MAX_IMAGE_DIM": () => (/* binding */ MAX_IMAGE_DIM),
/* harmony export */ "MAX_INBAND_ATTACHMENT_SIZE": () => (/* binding */ MAX_INBAND_ATTACHMENT_SIZE),
@@ -4334,6 +2011,7 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export */ "MEDIA_BREAKPOINT": () => (/* binding */ MEDIA_BREAKPOINT),
/* harmony export */ "MESSAGES_PAGE": () => (/* binding */ MESSAGES_PAGE),
/* harmony export */ "MESSAGE_PREVIEW_LENGTH": () => (/* binding */ MESSAGE_PREVIEW_LENGTH),
+/* harmony export */ "MIN_DURATION": () => (/* binding */ MIN_DURATION),
/* harmony export */ "MIN_TAG_LENGTH": () => (/* binding */ MIN_TAG_LENGTH),
/* harmony export */ "NEW_GRP_ACCESS_MODE": () => (/* binding */ NEW_GRP_ACCESS_MODE),
/* harmony export */ "NO_ACCESS_MODE": () => (/* binding */ NO_ACCESS_MODE),
@@ -4352,7 +2030,7 @@ const KNOWN_HOSTS = {
};
const DEFAULT_HOST = KNOWN_HOSTS.hosted;
const LOGGING_ENABLED = true;
-const KEYPRESS_DELAY = 3 * 1000;
+const KEYPRESS_DELAY = 3000;
const RECEIVED_DELAY = 500;
const READ_DELAY = 1000;
const MIN_TAG_LENGTH = 2;
@@ -4379,7 +2057,9 @@ const MAX_TOPIC_DESCRIPTION_LENGTH = 360;
const MESSAGE_PREVIEW_LENGTH = 80;
const QUOTED_REPLY_LENGTH = 30;
const FORWARDED_PREVIEW_LENGTH = 84;
-const LINK_CONTACT_US = 'email:support@tinode.co';
+const MIN_DURATION = 2000;
+const MAX_DURATION = 600000;
+const LINK_CONTACT_US = 'mailto:support@tinode.co';
const LINK_PRIVACY_POLICY = 'https://tinode.co/privacy.html';
const LINK_TERMS_OF_SERVICE = 'https://tinode.co/terms.html';
const CALL_WEBRTC_CONFIG = {
@@ -4642,7 +2322,7 @@ function blobToBase64(blob) {
function filePasted(event, onImageSuccess, onAttachmentSuccess, onError) {
const items = (event.clipboardData || event.originalEvent.clipboardData || {}).items;
- if (!Array.isArray(items)) {
+ if (!items || !items.length) {
return false;
}
@@ -5452,14 +3132,20 @@ function shortDateFormat(then, locale) {
}
function secondsToTime(seconds, fixedMin) {
let min = Math.floor(seconds / 60) | 0;
+ let hours = Math.floor(min / 60) | 0;
- if (fixedMin) {
+ if (fixedMin || hours > 0) {
min = min < 10 ? "0".concat(min) : min;
}
let sec = seconds % 60 | 0;
sec = sec < 10 ? "0".concat(sec) : sec;
- return "".concat(min, ":").concat(sec);
+
+ if (hours == 0) {
+ return "".concat(min, ":").concat(sec);
+ }
+
+ return "".concat(hours, ":").concat(min, ":").concat(sec);
}
function bytesToHumanSize(bytes) {
if (!bytes || bytes == 0) {
@@ -8143,16 +5829,6 @@ class MessagesView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Compone
};
} else if (nextProps.topic != prevState.topic) {
const topic = nextProps.tinode.getTopic(nextProps.topic);
- let reply = null;
-
- if (nextProps.forwardMessage) {
- const preview = nextProps.forwardMessage.preview;
- reply = {
- content: preview,
- seq: null
- };
- }
-
nextState = {
topic: nextProps.topic,
docPreview: null,
@@ -8162,11 +5838,17 @@ class MessagesView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Compone
typingIndicator: false,
scrollPosition: 0,
fetchingMessages: false,
- reply: reply,
showGoToLastButton: false,
deleted: topic._deleted
};
+ if (nextProps.forwardMessage) {
+ nextState.reply = {
+ content: nextProps.forwardMessage.preview,
+ seq: null
+ };
+ }
+
if (topic) {
const subs = [];
@@ -8363,7 +6045,7 @@ class MessagesView extends (react__WEBPACK_IMPORTED_MODULE_0___default().Compone
const pos = event.target.scrollHeight - event.target.scrollTop - event.target.offsetHeight;
this.setState({
scrollPosition: pos,
- showGoToLastButton: pos > SHOW_GO_TO_LAST_DIST
+ showGoToLastButton: pos > SHOW_GO_TO_LAST_DIST && pos < this.state.scrollPosition
});
if (this.state.fetchingMessages) {
@@ -10395,23 +8077,7 @@ class TinodeWeb extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component)
}
handlePushMessage(payload) {
- const data = payload.data || {};
-
- switch (data.what) {
- case 'msg':
- if (tinode_sdk__WEBPACK_IMPORTED_MODULE_4__.Tinode.isChannelTopicName(data.topic)) {
- this.tinode.oobNotification('msg', data.topic, data.seq, 'fake-uid');
- }
-
- break;
-
- case 'read':
- this.tinode.oobNotification('read', data.topic, data.seq);
- break;
-
- default:
- console.warn("Unknown push type ignored", data.what, data);
- }
+ this.tinode.oobNotification(payload.data || {});
}
initFCMessaging() {
@@ -10713,7 +8379,7 @@ class TinodeWeb extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component)
const timeLeft = count > 99 ? (0,_lib_strformat_js__WEBPACK_IMPORTED_MODULE_19__.secondsToTime)(count) : count;
this.handleError(formatMessage(messages.reconnect_countdown, {
seconds: timeLeft
- }), 'warn', () => {
+ }), 'warn', _ => {
clearInterval(this.reconnectCountdown);
this.tinode.reconnect();
}, formatMessage(messages.reconnect_now));
@@ -11659,6 +9325,11 @@ class TinodeWeb extends (react__WEBPACK_IMPORTED_MODULE_0___default().Component)
defaultTopicContextMenu(topicName) {
const topic = this.tinode.getTopic(topicName);
+
+ if (topic._deleted) {
+ return ['topic_delete'];
+ }
+
let muted = false,
blocked = false,
self_blocked = false,
@@ -12520,27 +10191,24 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export */ });
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-intl */ "react-intl");
-/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_intl__WEBPACK_IMPORTED_MODULE_1__);
-/* harmony import */ var _lib_strformat__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../lib/strformat */ "./src/lib/strformat.js");
-/* harmony import */ var _lib_blob_helpers__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../lib/blob-helpers */ "./src/lib/blob-helpers.js");
-
+/* harmony import */ var _lib_strformat__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ../lib/strformat */ "./src/lib/strformat.js");
+/* harmony import */ var _lib_blob_helpers__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ../lib/blob-helpers */ "./src/lib/blob-helpers.js");
const CANVAS_UPSCALING = 2.0;
const LINE_WIDTH = 3 * CANVAS_UPSCALING;
const SPACING = 2 * CANVAS_UPSCALING;
-const BAR_COLOR = '#bbb';
-const BAR_COLOR_DARK = '#888';
-const THUMB_COLOR = '#666';
+const BAR_COLOR = '#888A';
+const BAR_COLOR_DARK = '#666C';
+const THUMB_COLOR = '#444E';
const MIN_PREVIEW_LENGTH = 16;
class AudioPlayer extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureComponent) {
constructor(props) {
super(props);
- let preview = (0,_lib_blob_helpers__WEBPACK_IMPORTED_MODULE_3__.base64ToIntArray)(this.props.preview);
+ let preview = (0,_lib_blob_helpers__WEBPACK_IMPORTED_MODULE_2__.base64ToIntArray)(this.props.preview);
- if (Array.isArray(preview) && preview.length < MIN_PREVIEW_LENGTH) {
+ if (!Array.isArray(preview) || preview.length < MIN_PREVIEW_LENGTH) {
preview = null;
}
@@ -12548,7 +10216,7 @@ class AudioPlayer extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureComp
canPlay: false,
playing: false,
currentTime: '0:00',
- duration: this.props.duration > 0 ? (0,_lib_strformat__WEBPACK_IMPORTED_MODULE_2__.secondsToTime)(this.props.duration / 1000) : '-:--',
+ duration: this.props.duration > 0 ? (0,_lib_strformat__WEBPACK_IMPORTED_MODULE_1__.secondsToTime)(this.props.duration / 1000) : '-:--',
longMin: this.props.duration >= 600000,
preview: preview
};
@@ -12569,9 +10237,7 @@ class AudioPlayer extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureComp
this.initAudio();
}
- if (this.state.preview) {
- this.initCanvas();
- }
+ this.initCanvas();
}
componentWillUnmount() {
@@ -12590,9 +10256,9 @@ class AudioPlayer extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureComp
}
if (this.props.preview != prevProps.preview) {
- let preview = (0,_lib_blob_helpers__WEBPACK_IMPORTED_MODULE_3__.base64ToIntArray)(this.props.preview);
+ let preview = (0,_lib_blob_helpers__WEBPACK_IMPORTED_MODULE_2__.base64ToIntArray)(this.props.preview);
- if (Array.isArray(preview) && preview.length < MIN_PREVIEW_LENGTH) {
+ if (!Array.isArray(preview) || preview.length < MIN_PREVIEW_LENGTH) {
preview = null;
}
@@ -12610,14 +10276,14 @@ class AudioPlayer extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureComp
});
this.audioPlayer.ontimeupdate = _ => this.setState({
- currentTime: (0,_lib_strformat__WEBPACK_IMPORTED_MODULE_2__.secondsToTime)(this.audioPlayer.currentTime, this.state.longMin)
+ currentTime: (0,_lib_strformat__WEBPACK_IMPORTED_MODULE_1__.secondsToTime)(this.audioPlayer.currentTime, this.state.longMin)
});
this.audioPlayer.onended = _ => {
this.audioPlayer.currentTime = 0;
this.setState({
playing: false,
- currentTime: (0,_lib_strformat__WEBPACK_IMPORTED_MODULE_2__.secondsToTime)(0, this.state.longMin)
+ currentTime: (0,_lib_strformat__WEBPACK_IMPORTED_MODULE_1__.secondsToTime)(0, this.state.longMin)
});
};
}
@@ -12641,7 +10307,7 @@ class AudioPlayer extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureComp
this.canvasContext.lineWidth = LINE_WIDTH;
const drawFrame = () => {
- if (!this.canvasRef.current) {
+ if (!this.canvasRef.current || !this.audioPlayer) {
return;
}
@@ -12686,30 +10352,41 @@ class AudioPlayer extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureComp
}
resampleBars(original) {
- const barCount = Math.min(original.length, (this.canvasRef.current.width - SPACING) / (LINE_WIDTH + SPACING) | 0);
- const factor = original.length / barCount;
- let amps = [];
- let max = -1;
+ const dstCount = (this.canvasRef.current.width - SPACING) / (LINE_WIDTH + SPACING) | 0;
+ this.effectiveWidth = dstCount * (LINE_WIDTH + SPACING) + SPACING;
- for (let i = 0; i < barCount; i++) {
+ if (!Array.isArray(original) || original.length == 0) {
+ return Array.apply(null, Array(dstCount)).map(_ => 0.01);
+ }
+
+ const factor = original.length / dstCount;
+ let amps = [];
+ let maxAmp = -1;
+
+ for (let i = 0; i < dstCount; i++) {
let lo = i * factor | 0;
let hi = (i + 1) * factor | 0;
- let amp = 0.0;
- for (let j = lo; j < hi; j++) {
- amp += original[j];
+ if (hi == lo) {
+ amps[i] = original[lo];
+ } else {
+ let amp = 0.0;
+
+ for (let j = lo; j < hi; j++) {
+ amp += original[j];
+ }
+
+ amps[i] = Math.max(0, amp / (hi - lo));
}
- amps[i] = Math.max(0, amp / (hi - lo));
- max = Math.max(amps[i], max);
+ maxAmp = Math.max(amps[i], maxAmp);
}
- if (max > 0) {
- this.effectiveWidth = barCount * (LINE_WIDTH + SPACING) + SPACING;
- return amps.map(a => a / max);
+ if (maxAmp > 0) {
+ return amps.map(a => a / maxAmp);
}
- return null;
+ return Array.apply(null, Array(dstCount)).map(_ => 0.01);
}
handlePlay(e) {
@@ -12733,7 +10410,7 @@ class AudioPlayer extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureComp
}
handleError(err) {
- console.log(err);
+ console.error(err);
}
handleSeek(e) {
@@ -12744,10 +10421,10 @@ class AudioPlayer extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureComp
const offset = (e.clientX - rect.left) / this.effectiveWidth * CANVAS_UPSCALING;
this.audioPlayer.currentTime = this.props.duration * offset / 1000;
this.setState({
- currentTime: (0,_lib_strformat__WEBPACK_IMPORTED_MODULE_2__.secondsToTime)(this.audioPlayer.currentTime, this.state.longMin)
+ currentTime: (0,_lib_strformat__WEBPACK_IMPORTED_MODULE_1__.secondsToTime)(this.audioPlayer.currentTime, this.state.longMin)
});
- if (!this.state.playing && this.state.preview) {
+ if (!this.state.playing) {
this.visualize();
}
}
@@ -12764,25 +10441,15 @@ class AudioPlayer extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureComp
}, this.state.playing ? 'pause_circle' : this.state.canPlay ? 'play_circle' : 'not_interested'));
return react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
className: "audio-player"
- }, this.props.short ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", null, this.state.preview ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement("canvas", {
+ }, this.props.short ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("canvas", {
className: "playback",
ref: this.canvasRef,
onClick: this.handleSeek
- }) : react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
- className: "playback"
- }, " - ")), play) : react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, play, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", null, this.state.preview ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement("canvas", {
+ }), play) : react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, play, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", null, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("canvas", {
className: "playback",
ref: this.canvasRef,
onClick: this.handleSeek
- }) : react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
- className: "playback"
- }, react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
- id: "preview_unavailable",
- defaultMessage: [{
- "type": 0,
- "value": "unavailable"
- }]
- })), react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
+ }), react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
className: "timer"
}, this.state.currentTime, "/", this.state.duration))));
}
@@ -12809,6 +10476,8 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var fix_webm_duration__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(fix_webm_duration__WEBPACK_IMPORTED_MODULE_2__);
/* harmony import */ var _lib_blob_helpers_js__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ../lib/blob-helpers.js */ "./src/lib/blob-helpers.js");
/* harmony import */ var _lib_strformat__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ../lib/strformat */ "./src/lib/strformat.js");
+/* harmony import */ var _config_js__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ../config.js */ "./src/config.js");
+
@@ -12819,10 +10488,8 @@ const CANVAS_UPSCALING = 2.0;
const LINE_WIDTH = 3 * CANVAS_UPSCALING;
const SPACING = 2 * CANVAS_UPSCALING;
const MILLIS_PER_BAR = 100;
-const BAR_COLOR = '#bbb';
+const BAR_COLOR = '#BBBD';
const BAR_SCALE = 64.0;
-const MIN_DURATION = 200;
-const MAX_DURATION = 600000;
const VISUALIZATION_BARS = 96;
const MAX_SAMPLES_PER_BAR = 10;
const AUDIO_MIME_TYPE = 'audio/webm';
@@ -12903,7 +10570,7 @@ class AudioRecorder extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo
duration: (0,_lib_strformat__WEBPACK_IMPORTED_MODULE_4__.secondsToTime)(duration / 1000)
});
- if (duration > MAX_DURATION) {
+ if (duration > _config_js__WEBPACK_IMPORTED_MODULE_5__.MAX_DURATION) {
this.startedOn = null;
this.mediaRecorder.pause();
this.durationMillis += Date.now() - this.startedOn;
@@ -13025,7 +10692,7 @@ class AudioRecorder extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureCo
this.audioInput.connect(this.analyser);
this.mediaRecorder.onstop = _ => {
- if (this.durationMillis > MIN_DURATION) {
+ if (this.durationMillis > _config_js__WEBPACK_IMPORTED_MODULE_5__.MIN_DURATION) {
this.getRecording(this.mediaRecorder.mimeType, this.durationMillis).then(result => this.props.onFinished(result.url, result.preview, this.durationMillis));
} else {
this.props.onDeleted();
@@ -13862,14 +11529,14 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-intl */ "react-intl");
/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_intl__WEBPACK_IMPORTED_MODULE_1__);
-/* harmony import */ var react_intl_formatted_duration__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! react-intl-formatted-duration */ "./node_modules/react-intl-formatted-duration/dist/module.js");
-/* harmony import */ var tinode_sdk__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! tinode-sdk */ "tinode-sdk");
-/* harmony import */ var tinode_sdk__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(tinode_sdk__WEBPACK_IMPORTED_MODULE_3__);
-/* harmony import */ var _attachment_jsx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./attachment.jsx */ "./src/widgets/attachment.jsx");
-/* harmony import */ var _letter_tile_jsx__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./letter-tile.jsx */ "./src/widgets/letter-tile.jsx");
-/* harmony import */ var _received_marker_jsx__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ./received-marker.jsx */ "./src/widgets/received-marker.jsx");
-/* harmony import */ var _lib_formatters_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../lib/formatters.js */ "./src/lib/formatters.js");
-/* harmony import */ var _lib_utils_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../lib/utils.js */ "./src/lib/utils.js");
+/* harmony import */ var tinode_sdk__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tinode-sdk */ "tinode-sdk");
+/* harmony import */ var tinode_sdk__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(tinode_sdk__WEBPACK_IMPORTED_MODULE_2__);
+/* harmony import */ var _attachment_jsx__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./attachment.jsx */ "./src/widgets/attachment.jsx");
+/* harmony import */ var _letter_tile_jsx__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! ./letter-tile.jsx */ "./src/widgets/letter-tile.jsx");
+/* harmony import */ var _received_marker_jsx__WEBPACK_IMPORTED_MODULE_5__ = __webpack_require__(/*! ./received-marker.jsx */ "./src/widgets/received-marker.jsx");
+/* harmony import */ var _lib_formatters_js__WEBPACK_IMPORTED_MODULE_6__ = __webpack_require__(/*! ../lib/formatters.js */ "./src/lib/formatters.js");
+/* harmony import */ var _lib_utils_js__WEBPACK_IMPORTED_MODULE_7__ = __webpack_require__(/*! ../lib/utils.js */ "./src/lib/utils.js");
+/* harmony import */ var _lib_strformat_js__WEBPACK_IMPORTED_MODULE_8__ = __webpack_require__(/*! ../lib/strformat.js */ "./src/lib/strformat.js");
function _extends() { _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; }; return _extends.apply(this, arguments); }
@@ -13932,7 +11599,7 @@ class BaseChatMessage extends (react__WEBPACK_IMPORTED_MODULE_0___default().Pure
}
if (e.target.dataset.act == 'url') {
- data.ref = (0,_lib_utils_js__WEBPACK_IMPORTED_MODULE_8__.sanitizeUrl)(e.target.dataset.ref) || 'about:blank';
+ data.ref = (0,_lib_utils_js__WEBPACK_IMPORTED_MODULE_7__.sanitizeUrl)(e.target.dataset.ref) || 'about:blank';
}
const text = e.target.dataset.title || 'unknown';
@@ -13944,11 +11611,11 @@ class BaseChatMessage extends (react__WEBPACK_IMPORTED_MODULE_0___default().Pure
e.stopPropagation();
const menuItems = [];
- if (this.props.received == tinode_sdk__WEBPACK_IMPORTED_MODULE_3__.Tinode.MESSAGE_STATUS_FAILED) {
+ if (this.props.received == tinode_sdk__WEBPACK_IMPORTED_MODULE_2__.Tinode.MESSAGE_STATUS_FAILED) {
menuItems.push('menu_item_send_retry');
}
- if (this.props.userIsWriter && this.props.received > tinode_sdk__WEBPACK_IMPORTED_MODULE_3__.Tinode.MESSAGE_STATUS_FAILED && this.props.received < tinode_sdk__WEBPACK_IMPORTED_MODULE_3__.Tinode.MESSAGE_STATUS_DEL_RANGE) {
+ if (this.props.userIsWriter && this.props.received > tinode_sdk__WEBPACK_IMPORTED_MODULE_2__.Tinode.MESSAGE_STATUS_FAILED && this.props.received < tinode_sdk__WEBPACK_IMPORTED_MODULE_2__.Tinode.MESSAGE_STATUS_DEL_RANGE) {
menuItems.push('menu_item_reply');
}
@@ -13992,26 +11659,26 @@ class BaseChatMessage extends (react__WEBPACK_IMPORTED_MODULE_0___default().Pure
let content = this.props.content;
const attachments = [];
- if (this.props.mimeType == tinode_sdk__WEBPACK_IMPORTED_MODULE_3__.Drafty.getContentType() && tinode_sdk__WEBPACK_IMPORTED_MODULE_3__.Drafty.isValid(content)) {
- tinode_sdk__WEBPACK_IMPORTED_MODULE_3__.Drafty.attachments(content, (att, i) => {
+ if (this.props.mimeType == tinode_sdk__WEBPACK_IMPORTED_MODULE_2__.Drafty.getContentType() && tinode_sdk__WEBPACK_IMPORTED_MODULE_2__.Drafty.isValid(content)) {
+ tinode_sdk__WEBPACK_IMPORTED_MODULE_2__.Drafty.attachments(content, (att, i) => {
if (att.mime == 'application/json') {
return;
}
- attachments.push(react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_attachment_jsx__WEBPACK_IMPORTED_MODULE_4__["default"], {
+ attachments.push(react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_attachment_jsx__WEBPACK_IMPORTED_MODULE_3__["default"], {
tinode: this.props.tinode,
- downloadUrl: tinode_sdk__WEBPACK_IMPORTED_MODULE_3__.Drafty.getDownloadUrl(att),
+ downloadUrl: tinode_sdk__WEBPACK_IMPORTED_MODULE_2__.Drafty.getDownloadUrl(att),
filename: att.name,
- uploading: tinode_sdk__WEBPACK_IMPORTED_MODULE_3__.Drafty.isProcessing(att),
+ uploading: tinode_sdk__WEBPACK_IMPORTED_MODULE_2__.Drafty.isProcessing(att),
mimetype: att.mime,
- size: tinode_sdk__WEBPACK_IMPORTED_MODULE_3__.Drafty.getEntitySize(att),
+ size: tinode_sdk__WEBPACK_IMPORTED_MODULE_2__.Drafty.getEntitySize(att),
progress: this.state.progress,
onCancelUpload: this.handleCancelUpload,
onError: this.props.onError,
key: i
}));
}, this);
- const tree = tinode_sdk__WEBPACK_IMPORTED_MODULE_3__.Drafty.format(content, _lib_formatters_js__WEBPACK_IMPORTED_MODULE_7__.fullFormatter, this.formatterContext);
+ const tree = tinode_sdk__WEBPACK_IMPORTED_MODULE_2__.Drafty.format(content, _lib_formatters_js__WEBPACK_IMPORTED_MODULE_6__.fullFormatter, this.formatterContext);
content = react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, tree);
} else if (this.props.deleted) {
content = react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("i", {
@@ -14025,7 +11692,7 @@ class BaseChatMessage extends (react__WEBPACK_IMPORTED_MODULE_0___default().Pure
"value": "content deleted"
}]
})));
- } else if ((0,_lib_utils_js__WEBPACK_IMPORTED_MODULE_8__.isVideoCall)(this.props.mimeType)) {
+ } else if ((0,_lib_utils_js__WEBPACK_IMPORTED_MODULE_7__.isVideoCall)(this.props.mimeType)) {
const direction = this.props.response ? 'call_received' : 'call_made';
const text = this.props.response ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_intl__WEBPACK_IMPORTED_MODULE_1__.FormattedMessage, {
id: "calls_incoming",
@@ -14046,10 +11713,7 @@ class BaseChatMessage extends (react__WEBPACK_IMPORTED_MODULE_0___default().Pure
style: {
color: isCallDropped ? 'red' : 'green'
}
- }, direction), text, !isCallDropped && this.props.duration ? [' (', react__WEBPACK_IMPORTED_MODULE_0___default().createElement(react_intl_formatted_duration__WEBPACK_IMPORTED_MODULE_2__["default"], {
- seconds: this.props.duration / 1000,
- format: "{hours} {minutes} {seconds}"
- }), ')'] : null);
+ }, direction), text, !isCallDropped && this.props.duration ? [' (', (0,_lib_strformat_js__WEBPACK_IMPORTED_MODULE_8__.secondsToTime)(this.props.duration / 1000), ')'] : null);
} else if (typeof content != 'string') {
content = react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("i", {
className: "material-icons gray"
@@ -14069,7 +11733,7 @@ class BaseChatMessage extends (react__WEBPACK_IMPORTED_MODULE_0___default().Pure
className: sideClass
}, this.props.isGroup && this.props.response ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
className: "avatar-box"
- }, fullDisplay ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_letter_tile_jsx__WEBPACK_IMPORTED_MODULE_5__["default"], {
+ }, fullDisplay ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_letter_tile_jsx__WEBPACK_IMPORTED_MODULE_4__["default"], {
tinode: this.props.tinode,
topic: this.props.userFrom,
title: this.props.userName,
@@ -14080,7 +11744,7 @@ class BaseChatMessage extends (react__WEBPACK_IMPORTED_MODULE_0___default().Pure
className: "content-meta"
}, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
className: "message-content"
- }, content, attachments), this.props.timestamp ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_received_marker_jsx__WEBPACK_IMPORTED_MODULE_6__["default"], {
+ }, content, attachments), this.props.timestamp ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_received_marker_jsx__WEBPACK_IMPORTED_MODULE_5__["default"], {
timestamp: this.props.timestamp,
received: this.props.received
}) : null), this.props.showContextMenu ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement("span", {
@@ -14627,12 +12291,12 @@ class ContactList extends (react__WEBPACK_IMPORTED_MODULE_0___default().Componen
selected: selected,
showOnline: this.props.showOnline && !isChannel,
isChannel: isChannel,
- onSelected: this.props.onTopicSelected,
showContextMenu: this.props.showContextMenu,
isVerified: c.trusted && c.trusted.verified,
isStaff: c.trusted && c.trusted.staff,
isDangerous: c.trusted && c.trusted.danger,
deleted: c._deleted,
+ onSelected: this.props.onTopicSelected,
item: key,
index: contactNodes.length,
key: key
@@ -18016,7 +15680,9 @@ class SendMessage extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureComp
audioRec: false,
quote: null
});
- } else if (prevProps.reply != this.props.reply) {
+ }
+
+ if (prevProps.reply != this.props.reply) {
this.setState({
quote: this.formatReply()
});
@@ -18035,10 +15701,10 @@ class SendMessage extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureComp
return;
}
- if ((0,_lib_blob_helpers_js__WEBPACK_IMPORTED_MODULE_5__.filePasted)(e, (bits, mime, width, height, fname) => {
- this.props.onAttachImage(mime, bits, width, height, fname);
- }, (mime, bits, fname) => {
- this.props.onAttachFile(mime, bits, fname);
+ if ((0,_lib_blob_helpers_js__WEBPACK_IMPORTED_MODULE_5__.filePasted)(e, file => {
+ this.props.onAttachImage(file);
+ }, file => {
+ this.props.onAttachFile(file);
}, this.props.onError)) {
e.preventDefault();
}
@@ -18127,7 +15793,7 @@ class SendMessage extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureComp
formatMessage
} = this.props.intl;
const prompt = this.props.disabled ? formatMessage(messages.messaging_disabled) : this.props.messagePrompt ? formatMessage(messages[this.props.messagePrompt]) : formatMessage(messages.type_new_message);
- const quote = react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
+ const quote = this.state.quote ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
id: "reply-quote-preview"
}, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
className: "cancel"
@@ -18139,11 +15805,11 @@ class SendMessage extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureComp
}
}, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("i", {
className: "material-icons gray"
- }, "close"))), this.state.quote);
+ }, "close"))), this.state.quote) : null;
const audioEnabled = this.state.audioAvailable && this.props.onAttachAudio;
return react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
id: "send-message-wrapper"
- }, this.state.quote && !this.props.noInput ? quote : null, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
+ }, !this.props.noInput ? quote : null, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
id: "send-message-panel"
}, !this.props.disabled ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, this.props.onAttachFile && !this.state.audioRec ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement((react__WEBPACK_IMPORTED_MODULE_0___default().Fragment), null, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("a", {
href: "#",
@@ -18163,7 +15829,7 @@ class SendMessage extends (react__WEBPACK_IMPORTED_MODULE_0___default().PureComp
title: "Attach file"
}, react__WEBPACK_IMPORTED_MODULE_0___default().createElement("i", {
className: "material-icons secondary"
- }, "attach_file"))) : null, this.props.noInput ? this.state.quote ? quote : react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
+ }, "attach_file"))) : null, this.props.noInput ? quote || react__WEBPACK_IMPORTED_MODULE_0___default().createElement("div", {
className: "hr thin"
}) : this.state.audioRec ? react__WEBPACK_IMPORTED_MODULE_0___default().createElement(_audio_recorder_jsx__WEBPACK_IMPORTED_MODULE_3__["default"], {
onDeleted: _ => this.setState({
@@ -19605,7 +17271,7 @@ __webpack_require__.r(__webpack_exports__);
var name = "firebase";
-var version = "9.6.11";
+var version = "9.8.1";
/**
* @license
@@ -20172,1197 +17838,6 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;(function (nam
});
-/***/ }),
-
-/***/ "./node_modules/intl-messageformat/lib/index.js":
-/*!******************************************************!*\
- !*** ./node_modules/intl-messageformat/lib/index.js ***!
- \******************************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ "ErrorCode": () => (/* reexport safe */ _src_error__WEBPACK_IMPORTED_MODULE_2__.ErrorCode),
-/* harmony export */ "FormatError": () => (/* reexport safe */ _src_error__WEBPACK_IMPORTED_MODULE_2__.FormatError),
-/* harmony export */ "IntlMessageFormat": () => (/* reexport safe */ _src_core__WEBPACK_IMPORTED_MODULE_1__.IntlMessageFormat),
-/* harmony export */ "InvalidValueError": () => (/* reexport safe */ _src_error__WEBPACK_IMPORTED_MODULE_2__.InvalidValueError),
-/* harmony export */ "InvalidValueTypeError": () => (/* reexport safe */ _src_error__WEBPACK_IMPORTED_MODULE_2__.InvalidValueTypeError),
-/* harmony export */ "MissingValueError": () => (/* reexport safe */ _src_error__WEBPACK_IMPORTED_MODULE_2__.MissingValueError),
-/* harmony export */ "PART_TYPE": () => (/* reexport safe */ _src_formatters__WEBPACK_IMPORTED_MODULE_0__.PART_TYPE),
-/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__),
-/* harmony export */ "formatToParts": () => (/* reexport safe */ _src_formatters__WEBPACK_IMPORTED_MODULE_0__.formatToParts),
-/* harmony export */ "isFormatXMLElementFn": () => (/* reexport safe */ _src_formatters__WEBPACK_IMPORTED_MODULE_0__.isFormatXMLElementFn)
-/* harmony export */ });
-/* harmony import */ var _src_core__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./src/core */ "./node_modules/intl-messageformat/lib/src/core.js");
-/* harmony import */ var _src_formatters__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./src/formatters */ "./node_modules/intl-messageformat/lib/src/formatters.js");
-/* harmony import */ var _src_error__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! ./src/error */ "./node_modules/intl-messageformat/lib/src/error.js");
-/*
-Copyright (c) 2014, Yahoo! Inc. All rights reserved.
-Copyrights licensed under the New BSD License.
-See the accompanying LICENSE file for terms.
-*/
-
-
-
-
-/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (_src_core__WEBPACK_IMPORTED_MODULE_1__.IntlMessageFormat);
-
-
-/***/ }),
-
-/***/ "./node_modules/intl-messageformat/lib/src/core.js":
-/*!*********************************************************!*\
- !*** ./node_modules/intl-messageformat/lib/src/core.js ***!
- \*********************************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ "IntlMessageFormat": () => (/* binding */ IntlMessageFormat)
-/* harmony export */ });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
-/* harmony import */ var _formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @formatjs/icu-messageformat-parser */ "./node_modules/@formatjs/icu-messageformat-parser/lib/index.js");
-/* harmony import */ var _formatjs_fast_memoize__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @formatjs/fast-memoize */ "./node_modules/@formatjs/fast-memoize/lib/index.js");
-/* harmony import */ var _formatters__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! ./formatters */ "./node_modules/intl-messageformat/lib/src/formatters.js");
-/*
-Copyright (c) 2014, Yahoo! Inc. All rights reserved.
-Copyrights licensed under the New BSD License.
-See the accompanying LICENSE file for terms.
-*/
-
-
-
-
-// -- MessageFormat --------------------------------------------------------
-function mergeConfig(c1, c2) {
- if (!c2) {
- return c1;
- }
- return (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, (c1 || {})), (c2 || {})), Object.keys(c1).reduce(function (all, k) {
- all[k] = (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)((0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, c1[k]), (c2[k] || {}));
- return all;
- }, {}));
-}
-function mergeConfigs(defaultConfig, configs) {
- if (!configs) {
- return defaultConfig;
- }
- return Object.keys(defaultConfig).reduce(function (all, k) {
- all[k] = mergeConfig(defaultConfig[k], configs[k]);
- return all;
- }, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__assign)({}, defaultConfig));
-}
-function createFastMemoizeCache(store) {
- return {
- create: function () {
- return {
- get: function (key) {
- return store[key];
- },
- set: function (key, value) {
- store[key] = value;
- },
- };
- },
- };
-}
-function createDefaultFormatters(cache) {
- if (cache === void 0) { cache = {
- number: {},
- dateTime: {},
- pluralRules: {},
- }; }
- return {
- getNumberFormat: (0,_formatjs_fast_memoize__WEBPACK_IMPORTED_MODULE_1__["default"])(function () {
- var _a;
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- return new ((_a = Intl.NumberFormat).bind.apply(_a, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__spreadArray)([void 0], args, false)))();
- }, {
- cache: createFastMemoizeCache(cache.number),
- strategy: _formatjs_fast_memoize__WEBPACK_IMPORTED_MODULE_1__.strategies.variadic,
- }),
- getDateTimeFormat: (0,_formatjs_fast_memoize__WEBPACK_IMPORTED_MODULE_1__["default"])(function () {
- var _a;
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- return new ((_a = Intl.DateTimeFormat).bind.apply(_a, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__spreadArray)([void 0], args, false)))();
- }, {
- cache: createFastMemoizeCache(cache.dateTime),
- strategy: _formatjs_fast_memoize__WEBPACK_IMPORTED_MODULE_1__.strategies.variadic,
- }),
- getPluralRules: (0,_formatjs_fast_memoize__WEBPACK_IMPORTED_MODULE_1__["default"])(function () {
- var _a;
- var args = [];
- for (var _i = 0; _i < arguments.length; _i++) {
- args[_i] = arguments[_i];
- }
- return new ((_a = Intl.PluralRules).bind.apply(_a, (0,tslib__WEBPACK_IMPORTED_MODULE_2__.__spreadArray)([void 0], args, false)))();
- }, {
- cache: createFastMemoizeCache(cache.pluralRules),
- strategy: _formatjs_fast_memoize__WEBPACK_IMPORTED_MODULE_1__.strategies.variadic,
- }),
- };
-}
-var IntlMessageFormat = /** @class */ (function () {
- function IntlMessageFormat(message, locales, overrideFormats, opts) {
- var _this = this;
- if (locales === void 0) { locales = IntlMessageFormat.defaultLocale; }
- this.formatterCache = {
- number: {},
- dateTime: {},
- pluralRules: {},
- };
- this.format = function (values) {
- var parts = _this.formatToParts(values);
- // Hot path for straight simple msg translations
- if (parts.length === 1) {
- return parts[0].value;
- }
- var result = parts.reduce(function (all, part) {
- if (!all.length ||
- part.type !== _formatters__WEBPACK_IMPORTED_MODULE_3__.PART_TYPE.literal ||
- typeof all[all.length - 1] !== 'string') {
- all.push(part.value);
- }
- else {
- all[all.length - 1] += part.value;
- }
- return all;
- }, []);
- if (result.length <= 1) {
- return result[0] || '';
- }
- return result;
- };
- this.formatToParts = function (values) {
- return (0,_formatters__WEBPACK_IMPORTED_MODULE_3__.formatToParts)(_this.ast, _this.locales, _this.formatters, _this.formats, values, undefined, _this.message);
- };
- this.resolvedOptions = function () { return ({
- locale: Intl.NumberFormat.supportedLocalesOf(_this.locales)[0],
- }); };
- this.getAst = function () { return _this.ast; };
- if (typeof message === 'string') {
- this.message = message;
- if (!IntlMessageFormat.__parse) {
- throw new TypeError('IntlMessageFormat.__parse must be set to process `message` of type `string`');
- }
- // Parse string messages into an AST.
- this.ast = IntlMessageFormat.__parse(message, {
- ignoreTag: opts === null || opts === void 0 ? void 0 : opts.ignoreTag,
- });
- }
- else {
- this.ast = message;
- }
- if (!Array.isArray(this.ast)) {
- throw new TypeError('A message must be provided as a String or AST.');
- }
- // Creates a new object with the specified `formats` merged with the default
- // formats.
- this.formats = mergeConfigs(IntlMessageFormat.formats, overrideFormats);
- // Defined first because it's used to build the format pattern.
- this.locales = locales;
- this.formatters =
- (opts && opts.formatters) || createDefaultFormatters(this.formatterCache);
- }
- Object.defineProperty(IntlMessageFormat, "defaultLocale", {
- get: function () {
- if (!IntlMessageFormat.memoizedDefaultLocale) {
- IntlMessageFormat.memoizedDefaultLocale =
- new Intl.NumberFormat().resolvedOptions().locale;
- }
- return IntlMessageFormat.memoizedDefaultLocale;
- },
- enumerable: false,
- configurable: true
- });
- IntlMessageFormat.memoizedDefaultLocale = null;
- IntlMessageFormat.__parse = _formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__.parse;
- // Default format options used as the prototype of the `formats` provided to the
- // constructor. These are used when constructing the internal Intl.NumberFormat
- // and Intl.DateTimeFormat instances.
- IntlMessageFormat.formats = {
- number: {
- integer: {
- maximumFractionDigits: 0,
- },
- currency: {
- style: 'currency',
- },
- percent: {
- style: 'percent',
- },
- },
- date: {
- short: {
- month: 'numeric',
- day: 'numeric',
- year: '2-digit',
- },
- medium: {
- month: 'short',
- day: 'numeric',
- year: 'numeric',
- },
- long: {
- month: 'long',
- day: 'numeric',
- year: 'numeric',
- },
- full: {
- weekday: 'long',
- month: 'long',
- day: 'numeric',
- year: 'numeric',
- },
- },
- time: {
- short: {
- hour: 'numeric',
- minute: 'numeric',
- },
- medium: {
- hour: 'numeric',
- minute: 'numeric',
- second: 'numeric',
- },
- long: {
- hour: 'numeric',
- minute: 'numeric',
- second: 'numeric',
- timeZoneName: 'short',
- },
- full: {
- hour: 'numeric',
- minute: 'numeric',
- second: 'numeric',
- timeZoneName: 'short',
- },
- },
- };
- return IntlMessageFormat;
-}());
-
-
-
-/***/ }),
-
-/***/ "./node_modules/intl-messageformat/lib/src/error.js":
-/*!**********************************************************!*\
- !*** ./node_modules/intl-messageformat/lib/src/error.js ***!
- \**********************************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ "ErrorCode": () => (/* binding */ ErrorCode),
-/* harmony export */ "FormatError": () => (/* binding */ FormatError),
-/* harmony export */ "InvalidValueError": () => (/* binding */ InvalidValueError),
-/* harmony export */ "InvalidValueTypeError": () => (/* binding */ InvalidValueTypeError),
-/* harmony export */ "MissingValueError": () => (/* binding */ MissingValueError)
-/* harmony export */ });
-/* harmony import */ var tslib__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! tslib */ "./node_modules/tslib/tslib.es6.js");
-
-var ErrorCode;
-(function (ErrorCode) {
- // When we have a placeholder but no value to format
- ErrorCode["MISSING_VALUE"] = "MISSING_VALUE";
- // When value supplied is invalid
- ErrorCode["INVALID_VALUE"] = "INVALID_VALUE";
- // When we need specific Intl API but it's not available
- ErrorCode["MISSING_INTL_API"] = "MISSING_INTL_API";
-})(ErrorCode || (ErrorCode = {}));
-var FormatError = /** @class */ (function (_super) {
- (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__extends)(FormatError, _super);
- function FormatError(msg, code, originalMessage) {
- var _this = _super.call(this, msg) || this;
- _this.code = code;
- _this.originalMessage = originalMessage;
- return _this;
- }
- FormatError.prototype.toString = function () {
- return "[formatjs Error: ".concat(this.code, "] ").concat(this.message);
- };
- return FormatError;
-}(Error));
-
-var InvalidValueError = /** @class */ (function (_super) {
- (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__extends)(InvalidValueError, _super);
- function InvalidValueError(variableId, value, options, originalMessage) {
- return _super.call(this, "Invalid values for \"".concat(variableId, "\": \"").concat(value, "\". Options are \"").concat(Object.keys(options).join('", "'), "\""), ErrorCode.INVALID_VALUE, originalMessage) || this;
- }
- return InvalidValueError;
-}(FormatError));
-
-var InvalidValueTypeError = /** @class */ (function (_super) {
- (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__extends)(InvalidValueTypeError, _super);
- function InvalidValueTypeError(value, type, originalMessage) {
- return _super.call(this, "Value for \"".concat(value, "\" must be of type ").concat(type), ErrorCode.INVALID_VALUE, originalMessage) || this;
- }
- return InvalidValueTypeError;
-}(FormatError));
-
-var MissingValueError = /** @class */ (function (_super) {
- (0,tslib__WEBPACK_IMPORTED_MODULE_0__.__extends)(MissingValueError, _super);
- function MissingValueError(variableId, originalMessage) {
- return _super.call(this, "The intl string context variable \"".concat(variableId, "\" was not provided to the string \"").concat(originalMessage, "\""), ErrorCode.MISSING_VALUE, originalMessage) || this;
- }
- return MissingValueError;
-}(FormatError));
-
-
-
-/***/ }),
-
-/***/ "./node_modules/intl-messageformat/lib/src/formatters.js":
-/*!***************************************************************!*\
- !*** ./node_modules/intl-messageformat/lib/src/formatters.js ***!
- \***************************************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ "PART_TYPE": () => (/* binding */ PART_TYPE),
-/* harmony export */ "formatToParts": () => (/* binding */ formatToParts),
-/* harmony export */ "isFormatXMLElementFn": () => (/* binding */ isFormatXMLElementFn)
-/* harmony export */ });
-/* harmony import */ var _formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @formatjs/icu-messageformat-parser */ "./node_modules/@formatjs/icu-messageformat-parser/lib/index.js");
-/* harmony import */ var _error__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! ./error */ "./node_modules/intl-messageformat/lib/src/error.js");
-
-
-var PART_TYPE;
-(function (PART_TYPE) {
- PART_TYPE[PART_TYPE["literal"] = 0] = "literal";
- PART_TYPE[PART_TYPE["object"] = 1] = "object";
-})(PART_TYPE || (PART_TYPE = {}));
-function mergeLiteral(parts) {
- if (parts.length < 2) {
- return parts;
- }
- return parts.reduce(function (all, part) {
- var lastPart = all[all.length - 1];
- if (!lastPart ||
- lastPart.type !== PART_TYPE.literal ||
- part.type !== PART_TYPE.literal) {
- all.push(part);
- }
- else {
- lastPart.value += part.value;
- }
- return all;
- }, []);
-}
-function isFormatXMLElementFn(el) {
- return typeof el === 'function';
-}
-// TODO(skeleton): add skeleton support
-function formatToParts(els, locales, formatters, formats, values, currentPluralValue,
-// For debugging
-originalMessage) {
- // Hot path for straight simple msg translations
- if (els.length === 1 && (0,_formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__.isLiteralElement)(els[0])) {
- return [
- {
- type: PART_TYPE.literal,
- value: els[0].value,
- },
- ];
- }
- var result = [];
- for (var _i = 0, els_1 = els; _i < els_1.length; _i++) {
- var el = els_1[_i];
- // Exit early for string parts.
- if ((0,_formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__.isLiteralElement)(el)) {
- result.push({
- type: PART_TYPE.literal,
- value: el.value,
- });
- continue;
- }
- // TODO: should this part be literal type?
- // Replace `#` in plural rules with the actual numeric value.
- if ((0,_formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__.isPoundElement)(el)) {
- if (typeof currentPluralValue === 'number') {
- result.push({
- type: PART_TYPE.literal,
- value: formatters.getNumberFormat(locales).format(currentPluralValue),
- });
- }
- continue;
- }
- var varName = el.value;
- // Enforce that all required values are provided by the caller.
- if (!(values && varName in values)) {
- throw new _error__WEBPACK_IMPORTED_MODULE_1__.MissingValueError(varName, originalMessage);
- }
- var value = values[varName];
- if ((0,_formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__.isArgumentElement)(el)) {
- if (!value || typeof value === 'string' || typeof value === 'number') {
- value =
- typeof value === 'string' || typeof value === 'number'
- ? String(value)
- : '';
- }
- result.push({
- type: typeof value === 'string' ? PART_TYPE.literal : PART_TYPE.object,
- value: value,
- });
- continue;
- }
- // Recursively format plural and select parts' option — which can be a
- // nested pattern structure. The choosing of the option to use is
- // abstracted-by and delegated-to the part helper object.
- if ((0,_formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__.isDateElement)(el)) {
- var style = typeof el.style === 'string'
- ? formats.date[el.style]
- : (0,_formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__.isDateTimeSkeleton)(el.style)
- ? el.style.parsedOptions
- : undefined;
- result.push({
- type: PART_TYPE.literal,
- value: formatters
- .getDateTimeFormat(locales, style)
- .format(value),
- });
- continue;
- }
- if ((0,_formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__.isTimeElement)(el)) {
- var style = typeof el.style === 'string'
- ? formats.time[el.style]
- : (0,_formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__.isDateTimeSkeleton)(el.style)
- ? el.style.parsedOptions
- : formats.time.medium;
- result.push({
- type: PART_TYPE.literal,
- value: formatters
- .getDateTimeFormat(locales, style)
- .format(value),
- });
- continue;
- }
- if ((0,_formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__.isNumberElement)(el)) {
- var style = typeof el.style === 'string'
- ? formats.number[el.style]
- : (0,_formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__.isNumberSkeleton)(el.style)
- ? el.style.parsedOptions
- : undefined;
- if (style && style.scale) {
- value =
- value *
- (style.scale || 1);
- }
- result.push({
- type: PART_TYPE.literal,
- value: formatters
- .getNumberFormat(locales, style)
- .format(value),
- });
- continue;
- }
- if ((0,_formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__.isTagElement)(el)) {
- var children = el.children, value_1 = el.value;
- var formatFn = values[value_1];
- if (!isFormatXMLElementFn(formatFn)) {
- throw new _error__WEBPACK_IMPORTED_MODULE_1__.InvalidValueTypeError(value_1, 'function', originalMessage);
- }
- var parts = formatToParts(children, locales, formatters, formats, values, currentPluralValue);
- var chunks = formatFn(parts.map(function (p) { return p.value; }));
- if (!Array.isArray(chunks)) {
- chunks = [chunks];
- }
- result.push.apply(result, chunks.map(function (c) {
- return {
- type: typeof c === 'string' ? PART_TYPE.literal : PART_TYPE.object,
- value: c,
- };
- }));
- }
- if ((0,_formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__.isSelectElement)(el)) {
- var opt = el.options[value] || el.options.other;
- if (!opt) {
- throw new _error__WEBPACK_IMPORTED_MODULE_1__.InvalidValueError(el.value, value, Object.keys(el.options), originalMessage);
- }
- result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values));
- continue;
- }
- if ((0,_formatjs_icu_messageformat_parser__WEBPACK_IMPORTED_MODULE_0__.isPluralElement)(el)) {
- var opt = el.options["=".concat(value)];
- if (!opt) {
- if (!Intl.PluralRules) {
- throw new _error__WEBPACK_IMPORTED_MODULE_1__.FormatError("Intl.PluralRules is not available in this environment.\nTry polyfilling it using \"@formatjs/intl-pluralrules\"\n", _error__WEBPACK_IMPORTED_MODULE_1__.ErrorCode.MISSING_INTL_API, originalMessage);
- }
- var rule = formatters
- .getPluralRules(locales, { type: el.pluralType })
- .select(value - (el.offset || 0));
- opt = el.options[rule] || el.options.other;
- }
- if (!opt) {
- throw new _error__WEBPACK_IMPORTED_MODULE_1__.InvalidValueError(el.value, value, Object.keys(el.options), originalMessage);
- }
- result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values, value - (el.offset || 0)));
- continue;
- }
- }
- return mergeLiteral(result);
-}
-
-
-/***/ }),
-
-/***/ "./node_modules/react-intl-formatted-duration/dist/module.js":
-/*!*******************************************************************!*\
- !*** ./node_modules/react-intl-formatted-duration/dist/module.js ***!
- \*******************************************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ "EXTENDED_FORMAT": () => (/* binding */ EXTENDED_FORMAT),
-/* harmony export */ "TIMER_FORMAT": () => (/* binding */ TIMER_FORMAT),
-/* harmony export */ "default": () => (__WEBPACK_DEFAULT_EXPORT__)
-/* harmony export */ });
-/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! react */ "react");
-/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);
-/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! react-intl */ "react-intl");
-/* harmony import */ var react_intl__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_intl__WEBPACK_IMPORTED_MODULE_1__);
-/* harmony import */ var intl_messageformat__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! intl-messageformat */ "./node_modules/intl-messageformat/lib/index.js");
-
-
-
-
-function _defineProperty(obj, key, value) {
- if (key in obj) {
- Object.defineProperty(obj, key, {
- value: value,
- enumerable: true,
- configurable: true,
- writable: true
- });
- } else {
- obj[key] = value;
- }
-
- return obj;
-}
-
-function _objectWithoutPropertiesLoose(source, excluded) {
- if (source == null) return {};
- var target = {};
- var sourceKeys = Object.keys(source);
- var key, i;
-
- for (i = 0; i < sourceKeys.length; i++) {
- key = sourceKeys[i];
- if (excluded.indexOf(key) >= 0) continue;
- target[key] = source[key];
- }
-
- return target;
-}
-
-function _objectWithoutProperties(source, excluded) {
- if (source == null) return {};
-
- var target = _objectWithoutPropertiesLoose(source, excluded);
-
- var key, i;
-
- if (Object.getOwnPropertySymbols) {
- var sourceSymbolKeys = Object.getOwnPropertySymbols(source);
-
- for (i = 0; i < sourceSymbolKeys.length; i++) {
- key = sourceSymbolKeys[i];
- if (excluded.indexOf(key) >= 0) continue;
- if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;
- target[key] = source[key];
- }
- }
-
- return target;
-}
-
-function _interopDefault(ex) {
- return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;
-}
-
-var IntlMessageFormat = _interopDefault(intl_messageformat__WEBPACK_IMPORTED_MODULE_2__["default"]);
-
-const INITIAL_ZERO = /^0/;
-
-function leftTrim(parts) {
- let previousEmpty = true;
- return parts.filter(token => {
- if (token.type === 'literal' && !token.value.trim()) {
- if (previousEmpty) return false;
- previousEmpty = true;
- return true;
- } else {
- previousEmpty = false;
- }
-
- return true;
- });
-}
-
-function trim(parts, trimFirstPaddedValue = false) {
- const trimmed = leftTrim(leftTrim(parts).reverse()).reverse();
-
- if (trimFirstPaddedValue) {
- const first = trimmed.find(token => token.type !== 'literal');
- first.value = first.value.replace(INITIAL_ZERO, '');
- }
-
- return trimmed;
-}
-
-function DurationUnitFormat(locales, options = defaultOptions) {
- this.locales = locales; // TODO I'm ignoring the unit for now, value is always expressed in seconds
-
- this.unit = 'second'; // .style determines how the placeholders are converted to plain text
-
- this.style = options.style || DurationUnitFormat.styles.LONG; // .isTimer determines some special behaviour, we want to keep the 0s
-
- this.isTimer = this.style === DurationUnitFormat.styles.TIMER; // .format used `seconds`, `minutes`, `hours`, ... as placeholders
-
- this.format = options.format || (this.isTimer ? '{minutes}:{seconds}' : '{seconds}'); // How to format unit according to style
-
- this.formatUnits = options.formatUnits || defaultOptions.formatUnits; // .formatDuration determines whether we use a space or not
-
- this.formatDuration = options.formatDuration || defaultOptions.formatDuration;
- this.shouldRound = options.round === true;
-}
-
-DurationUnitFormat.units = {
- DAY: 'day',
- HOUR: 'hour',
- MINUTE: 'minute',
- SECOND: 'second'
-};
-DurationUnitFormat.styles = {
- CUSTOM: 'custom',
- TIMER: 'timer',
- // http://www.unicode.org/cldr/charts/27/summary/pl.html#5556
- LONG: 'long',
- SHORT: 'short',
- NARROW: 'narrow'
-};
-
-DurationUnitFormat.prototype.formatToParts = function (value) {
- // Extract all the parts that are actually used from the localised format
- const parts = new IntlMessageFormat(this.format, this.locales).formatToParts({
- second: {
- unit: DurationUnitFormat.units.SECOND
- },
- seconds: {
- unit: DurationUnitFormat.units.SECOND
- },
- minute: {
- unit: DurationUnitFormat.units.MINUTE
- },
- minutes: {
- unit: DurationUnitFormat.units.MINUTE
- },
- hour: {
- unit: DurationUnitFormat.units.HOUR
- },
- hours: {
- unit: DurationUnitFormat.units.HOUR
- },
- day: {
- unit: DurationUnitFormat.units.DAY
- },
- days: {
- unit: DurationUnitFormat.units.DAY
- }
- }); // Compute the value of each bucket depending on which parts are used
-
- const buckets = splitSecondsInBuckets(value, this.unit, parts, this.shouldRound); // Each part from the format message could potentially contain multiple parts
-
- const result = parts.reduce((all, token) => all.concat(this._formatToken(token, buckets)), []);
- return this._trimOutput(result, parts);
-};
-
-DurationUnitFormat.prototype._formatToken = function (token, buckets) {
- const {
- value
- } = token;
-
- if (value.unit) {
- const number = buckets[value.unit];
- return number || this.isTimer ? this._formatDurationToParts(value.unit, number) : [];
- } else if (value) {
- // If there is no .unit it's text, but it could be an empty string
- return [{
- type: 'literal',
- value
- }];
- }
-
- return [];
-};
-
-DurationUnitFormat.prototype._formatDurationToParts = function (unit, number) {
- if (this.isTimer) {
- // With timer style, we only show the value
- return [{
- type: unit,
- value: this._formatValue(number)
- }];
- } else if (isSpecialStyle(this.style)) {
- return new Intl.NumberFormat(this.locales, {
- style: 'unit',
- unit: unit,
- unitDisplay: this.style
- }).formatToParts(number).map(_ => ({
- // NumberFormat uses 'integer' for types, but I prefer using the unit
- // This is more similar to what happens in DateTimeFormat
- type: _.type === 'integer' ? unit : _.type,
- value: _.value
- }));
- } // This is now only needed for the custom formatting
-
-
- return this.formatDuration.split(SPLIT_POINTS).map(text => {
- if (text === '{value}') {
- return {
- type: unit,
- value: this._formatValue(number)
- };
- }
-
- if (text === '{unit}') {
- const message = this.formatUnits[unit] || '{value}';
- const formattedUnit = new IntlMessageFormat(message, this.locales).format({
- value: number
- });
- return {
- type: 'unit',
- value: formattedUnit
- };
- }
-
- if (text) {
- return {
- type: 'literal',
- value: text
- };
- }
- }).filter(Boolean);
-};
-
-DurationUnitFormat.prototype._formatValue = function (number) {
- return this.isTimer ? number.toString().padStart(2, '0') : number.toString();
-};
-
-DurationUnitFormat.prototype._trimOutput = function (result, parts) {
- const trimmed = trim(result, this.isTimer);
-
- if (!trimmed.find(_ => _.type !== 'literal')) {
- // if everything cancels out and there are only literals,
- // then return 0 on the lowest available unit
- const minUnit = [DurationUnitFormat.units.SECOND, DurationUnitFormat.units.MINUTE, DurationUnitFormat.units.HOUR, DurationUnitFormat.units.DAY].find(unit => has(parts, unit));
- return this._formatDurationToParts(minUnit, 0);
- }
-
- return trimmed;
-};
-
-const defaultOptions = {
- // unit: DurationUnitFormat.units.SECOND,
- formatDuration: '{value} {unit}',
- formatUnits: {
- // custom values
- [DurationUnitFormat.units.DAY]: '{value, plural, one {day} other {days}}',
- [DurationUnitFormat.units.HOUR]: '{value, plural, one {hour} other {hours}}',
- [DurationUnitFormat.units.MINUTE]: '{value, plural, one {minute} other {minutes}}',
- [DurationUnitFormat.units.SECOND]: '{value, plural, one {second} other {seconds}}'
- },
- style: DurationUnitFormat.styles.LONG
-};
-const SPLIT_POINTS = /(\{value\}|\{unit\})/;
-const SECONDS_IN = {
- day: 24 * 60 * 60,
- hour: 60 * 60,
- minute: 60,
- second: 1
-};
-
-function has(parts, unit) {
- return !!parts.find(_ => _.value.unit === unit);
-}
-
-function splitSecondsInBuckets(value, valueUnit, parts, shouldRound) {
- let seconds = value * SECONDS_IN[valueUnit]; // Rounding will only affect the lowest unit
- // check how many seconds we need to add
-
- if (shouldRound) {
- const lowestUnit = [DurationUnitFormat.units.SECOND, DurationUnitFormat.units.MINUTE, DurationUnitFormat.units.HOUR, DurationUnitFormat.units.DAY].find(unit => has(parts, unit)); // These many seconds will be ignored by the lowest unit
-
- const remainder = seconds % SECONDS_IN[lowestUnit];
-
- if (2 * remainder >= SECONDS_IN[lowestUnit]) {
- // The remainder is large, add enough seconds to increse the lowest unit
- seconds += SECONDS_IN[lowestUnit] - remainder;
- }
- }
-
- const buckets = {};
- [DurationUnitFormat.units.DAY, DurationUnitFormat.units.HOUR, DurationUnitFormat.units.MINUTE, DurationUnitFormat.units.SECOND].forEach(unit => {
- if (has(parts, unit)) {
- buckets[unit] = Math.floor(seconds / SECONDS_IN[unit]);
- seconds -= buckets[unit] * SECONDS_IN[unit];
- }
- });
- return buckets;
-}
-
-function isSpecialStyle(style) {
- return [DurationUnitFormat.styles.LONG, DurationUnitFormat.styles.SHORT, DurationUnitFormat.styles.NARROW].includes(style);
-}
-
-var durationUnitFormat_cjs = DurationUnitFormat;
-
-var EXTENDED_FORMAT = 'EXTENDED_FORMAT';
-var TIMER_FORMAT = 'TIMER_FORMAT';
-
-function DurationMessage(_ref) {
- var _formatUnits;
-
- var intl = _ref.intl,
- seconds = _ref.seconds,
- format = _ref.format,
- textComponent = _ref.textComponent,
- unitDisplay = _ref.unitDisplay,
- valueComponent = _ref.valueComponent,
- otherProps = _objectWithoutProperties(_ref, ["intl", "seconds", "format", "textComponent", "unitDisplay", "valueComponent"]);
-
- var actualFormat = intl.messages["react-intl-formatted-duration/custom-format/".concat(format || '')] || format;
-
- if (!format || format === EXTENDED_FORMAT) {
- actualFormat = intl.messages['react-intl-formatted-duration.longFormatting'] || '{minutes} {seconds}';
- }
-
- if (format === TIMER_FORMAT) {
- actualFormat = intl.messages['react-intl-formatted-duration.timerFormatting'] || '{minutes}:{seconds}';
- }
-
- var actualSytle = unitDisplay;
-
- if (!actualSytle) {
- actualSytle = format === TIMER_FORMAT ? durationUnitFormat_cjs.styles.TIMER : durationUnitFormat_cjs.styles.CUSTOM;
- }
-
- var parts = new durationUnitFormat_cjs(intl.locale, {
- format: actualFormat,
- formatUnits: (_formatUnits = {}, _defineProperty(_formatUnits, durationUnitFormat_cjs.units.DAY, intl.messages['react-intl-formatted-duration.daysUnit'] || '{value, plural, one {day} other {days}}'), _defineProperty(_formatUnits, durationUnitFormat_cjs.units.HOUR, intl.messages['react-intl-formatted-duration.hoursUnit'] || '{value, plural, one {hour} other {hours}}'), _defineProperty(_formatUnits, durationUnitFormat_cjs.units.MINUTE, intl.messages['react-intl-formatted-duration.minutesUnit'] || '{value, plural, one {minute} other {minutes}}'), _defineProperty(_formatUnits, durationUnitFormat_cjs.units.SECOND, intl.messages['react-intl-formatted-duration.secondsUnit'] || '{value, plural, one {second} other {seconds}}'), _formatUnits),
- formatDuration: intl.messages['react-intl-formatted-duration.duration'] || '{value} {unit}',
- round: true,
- // TODO backward compatible, add a prop to configure it
- style: actualSytle
- }).formatToParts(seconds);
- var Text = textComponent || intl.textComponent;
- var Value = valueComponent || textComponent || intl.textComponent;
- return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Text, otherProps, parts.map(function (token) {
- if (token.type === 'literal' || token.type === 'unit') return token.value;
- return react__WEBPACK_IMPORTED_MODULE_0___default().createElement(Value, {
- key: token.type
- }, token.value);
- }));
-}
-
-var index = (0,react_intl__WEBPACK_IMPORTED_MODULE_1__.injectIntl)(DurationMessage);
-
-/* harmony default export */ const __WEBPACK_DEFAULT_EXPORT__ = (index);
-
-
-
-/***/ }),
-
-/***/ "./node_modules/tslib/tslib.es6.js":
-/*!*****************************************!*\
- !*** ./node_modules/tslib/tslib.es6.js ***!
- \*****************************************/
-/***/ ((__unused_webpack_module, __webpack_exports__, __webpack_require__) => {
-
-"use strict";
-__webpack_require__.r(__webpack_exports__);
-/* harmony export */ __webpack_require__.d(__webpack_exports__, {
-/* harmony export */ "__assign": () => (/* binding */ __assign),
-/* harmony export */ "__asyncDelegator": () => (/* binding */ __asyncDelegator),
-/* harmony export */ "__asyncGenerator": () => (/* binding */ __asyncGenerator),
-/* harmony export */ "__asyncValues": () => (/* binding */ __asyncValues),
-/* harmony export */ "__await": () => (/* binding */ __await),
-/* harmony export */ "__awaiter": () => (/* binding */ __awaiter),
-/* harmony export */ "__classPrivateFieldGet": () => (/* binding */ __classPrivateFieldGet),
-/* harmony export */ "__classPrivateFieldSet": () => (/* binding */ __classPrivateFieldSet),
-/* harmony export */ "__createBinding": () => (/* binding */ __createBinding),
-/* harmony export */ "__decorate": () => (/* binding */ __decorate),
-/* harmony export */ "__exportStar": () => (/* binding */ __exportStar),
-/* harmony export */ "__extends": () => (/* binding */ __extends),
-/* harmony export */ "__generator": () => (/* binding */ __generator),
-/* harmony export */ "__importDefault": () => (/* binding */ __importDefault),
-/* harmony export */ "__importStar": () => (/* binding */ __importStar),
-/* harmony export */ "__makeTemplateObject": () => (/* binding */ __makeTemplateObject),
-/* harmony export */ "__metadata": () => (/* binding */ __metadata),
-/* harmony export */ "__param": () => (/* binding */ __param),
-/* harmony export */ "__read": () => (/* binding */ __read),
-/* harmony export */ "__rest": () => (/* binding */ __rest),
-/* harmony export */ "__spread": () => (/* binding */ __spread),
-/* harmony export */ "__spreadArray": () => (/* binding */ __spreadArray),
-/* harmony export */ "__spreadArrays": () => (/* binding */ __spreadArrays),
-/* harmony export */ "__values": () => (/* binding */ __values)
-/* harmony export */ });
-/*! *****************************************************************************
-Copyright (c) Microsoft Corporation.
-
-Permission to use, copy, modify, and/or distribute this software for any
-purpose with or without fee is hereby granted.
-
-THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH
-REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
-AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,
-INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM
-LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR
-OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR
-PERFORMANCE OF THIS SOFTWARE.
-***************************************************************************** */
-/* global Reflect, Promise */
-
-var extendStatics = function(d, b) {
- extendStatics = Object.setPrototypeOf ||
- ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||
- function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };
- return extendStatics(d, b);
-};
-
-function __extends(d, b) {
- if (typeof b !== "function" && b !== null)
- throw new TypeError("Class extends value " + String(b) + " is not a constructor or null");
- extendStatics(d, b);
- function __() { this.constructor = d; }
- d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());
-}
-
-var __assign = function() {
- __assign = Object.assign || function __assign(t) {
- for (var s, i = 1, n = arguments.length; i < n; i++) {
- s = arguments[i];
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];
- }
- return t;
- }
- return __assign.apply(this, arguments);
-}
-
-function __rest(s, e) {
- var t = {};
- for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
- t[p] = s[p];
- if (s != null && typeof Object.getOwnPropertySymbols === "function")
- for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
- if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
- t[p[i]] = s[p[i]];
- }
- return t;
-}
-
-function __decorate(decorators, target, key, desc) {
- var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
- if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
- else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
- return c > 3 && r && Object.defineProperty(target, key, r), r;
-}
-
-function __param(paramIndex, decorator) {
- return function (target, key) { decorator(target, key, paramIndex); }
-}
-
-function __metadata(metadataKey, metadataValue) {
- if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(metadataKey, metadataValue);
-}
-
-function __awaiter(thisArg, _arguments, P, generator) {
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
- return new (P || (P = Promise))(function (resolve, reject) {
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
- step((generator = generator.apply(thisArg, _arguments || [])).next());
- });
-}
-
-function __generator(thisArg, body) {
- var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;
- return g = { next: verb(0), "throw": verb(1), "return": verb(2) }, typeof Symbol === "function" && (g[Symbol.iterator] = function() { return this; }), g;
- function verb(n) { return function (v) { return step([n, v]); }; }
- function step(op) {
- if (f) throw new TypeError("Generator is already executing.");
- while (_) try {
- if (f = 1, y && (t = op[0] & 2 ? y["return"] : op[0] ? y["throw"] || ((t = y["return"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;
- if (y = 0, t) op = [op[0] & 2, t.value];
- switch (op[0]) {
- case 0: case 1: t = op; break;
- case 4: _.label++; return { value: op[1], done: false };
- case 5: _.label++; y = op[1]; op = [0]; continue;
- case 7: op = _.ops.pop(); _.trys.pop(); continue;
- default:
- if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }
- if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }
- if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }
- if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }
- if (t[2]) _.ops.pop();
- _.trys.pop(); continue;
- }
- op = body.call(thisArg, _);
- } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }
- if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };
- }
-}
-
-var __createBinding = Object.create ? (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });
-}) : (function(o, m, k, k2) {
- if (k2 === undefined) k2 = k;
- o[k2] = m[k];
-});
-
-function __exportStar(m, o) {
- for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);
-}
-
-function __values(o) {
- var s = typeof Symbol === "function" && Symbol.iterator, m = s && o[s], i = 0;
- if (m) return m.call(o);
- if (o && typeof o.length === "number") return {
- next: function () {
- if (o && i >= o.length) o = void 0;
- return { value: o && o[i++], done: !o };
- }
- };
- throw new TypeError(s ? "Object is not iterable." : "Symbol.iterator is not defined.");
-}
-
-function __read(o, n) {
- var m = typeof Symbol === "function" && o[Symbol.iterator];
- if (!m) return o;
- var i = m.call(o), r, ar = [], e;
- try {
- while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);
- }
- catch (error) { e = { error: error }; }
- finally {
- try {
- if (r && !r.done && (m = i["return"])) m.call(i);
- }
- finally { if (e) throw e.error; }
- }
- return ar;
-}
-
-/** @deprecated */
-function __spread() {
- for (var ar = [], i = 0; i < arguments.length; i++)
- ar = ar.concat(__read(arguments[i]));
- return ar;
-}
-
-/** @deprecated */
-function __spreadArrays() {
- for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;
- for (var r = Array(s), k = 0, i = 0; i < il; i++)
- for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)
- r[k] = a[j];
- return r;
-}
-
-function __spreadArray(to, from, pack) {
- if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {
- if (ar || !(i in from)) {
- if (!ar) ar = Array.prototype.slice.call(from, 0, i);
- ar[i] = from[i];
- }
- }
- return to.concat(ar || Array.prototype.slice.call(from));
-}
-
-function __await(v) {
- return this instanceof __await ? (this.v = v, this) : new __await(v);
-}
-
-function __asyncGenerator(thisArg, _arguments, generator) {
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
- var g = generator.apply(thisArg, _arguments || []), i, q = [];
- return i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i;
- function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }
- function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
- function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
- function fulfill(value) { resume("next", value); }
- function reject(value) { resume("throw", value); }
- function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
-}
-
-function __asyncDelegator(o) {
- var i, p;
- return i = {}, verb("next"), verb("throw", function (e) { throw e; }), verb("return"), i[Symbol.iterator] = function () { return this; }, i;
- function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === "return" } : f ? f(v) : v; } : f; }
-}
-
-function __asyncValues(o) {
- if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
- var m = o[Symbol.asyncIterator], i;
- return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
- function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
- function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
-}
-
-function __makeTemplateObject(cooked, raw) {
- if (Object.defineProperty) { Object.defineProperty(cooked, "raw", { value: raw }); } else { cooked.raw = raw; }
- return cooked;
-};
-
-var __setModuleDefault = Object.create ? (function(o, v) {
- Object.defineProperty(o, "default", { enumerable: true, value: v });
-}) : function(o, v) {
- o["default"] = v;
-};
-
-function __importStar(mod) {
- if (mod && mod.__esModule) return mod;
- var result = {};
- if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
- __setModuleDefault(result, mod);
- return result;
-}
-
-function __importDefault(mod) {
- return (mod && mod.__esModule) ? mod : { default: mod };
-}
-
-function __classPrivateFieldGet(receiver, state, kind, f) {
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a getter");
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot read private member from an object whose class did not declare it");
- return kind === "m" ? f : kind === "a" ? f.call(receiver) : f ? f.value : state.get(receiver);
-}
-
-function __classPrivateFieldSet(receiver, state, value, kind, f) {
- if (kind === "m") throw new TypeError("Private method is not writable");
- if (kind === "a" && !f) throw new TypeError("Private accessor was defined without a setter");
- if (typeof state === "function" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError("Cannot write private member to an object whose class did not declare it");
- return (kind === "a" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;
-}
-
-
/***/ }),
/***/ "react":
@@ -21440,6 +17915,8 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _firebase_component__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @firebase/component */ "./node_modules/@firebase/component/dist/esm/index.esm2017.js");
/* harmony import */ var _firebase_logger__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @firebase/logger */ "./node_modules/@firebase/logger/dist/esm/index.esm2017.js");
/* harmony import */ var _firebase_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @firebase/util */ "./node_modules/@firebase/util/dist/index.esm2017.js");
+/* harmony import */ var idb__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! idb */ "./node_modules/idb/build/index.js");
+
@@ -21499,7 +17976,7 @@ function isVersionServiceProvider(provider) {
}
const name$o = "@firebase/app";
-const version$1 = "0.7.21";
+const version$1 = "0.7.24";
/**
* @license
@@ -21566,7 +18043,7 @@ const name$2 = "@firebase/firestore";
const name$1 = "@firebase/firestore-compat";
const name = "firebase";
-const version = "9.6.11";
+const version = "9.8.1";
/**
* @license
@@ -22030,15 +18507,17 @@ const STORE_NAME = 'firebase-heartbeat-store';
let dbPromise = null;
function getDbPromise() {
if (!dbPromise) {
- dbPromise = (0,_firebase_util__WEBPACK_IMPORTED_MODULE_2__.openDB)(DB_NAME, DB_VERSION, (db, oldVersion) => {
- // We don't use 'break' in this switch statement, the fall-through
- // behavior is what we want, because if there are multiple versions between
- // the old version and the current version, we want ALL the migrations
- // that correspond to those versions to run, not only the last one.
- // eslint-disable-next-line default-case
- switch (oldVersion) {
- case 0:
- db.createObjectStore(STORE_NAME);
+ dbPromise = (0,idb__WEBPACK_IMPORTED_MODULE_3__.openDB)(DB_NAME, DB_VERSION, {
+ upgrade: (db, oldVersion) => {
+ // We don't use 'break' in this switch statement, the fall-through
+ // behavior is what we want, because if there are multiple versions between
+ // the old version and the current version, we want ALL the migrations
+ // that correspond to those versions to run, not only the last one.
+ // eslint-disable-next-line default-case
+ switch (oldVersion) {
+ case 0:
+ db.createObjectStore(STORE_NAME);
+ }
}
}).catch(e => {
throw ERROR_FACTORY.create("storage-open" /* STORAGE_OPEN */, {
@@ -22068,7 +18547,7 @@ async function writeHeartbeatsToIndexedDB(app, heartbeatObject) {
const tx = db.transaction(STORE_NAME, 'readwrite');
const objectStore = tx.objectStore(STORE_NAME);
await objectStore.put(heartbeatObject, computeKey(app));
- return tx.complete;
+ return tx.done;
}
catch (e) {
throw ERROR_FACTORY.create("storage-set" /* STORAGE_WRITE */, {
@@ -22798,12 +19277,14 @@ __webpack_require__.r(__webpack_exports__);
/* harmony import */ var _firebase_app__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @firebase/app */ "./node_modules/@firebase/app/dist/esm/index.esm2017.js");
/* harmony import */ var _firebase_component__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @firebase/component */ "./node_modules/@firebase/component/dist/esm/index.esm2017.js");
/* harmony import */ var _firebase_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @firebase/util */ "./node_modules/@firebase/util/dist/index.esm2017.js");
+/* harmony import */ var idb__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! idb */ "./node_modules/idb/build/index.js");
+
const name = "@firebase/installations";
-const version = "0.5.8";
+const version = "0.5.9";
/**
* @license
@@ -23205,15 +19686,17 @@ const OBJECT_STORE_NAME = 'firebase-installations-store';
let dbPromise = null;
function getDbPromise() {
if (!dbPromise) {
- dbPromise = (0,_firebase_util__WEBPACK_IMPORTED_MODULE_2__.openDB)(DATABASE_NAME, DATABASE_VERSION, (db, oldVersion) => {
- // We don't use 'break' in this switch statement, the fall-through
- // behavior is what we want, because if there are multiple versions between
- // the old version and the current version, we want ALL the migrations
- // that correspond to those versions to run, not only the last one.
- // eslint-disable-next-line default-case
- switch (oldVersion) {
- case 0:
- db.createObjectStore(OBJECT_STORE_NAME);
+ dbPromise = (0,idb__WEBPACK_IMPORTED_MODULE_3__.openDB)(DATABASE_NAME, DATABASE_VERSION, {
+ upgrade: (db, oldVersion) => {
+ // We don't use 'break' in this switch statement, the fall-through
+ // behavior is what we want, because if there are multiple versions between
+ // the old version and the current version, we want ALL the migrations
+ // that correspond to those versions to run, not only the last one.
+ // eslint-disable-next-line default-case
+ switch (oldVersion) {
+ case 0:
+ db.createObjectStore(OBJECT_STORE_NAME);
+ }
}
});
}
@@ -23227,7 +19710,7 @@ async function set(appConfig, value) {
const objectStore = tx.objectStore(OBJECT_STORE_NAME);
const oldValue = (await objectStore.get(key));
await objectStore.put(value, key);
- await tx.complete;
+ await tx.done;
if (!oldValue || oldValue.fid !== value.fid) {
fidChanged(appConfig, value.fid);
}
@@ -23239,7 +19722,7 @@ async function remove(appConfig) {
const db = await getDbPromise();
const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');
await tx.objectStore(OBJECT_STORE_NAME).delete(key);
- await tx.complete;
+ await tx.done;
}
/**
* Atomically updates a record with the result of updateFn, which gets
@@ -23260,7 +19743,7 @@ async function update(appConfig, updateFn) {
else {
await store.put(newValue, key);
}
- await tx.complete;
+ await tx.done;
if (newValue && (!oldValue || oldValue.fid !== newValue.fid)) {
fidChanged(appConfig, newValue.fid);
}
@@ -24207,8 +20690,10 @@ __webpack_require__.r(__webpack_exports__);
/* harmony export */ });
/* harmony import */ var _firebase_installations__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! @firebase/installations */ "./node_modules/@firebase/installations/dist/esm/index.esm2017.js");
/* harmony import */ var _firebase_component__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(/*! @firebase/component */ "./node_modules/@firebase/component/dist/esm/index.esm2017.js");
-/* harmony import */ var _firebase_util__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! @firebase/util */ "./node_modules/@firebase/util/dist/index.esm2017.js");
-/* harmony import */ var _firebase_app__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @firebase/app */ "./node_modules/@firebase/app/dist/esm/index.esm2017.js");
+/* harmony import */ var idb__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(/*! idb */ "./node_modules/idb/build/index.js");
+/* harmony import */ var _firebase_util__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(/*! @firebase/util */ "./node_modules/@firebase/util/dist/index.esm2017.js");
+/* harmony import */ var _firebase_app__WEBPACK_IMPORTED_MODULE_4__ = __webpack_require__(/*! @firebase/app */ "./node_modules/@firebase/app/dist/esm/index.esm2017.js");
+
@@ -24334,76 +20819,78 @@ async function migrateOldDatabase(senderId) {
}
}
let tokenDetails = null;
- const db = await (0,_firebase_util__WEBPACK_IMPORTED_MODULE_2__.openDB)(OLD_DB_NAME, OLD_DB_VERSION, async (db, oldVersion, newVersion, upgradeTransaction) => {
- var _a;
- if (oldVersion < 2) {
- // Database too old, skip migration.
- return;
- }
- if (!db.objectStoreNames.contains(OLD_OBJECT_STORE_NAME)) {
- // Database did not exist. Nothing to do.
- return;
- }
- const objectStore = upgradeTransaction.objectStore(OLD_OBJECT_STORE_NAME);
- const value = await objectStore.index('fcmSenderId').get(senderId);
- await objectStore.clear();
- if (!value) {
- // No entry in the database, nothing to migrate.
- return;
- }
- if (oldVersion === 2) {
- const oldDetails = value;
- if (!oldDetails.auth || !oldDetails.p256dh || !oldDetails.endpoint) {
+ const db = await (0,idb__WEBPACK_IMPORTED_MODULE_2__.openDB)(OLD_DB_NAME, OLD_DB_VERSION, {
+ upgrade: async (db, oldVersion, newVersion, upgradeTransaction) => {
+ var _a;
+ if (oldVersion < 2) {
+ // Database too old, skip migration.
return;
}
- tokenDetails = {
- token: oldDetails.fcmToken,
- createTime: (_a = oldDetails.createTime) !== null && _a !== void 0 ? _a : Date.now(),
- subscriptionOptions: {
- auth: oldDetails.auth,
- p256dh: oldDetails.p256dh,
- endpoint: oldDetails.endpoint,
- swScope: oldDetails.swScope,
- vapidKey: typeof oldDetails.vapidKey === 'string'
- ? oldDetails.vapidKey
- : arrayToBase64(oldDetails.vapidKey)
+ if (!db.objectStoreNames.contains(OLD_OBJECT_STORE_NAME)) {
+ // Database did not exist. Nothing to do.
+ return;
+ }
+ const objectStore = upgradeTransaction.objectStore(OLD_OBJECT_STORE_NAME);
+ const value = await objectStore.index('fcmSenderId').get(senderId);
+ await objectStore.clear();
+ if (!value) {
+ // No entry in the database, nothing to migrate.
+ return;
+ }
+ if (oldVersion === 2) {
+ const oldDetails = value;
+ if (!oldDetails.auth || !oldDetails.p256dh || !oldDetails.endpoint) {
+ return;
}
- };
- }
- else if (oldVersion === 3) {
- const oldDetails = value;
- tokenDetails = {
- token: oldDetails.fcmToken,
- createTime: oldDetails.createTime,
- subscriptionOptions: {
- auth: arrayToBase64(oldDetails.auth),
- p256dh: arrayToBase64(oldDetails.p256dh),
- endpoint: oldDetails.endpoint,
- swScope: oldDetails.swScope,
- vapidKey: arrayToBase64(oldDetails.vapidKey)
- }
- };
- }
- else if (oldVersion === 4) {
- const oldDetails = value;
- tokenDetails = {
- token: oldDetails.fcmToken,
- createTime: oldDetails.createTime,
- subscriptionOptions: {
- auth: arrayToBase64(oldDetails.auth),
- p256dh: arrayToBase64(oldDetails.p256dh),
- endpoint: oldDetails.endpoint,
- swScope: oldDetails.swScope,
- vapidKey: arrayToBase64(oldDetails.vapidKey)
- }
- };
+ tokenDetails = {
+ token: oldDetails.fcmToken,
+ createTime: (_a = oldDetails.createTime) !== null && _a !== void 0 ? _a : Date.now(),
+ subscriptionOptions: {
+ auth: oldDetails.auth,
+ p256dh: oldDetails.p256dh,
+ endpoint: oldDetails.endpoint,
+ swScope: oldDetails.swScope,
+ vapidKey: typeof oldDetails.vapidKey === 'string'
+ ? oldDetails.vapidKey
+ : arrayToBase64(oldDetails.vapidKey)
+ }
+ };
+ }
+ else if (oldVersion === 3) {
+ const oldDetails = value;
+ tokenDetails = {
+ token: oldDetails.fcmToken,
+ createTime: oldDetails.createTime,
+ subscriptionOptions: {
+ auth: arrayToBase64(oldDetails.auth),
+ p256dh: arrayToBase64(oldDetails.p256dh),
+ endpoint: oldDetails.endpoint,
+ swScope: oldDetails.swScope,
+ vapidKey: arrayToBase64(oldDetails.vapidKey)
+ }
+ };
+ }
+ else if (oldVersion === 4) {
+ const oldDetails = value;
+ tokenDetails = {
+ token: oldDetails.fcmToken,
+ createTime: oldDetails.createTime,
+ subscriptionOptions: {
+ auth: arrayToBase64(oldDetails.auth),
+ p256dh: arrayToBase64(oldDetails.p256dh),
+ endpoint: oldDetails.endpoint,
+ swScope: oldDetails.swScope,
+ vapidKey: arrayToBase64(oldDetails.vapidKey)
+ }
+ };
+ }
}
});
db.close();
// Delete all old databases.
- await (0,_firebase_util__WEBPACK_IMPORTED_MODULE_2__.deleteDB)(OLD_DB_NAME);
- await (0,_firebase_util__WEBPACK_IMPORTED_MODULE_2__.deleteDB)('fcm_vapid_details_db');
- await (0,_firebase_util__WEBPACK_IMPORTED_MODULE_2__.deleteDB)('undefined');
+ await (0,idb__WEBPACK_IMPORTED_MODULE_2__.deleteDB)(OLD_DB_NAME);
+ await (0,idb__WEBPACK_IMPORTED_MODULE_2__.deleteDB)('fcm_vapid_details_db');
+ await (0,idb__WEBPACK_IMPORTED_MODULE_2__.deleteDB)('undefined');
return checkTokenDetails(tokenDetails) ? tokenDetails : null;
}
function checkTokenDetails(tokenDetails) {
@@ -24450,14 +20937,16 @@ const OBJECT_STORE_NAME = 'firebase-messaging-store';
let dbPromise = null;
function getDbPromise() {
if (!dbPromise) {
- dbPromise = (0,_firebase_util__WEBPACK_IMPORTED_MODULE_2__.openDB)(DATABASE_NAME, DATABASE_VERSION, (upgradeDb, oldVersion) => {
- // We don't use 'break' in this switch statement, the fall-through behavior is what we want,
- // because if there are multiple versions between the old version and the current version, we
- // want ALL the migrations that correspond to those versions to run, not only the last one.
- // eslint-disable-next-line default-case
- switch (oldVersion) {
- case 0:
- upgradeDb.createObjectStore(OBJECT_STORE_NAME);
+ dbPromise = (0,idb__WEBPACK_IMPORTED_MODULE_2__.openDB)(DATABASE_NAME, DATABASE_VERSION, {
+ upgrade: (upgradeDb, oldVersion) => {
+ // We don't use 'break' in this switch statement, the fall-through behavior is what we want,
+ // because if there are multiple versions between the old version and the current version, we
+ // want ALL the migrations that correspond to those versions to run, not only the last one.
+ // eslint-disable-next-line default-case
+ switch (oldVersion) {
+ case 0:
+ upgradeDb.createObjectStore(OBJECT_STORE_NAME);
+ }
}
});
}
@@ -24489,7 +20978,7 @@ async function dbSet(firebaseDependencies, tokenDetails) {
const db = await getDbPromise();
const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');
await tx.objectStore(OBJECT_STORE_NAME).put(tokenDetails, key);
- await tx.complete;
+ await tx.done;
return tokenDetails;
}
/** Removes record(s) from the objectStore that match the given key. */
@@ -24498,7 +20987,7 @@ async function dbRemove(firebaseDependencies) {
const db = await getDbPromise();
const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');
await tx.objectStore(OBJECT_STORE_NAME).delete(key);
- await tx.complete;
+ await tx.done;
}
function getKey({ appConfig }) {
return appConfig.appId;
@@ -24543,7 +21032,7 @@ const ERROR_MAP = {
["use-vapid-key-after-get-token" /* USE_VAPID_KEY_AFTER_GET_TOKEN */]: 'The usePublicVapidKey() method may only be called once and must be ' +
'called before calling getToken() to ensure your VAPID key is used.'
};
-const ERROR_FACTORY = new _firebase_util__WEBPACK_IMPORTED_MODULE_2__.ErrorFactory('messaging', 'Messaging', ERROR_MAP);
+const ERROR_FACTORY = new _firebase_util__WEBPACK_IMPORTED_MODULE_3__.ErrorFactory('messaging', 'Messaging', ERROR_MAP);
/**
* @license
@@ -25195,7 +21684,7 @@ async function messageEventListener(messaging, event) {
}
const name = "@firebase/messaging";
-const version = "0.9.12";
+const version = "0.9.13";
/**
* @license
@@ -25228,11 +21717,11 @@ const WindowMessagingInternalFactory = (container) => {
return messagingInternal;
};
function registerMessagingInWindow() {
- (0,_firebase_app__WEBPACK_IMPORTED_MODULE_3__._registerComponent)(new _firebase_component__WEBPACK_IMPORTED_MODULE_1__.Component('messaging', WindowMessagingFactory, "PUBLIC" /* PUBLIC */));
- (0,_firebase_app__WEBPACK_IMPORTED_MODULE_3__._registerComponent)(new _firebase_component__WEBPACK_IMPORTED_MODULE_1__.Component('messaging-internal', WindowMessagingInternalFactory, "PRIVATE" /* PRIVATE */));
- (0,_firebase_app__WEBPACK_IMPORTED_MODULE_3__.registerVersion)(name, version);
+ (0,_firebase_app__WEBPACK_IMPORTED_MODULE_4__._registerComponent)(new _firebase_component__WEBPACK_IMPORTED_MODULE_1__.Component('messaging', WindowMessagingFactory, "PUBLIC" /* PUBLIC */));
+ (0,_firebase_app__WEBPACK_IMPORTED_MODULE_4__._registerComponent)(new _firebase_component__WEBPACK_IMPORTED_MODULE_1__.Component('messaging-internal', WindowMessagingInternalFactory, "PRIVATE" /* PRIVATE */));
+ (0,_firebase_app__WEBPACK_IMPORTED_MODULE_4__.registerVersion)(name, version);
// BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation
- (0,_firebase_app__WEBPACK_IMPORTED_MODULE_3__.registerVersion)(name, version, 'esm2017');
+ (0,_firebase_app__WEBPACK_IMPORTED_MODULE_4__.registerVersion)(name, version, 'esm2017');
}
/**
@@ -25261,7 +21750,7 @@ async function isWindowSupported() {
try {
// This throws if open() is unsupported, so adding it to the conditional
// statement below can cause an uncaught error.
- await (0,_firebase_util__WEBPACK_IMPORTED_MODULE_2__.validateIndexedDBOpenable)();
+ await (0,_firebase_util__WEBPACK_IMPORTED_MODULE_3__.validateIndexedDBOpenable)();
}
catch (e) {
return false;
@@ -25270,8 +21759,8 @@ async function isWindowSupported() {
// might be prohibited to run. In these contexts, an error would be thrown during the messaging
// instantiating phase, informing the developers to import/call isSupported for special handling.
return (typeof window !== 'undefined' &&
- (0,_firebase_util__WEBPACK_IMPORTED_MODULE_2__.isIndexedDBAvailable)() &&
- (0,_firebase_util__WEBPACK_IMPORTED_MODULE_2__.areCookiesEnabled)() &&
+ (0,_firebase_util__WEBPACK_IMPORTED_MODULE_3__.isIndexedDBAvailable)() &&
+ (0,_firebase_util__WEBPACK_IMPORTED_MODULE_3__.areCookiesEnabled)() &&
'serviceWorker' in navigator &&
'PushManager' in window &&
'Notification' in window &&
@@ -25355,7 +21844,7 @@ function onMessage$1(messaging, nextOrObserver) {
*
* @public
*/
-function getMessagingInWindow(app = (0,_firebase_app__WEBPACK_IMPORTED_MODULE_3__.getApp)()) {
+function getMessagingInWindow(app = (0,_firebase_app__WEBPACK_IMPORTED_MODULE_4__.getApp)()) {
// Conscious decision to make this async check non-blocking during the messaging instance
// initialization phase for performance consideration. An error would be thrown latter for
// developer's information. Developers can then choose to import and call `isSupported` for
@@ -25369,7 +21858,7 @@ function getMessagingInWindow(app = (0,_firebase_app__WEBPACK_IMPORTED_MODULE_3_
// If `isWindowSupported()` rejected.
throw ERROR_FACTORY.create("indexed-db-unsupported" /* INDEXED_DB_UNSUPPORTED */);
});
- return (0,_firebase_app__WEBPACK_IMPORTED_MODULE_3__._getProvider)((0,_firebase_util__WEBPACK_IMPORTED_MODULE_2__.getModularInstance)(app), 'messaging').getImmediate();
+ return (0,_firebase_app__WEBPACK_IMPORTED_MODULE_4__._getProvider)((0,_firebase_util__WEBPACK_IMPORTED_MODULE_3__.getModularInstance)(app), 'messaging').getImmediate();
}
/**
* Subscribes the {@link Messaging} instance to push notifications. Returns an Firebase Cloud
@@ -25387,7 +21876,7 @@ function getMessagingInWindow(app = (0,_firebase_app__WEBPACK_IMPORTED_MODULE_3_
* @public
*/
async function getToken(messaging, options) {
- messaging = (0,_firebase_util__WEBPACK_IMPORTED_MODULE_2__.getModularInstance)(messaging);
+ messaging = (0,_firebase_util__WEBPACK_IMPORTED_MODULE_3__.getModularInstance)(messaging);
return getToken$1(messaging, options);
}
/**
@@ -25401,7 +21890,7 @@ async function getToken(messaging, options) {
* @public
*/
function deleteToken(messaging) {
- messaging = (0,_firebase_util__WEBPACK_IMPORTED_MODULE_2__.getModularInstance)(messaging);
+ messaging = (0,_firebase_util__WEBPACK_IMPORTED_MODULE_3__.getModularInstance)(messaging);
return deleteToken$1(messaging);
}
/**
@@ -25418,7 +21907,7 @@ function deleteToken(messaging) {
* @public
*/
function onMessage(messaging, nextOrObserver) {
- messaging = (0,_firebase_util__WEBPACK_IMPORTED_MODULE_2__.getModularInstance)(messaging);
+ messaging = (0,_firebase_util__WEBPACK_IMPORTED_MODULE_3__.getModularInstance)(messaging);
return onMessage$1(messaging, nextOrObserver);
}
@@ -25433,6 +21922,317 @@ registerMessagingInWindow();
//# sourceMappingURL=index.esm2017.js.map
+/***/ }),
+
+/***/ "./node_modules/idb/build/index.js":
+/*!*****************************************!*\
+ !*** ./node_modules/idb/build/index.js ***!
+ \*****************************************/
+/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ "deleteDB": () => (/* binding */ deleteDB),
+/* harmony export */ "openDB": () => (/* binding */ openDB),
+/* harmony export */ "unwrap": () => (/* reexport safe */ _wrap_idb_value_js__WEBPACK_IMPORTED_MODULE_0__.u),
+/* harmony export */ "wrap": () => (/* reexport safe */ _wrap_idb_value_js__WEBPACK_IMPORTED_MODULE_0__.w)
+/* harmony export */ });
+/* harmony import */ var _wrap_idb_value_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(/*! ./wrap-idb-value.js */ "./node_modules/idb/build/wrap-idb-value.js");
+
+
+
+/**
+ * Open a database.
+ *
+ * @param name Name of the database.
+ * @param version Schema version.
+ * @param callbacks Additional callbacks.
+ */
+function openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {
+ const request = indexedDB.open(name, version);
+ const openPromise = (0,_wrap_idb_value_js__WEBPACK_IMPORTED_MODULE_0__.w)(request);
+ if (upgrade) {
+ request.addEventListener('upgradeneeded', (event) => {
+ upgrade((0,_wrap_idb_value_js__WEBPACK_IMPORTED_MODULE_0__.w)(request.result), event.oldVersion, event.newVersion, (0,_wrap_idb_value_js__WEBPACK_IMPORTED_MODULE_0__.w)(request.transaction));
+ });
+ }
+ if (blocked)
+ request.addEventListener('blocked', () => blocked());
+ openPromise
+ .then((db) => {
+ if (terminated)
+ db.addEventListener('close', () => terminated());
+ if (blocking)
+ db.addEventListener('versionchange', () => blocking());
+ })
+ .catch(() => { });
+ return openPromise;
+}
+/**
+ * Delete a database.
+ *
+ * @param name Name of the database.
+ */
+function deleteDB(name, { blocked } = {}) {
+ const request = indexedDB.deleteDatabase(name);
+ if (blocked)
+ request.addEventListener('blocked', () => blocked());
+ return (0,_wrap_idb_value_js__WEBPACK_IMPORTED_MODULE_0__.w)(request).then(() => undefined);
+}
+
+const readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];
+const writeMethods = ['put', 'add', 'delete', 'clear'];
+const cachedMethods = new Map();
+function getMethod(target, prop) {
+ if (!(target instanceof IDBDatabase &&
+ !(prop in target) &&
+ typeof prop === 'string')) {
+ return;
+ }
+ if (cachedMethods.get(prop))
+ return cachedMethods.get(prop);
+ const targetFuncName = prop.replace(/FromIndex$/, '');
+ const useIndex = prop !== targetFuncName;
+ const isWrite = writeMethods.includes(targetFuncName);
+ if (
+ // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.
+ !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||
+ !(isWrite || readMethods.includes(targetFuncName))) {
+ return;
+ }
+ const method = async function (storeName, ...args) {
+ // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(
+ const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');
+ let target = tx.store;
+ if (useIndex)
+ target = target.index(args.shift());
+ // Must reject if op rejects.
+ // If it's a write operation, must reject if tx.done rejects.
+ // Must reject with op rejection first.
+ // Must resolve with op value.
+ // Must handle both promises (no unhandled rejections)
+ return (await Promise.all([
+ target[targetFuncName](...args),
+ isWrite && tx.done,
+ ]))[0];
+ };
+ cachedMethods.set(prop, method);
+ return method;
+}
+(0,_wrap_idb_value_js__WEBPACK_IMPORTED_MODULE_0__.r)((oldTraps) => ({
+ ...oldTraps,
+ get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),
+ has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),
+}));
+
+
+
+
+/***/ }),
+
+/***/ "./node_modules/idb/build/wrap-idb-value.js":
+/*!**************************************************!*\
+ !*** ./node_modules/idb/build/wrap-idb-value.js ***!
+ \**************************************************/
+/***/ ((__unused_webpack___webpack_module__, __webpack_exports__, __webpack_require__) => {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+/* harmony export */ __webpack_require__.d(__webpack_exports__, {
+/* harmony export */ "a": () => (/* binding */ reverseTransformCache),
+/* harmony export */ "i": () => (/* binding */ instanceOfAny),
+/* harmony export */ "r": () => (/* binding */ replaceTraps),
+/* harmony export */ "u": () => (/* binding */ unwrap),
+/* harmony export */ "w": () => (/* binding */ wrap)
+/* harmony export */ });
+const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);
+
+let idbProxyableTypes;
+let cursorAdvanceMethods;
+// This is a function to prevent it throwing up in node environments.
+function getIdbProxyableTypes() {
+ return (idbProxyableTypes ||
+ (idbProxyableTypes = [
+ IDBDatabase,
+ IDBObjectStore,
+ IDBIndex,
+ IDBCursor,
+ IDBTransaction,
+ ]));
+}
+// This is a function to prevent it throwing up in node environments.
+function getCursorAdvanceMethods() {
+ return (cursorAdvanceMethods ||
+ (cursorAdvanceMethods = [
+ IDBCursor.prototype.advance,
+ IDBCursor.prototype.continue,
+ IDBCursor.prototype.continuePrimaryKey,
+ ]));
+}
+const cursorRequestMap = new WeakMap();
+const transactionDoneMap = new WeakMap();
+const transactionStoreNamesMap = new WeakMap();
+const transformCache = new WeakMap();
+const reverseTransformCache = new WeakMap();
+function promisifyRequest(request) {
+ const promise = new Promise((resolve, reject) => {
+ const unlisten = () => {
+ request.removeEventListener('success', success);
+ request.removeEventListener('error', error);
+ };
+ const success = () => {
+ resolve(wrap(request.result));
+ unlisten();
+ };
+ const error = () => {
+ reject(request.error);
+ unlisten();
+ };
+ request.addEventListener('success', success);
+ request.addEventListener('error', error);
+ });
+ promise
+ .then((value) => {
+ // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval
+ // (see wrapFunction).
+ if (value instanceof IDBCursor) {
+ cursorRequestMap.set(value, request);
+ }
+ // Catching to avoid "Uncaught Promise exceptions"
+ })
+ .catch(() => { });
+ // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This
+ // is because we create many promises from a single IDBRequest.
+ reverseTransformCache.set(promise, request);
+ return promise;
+}
+function cacheDonePromiseForTransaction(tx) {
+ // Early bail if we've already created a done promise for this transaction.
+ if (transactionDoneMap.has(tx))
+ return;
+ const done = new Promise((resolve, reject) => {
+ const unlisten = () => {
+ tx.removeEventListener('complete', complete);
+ tx.removeEventListener('error', error);
+ tx.removeEventListener('abort', error);
+ };
+ const complete = () => {
+ resolve();
+ unlisten();
+ };
+ const error = () => {
+ reject(tx.error || new DOMException('AbortError', 'AbortError'));
+ unlisten();
+ };
+ tx.addEventListener('complete', complete);
+ tx.addEventListener('error', error);
+ tx.addEventListener('abort', error);
+ });
+ // Cache it for later retrieval.
+ transactionDoneMap.set(tx, done);
+}
+let idbProxyTraps = {
+ get(target, prop, receiver) {
+ if (target instanceof IDBTransaction) {
+ // Special handling for transaction.done.
+ if (prop === 'done')
+ return transactionDoneMap.get(target);
+ // Polyfill for objectStoreNames because of Edge.
+ if (prop === 'objectStoreNames') {
+ return target.objectStoreNames || transactionStoreNamesMap.get(target);
+ }
+ // Make tx.store return the only store in the transaction, or undefined if there are many.
+ if (prop === 'store') {
+ return receiver.objectStoreNames[1]
+ ? undefined
+ : receiver.objectStore(receiver.objectStoreNames[0]);
+ }
+ }
+ // Else transform whatever we get back.
+ return wrap(target[prop]);
+ },
+ set(target, prop, value) {
+ target[prop] = value;
+ return true;
+ },
+ has(target, prop) {
+ if (target instanceof IDBTransaction &&
+ (prop === 'done' || prop === 'store')) {
+ return true;
+ }
+ return prop in target;
+ },
+};
+function replaceTraps(callback) {
+ idbProxyTraps = callback(idbProxyTraps);
+}
+function wrapFunction(func) {
+ // Due to expected object equality (which is enforced by the caching in `wrap`), we
+ // only create one new func per func.
+ // Edge doesn't support objectStoreNames (booo), so we polyfill it here.
+ if (func === IDBDatabase.prototype.transaction &&
+ !('objectStoreNames' in IDBTransaction.prototype)) {
+ return function (storeNames, ...args) {
+ const tx = func.call(unwrap(this), storeNames, ...args);
+ transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);
+ return wrap(tx);
+ };
+ }
+ // Cursor methods are special, as the behaviour is a little more different to standard IDB. In
+ // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the
+ // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense
+ // with real promises, so each advance methods returns a new promise for the cursor object, or
+ // undefined if the end of the cursor has been reached.
+ if (getCursorAdvanceMethods().includes(func)) {
+ return function (...args) {
+ // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use
+ // the original object.
+ func.apply(unwrap(this), args);
+ return wrap(cursorRequestMap.get(this));
+ };
+ }
+ return function (...args) {
+ // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use
+ // the original object.
+ return wrap(func.apply(unwrap(this), args));
+ };
+}
+function transformCachableValue(value) {
+ if (typeof value === 'function')
+ return wrapFunction(value);
+ // This doesn't return, it just creates a 'done' promise for the transaction,
+ // which is later returned for transaction.done (see idbObjectHandler).
+ if (value instanceof IDBTransaction)
+ cacheDonePromiseForTransaction(value);
+ if (instanceOfAny(value, getIdbProxyableTypes()))
+ return new Proxy(value, idbProxyTraps);
+ // Return the same value back if we're not going to transform it.
+ return value;
+}
+function wrap(value) {
+ // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because
+ // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.
+ if (value instanceof IDBRequest)
+ return promisifyRequest(value);
+ // If we've already transformed this value before, reuse the transformed value.
+ // This is faster, but it also provides object equality.
+ if (transformCache.has(value))
+ return transformCache.get(value);
+ const newValue = transformCachableValue(value);
+ // Not all types are transformed.
+ // These may be primitive types, so they can't be WeakMap keys.
+ if (newValue !== value) {
+ transformCache.set(value, newValue);
+ reverseTransformCache.set(newValue, value);
+ }
+ return newValue;
+}
+const unwrap = (value) => reverseTransformCache.get(value);
+
+
+
+
/***/ }),
/***/ "./src/messages.json":
@@ -25442,7 +22242,7 @@ registerMessagingInWindow();
/***/ ((module) => {
"use strict";
-module.exports = JSON.parse('{"de":{"action_block_contact":"Kontakt blockieren","action_cancel":"Abbrechen","action_clear_messages":"Nachrichten leeren","action_delete_messages":"Nachrichten für alle löschen","action_leave_chat":"Unterhaltung verlassen","action_report_chat":"Unterhaltung melden","archived_contacts":"Archivierte Kontakte ({count})","badge_danger":"Verdächtig","badge_owner":"Besitzer","badge_staff":"Verwaltung","badge_verified":"Verifiziert","badge_you":"Sie","block_contact_warning":"Möchten Sie diesen Kontakt wirklich blockieren?","blocked_contacts_link":"Blockierte Kontakte ({count})","button_add_another":"Hinzufügen","button_add_members":"Mitglieder hinzufügen","button_cancel":"Abbrechen","button_confirm":"Bestätigen","button_create":"Erstellen","button_delete_account":"Konto löschen","button_edit":"Bearbeiten","button_logout":"Abmelden","button_ok":"OK","button_reset":"Zurücksetzen","button_send_request":"Anfrage senden","button_sign_in":"Anmelden","button_sign_up":"Anmelden","button_subscribe":"Abbonieren","button_update":"Aktualisieren","cannot_initiate_file_upload":"Datei kann nicht hochgeladen werden.","channel":"Sender","channel_prompt":"Dies ist ein Sender","chat_invitation":"Sie sind eingeladen, an einem neuen Chat teilzunehmen. Was möchten Sie tun?","chat_invitation_accept":"Akzeptieren","chat_invitation_block":"Blockieren","chat_invitation_ignore":"Ignorieren","clear_messages_warning":"Sind Sie sicher, dass Sie diese Unterhaltung für alle leeren wollen? Das kann nicht rückgängig gemacht werden.","code_doesnot_match":"Code stimmt nicht überein","contacts_not_found":"Sie haben keine Unterhaltungen ¯∖_(ツ)_/¯","contacts_not_found_short":"Keine Kontakte für \'\'{query}\'\'","credential_email_prompt":"E-Mail Adresse für Registrierung","delete_account":"Konto löschen","delete_account_warning":"Möchten Sie das Konto wirklich löschen? Das kann nicht rückgängig gemacht werden","delete_messages_warning":"Sind Sie sicher, dass Sie diese Unterhaltung für alle löschen wollen? Das kann nicht rückgängig gemacht werden.","deleted_content":"Inhalt gelöscht","download_action":"herunterladen","drafty_attachment":"Dateianhang","drafty_form":"Formular:","drafty_image":"Bild","email_dative":"E-Mail","email_prompt":"E-Mail, z.B. lisam@beispiel.de","enable_peers_messaging":"Aktivieren","enter_confirmation_code_prompt":"Geben Sie den Bestätigungscode ein, der per {method} geschickt wurde:","error_invalid_id":"ungültige ID","file_attachment_too_large":"Die Dateigröße {size} überschreitet das Limit von {limit}.","forgot_password_link":"Passwort vergessen?","full_name_prompt":"Vollständiger Name, z.B. Lisa Musterfrau","granted_permissions":"Erteilt","group_has_no_members":"Keine Mitglieder","group_user_id_prompt":"Gruppe oder Benutzer ID","image_caption_prompt":"Bildunterschrift","invalid_content":"ungültiger Inhalt","invalid_security_token":"Ungültiger Sicherheitsschlüssel","label_client":"Client:","label_content_type":"Inhaltsart:","label_default_access_mode":"Standard Zugriffsmodus:","label_file_name":"Dateiname:","label_group_members":"Gruppenmitglieder:","label_incognito_mode":"inkognito-Modus:","label_message_sound":"Benachrichtigungston:","label_muting_topic":"Stumm geschaltet:","label_other_user":"Andere","label_password":"Passwort","label_permissions":"Berechtigungen:","label_private":"Privater Kommentar","label_push_notifications":"Benachrichtigungsmeldungen:","label_push_notifications_disabled":"Benachrichtigungsmeldungen (erfordert HTTPS):","label_reset_password":"Passwort per E-Mail wiederherstellen:","label_sdk":"SDK:","label_server":"Server:","label_server_address":"Server Adresse:","label_server_to_use":"Server verwenden:","label_size":"Größe:","label_topic_name":"Name","label_user_contacts":"Kontakte:","label_user_id":"ID:","label_wire_transport":"Übertragung per Kabel:","label_you":"Sie:","label_your_name":"Ihr Name","label_your_permissions":"Ihre Berechtigungen:","last_seen_timestamp":"Zuletzt gesehen","leave_chat_warning":"Möchten Sie diese Unterhaltung wirklich verlassen?","link_contact_us":"Kontakt","link_privacy_policy":"Datenschutzerklärung","link_terms_of_service":"Nutzungsbedingungen","login_prompt":"Anmelden","menu_item_archive_topic":"Archivieren","menu_item_block":"Blockieren","menu_item_clear_messages":"Nachrichten leeren","menu_item_clear_messages_for_all":"Für alle leeren","menu_item_delete":"Löschen","menu_item_delete_for_all":"Für alle löschen","menu_item_delete_topic":"Entfernen","menu_item_edit_permissions":"Berechtigungen ändern","menu_item_info":"Info","menu_item_member_delete":"Entfernen","menu_item_mute":"Unterhaltung stumm schalten","menu_item_restore_topic":"Wiederherstellen","menu_item_send_retry":"Wiederholen","menu_item_unblock":"Blockierung aufheben","menu_item_unmute":"Stumm schalten beenden","message_sending":"wird gesendet...","message_sending_failed":"fehlgeschlagen","messages_not_readable":"Neue Nachrichten können nicht gelesen werden","messaging_disabled_prompt":"Nachrichtenübermittlung deaktiviert","more_online_members":"+{overflow} mehr","new_message_prompt":"Neue Nachricht","new_password_placeholder":"Geben Sie ein neues Passwort ein","no_connection":"Keine Verbindung","no_contacts":"Sie haben keine Kontakte :-(","numeric_confirmation_code_prompt":"Nur zahlen","online_now":"jetzt online","password_prompt":"Passwort","password_unchanged_prompt":"unverändert","peers_messaging_disabled":"Gruppennachrichten sind deaktiviert","permission_admin":"Bestätigen ({val})","permission_delete":"Entfernen ({val})","permission_join":"Beitreten ({val})","permission_owner":"Besitzer ({val})","permission_pres":"Benachrichtigt werden ({val})","permission_read":"Lesen ({val})","permission_share":"Teilen ({val})","permission_write":"Schreiben ({val})","phone_dative":"Telefon","private_editing_placeholder":"Nur für Sie sichtbar","push_init_failed":"Initialisierung von Push-Benachrichtigungen fehlgeschlagen","reconnect_countdown":"Getrennt. Wiederverbinden in {seconds}…","reconnect_now":"Jetzt probieren","reload_update":"Neu laden","report_chat_warning":"Möchten Sie diese Unterhaltung wirklich blockieren und melden?","requested_permissions":"Angefordert","save_attachment":"Speichern","search_for_contacts":"Nutzen Sie die Suche um Kontakte zu finden","search_no_results":"Die Suche hatte keine Ergebnisse","search_placeholder":"Liste: email:lisa@beispiel.de, tel:17025550003...","sidepanel_title_acc_notifications":"Benachrichtigungen","sidepanel_title_acc_support":"Unterstützung","sidepanel_title_account_settings":"Konto-Einstellungen","sidepanel_title_archive":"Archivierte Unterhaltungen","sidepanel_title_blocked":"Blockierte Unterhaltungen","sidepanel_title_cred":"Anmeldeinformationen bestätigen","sidepanel_title_login":"Anmelden","sidepanel_title_newtpk":"Neue Unterhaltung starten","sidepanel_title_register":"Konto erstellen","sidepanel_title_reset":"Passwort zurücksetzen","sidepanel_title_settings":"Einstellungen","stay_logged_in":"Angemeldet bleiben","tabtitle_find_user":"Suchen","tabtitle_group_by_id":"nach ID","tabtitle_new_group":"Neue Gruppe","tags_editor_no_tags":"Schlagworte hinzufügen","tags_not_found":"Keine Schlagworte definiert. Erstellen Sie welche.","title_all_contacts":"Alle Kontakte","title_group_members":"Gruppenmitglieder","panel_title_info":"Info","title_manage_tags":"Verwalten","title_not_found":"Nicht gefunden","title_permissions":"Berechtigungen","title_tag_manager":"Schlagworte (Nutzer entdecken)","topic_block_warning":"Möchten Sie diese Unterhaltung wirklich blockieren?","topic_delete_warning":"Möchten Sie diese Unterhaltung wirklich löschen?","topic_name_editing_placeholder":"Freiform Name der Gruppe","unnamed_topic":"Unbenannt","update_available":"Aktualisierung verfügbar.","upload_finishing":"wird abgeschlossen...","user_not_found":"Nicht gefunden","validate_credential_action":"bestätigen","description_editing_placeholder":"Beschreibung (optional)","label_description":"Beschreibung","button_security":"Sicherheit","panel_title_general":"Allgemein","panel_title_security":"Sicherheit","panel_title_crop":"Zum Anpassen ziehen","panel_title_members":"Mitglieder","permissions_anonymous":"Anonym","permissions_authenticated":"Authentifiziert","topic_delete":"Chat löschen","permissions_user":"Benutzerberechtigungen","password_reset_email_sent":"Eine E-Mail wurde an {email} gesendet. Folgen Sie den Anweisungen in der E-Mail, um Ihr Passwort zurückzusetzen.","label_unarchive_topic":"Archiviert:","menu_item_reply":"Antwort","menu_item_forward":"Nach vorne","forward_to":"Weiterleiten","forward_to_search_placeholder":"Kontakte durchsuchen","label_new_password":"Neues Kennwort","drafty_unknown":"Nicht unterstützt","preview_unavailable":"nicht verfügbar"},"en":{"action_block_contact":"Block Contact","action_cancel":"cancel","action_clear_messages":"Clear Messages","action_delete_messages":"Clear Messages for All","action_leave_chat":"Leave Conversation","action_report_chat":"Report Conversation","archived_contacts":"Archived contacts ({count})","badge_danger":"Untrustworthy","badge_owner":"owner","badge_staff":"Staff-managed","badge_verified":"Verified/official","badge_you":"you","block_contact_warning":"Are you sure you want to block this contact?","blocked_contacts_link":"Blocked contacts ({count})","button_add_another":"Add another","button_add_members":"Add members","button_cancel":"Cancel","button_confirm":"Confirm","button_create":"Create","button_delete_account":"Delete account","button_edit":"Edit","button_logout":"Logout","button_ok":"OK","button_reset":"Reset","button_send_request":"Send request","button_sign_in":"Sign in","button_sign_up":"Sign up","button_subscribe":"Subscribe","button_update":"Update","cannot_initiate_file_upload":"Cannot initiate file upload.","channel":"channel","channel_prompt":"This is a channel","chat_invitation":"You are invited to start a new chat. What would you like to do?","chat_invitation_accept":"Accept","chat_invitation_block":"Block","chat_invitation_ignore":"Ignore","clear_messages_warning":"Are you sure you want to clear all messages? It cannot be undone.","code_doesnot_match":"Code does not match","contacts_not_found":"You have no chats ¯∖_(ツ)_/¯","contacts_not_found_short":"No contacts match \'\'{query}\'\'","credential_email_prompt":"Your registration email","delete_account":"Delete account","delete_account_warning":"Are you sure you want to delete your account? It cannot be undone.","delete_messages_warning":"Are you sure you want to delete all messages for everyone? It cannot be undone.","deleted_content":"content deleted","download_action":"download","drafty_attachment":"Attachment","drafty_form":"Form:","drafty_image":"Picture","email_dative":"email","email_prompt":"Email, e.g. jdoe@example.com","enable_peers_messaging":"Enable","enter_confirmation_code_prompt":"Enter confirmation code sent to you by {method}:","error_invalid_id":"Invalid ID","file_attachment_too_large":"The file size {size} exceeds the {limit} limit.","forgot_password_link":"Forgot password?","full_name_prompt":"Full name, e.g. John Doe","granted_permissions":"Granted","group_has_no_members":"No members","group_user_id_prompt":"Group or User ID","image_caption_prompt":"Image caption","invalid_content":"invalid content","invalid_security_token":"Invalid security token","label_client":"Client:","label_content_type":"Content type:","label_default_access_mode":"Default access mode:","label_file_name":"File name:","label_group_members":"Group members:","label_incognito_mode":"Incognito mode:","label_message_sound":"Message sound:","label_muting_topic":"Muted:","label_other_user":"Other","label_password":"Password","label_permissions":"Permissions:","label_private":"Private comment","label_push_notifications":"Notification alerts:","label_push_notifications_disabled":"Notification alerts (requires HTTPS):","label_reset_password":"Send a password reset email:","label_sdk":"SDK:","label_server":"Server:","label_server_address":"Server address:","label_server_to_use":"Server to use:","label_size":"Size:","label_topic_name":"Name","label_user_contacts":"Contacts:","label_user_id":"ID:","label_wire_transport":"Wire transport:","label_you":"You:","label_your_name":"Your name","label_your_permissions":"Your permissions:","last_seen_timestamp":"Last seen","leave_chat_warning":"Are you sure you want to leave this conversation?","link_contact_us":"Contact Us","link_privacy_policy":"Privacy Policy","link_terms_of_service":"Terms of Service","login_prompt":"Login","menu_item_archive_topic":"Archive","menu_item_block":"Block","menu_item_clear_messages":"Clear messages","menu_item_clear_messages_for_all":"Clear for All","menu_item_delete":"Delete","menu_item_delete_for_all":"Delete for All","menu_item_delete_topic":"Delete","menu_item_edit_permissions":"Edit permissions","menu_item_info":"Info","menu_item_member_delete":"Remove","menu_item_mute":"Mute","menu_item_reply":"Reply","menu_item_restore_topic":"Restore","menu_item_send_retry":"Retry","menu_item_unblock":"Unblock","menu_item_unmute":"Unmute","message_sending":"sending...","message_sending_failed":"failed","messages_not_readable":"no access to messages","messaging_disabled_prompt":"Messaging disabled","more_online_members":"+{overflow} more","new_message_prompt":"New message","new_password_placeholder":"Enter new password","no_connection":"No connection","no_contacts":"You have no contacts :-(","numeric_confirmation_code_prompt":"Numbers only","online_now":"online now","password_prompt":"Password","password_unchanged_prompt":"Unchanged","peers_messaging_disabled":"Peer\'s messaging is disabled.","permission_admin":"Approve ({val})","permission_delete":"Delete ({val})","permission_join":"Join ({val})","permission_owner":"Owner ({val})","permission_pres":"Get notified ({val})","permission_read":"Read ({val})","permission_share":"Share ({val})","permission_write":"Write ({val})","phone_dative":"phone","private_editing_placeholder":"Visible to you only","push_init_failed":"Failed to initialize push notifications","reconnect_countdown":"Disconnected. Reconnecting in {seconds}…","reconnect_now":"Try now","reload_update":"Reload","report_chat_warning":"Are you sure you want to block and report this conversation?","requested_permissions":"Requested","save_attachment":"save","search_for_contacts":"Use search to find contacts","search_no_results":"Search returned no results","search_placeholder":"List like email:alice@example.com, tel:17025550003...","sidepanel_title_acc_notifications":"Notifications","sidepanel_title_acc_support":"Support","sidepanel_title_account_settings":"Account Settings","sidepanel_title_archive":"Archived Chats","sidepanel_title_blocked":"Blocked Chats","sidepanel_title_cred":"Confirm Credentials","sidepanel_title_login":"Sign In","sidepanel_title_newtpk":"Start New Chat","sidepanel_title_register":"Create Account","sidepanel_title_reset":"Reset Password","sidepanel_title_settings":"Settings","stay_logged_in":"Stay logged in","tabtitle_find_user":"find","tabtitle_group_by_id":"by id","tabtitle_new_group":"new group","tags_editor_no_tags":"Add some tags","tags_not_found":"No tags defined. Add some.","title_all_contacts":"All Contacts","title_group_members":"Group Members","title_manage_tags":"Manage","title_not_found":"Not found","title_permissions":"Permissions","title_tag_manager":"Tags (search & discovery)","topic_block_warning":"Are you sure you want to block this conversation?","topic_delete_warning":"Are you sure you want to delete this conversation?","topic_name_editing_placeholder":"Freeform name of the group","unnamed_topic":"Unnamed","update_available":"Update available.","upload_finishing":"finishing...","user_not_found":"Not found","validate_credential_action":"confirm","description_editing_placeholder":"Optional description","label_description":"Description","button_security":"Security","panel_title_crop":"Drag to Adjust","panel_title_general":"General","panel_title_members":"Members","panel_title_security":"Security","panel_title_info":"Info","permissions_anonymous":"Anonymous","permissions_authenticated":"Authenticated","topic_delete":"Delete Conversation","permissions_user":"User\'s Permissions","password_reset_email_sent":"An email has been sent to {email}. Follow the directions in the email to reset your password.","label_unarchive_topic":"Archived:","menu_item_forward":"Forward","forward_to":"Forward to","forward_to_search_placeholder":"Search contacts","label_new_password":"New password","drafty_unknown":"Unsupported","preview_unavailable":"unavailable","calls_incoming":"Incoming Call","calls_incoming_title":"Incoming Call","calls_outgoing":"Outgoing Call","calls_you_label":"You","menu_item_video_call":"Video Call"},"es":{"action_block_contact":"Bloquear contacto","action_cancel":"cancelar","action_clear_messages":"Borrar mensajes","action_delete_messages":"Borrar mensajes para todos","action_leave_chat":"Dejar conversación","action_report_chat":"Reportar conversación","archived_contacts":"Contactos archivados ({count})","badge_danger":"Suspicaz","badge_owner":"propietario","badge_staff":"Administración","badge_verified":"Verificado","badge_you":"tú","block_contact_warning":"¿Estás seguro de que quieres bloquear a este contacto?","blocked_contacts_link":"Contactos bloqueados ({count})","button_add_another":"Añadir contacto","button_add_members":"Añadir miembros","button_cancel":"Cancelar","button_confirm":"Confirmar","button_create":"Crear","button_delete_account":"Eliminar cuenta","button_edit":"Editar","button_logout":"Cerrar sesión","button_ok":"OK","button_reset":"Restablecer","button_send_request":"Enviar petición","button_sign_in":"Entrar","button_sign_up":"Regístrate","button_subscribe":"Suscribirse","button_update":"Actualizar","cannot_initiate_file_upload":"No se pudo iniciar la carga del archivo.","channel":"canal","channel_prompt":"Este es un canal","chat_invitation":"Estás invitado a participar en un nuevo chat. ¿Qué te gustaría hacer?","chat_invitation_accept":"Aceptar","chat_invitation_block":"Bloquear","chat_invitation_ignore":"Ignorar","clear_messages_warning":"¿Estás seguro de que quieres eliminar todos los mensajes? Esta acción es irreversible.","code_doesnot_match":"El código no coincide","contacts_not_found":"No tienes chats ¯∖_(ツ)_/¯","contacts_not_found_short":"Ningún contacto coincide con \'\'{query}\'\'","credential_email_prompt":"Tu correo electrónico de registro","delete_account":"Eliminar cuenta","delete_account_warning":"¿Estás seguro de que deseas eliminar permanentemente tu cuenta? Esta acción es irreversible.","delete_messages_warning":"¿Estás seguro de que quieres eliminar todos los mensajes para todos? Esta acción es irreversible.","deleted_content":"este mensaje fue eliminado","download_action":"descargar","drafty_attachment":"Archivo","drafty_form":"Formulario:","drafty_image":"Imagen","email_dative":"correo electrónico","email_prompt":"Correo electrónico, p.ej. juan@example.com","enable_peers_messaging":"Habilitar","enter_confirmation_code_prompt":"Introduzca el código de confirmación enviado a tu {method}:","error_invalid_id":"ID inválido","file_attachment_too_large":"El tamaño del archivo {size} excede el límite de {limit}.","forgot_password_link":"¿Olvidaste tu contraseña?","full_name_prompt":"Nombre completo, p.ej. Juan González Hernández","granted_permissions":"Otorgados","group_has_no_members":"No hay miembros","group_user_id_prompt":"ID del grupo o usuario","image_caption_prompt":"Añade un comentario","invalid_content":"contenido inválido","invalid_security_token":"Token de seguridad inválido","label_client":"Cliente:","label_content_type":"Tipo de contenido:","label_default_access_mode":"Modo de acceso predeterminado:","label_file_name":"Nombre del archivo:","label_group_members":"Miembros del grupo:","label_incognito_mode":"Modo incógnito:","label_message_sound":"Sonido de mensaje:","label_muting_topic":"Silenciado:","label_other_user":"Otros","label_password":"Contraseña","label_permissions":"Permisos:","label_private":"Comentario privado","label_push_notifications":"Alertas de notificaciones:","label_push_notifications_disabled":"Alertas de notificaciones (requiere HTTPS):","label_reset_password":"Enviar un correo electrónico de restablecimiento de contraseña:","label_sdk":"SDK:","label_server":"Servidor:","label_server_address":"Dirección del servidor:","label_server_to_use":"Servidor para usar:","label_size":"Tamaño:","label_topic_name":"Nombre del tema","label_user_contacts":"Contactos:","label_user_id":"ID:","label_wire_transport":"Transporte de alambre:","label_you":"Tú:","label_your_name":"Tu nombre","label_your_permissions":"Tus permisos:","last_seen_timestamp":"Últ. vez","leave_chat_warning":"¿Estás seguro de que quieres dejar esta conversación?","link_contact_us":"Contáctanos","link_privacy_policy":"Política de privacidad","link_terms_of_service":"Términos de uso","login_prompt":"Nombre de usuario","menu_item_archive_topic":"Archivar","menu_item_block":"Bloquear","menu_item_clear_messages":"Borrar mensajes","menu_item_clear_messages_for_all":"Borrar para todos","menu_item_delete":"Eliminar","menu_item_delete_for_all":"Eliminar para todos","menu_item_delete_topic":"Eliminar","menu_item_edit_permissions":"Editar permisos","menu_item_info":"Información","menu_item_member_delete":"Eliminar","menu_item_mute":"Silenciar","menu_item_restore_topic":"Restaurar","menu_item_send_retry":"Inténtalo de nuevo","menu_item_unblock":"Desbloquear","menu_item_unmute":"Anular el silencio","message_sending":"enviando...","message_sending_failed":"no se pudo enviar el mensaje","messages_not_readable":"sin acceso a mensajes","messaging_disabled_prompt":"El envío de mensajes está deshabilitado","more_online_members":"+{overflow} más","new_message_prompt":"Nuevo mensaje","new_password_placeholder":"Introduzca una nueva contraseña","no_connection":"Sin conexión","no_contacts":"No tienes contactos :-(","numeric_confirmation_code_prompt":"Sólo números","online_now":"en línea","password_prompt":"Contraseña","password_unchanged_prompt":"Sin cambios","peers_messaging_disabled":"La mensajería Peer está deshabilitada.","permission_admin":"Approbar ({val})","permission_delete":"Eliminar ({val})","permission_join":"Unirse ({val})","permission_owner":"Propietario ({val})","permission_pres":"Ser notificado ({val})","permission_read":"Leer ({val})","permission_share":"Compartir ({val})","permission_write":"Escribir ({val})","phone_dative":"teléfono","private_editing_placeholder":"Sólo visible para tí","push_init_failed":"Error al inicializar las notificaciones push","reconnect_countdown":"Desconectado. Reconectando en {seconds}…","reconnect_now":"Reintentar","reload_update":"Recargar","report_chat_warning":"¿Estás seguro de que quieres bloquear y reportar a esta conversación?","requested_permissions":"Solicitados","save_attachment":"guardar","search_for_contacts":"Usa la búsqueda para encontrar contactos","search_no_results":"La búsqueda no arrojó resultados","search_placeholder":"Ej. email:alice@example.com, tel:17025550003...","sidepanel_title_acc_notifications":"Notificaciones","sidepanel_title_acc_support":"Soporte","sidepanel_title_account_settings":"Ajustes de la cuenta","sidepanel_title_archive":"Chats archivados","sidepanel_title_blocked":"Chats bloqueados","sidepanel_title_cred":"Confirmar credenciales","sidepanel_title_login":"Iniciar sesión","sidepanel_title_newtpk":"Iniciar un nuevo chat","sidepanel_title_register":"Crear cuenta","sidepanel_title_reset":"Restablecer contraseña","sidepanel_title_settings":"Ajustes","stay_logged_in":"Permanecer conectado","tabtitle_find_user":"encontrar","tabtitle_group_by_id":"por ID","tabtitle_new_group":"nuevo grupo","tags_editor_no_tags":"Añadir etiquetas","tags_not_found":"No hay etiquetas definidas. Añade unas.","title_all_contacts":"Todos los contactos","title_group_members":"Miembros del grupo","title_manage_tags":"Gestionar","title_not_found":"No encontrado","title_permissions":"Permisos","title_tag_manager":"Etiquetas (descubrimiento de usuarios)","topic_block_warning":"¿Estás seguro de que quieres bloquear esta conversación","topic_delete_warning":"¿Estás seguro de que quieres eliminar esta conversación?","topic_name_editing_placeholder":"Nombre del grupo","unnamed_topic":"Sin nombre","update_available":"Actualización disponible.","upload_finishing":"terminando...","user_not_found":"Usuario no encontrado","validate_credential_action":"confirmar","description_editing_placeholder":"Descripción (opcional)","label_description":"Descripción","button_security":"Seguridad","panel_title_crop":"Arrastra para ajustar","panel_title_general":"General","panel_title_members":"Miembros","panel_title_security":"Seguridad","panel_title_info":"Información","permissions_anonymous":"Anónimo","permissions_authenticated":"Autenticado","topic_delete":"Eliminar chat","permissions_user":"Permisos del usuario","password_reset_email_sent":"Se ha enviado un correo electrónico a {email}. Siga las instrucciones del correo electrónico para restablecer su contraseña.","label_unarchive_topic":"Archivado:","menu_item_reply":"Respuesta","menu_item_forward":"Reenviar","forward_to":"Reenviar a","forward_to_search_placeholder":"Buscar contactos","label_new_password":"Nueva contraseña","drafty_unknown":"No soportado","preview_unavailable":"indisponible"},"ko":{"action_block_contact":"연락차단","action_cancel":"취소","action_clear_messages":"메시지지우기","action_delete_messages":"모든메시지지우기","action_leave_chat":"대화나누기","action_report_chat":"대화기록","archived_contacts":"보관된연락처({수})","badge_danger":"의심 많은","badge_owner":"소유자","badge_staff":"직원 관리하에","badge_verified":"확인 됨","badge_you":"당신","block_contact_warning":"이연락처를차단하시겠습니까?","blocked_contacts_link":"차단된연락처({수})","button_add_another":"다른항목추가","button_add_members":"회원추가","button_cancel":"취소","button_confirm":"확인","button_create":"작성","button_delete_account":"계정삭제","button_edit":"편집","button_logout":"로그아웃","button_ok":"OK","button_reset":"재설정","button_send_request":"요청보내기","button_sign_in":"로그인","button_sign_up":"가입","button_subscribe":"구독","button_update":"업데이트","cannot_initiate_file_upload":"파일업로드를시작할수없습니다.","channel":"채널","channel_prompt":"이 채널입니다","chat_invitation":"새로운대화를시작하도록초대되었습니다.무엇을하시겠습니까?","chat_invitation_accept":"수락","chat_invitation_block":"차단","chat_invitation_ignore":"무시","clear_messages_warning":"모든메시지를지우시겠습니까?실행취소할수없습니다.","code_doesnot_match":"코드가일치하지않습니다","contacts_not_found":"채팅이없습니다 ¯∖_(ツ)_/¯","contacts_not_found_short":"\'{문의}\'와일치하는연락처가없습니다.","credential_email_prompt":"등록이메일","delete_account":"계정삭제","delete_account_warning":"계정을삭제하시겠습니까?실행취소할수없습니다.","delete_messages_warning":"모든사람의모든메시지를삭제하시겠습니까?실행취소할수없습니다.","deleted_content":"내용이 삭제되었습니다","download_action":"다운로드","drafty_attachment":"부착","drafty_form":"형태:","drafty_image":"이미지","email_dative":"이메일","email_prompt":"이메일(예:hong@example.com)","enable_peers_messaging":"활성화","enter_confirmation_code_prompt":"{방법}으로보낸확인코드를입력하십시오:","error_invalid_id":"잘못된ID","file_attachment_too_large":"파일크기{크기}이(가){제한}제한을초과합니다.","forgot_password_link":"비밀번호를잊으셨습니까?","full_name_prompt":"전체이름(예:홍길동)","granted_permissions":"승낙하다","group_has_no_members":"회원없음","group_user_id_prompt":"그룹또는사용자ID","image_caption_prompt":"이미지설명","invalid_content":"잘못된내용","invalid_security_token":"유효하지않은보안토큰","label_client":"클라이언트: ","label_content_type":"컨텐츠유형: ","label_default_access_mode":"기본액세스모드: ","label_file_name":"파일이름: ","label_group_members":"그룹회원: ","label_incognito_mode":"시크릿모드: ","label_message_sound":"메시지소리: ","label_muting_topic":"음소거: ","label_other_user":"기타","label_password":"비밀번호","label_permissions":"권한: ","label_private":"개인코멘트","label_push_notifications":"통지경보: ","label_push_notifications_disabled":"통지경보(HTTPS필요): ","label_reset_password":"비밀번호재설정이메일보내기: ","label_sdk":"SDK:","label_server":"서버: ","label_server_address":"서버주소: ","label_server_to_use":"사용할서버:","label_size":"크기: ","label_topic_name":"이름","label_user_contacts":"연락처: ","label_user_id":"ID:","label_wire_transport":"와이어수송:","label_you":"당신: ","label_your_name":"이름","label_your_permissions":"권한: ","last_seen_timestamp":"마지막으로본","leave_chat_warning":"이대화를나가시겠습니까?","link_contact_us":"문의처","link_privacy_policy":"개인정보보호정책","link_terms_of_service":"서비스약관","login_prompt":"로그인","menu_item_archive_topic":"보관","menu_item_block":"차단","menu_item_clear_messages":"메시지지우기","menu_item_clear_messages_for_all":"모두지우기","menu_item_delete":"삭제","menu_item_delete_for_all":"모두삭제","menu_item_delete_topic":"삭제","menu_item_edit_permissions":"편집권한","menu_item_info":"정보","menu_item_member_delete":"제거","menu_item_mute":"음소거","menu_item_restore_topic":"복원","menu_item_send_retry":"다시시도","menu_item_unblock":"차단해제","menu_item_unmute":"음소거해제","message_sending":"보내기...","message_sending_failed":"실패","messages_not_readable":"메시지에 액세스 할 수 없습니다","messaging_disabled_prompt":"메시지비활성화","more_online_members":"+{넘침}더보기","new_message_prompt":"새메시지","new_password_placeholder":"새비밀번호입력","no_connection":"연결없음","no_contacts":"연락처가없습니다 (._.)","numeric_confirmation_code_prompt":"숫자만","online_now":"현재접속중","password_prompt":"비밀번호","password_unchanged_prompt":"변경되지않음","peers_messaging_disabled":"동료의메시지가비활성화되었습니다.","permission_admin":"승인({val})","permission_delete":"삭제({val})","permission_join":"참여({val})","permission_owner":"소유자({val})","permission_pres":"알림받기({val})","permission_read":"읽기({val})","permission_share":"공유({val})","permission_write":"쓰기({val})","phone_dative":"전화","private_editing_placeholder":"나만볼수있습니다","push_init_failed":"푸시알림을초기화하지못했습니다","reconnect_countdown":"연결이끊어졌습니다.다시연결하는중{초}…","reconnect_now":"지금시도","reload_update":"재로드","report_chat_warning":"이대화를차단하고기록하시겠습니까?","requested_permissions":"요청","save_attachment":"저장","search_for_contacts":"검색을사용하여연락처찾기","search_no_results":"검색결과가없습니다","search_placeholder":"email:alice@example.com,tel:17025550003...와같은목록","sidepanel_title_acc_notifications":"알림","sidepanel_title_acc_support":"지원","sidepanel_title_account_settings":"계정설정","sidepanel_title_archive":"보관된채팅","sidepanel_title_blocked":"차단된채팅","sidepanel_title_cred":"자격증명확인","sidepanel_title_login":"로그인","sidepanel_title_newtpk":"새채팅시작","sidepanel_title_register":"계정만들기","sidepanel_title_reset":"비밀번호재설정","sidepanel_title_settings":"설정","stay_logged_in":"로그인상태유지","tabtitle_find_user":"찾기","tabtitle_group_by_id":"id로","tabtitle_new_group":"새그룹","tags_editor_no_tags":"일부태그추가","tags_not_found":"태그가정의되지않았습니다.일부를추가하십시오.","title_all_contacts":"모든연락처","title_group_members":"그룹구성원","title_manage_tags":"관리","title_not_found":"찾을수없음","title_permissions":"권한","title_tag_manager":"태그(사용자검색)","topic_block_warning":"이대화를차단하시겠습니까?","topic_delete_warning":"이대화를삭제하시겠습니까?","topic_name_editing_placeholder":"그룹의자유형이름","unnamed_topic":"이름없는","update_available":"업데이트가능.","upload_finishing":"마무리...","user_not_found":"찾을수없음","validate_credential_action":"확인","description_editing_placeholder":"설명(선택 사항)","label_description":"설명","button_security":"보안","panel_title_crop":"드래그하여 조정","panel_title_general":"일반","panel_title_members":"구성원","panel_title_security":"보안","panel_title_info":"정보","permissions_anonymous":"익명","permissions_authenticated":"인증됨","topic_delete":"채팅 삭제","permissions_user":"사용자 권한","password_reset_email_sent":"이메일이 {email}(으)로 전송되었습니다. 이메일의 지침에 따라 비밀번호를 재설정하세요.","label_unarchive_topic":"보관됨:","menu_item_reply":"회신하다","menu_item_forward":"리디렉션","forward_to":"메시지를 리디렉션","forward_to_search_placeholder":"연락처 검색","label_new_password":"새 비밀번호","drafty_unknown":"지원되지 않음","preview_unavailable":"없는"},"ro":{"action_block_contact":"Blochează contact","action_cancel":"anulează","action_clear_messages":"Șterge mesajele","action_delete_messages":"Șterge toate mesajele","action_leave_chat":"Ieși din conversație","action_report_chat":"Raportează conversația","archived_contacts":"Contacte arhivate ({count})","badge_danger":"Suspicios","badge_owner":"owner","badge_staff":"Administrare","badge_verified":"Verificat","badge_you":"tu","block_contact_warning":"Ești sigur că dorești să blochezi acest contact?","blocked_contacts_link":"Contact blocate ({count})","button_add_another":"Adaugă","button_add_members":"Adaugă persoane","button_cancel":"Anulează","button_confirm":"Confirmă","button_create":"Creează","button_delete_account":"Șterge cont","button_edit":"Editează","button_logout":"Deconectare","button_ok":"OK","button_reset":"Resetează","button_send_request":"Trimite cerere","button_sign_in":"Conectează-te","button_sign_up":"Creează cont","button_subscribe":"Subscribe","button_update":"Actualizează","cannot_initiate_file_upload":"Nu se poate face încărcarea.","channel":"canal","channel_prompt":"Acesta este un canal","chat_invitation":"Ai primit invitație într-o conversație. Accepți?","chat_invitation_accept":"Da, accept","chat_invitation_block":"Blochează","chat_invitation_ignore":"Ignoră","clear_messages_warning":"Ești sigur că dorești să ștergi mesajele? Acestea nu pot fi recuperate.","code_doesnot_match":"Codul furnizat nu este valid","contacts_not_found":"Nu ai contacte salvate ¯∖_(ツ)_/¯","contacts_not_found_short":"Niciun contact găsit după criteriile \'\'{query}\'\'","credential_email_prompt":"Adresa de e-mail","delete_account":"Șterge contul","delete_account_warning":"Ești sigur că dorești să ștergi contul? Acesta nu va putea fi recuperat.","delete_messages_warning":"Ești sigur că dorești să șterge mesajele din toate conversațiile? Acestea nu pot fi recuperate.","deleted_content":"conținut șters","download_action":"download","drafty_attachment":"Atasament","drafty_form":"Formă:","drafty_image":"Imagine","email_dative":"email","email_prompt":"Adresa de e-mail","enable_peers_messaging":"Activează","enter_confirmation_code_prompt":"Introu codul de confirmare trimis pe {method}:","error_invalid_id":"ID Invalid","file_attachment_too_large":"Dimensiunea fișiterului {size} depășește limita de {limit}.","forgot_password_link":"Ți-ai uitat parola?","full_name_prompt":"Numele tău","granted_permissions":"Oferite","group_has_no_members":"În acest grup nu se află persoane","group_user_id_prompt":"Grup sau user ID","image_caption_prompt":"Titlul imaginii","invalid_content":"conținut invalid","invalid_security_token":"Codul de securitate este invalid","label_client":"Client:","label_content_type":"Tip conținut:","label_default_access_mode":"Default access mode:","label_file_name":"Nume fișier:","label_group_members":"Membrii grupului:","label_incognito_mode":"Mod incognito:","label_message_sound":"Sunet de mesaj:","label_muting_topic":"Mod silențios (muted):","label_other_user":"Altele","label_password":"Parola","label_permissions":"Permisiuni:","label_private":"Comentariu privat","label_push_notifications":"Alerte de notificare:","label_push_notifications_disabled":"Alerte de notificare (necesită HTTPS):","label_reset_password":"Resetează parola:","label_sdk":"SDK:","label_server":"Server:","label_server_address":"Adresa serverului:","label_server_to_use":"Server de utilizat:","label_size":"Size:","label_topic_name":"Nume","label_user_contacts":"Contacte:","label_user_id":"ID:","label_wire_transport":"Transportul legat:","label_you":"Tu:","label_your_name":"Numele tău","label_your_permissions":"Permisiuniile tale:","last_seen_timestamp":"Văzut ultima dată","leave_chat_warning":"Ești sigur că dorești să ieși din conersație?","link_contact_us":"Contactează-ne","link_privacy_policy":"Politica de Confidențialitate","link_terms_of_service":"Termenii Serviciului","login_prompt":"Conectează-te","menu_item_archive_topic":"Arhivează","menu_item_block":"Blochează","menu_item_clear_messages":"Șterge mesajele","menu_item_clear_messages_for_all":"Ștergele pe toate","menu_item_delete":"Șterge","menu_item_delete_for_all":"Ștergele pe toate","menu_item_delete_topic":"Șterge","menu_item_edit_permissions":"Editează permisiuni","menu_item_info":"Info","menu_item_member_delete":"Șterge persoană","menu_item_mute":"Mute","menu_item_restore_topic":"Restabili","menu_item_send_retry":"Reîncearcă","menu_item_unblock":"Deblochează","menu_item_unmute":"Unmute","message_sending":"se trimite...","message_sending_failed":"eroare","messages_not_readable":"Mesajele nu pot fi citite","messaging_disabled_prompt":"Mesageria este dezactivată","more_online_members":"+{overflow} mai mult","new_message_prompt":"Mesaj nou","new_password_placeholder":"Introdu parolă","no_connection":"Nu există conexiune","no_contacts":"Nu ai contacte adăugate :-(","numeric_confirmation_code_prompt":"Doar cifre","online_now":"online acum","password_prompt":"Parola","password_unchanged_prompt":"Neschimbată","peers_messaging_disabled":"Mesageria de tip Peer este dezactivată.","permission_admin":"Aprobare ({val})","permission_delete":"Ștergere ({val})","permission_join":"Participare ({val})","permission_owner":"Deținător ({val})","permission_pres":"Notificare ({val})","permission_read":"Citire ({val})","permission_share":"Distribuire ({val})","permission_write":"Scriere ({val})","phone_dative":"telefon","private_editing_placeholder":"Vizibil doar ție","push_init_failed":"Nu s-a reușit inițializarea tip push notifications","reconnect_countdown":"Deconectat. Se încearcă conectarea în {seconds}…","reconnect_now":"Încearcă din nou","reload_update":"Reîncarcă","report_chat_warning":"Ești sigur că dorești să blochezi și să raportezi această conversație?","requested_permissions":"Necesare","save_attachment":"salvează","search_for_contacts":"Caută în contacte","search_no_results":"Nu s-au găsit rezultate","search_placeholder":"Caută după e-mail sau număr telefon...","sidepanel_title_acc_notifications":"Notificări","sidepanel_title_acc_support":"Ajutor","sidepanel_title_account_settings":"Setările Contului","sidepanel_title_archive":"Conversații Arhivate","sidepanel_title_blocked":"Conversații Blocate","sidepanel_title_cred":"Confirmă credențiale","sidepanel_title_login":"Conectează-te","sidepanel_title_newtpk":"Creeză un nou Chat","sidepanel_title_register":"Creează Cont","sidepanel_title_reset":"Resetează Parola","sidepanel_title_settings":"Setări","stay_logged_in":"Rămâi conectat","tabtitle_find_user":"caută","tabtitle_group_by_id":"după id","tabtitle_new_group":"grup nou","tags_editor_no_tags":"Adaugă tag-uri","tags_not_found":"Niciun tag definit. Adaugă.","title_all_contacts":"Toate Contactele","title_group_members":"Persoanele din grup","title_manage_tags":"Administrează","title_not_found":"Nu a fost găsit","title_permissions":"Permisiuni","title_tag_manager":"Tag-uri (user discovery)","topic_block_warning":"Ești sigur că dorești să blochezi această conversație?","topic_delete_warning":"Ești sigur că dorești să șterge această conversație?","topic_name_editing_placeholder":"Numele grupului","unnamed_topic":"Nedenumit","update_available":"Actualizare disponibilă.","upload_finishing":"se încarcă...","user_not_found":"Utilizatorul nu a fost găsit","validate_credential_action":"confirmă","description_editing_placeholder":"Descriere (opțional)","label_description":"Descriere","button_security":"Securitate","panel_title_crop":"Trageți pentru a ajusta","panel_title_general":"Generale","panel_title_members":"Membri","panel_title_security":"Securitate","panel_title_info":"Info","permissions_anonymous":"Anonim","permissions_authenticated":"Autentificat","topic_delete":"Ștergeți Chat","permissions_user":"Permisiunile utilizatorului","password_reset_email_sent":"Un e-mail a fost trimis către {email}. Urmați instrucțiunile din e-mail pentru a vă reseta parola.","label_unarchive_topic":"Arhivat:","menu_item_reply":"A raspunde","menu_item_forward":"Redirecţiona","forward_to":"Redirecționați către","forward_to_search_placeholder":"Căutați contacte","label_new_password":"Parolă Nouă","drafty_unknown":"Neacceptat","preview_unavailable":"indisponibil"},"ru":{"action_block_contact":"Заблокировать контакт","action_cancel":"отменить","action_clear_messages":"Удалить сообщения","action_delete_messages":"Удалить сообщения","action_leave_chat":"Уйти из чата","action_report_chat":"Сообщить о нарушении","archived_contacts":"Чаты в архиве ({count})","badge_danger":"Подозрительный","badge_owner":"влад.","badge_staff":"Администрация","badge_verified":"Верифицированный","badge_you":"вы","block_contact_warning":"Вы действительно заблокировать этот контакт?","blocked_contacts_link":"Заблокированные ({count})","button_add_another":"Добавить","button_add_members":"Добавить","button_cancel":"Отменить","button_confirm":"Подтвердить","button_create":"Создать","button_delete_account":"Удалить аккаунт","button_edit":"Редактировать","button_logout":"Выйти","button_ok":"OK","button_reset":"Изменить","button_send_request":"Отправить","button_sign_in":"Войти","button_sign_up":"Создать аккаунт","button_subscribe":"Подписаться","button_update":"Применить","cannot_initiate_file_upload":"Ошибка загрузки файла.","channel":"канал","channel_prompt":"Создать канал","chat_invitation":"Вас пригласили начать новый чат. Как вы хотите поступить?","chat_invitation_accept":"Принять","chat_invitation_block":"Заблокировать","chat_invitation_ignore":"Игнорировать","clear_messages_warning":"Вы действительно хотите удалить все сообщения в чате? Их будет невозможно восстановить.","code_doesnot_match":"Код не совпадает","contacts_not_found":"Чатов нет ¯∖_(ツ)_/¯","contacts_not_found_short":"Нет контактов для запроса \'\'{query}\'\'","credential_email_prompt":"Регистрационный емейл","delete_account":"Удалить аккаунт","delete_account_warning":"Вы уверены, что ходите удалить свой аккаунт? Его невозможно будет восстановить.","delete_messages_warning":"Вы действительно хотите удалить все сообщения?","deleted_content":"удалено","download_action":"скачать","drafty_attachment":"Аттачмент","drafty_form":"Форма:","drafty_image":"Картинка","email_dative":"емейлу","email_prompt":"Email, напр. ivan@example.com","enable_peers_messaging":"Разблокировать.","enter_confirmation_code_prompt":"Код подтверждения, полученный по {method}:","error_invalid_id":"Неверный ID","file_attachment_too_large":"Размер файла {size} превышает {limit} лимит.","forgot_password_link":"Напомнить пароль","full_name_prompt":"Полное имя, напр. Иван Петров","granted_permissions":"Получены","group_has_no_members":"Нет участников","group_user_id_prompt":"ID чата или пользователя","image_caption_prompt":"Подпись к фото","invalid_content":"сообщение не читается","invalid_security_token":"Токен некорректен","label_client":"Клиент:","label_content_type":"Тип:","label_default_access_mode":"Доступ по умолчанию:","label_file_name":"Имя файла:","label_group_members":"Участники чата:","label_incognito_mode":"Режим инкогнито:","label_message_sound":"Звук нового сообщения:","label_muting_topic":"Без уведомлений","label_other_user":"Второй","label_password":"Пароль","label_permissions":"Права доступа:","label_private":"Комментарий","label_push_notifications":"Уведомления:","label_push_notifications_disabled":"Уведомления (требуют HTTPS):","label_reset_password":"Отправить емейл для смены пароля:","label_sdk":"SDK:","label_server":"Сервер:","label_server_address":"Адрес сервера:","label_server_to_use":"Использовать сервер:","label_size":"Размер:","label_topic_name":"Название","label_user_contacts":"Конакты:","label_user_id":"ID:","label_wire_transport":"Соединение:","label_you":"Вы:","label_your_name":"Ваше имя","label_your_permissions":"Ваши права доступа:","last_seen_timestamp":"Был активен","leave_chat_warning":"Вы действительно хотите покинуть этот чат?","link_contact_us":"Связаться с нами","link_privacy_policy":"Политика конфиденциальности","link_terms_of_service":"Условия сервиса","login_prompt":"Логин","menu_item_archive_topic":"В архив","menu_item_block":"Заблокировать","menu_item_clear_messages":"Удалить сообщения","menu_item_clear_messages_for_all":"Удалить для всех","menu_item_delete":"Удалить","menu_item_delete_for_all":"Удалить для всех","menu_item_delete_topic":"Удалить чат","menu_item_edit_permissions":"Права доступа","menu_item_info":"Информация","menu_item_member_delete":"Отписать","menu_item_mute":"Не уведомлять","menu_item_restore_topic":"Разархивировать","menu_item_send_retry":"Отправить заново","menu_item_unblock":"Разблокировать","menu_item_unmute":"Уведомлять","message_sending":"в пути...","message_sending_failed":"ошибка","messages_not_readable":"нет доступа к сообщениям","messaging_disabled_prompt":"Отправка недоступна","more_online_members":"+еще {overflow}","new_message_prompt":"Новое сообщение","new_password_placeholder":"Введите новый пароль","no_connection":"Нет связи","no_contacts":"Ничего нет :-(","numeric_confirmation_code_prompt":"Только цифры","online_now":"онлайн","password_prompt":"Пароль","password_unchanged_prompt":"Не изменен","peers_messaging_disabled":"Чат заблокирован у корреспондента.","permission_admin":"Подтверждать ({val})","permission_delete":"Удалять ({val})","permission_join":"Подписываться ({val})","permission_owner":"Владелец ({val})","permission_pres":"Уведомлять ({val})","permission_read":"Читать ({val})","permission_share":"Приглашать ({val})","permission_write":"Писать ({val})","phone_dative":"телефону","private_editing_placeholder":"Виден только вам","push_init_failed":"Ошибка инициализации пуш уведомлений","reconnect_countdown":"Нет связи. Подключение через {seconds}…","reconnect_now":"Подключить сейчас.","reload_update":"Обновить","report_chat_warning":"Вы действительно хотите сообщить о нарушении и заблокировать этот чат?","requested_permissions":"Требуются","save_attachment":"сохранить","search_for_contacts":"Поиск контактов","search_no_results":"Ничего не найдено","search_placeholder":"Список, напр. email:alice@example.com, tel:+17025550003...","sidepanel_title_acc_notifications":"Уведомления","sidepanel_title_acc_support":"Поддержка","sidepanel_title_account_settings":"Настройки аккаунта","sidepanel_title_archive":"Архив чатов","sidepanel_title_blocked":"Заблокированные чаты","sidepanel_title_cred":"Подтвердить","sidepanel_title_login":"Авторизация","sidepanel_title_newtpk":"Новый чат","sidepanel_title_register":"Зарегистрироваться","sidepanel_title_reset":"Сменить пароль","sidepanel_title_settings":"Настройки","stay_logged_in":"Запомнить","tabtitle_find_user":"найти","tabtitle_group_by_id":"по id","tabtitle_new_group":"создать","tags_editor_no_tags":"Добавьте теги","tags_not_found":"Тегов нет. Добавьте","title_all_contacts":"Все контакты","title_group_members":"Участники","title_manage_tags":"Редактировать","title_not_found":"Не найден","title_permissions":"Права доступа","title_tag_manager":"Теги для поиска","topic_block_warning":"Вы действительно хотите заблокировать этот чат?","topic_delete_warning":"Вы действительно хотите удалить этот чат?","topic_name_editing_placeholder":"Название чата","unnamed_topic":"Без названия","update_available":"Есть новая версия приложения.","upload_finishing":"завершение...","user_not_found":"Не найден","validate_credential_action":"подтвердить","description_editing_placeholder":"Описание (не обязательно)","label_description":"Описание","button_security":"Безопасность","panel_title_crop":"Обрезать картинку","panel_title_general":"Общие настройки","panel_title_members":"Участники","panel_title_security":"Безопасность","panel_title_info":"Подробности","permissions_anonymous":"Анонимный","permissions_authenticated":"Авторизованный","topic_delete":"Удалить чат","permissions_user":"Права доступа","password_reset_email_sent":"Сообщение было отправлено на адрес {email}. Следуйте инструкциям в сообщении, чтобы изменить пароль.","label_unarchive_topic":"Архивирован:","menu_item_reply":"Ответить","menu_item_forward":"Переслать","forward_to":"Переслать","forward_to_search_placeholder":"Поиск контактов","label_new_password":"Новый пароль","drafty_unknown":"Не поддерживается","preview_unavailable":"недоступно"},"zh-TW":{"action_block_contact":"封鎖聯絡人","action_cancel":"取消","action_clear_messages":"清除訊息","action_delete_messages":"為所有人清除訊息","action_leave_chat":"離開對話","action_report_chat":"檢舉對話","archived_contacts":"已封存的聯絡人 ({count})","badge_danger":"不可信","badge_owner":"擁有者","badge_staff":"員工管理","badge_verified":"已驗證/官方","badge_you":"您","block_contact_warning":"您確定要封鎖此聯絡人嗎?","blocked_contacts_link":"已封鎖的聯絡人 ({count})","button_add_another":"新增其他人","button_add_members":"新增成員","button_cancel":"取消","button_confirm":"確認","button_create":"建立","button_delete_account":"刪除帳號","button_edit":"編輯","button_logout":"登出","button_ok":"OK","button_reset":"重設","button_send_request":"傳送要求","button_sign_in":"登入","button_sign_up":"註冊","button_subscribe":"訂閱","button_update":"更新","cannot_initiate_file_upload":"無法為檔案上傳初始化。","channel":"頻道","channel_prompt":"這是頻道","chat_invitation":"您已被邀請開始新對話。您接下來要做什麼呢?","chat_invitation_accept":"接受","chat_invitation_block":"封鎖","chat_invitation_ignore":"忽略","clear_messages_warning":"您確定要清除所有訊息嗎?此操作無法復原。","code_doesnot_match":"代碼不相符","contacts_not_found":"您沒有任何對話 ¯∖_(ツ)_/¯","contacts_not_found_short":"沒有符合 \'\'{query}\'\' 的聯絡人","credential_email_prompt":"您的註冊電子郵件地址","delete_account":"刪除帳號","delete_account_warning":"您確定要刪除您的帳戶嗎?此操作無法撤消。","delete_messages_warning":"您確定要為所有人刪除所有訊息嗎?此操作無法復原。","deleted_content":"內容已被刪除","download_action":"下載","drafty_attachment":"附加檔案","drafty_form":"表單:","drafty_image":"圖片","email_dative":"電子郵件地址","email_prompt":"電子郵件地址,例如:jdoe@example.com","enable_peers_messaging":"啟用","enter_confirmation_code_prompt":"輸入透過 {method} 傳送給您的確認碼:","error_invalid_id":"ID 無效","file_attachment_too_large":"檔案大小 {size} 超出 {limit} 限制。","forgot_password_link":"忘記密碼?","full_name_prompt":"全名,例如:王小明","granted_permissions":"已授權","group_has_no_members":"無成員","group_user_id_prompt":"群組或使用者 ID","image_caption_prompt":"圖片說明","invalid_content":"內容無效","invalid_security_token":"安全權杖無效","label_client":"客戶端:","label_content_type":"類型:","label_default_access_mode":"預設存取模式:","label_file_name":"檔名:","label_group_members":"群組成員:","label_incognito_mode":"無痕模式:","label_message_sound":"訊息提示聲:","label_muting_topic":"靜音:","label_other_user":"其他","label_password":"密碼","label_permissions":"權限:","label_private":"私人留言","label_push_notifications":"通知:","label_push_notifications_disabled":"通知 (需要 HTTPS):","label_reset_password":"傳送重設密碼郵件:","label_sdk":"SDK:","label_server":"伺服器:","label_server_address":"伺服器位址:","label_server_to_use":"使用的伺服器:","label_size":"大小:","label_topic_name":"名稱","label_user_contacts":"聯絡人:","label_user_id":"ID:","label_wire_transport":"Wire transport:","label_you":"您:","label_your_name":"您的名字","label_your_permissions":"您的權限:","last_seen_timestamp":"最後上線","leave_chat_warning":"您確定要離開此對話嗎?","link_contact_us":"聯絡我們","link_privacy_policy":"隱私權政策","link_terms_of_service":"服務條款","login_prompt":"登入","menu_item_archive_topic":"封存","menu_item_block":"封鎖","menu_item_clear_messages":"清除訊息","menu_item_clear_messages_for_all":"為所有人清除訊息","menu_item_delete":"刪除","menu_item_delete_for_all":"為所有人刪除","menu_item_delete_topic":"刪除","menu_item_edit_permissions":"編輯權限","menu_item_info":"Info","menu_item_member_delete":"移除","menu_item_mute":"靜音","menu_item_restore_topic":"恢復","menu_item_send_retry":"重試","menu_item_unblock":"解除封鎖","menu_item_unmute":"解除靜音","message_sending":"正在傳送...","message_sending_failed":"失敗","messages_not_readable":"沒有存取訊息的權限","messaging_disabled_prompt":"停用訊息","more_online_members":"+{overflow}","new_message_prompt":"新訊息","new_password_placeholder":"輸入新的密碼","no_connection":"無連線","no_contacts":"您沒有任何聯絡人 :-(","numeric_confirmation_code_prompt":"僅數字","online_now":"上線中","password_prompt":"密碼","password_unchanged_prompt":"未修改","peers_messaging_disabled":"Peer 已停用訊息。","permission_admin":"核可 ({val})","permission_delete":"刪除 ({val})","permission_join":"加入 ({val})","permission_owner":"擁有者 ({val})","permission_pres":"收到通知 ({val})","permission_read":"讀取 ({val})","permission_share":"分享 ({val})","permission_write":"撰寫 ({val})","phone_dative":"phone","private_editing_placeholder":"僅您可見","push_init_failed":"初始化通知失敗。","reconnect_countdown":"已斷線。將在 {seconds} 秒後重新連線…","reconnect_now":"現在重試","reload_update":"重新載入","report_chat_warning":"您確定要封鎖並檢舉此對話嗎?","requested_permissions":"重新請求","save_attachment":"儲存","search_for_contacts":"使用搜尋來尋找聯絡人","search_no_results":"搜尋無結果","search_placeholder":"例如 email:alice@example.com, tel:17025550003... 的清單","sidepanel_title_acc_notifications":"通知","sidepanel_title_acc_support":"支援","sidepanel_title_account_settings":"帳號設定","sidepanel_title_archive":"已封存的對話","sidepanel_title_blocked":"已封鎖的對話","sidepanel_title_cred":"確認認證","sidepanel_title_login":"登入","sidepanel_title_newtpk":"開始新對話","sidepanel_title_register":"建立帳號","sidepanel_title_reset":"重設密碼","sidepanel_title_settings":"設定","stay_logged_in":"保持登入","tabtitle_find_user":"尋找","tabtitle_group_by_id":"以 id","tabtitle_new_group":"新群組","tags_editor_no_tags":"新增一些標籤","tags_not_found":"未定義任何標籤。請新增一些標籤。","title_all_contacts":"所有聯絡人","title_group_members":"群組成員","title_manage_tags":"管理","title_not_found":"找不到","title_permissions":"權限","title_tag_manager":"標籤 (使用者探索)","topic_block_warning":"您確定要封鎖此對話嗎?","topic_delete_warning":"您確定要刪除此對話嗎?","topic_name_editing_placeholder":"群組的任意名稱","unnamed_topic":"未命名","update_available":"有可用的更新。","upload_finishing":"正在完成...","user_not_found":"找不到","validate_credential_action":"確認","description_editing_placeholder":"說明(可選)","label_description":"說明","button_security":"安全性","panel_title_crop":"拖動調整","panel_title_general":"一般","panel_title_members":"成員","panel_title_security":"安全性","panel_title_info":"資訊","permissions_anonymous":"匿名","permissions_authenticated":"已認證","topic_delete":"刪除聊天","permissions_user":"用戶權限","password_reset_email_sent":"一封電子郵件已發送至 {email}。按照電子郵件中的說明重置密碼。","label_unarchive_topic":"存檔聊天:","menu_item_reply":"回答","menu_item_forward":"重定向","forward_to":"重定向消息","forward_to_search_placeholder":"搜索聯繫人","label_new_password":"新密碼","drafty_unknown":"不支持","preview_unavailable":"不可用"},"zh":{"action_block_contact":"屏蔽联系人","action_cancel":"取消","action_clear_messages":"删除讯息","action_delete_messages":"删除所有帖子","action_leave_chat":"离开","action_report_chat":"检举垃圾邮件","archived_contacts":"已归档联系人 ({count})","badge_danger":"可疑的","badge_owner":"所有者","badge_staff":"在员工管理下","badge_verified":"值得信赖","badge_you":"你","block_contact_warning":"您确定要阻止此联系人吗?","blocked_contacts_link":"封锁的联络人 ({count})","button_add_another":"加上另一个","button_add_members":"添加成员","button_cancel":"取消","button_confirm":"确认","button_create":"创建","button_delete_account":"删除帐户","button_edit":"编辑","button_logout":"登出","button_ok":"好","button_reset":"重置","button_send_request":"发送请求","button_sign_in":"登录","button_sign_up":"注册","button_subscribe":"订阅","button_update":"更新","cannot_initiate_file_upload":"无法初始化文件上传。","channel":"频道","channel_prompt":"这是一个频道","chat_invitation":"你受邀开始新会话。你想怎么做?","chat_invitation_accept":"接受","chat_invitation_block":"屏蔽","chat_invitation_ignore":"忽略","clear_messages_warning":"您确定要清除所有消息吗?无法撤消。","code_doesnot_match":"代码不匹配","contacts_not_found":"你尚无会话 ¯∖_(ツ)_/¯","contacts_not_found_short":"无联系人匹配\'\'{query}\'\'","credential_email_prompt":"你的注册邮箱","delete_account":"删除帐户","delete_account_warning":"您确定要删除您的帐户吗?无法撤消。","delete_messages_warning":"您确定要删除所有消息吗?无法撤消。","deleted_content":"内容已删除","download_action":"下载","drafty_attachment":"附件","drafty_form":"形式:","drafty_image":"图像","email_dative":"电子邮件","email_prompt":"电子邮件,例如 zhang@example.com","enable_peers_messaging":"启用","enter_confirmation_code_prompt":"输入通过{method}发送的验证码:","error_invalid_id":"无效 ID","file_attachment_too_large":"文件大小 {size} 超过 {limit} 限制。","forgot_password_link":"忘记密码?","full_name_prompt":"全名,例如张伟","granted_permissions":"已授予","group_has_no_members":"无成员","group_user_id_prompt":"群组或用户 ID","image_caption_prompt":"图片标题","invalid_content":"无效内容","invalid_security_token":"无效的安全令牌","label_client":"客户端:","label_content_type":"内容类型:","label_default_access_mode":"蓦然访问模式:","label_file_name":"文件名:","label_group_members":"群组成员:","label_incognito_mode":"无痕模式:","label_message_sound":"消息提示音:","label_muting_topic":"已静音:","label_other_user":"其他","label_password":"密码","label_permissions":"权限:","label_private":"私人评论","label_push_notifications":"通知提醒:","label_push_notifications_disabled":"通知提醒(需要 HTTPS):","label_reset_password":"发送密码重置邮件:","label_sdk":"开发包:","label_server":"服务器:","label_server_address":"服务器地址:","label_server_to_use":"使用的服务器:","label_size":"大小:","label_topic_name":"名称","label_user_contacts":"往来:","label_user_id":"地址:","label_wire_transport":"线路传输:","label_you":"你:","label_your_name":"你的姓名","label_your_permissions":"你的权限:","last_seen_timestamp":"最后可见","leave_chat_warning":"您确定要退出此对话吗?","link_contact_us":"联系我们","link_privacy_policy":"隐私政策","link_terms_of_service":"条款和条件","login_prompt":"登录","menu_item_archive_topic":"归档","menu_item_block":"屏蔽","menu_item_clear_messages":"清空消息","menu_item_clear_messages_for_all":"全部清除","menu_item_delete":"删除","menu_item_delete_for_all":"全部删除","menu_item_delete_topic":"删除","menu_item_edit_permissions":"编辑权限","menu_item_info":"信息","menu_item_member_delete":"移除","menu_item_mute":"静音","menu_item_restore_topic":"从存档中恢复","menu_item_send_retry":"重试","menu_item_unblock":"取消屏蔽","menu_item_unmute":"取消静音","message_sending":"正在发送...","message_sending_failed":"发送失败","messages_not_readable":"无消息访问权限","messaging_disabled_prompt":"消息已禁用","more_online_members":"还有{overflow}个","new_message_prompt":"新消息","new_password_placeholder":"输入新密码","no_connection":"无连接","no_contacts":"你尚无联系人 (._.)","numeric_confirmation_code_prompt":"仅数字","online_now":"在线","password_prompt":"密码","password_unchanged_prompt":"未改变","peers_messaging_disabled":"成员间消息已禁用。","permission_admin":"批准 ({val})","permission_delete":"删除 ({val})","permission_join":"加入 ({val})","permission_owner":"所有者 ({val})","permission_pres":"获取通知 ({val})","permission_read":"读取 ({val})","permission_share":"分享 ({val})","permission_write":"写入 ({val})","phone_dative":"电话","private_editing_placeholder":"仅自己可见","push_init_failed":"初始化推送通知失败","reconnect_countdown":"连接已断开。{seconds} 秒后重新连接…","reconnect_now":"立即尝试","reload_update":"重新载入","report_chat_warning":"您确定要停止并报告此对话吗?","requested_permissions":"已请求","save_attachment":"保存","search_for_contacts":"使用搜索寻找联系人","search_no_results":"搜索返回任何结果","search_placeholder":"列表如 email:alice@example.com, tel:+17025550003...","sidepanel_title_acc_notifications":"通知","sidepanel_title_acc_support":"支持","sidepanel_title_account_settings":"帐号设定","sidepanel_title_archive":"已存档会话","sidepanel_title_blocked":"被阻止的聊天","sidepanel_title_cred":"确认凭据","sidepanel_title_login":"登录","sidepanel_title_newtpk":"开始新会话","sidepanel_title_register":"创建账户","sidepanel_title_reset":"重置密码","sidepanel_title_settings":"设置","stay_logged_in":"保持登录","tabtitle_find_user":"搜索","tabtitle_group_by_id":"通过 id","tabtitle_new_group":"新群组","tags_editor_no_tags":"添加一些标签","tags_not_found":"尚未定义标签。添加一些。","title_all_contacts":"全部联系人","title_group_members":"群组成员","title_manage_tags":"管理标签","title_not_found":"无法找到","title_permissions":"权限","title_tag_manager":"标签(用户发现)","topic_block_warning":"您确定要阻止此对话吗?","topic_delete_warning":"您确定要删除此对话吗?","topic_name_editing_placeholder":"群组自由格式名称","unnamed_topic":"未命名","update_available":"更新可用。","upload_finishing":"正在结束...","user_not_found":"未找到","validate_credential_action":"确认","description_editing_placeholder":"说明(可选)","label_description":"说明","button_security":"安全","panel_title_crop":"拖动调整","panel_title_general":"常用设定","panel_title_members":"成员","panel_title_security":"安全","panel_title_info":"信息","permissions_anonymous":"匿名","permissions_authenticated":"已认证","topic_delete":"删除聊天","permissions_user":"用户权限","password_reset_email_sent":"一封电子邮件已发送至 {email}。按照电子邮件中的说明重置密码。","label_unarchive_topic":"存档:","menu_item_reply":"回复","menu_item_forward":"重定向","forward_to":"重定向消息","forward_to_search_placeholder":"搜索联系人","label_new_password":"新密码","drafty_unknown":"不支持","preview_unavailable":"不可用"}}');
+module.exports = JSON.parse('{"de":{"action_block_contact":"Kontakt blockieren","action_cancel":"Abbrechen","action_clear_messages":"Nachrichten leeren","action_delete_messages":"Nachrichten für alle löschen","action_leave_chat":"Unterhaltung verlassen","action_report_chat":"Unterhaltung melden","archived_contacts":"Archivierte Kontakte ({count})","badge_danger":"Verdächtig","badge_owner":"Besitzer","badge_staff":"Verwaltung","badge_verified":"Verifiziert","badge_you":"Sie","block_contact_warning":"Möchten Sie diesen Kontakt wirklich blockieren?","blocked_contacts_link":"Blockierte Kontakte ({count})","button_add_another":"Hinzufügen","button_add_members":"Mitglieder hinzufügen","button_cancel":"Abbrechen","button_confirm":"Bestätigen","button_create":"Erstellen","button_delete_account":"Konto löschen","button_edit":"Bearbeiten","button_logout":"Abmelden","button_ok":"OK","button_reset":"Zurücksetzen","button_send_request":"Anfrage senden","button_sign_in":"Anmelden","button_sign_up":"Anmelden","button_subscribe":"Abbonieren","button_update":"Aktualisieren","cannot_initiate_file_upload":"Datei kann nicht hochgeladen werden.","channel":"Sender","channel_prompt":"Dies ist ein Sender","chat_invitation":"Sie sind eingeladen, an einem neuen Chat teilzunehmen. Was möchten Sie tun?","chat_invitation_accept":"Akzeptieren","chat_invitation_block":"Blockieren","chat_invitation_ignore":"Ignorieren","clear_messages_warning":"Sind Sie sicher, dass Sie diese Unterhaltung für alle leeren wollen? Das kann nicht rückgängig gemacht werden.","code_doesnot_match":"Code stimmt nicht überein","contacts_not_found":"Sie haben keine Unterhaltungen ¯∖_(ツ)_/¯","contacts_not_found_short":"Keine Kontakte für \'\'{query}\'\'","credential_email_prompt":"E-Mail Adresse für Registrierung","delete_account":"Konto löschen","delete_account_warning":"Möchten Sie das Konto wirklich löschen? Das kann nicht rückgängig gemacht werden","delete_messages_warning":"Sind Sie sicher, dass Sie diese Unterhaltung für alle löschen wollen? Das kann nicht rückgängig gemacht werden.","deleted_content":"Inhalt gelöscht","download_action":"herunterladen","drafty_attachment":"Dateianhang","drafty_form":"Formular:","drafty_image":"Bild","email_dative":"E-Mail","email_prompt":"E-Mail, z.B. lisam@beispiel.de","enable_peers_messaging":"Aktivieren","enter_confirmation_code_prompt":"Geben Sie den Bestätigungscode ein, der per {method} geschickt wurde:","error_invalid_id":"ungültige ID","file_attachment_too_large":"Die Dateigröße {size} überschreitet das Limit von {limit}.","forgot_password_link":"Passwort vergessen?","full_name_prompt":"Vollständiger Name, z.B. Lisa Musterfrau","granted_permissions":"Erteilt","group_has_no_members":"Keine Mitglieder","group_user_id_prompt":"Gruppe oder Benutzer ID","image_caption_prompt":"Bildunterschrift","invalid_content":"ungültiger Inhalt","invalid_security_token":"Ungültiger Sicherheitsschlüssel","label_client":"Client:","label_content_type":"Inhaltsart:","label_default_access_mode":"Standard Zugriffsmodus:","label_file_name":"Dateiname:","label_group_members":"Gruppenmitglieder:","label_incognito_mode":"inkognito-Modus:","label_message_sound":"Benachrichtigungston:","label_muting_topic":"Stumm geschaltet:","label_other_user":"Andere","label_password":"Passwort","label_permissions":"Berechtigungen:","label_private":"Privater Kommentar","label_push_notifications":"Benachrichtigungsmeldungen:","label_push_notifications_disabled":"Benachrichtigungsmeldungen (erfordert HTTPS):","label_reset_password":"Passwort per E-Mail wiederherstellen:","label_sdk":"SDK:","label_server":"Server:","label_server_address":"Server Adresse:","label_server_to_use":"Server verwenden:","label_size":"Größe:","label_topic_name":"Name","label_user_contacts":"Kontakte:","label_user_id":"ID:","label_wire_transport":"Übertragung per Kabel:","label_you":"Sie:","label_your_name":"Ihr Name","label_your_permissions":"Ihre Berechtigungen:","last_seen_timestamp":"Zuletzt gesehen","leave_chat_warning":"Möchten Sie diese Unterhaltung wirklich verlassen?","link_contact_us":"Kontakt","link_privacy_policy":"Datenschutzerklärung","link_terms_of_service":"Nutzungsbedingungen","login_prompt":"Anmelden","menu_item_archive_topic":"Archivieren","menu_item_block":"Blockieren","menu_item_clear_messages":"Nachrichten leeren","menu_item_clear_messages_for_all":"Für alle leeren","menu_item_delete":"Löschen","menu_item_delete_for_all":"Für alle löschen","menu_item_delete_topic":"Entfernen","menu_item_edit_permissions":"Berechtigungen ändern","menu_item_info":"Info","menu_item_member_delete":"Entfernen","menu_item_mute":"Unterhaltung stumm schalten","menu_item_restore_topic":"Wiederherstellen","menu_item_send_retry":"Wiederholen","menu_item_unblock":"Blockierung aufheben","menu_item_unmute":"Stumm schalten beenden","message_sending":"wird gesendet...","message_sending_failed":"fehlgeschlagen","messages_not_readable":"Neue Nachrichten können nicht gelesen werden","messaging_disabled_prompt":"Nachrichtenübermittlung deaktiviert","more_online_members":"+{overflow} mehr","new_message_prompt":"Neue Nachricht","new_password_placeholder":"Geben Sie ein neues Passwort ein","no_connection":"Keine Verbindung","no_contacts":"Sie haben keine Kontakte :-(","numeric_confirmation_code_prompt":"Nur zahlen","online_now":"jetzt online","password_prompt":"Passwort","password_unchanged_prompt":"unverändert","peers_messaging_disabled":"Gruppennachrichten sind deaktiviert","permission_admin":"Bestätigen ({val})","permission_delete":"Entfernen ({val})","permission_join":"Beitreten ({val})","permission_owner":"Besitzer ({val})","permission_pres":"Benachrichtigt werden ({val})","permission_read":"Lesen ({val})","permission_share":"Teilen ({val})","permission_write":"Schreiben ({val})","phone_dative":"Telefon","private_editing_placeholder":"Nur für Sie sichtbar","push_init_failed":"Initialisierung von Push-Benachrichtigungen fehlgeschlagen","reconnect_countdown":"Getrennt. Wiederverbinden in {seconds}…","reconnect_now":"Jetzt probieren","reload_update":"Neu laden","report_chat_warning":"Möchten Sie diese Unterhaltung wirklich blockieren und melden?","requested_permissions":"Angefordert","save_attachment":"Speichern","search_for_contacts":"Nutzen Sie die Suche um Kontakte zu finden","search_no_results":"Die Suche hatte keine Ergebnisse","search_placeholder":"Liste: email:lisa@beispiel.de, tel:17025550003...","sidepanel_title_acc_notifications":"Benachrichtigungen","sidepanel_title_acc_support":"Unterstützung","sidepanel_title_account_settings":"Konto-Einstellungen","sidepanel_title_archive":"Archivierte Unterhaltungen","sidepanel_title_blocked":"Blockierte Unterhaltungen","sidepanel_title_cred":"Anmeldeinformationen bestätigen","sidepanel_title_login":"Anmelden","sidepanel_title_newtpk":"Neue Unterhaltung starten","sidepanel_title_register":"Konto erstellen","sidepanel_title_reset":"Passwort zurücksetzen","sidepanel_title_settings":"Einstellungen","stay_logged_in":"Angemeldet bleiben","tabtitle_find_user":"Suchen","tabtitle_group_by_id":"nach ID","tabtitle_new_group":"Neue Gruppe","tags_editor_no_tags":"Schlagworte hinzufügen","tags_not_found":"Keine Schlagworte definiert. Erstellen Sie welche.","title_all_contacts":"Alle Kontakte","title_group_members":"Gruppenmitglieder","panel_title_info":"Info","title_manage_tags":"Verwalten","title_not_found":"Nicht gefunden","title_permissions":"Berechtigungen","title_tag_manager":"Schlagworte (Nutzer entdecken)","topic_block_warning":"Möchten Sie diese Unterhaltung wirklich blockieren?","topic_delete_warning":"Möchten Sie diese Unterhaltung wirklich löschen?","topic_name_editing_placeholder":"Freiform Name der Gruppe","unnamed_topic":"Unbenannt","update_available":"Aktualisierung verfügbar.","upload_finishing":"wird abgeschlossen...","user_not_found":"Nicht gefunden","validate_credential_action":"bestätigen","description_editing_placeholder":"Beschreibung (optional)","label_description":"Beschreibung","button_security":"Sicherheit","panel_title_general":"Allgemein","panel_title_security":"Sicherheit","panel_title_crop":"Zum Anpassen ziehen","panel_title_members":"Mitglieder","permissions_anonymous":"Anonym","permissions_authenticated":"Authentifiziert","topic_delete":"Chat löschen","permissions_user":"Benutzerberechtigungen","password_reset_email_sent":"Eine E-Mail wurde an {email} gesendet. Folgen Sie den Anweisungen in der E-Mail, um Ihr Passwort zurückzusetzen.","label_unarchive_topic":"Archiviert:","menu_item_reply":"Antwort","menu_item_forward":"Nach vorne","forward_to":"Weiterleiten","forward_to_search_placeholder":"Kontakte durchsuchen","label_new_password":"Neues Kennwort","drafty_unknown":"Nicht unterstützt"},"en":{"action_block_contact":"Block Contact","action_cancel":"cancel","action_clear_messages":"Clear Messages","action_delete_messages":"Clear Messages for All","action_leave_chat":"Leave Conversation","action_report_chat":"Report Conversation","archived_contacts":"Archived contacts ({count})","badge_danger":"Untrustworthy","badge_owner":"owner","badge_staff":"Staff-managed","badge_verified":"Verified/official","badge_you":"you","block_contact_warning":"Are you sure you want to block this contact?","blocked_contacts_link":"Blocked contacts ({count})","button_add_another":"Add another","button_add_members":"Add members","button_cancel":"Cancel","button_confirm":"Confirm","button_create":"Create","button_delete_account":"Delete account","button_edit":"Edit","button_logout":"Logout","button_ok":"OK","button_reset":"Reset","button_send_request":"Send request","button_sign_in":"Sign in","button_sign_up":"Sign up","button_subscribe":"Subscribe","button_update":"Update","cannot_initiate_file_upload":"Cannot initiate file upload.","channel":"channel","channel_prompt":"This is a channel","chat_invitation":"You are invited to start a new chat. What would you like to do?","chat_invitation_accept":"Accept","chat_invitation_block":"Block","chat_invitation_ignore":"Ignore","clear_messages_warning":"Are you sure you want to clear all messages? It cannot be undone.","code_doesnot_match":"Code does not match","contacts_not_found":"You have no chats ¯∖_(ツ)_/¯","contacts_not_found_short":"No contacts match \'\'{query}\'\'","credential_email_prompt":"Your registration email","delete_account":"Delete account","delete_account_warning":"Are you sure you want to delete your account? It cannot be undone.","delete_messages_warning":"Are you sure you want to delete all messages for everyone? It cannot be undone.","deleted_content":"content deleted","download_action":"download","drafty_attachment":"Attachment","drafty_form":"Form:","drafty_image":"Picture","email_dative":"email","email_prompt":"Email, e.g. jdoe@example.com","enable_peers_messaging":"Enable","enter_confirmation_code_prompt":"Enter confirmation code sent to you by {method}:","error_invalid_id":"Invalid ID","file_attachment_too_large":"The file size {size} exceeds the {limit} limit.","forgot_password_link":"Forgot password?","full_name_prompt":"Full name, e.g. John Doe","granted_permissions":"Granted","group_has_no_members":"No members","group_user_id_prompt":"Group or User ID","image_caption_prompt":"Image caption","invalid_content":"invalid content","invalid_security_token":"Invalid security token","label_client":"Client:","label_content_type":"Content type:","label_default_access_mode":"Default access mode:","label_file_name":"File name:","label_group_members":"Group members:","label_incognito_mode":"Incognito mode:","label_message_sound":"Message sound:","label_muting_topic":"Muted:","label_other_user":"Other","label_password":"Password","label_permissions":"Permissions:","label_private":"Private comment","label_push_notifications":"Notification alerts:","label_push_notifications_disabled":"Notification alerts (requires HTTPS):","label_reset_password":"Send a password reset email:","label_sdk":"SDK:","label_server":"Server:","label_server_address":"Server address:","label_server_to_use":"Server to use:","label_size":"Size:","label_topic_name":"Name","label_user_contacts":"Contacts:","label_user_id":"ID:","label_wire_transport":"Wire transport:","label_you":"You:","label_your_name":"Your name","label_your_permissions":"Your permissions:","last_seen_timestamp":"Last seen","leave_chat_warning":"Are you sure you want to leave this conversation?","link_contact_us":"Contact Us","link_privacy_policy":"Privacy Policy","link_terms_of_service":"Terms of Service","login_prompt":"Login","menu_item_archive_topic":"Archive","menu_item_block":"Block","menu_item_clear_messages":"Clear messages","menu_item_clear_messages_for_all":"Clear for All","menu_item_delete":"Delete","menu_item_delete_for_all":"Delete for All","menu_item_delete_topic":"Delete","menu_item_edit_permissions":"Edit permissions","menu_item_info":"Info","menu_item_member_delete":"Remove","menu_item_mute":"Mute","menu_item_reply":"Reply","menu_item_restore_topic":"Restore","menu_item_send_retry":"Retry","menu_item_unblock":"Unblock","menu_item_unmute":"Unmute","message_sending":"sending...","message_sending_failed":"failed","messages_not_readable":"no access to messages","messaging_disabled_prompt":"Messaging disabled","more_online_members":"+{overflow} more","new_message_prompt":"New message","new_password_placeholder":"Enter new password","no_connection":"No connection","no_contacts":"You have no contacts :-(","numeric_confirmation_code_prompt":"Numbers only","online_now":"online now","password_prompt":"Password","password_unchanged_prompt":"Unchanged","peers_messaging_disabled":"Peer\'s messaging is disabled.","permission_admin":"Approve ({val})","permission_delete":"Delete ({val})","permission_join":"Join ({val})","permission_owner":"Owner ({val})","permission_pres":"Get notified ({val})","permission_read":"Read ({val})","permission_share":"Share ({val})","permission_write":"Write ({val})","phone_dative":"phone","private_editing_placeholder":"Visible to you only","push_init_failed":"Failed to initialize push notifications","reconnect_countdown":"Disconnected. Reconnecting in {seconds}…","reconnect_now":"Try now","reload_update":"Reload","report_chat_warning":"Are you sure you want to block and report this conversation?","requested_permissions":"Requested","save_attachment":"save","search_for_contacts":"Use search to find contacts","search_no_results":"Search returned no results","search_placeholder":"List like email:alice@example.com, tel:17025550003...","sidepanel_title_acc_notifications":"Notifications","sidepanel_title_acc_support":"Support","sidepanel_title_account_settings":"Account Settings","sidepanel_title_archive":"Archived Chats","sidepanel_title_blocked":"Blocked Chats","sidepanel_title_cred":"Confirm Credentials","sidepanel_title_login":"Sign In","sidepanel_title_newtpk":"Start New Chat","sidepanel_title_register":"Create Account","sidepanel_title_reset":"Reset Password","sidepanel_title_settings":"Settings","stay_logged_in":"Stay logged in","tabtitle_find_user":"find","tabtitle_group_by_id":"by id","tabtitle_new_group":"new group","tags_editor_no_tags":"Add some tags","tags_not_found":"No tags defined. Add some.","title_all_contacts":"All Contacts","title_group_members":"Group Members","title_manage_tags":"Manage","title_not_found":"Not found","title_permissions":"Permissions","title_tag_manager":"Tags (search & discovery)","topic_block_warning":"Are you sure you want to block this conversation?","topic_delete_warning":"Are you sure you want to delete this conversation?","topic_name_editing_placeholder":"Freeform name of the group","unnamed_topic":"Unnamed","update_available":"Update available.","upload_finishing":"finishing...","user_not_found":"Not found","validate_credential_action":"confirm","description_editing_placeholder":"Optional description","label_description":"Description","button_security":"Security","panel_title_crop":"Drag to Adjust","panel_title_general":"General","panel_title_members":"Members","panel_title_security":"Security","panel_title_info":"Info","permissions_anonymous":"Anonymous","permissions_authenticated":"Authenticated","topic_delete":"Delete Conversation","permissions_user":"User\'s Permissions","password_reset_email_sent":"An email has been sent to {email}. Follow the directions in the email to reset your password.","label_unarchive_topic":"Archived:","menu_item_forward":"Forward","forward_to":"Forward to","forward_to_search_placeholder":"Search contacts","label_new_password":"New password","drafty_unknown":"Unsupported","calls_incoming":"Incoming Call","calls_incoming_title":"Incoming Call","calls_outgoing":"Outgoing Call","calls_you_label":"You","menu_item_video_call":"Video Call"},"es":{"action_block_contact":"Bloquear contacto","action_cancel":"cancelar","action_clear_messages":"Borrar mensajes","action_delete_messages":"Borrar mensajes para todos","action_leave_chat":"Dejar conversación","action_report_chat":"Reportar conversación","archived_contacts":"Contactos archivados ({count})","badge_danger":"Suspicaz","badge_owner":"propietario","badge_staff":"Administración","badge_verified":"Verificado","badge_you":"tú","block_contact_warning":"¿Estás seguro de que quieres bloquear a este contacto?","blocked_contacts_link":"Contactos bloqueados ({count})","button_add_another":"Añadir contacto","button_add_members":"Añadir miembros","button_cancel":"Cancelar","button_confirm":"Confirmar","button_create":"Crear","button_delete_account":"Eliminar cuenta","button_edit":"Editar","button_logout":"Cerrar sesión","button_ok":"OK","button_reset":"Restablecer","button_send_request":"Enviar petición","button_sign_in":"Entrar","button_sign_up":"Regístrate","button_subscribe":"Suscribirse","button_update":"Actualizar","cannot_initiate_file_upload":"No se pudo iniciar la carga del archivo.","channel":"canal","channel_prompt":"Este es un canal","chat_invitation":"Estás invitado a participar en un nuevo chat. ¿Qué te gustaría hacer?","chat_invitation_accept":"Aceptar","chat_invitation_block":"Bloquear","chat_invitation_ignore":"Ignorar","clear_messages_warning":"¿Estás seguro de que quieres eliminar todos los mensajes? Esta acción es irreversible.","code_doesnot_match":"El código no coincide","contacts_not_found":"No tienes chats ¯∖_(ツ)_/¯","contacts_not_found_short":"Ningún contacto coincide con \'\'{query}\'\'","credential_email_prompt":"Tu correo electrónico de registro","delete_account":"Eliminar cuenta","delete_account_warning":"¿Estás seguro de que deseas eliminar permanentemente tu cuenta? Esta acción es irreversible.","delete_messages_warning":"¿Estás seguro de que quieres eliminar todos los mensajes para todos? Esta acción es irreversible.","deleted_content":"este mensaje fue eliminado","download_action":"descargar","drafty_attachment":"Archivo","drafty_form":"Formulario:","drafty_image":"Imagen","email_dative":"correo electrónico","email_prompt":"Correo electrónico, p.ej. juan@example.com","enable_peers_messaging":"Habilitar","enter_confirmation_code_prompt":"Introduzca el código de confirmación enviado a tu {method}:","error_invalid_id":"ID inválido","file_attachment_too_large":"El tamaño del archivo {size} excede el límite de {limit}.","forgot_password_link":"¿Olvidaste tu contraseña?","full_name_prompt":"Nombre completo, p.ej. Juan González Hernández","granted_permissions":"Otorgados","group_has_no_members":"No hay miembros","group_user_id_prompt":"ID del grupo o usuario","image_caption_prompt":"Añade un comentario","invalid_content":"contenido inválido","invalid_security_token":"Token de seguridad inválido","label_client":"Cliente:","label_content_type":"Tipo de contenido:","label_default_access_mode":"Modo de acceso predeterminado:","label_file_name":"Nombre del archivo:","label_group_members":"Miembros del grupo:","label_incognito_mode":"Modo incógnito:","label_message_sound":"Sonido de mensaje:","label_muting_topic":"Silenciado:","label_other_user":"Otros","label_password":"Contraseña","label_permissions":"Permisos:","label_private":"Comentario privado","label_push_notifications":"Alertas de notificaciones:","label_push_notifications_disabled":"Alertas de notificaciones (requiere HTTPS):","label_reset_password":"Enviar un correo electrónico de restablecimiento de contraseña:","label_sdk":"SDK:","label_server":"Servidor:","label_server_address":"Dirección del servidor:","label_server_to_use":"Servidor para usar:","label_size":"Tamaño:","label_topic_name":"Nombre del tema","label_user_contacts":"Contactos:","label_user_id":"ID:","label_wire_transport":"Transporte de alambre:","label_you":"Tú:","label_your_name":"Tu nombre","label_your_permissions":"Tus permisos:","last_seen_timestamp":"Últ. vez","leave_chat_warning":"¿Estás seguro de que quieres dejar esta conversación?","link_contact_us":"Contáctanos","link_privacy_policy":"Política de privacidad","link_terms_of_service":"Términos de uso","login_prompt":"Nombre de usuario","menu_item_archive_topic":"Archivar","menu_item_block":"Bloquear","menu_item_clear_messages":"Borrar mensajes","menu_item_clear_messages_for_all":"Borrar para todos","menu_item_delete":"Eliminar","menu_item_delete_for_all":"Eliminar para todos","menu_item_delete_topic":"Eliminar","menu_item_edit_permissions":"Editar permisos","menu_item_info":"Información","menu_item_member_delete":"Eliminar","menu_item_mute":"Silenciar","menu_item_restore_topic":"Restaurar","menu_item_send_retry":"Inténtalo de nuevo","menu_item_unblock":"Desbloquear","menu_item_unmute":"Anular el silencio","message_sending":"enviando...","message_sending_failed":"no se pudo enviar el mensaje","messages_not_readable":"sin acceso a mensajes","messaging_disabled_prompt":"El envío de mensajes está deshabilitado","more_online_members":"+{overflow} más","new_message_prompt":"Nuevo mensaje","new_password_placeholder":"Introduzca una nueva contraseña","no_connection":"Sin conexión","no_contacts":"No tienes contactos :-(","numeric_confirmation_code_prompt":"Sólo números","online_now":"en línea","password_prompt":"Contraseña","password_unchanged_prompt":"Sin cambios","peers_messaging_disabled":"La mensajería Peer está deshabilitada.","permission_admin":"Approbar ({val})","permission_delete":"Eliminar ({val})","permission_join":"Unirse ({val})","permission_owner":"Propietario ({val})","permission_pres":"Ser notificado ({val})","permission_read":"Leer ({val})","permission_share":"Compartir ({val})","permission_write":"Escribir ({val})","phone_dative":"teléfono","private_editing_placeholder":"Sólo visible para tí","push_init_failed":"Error al inicializar las notificaciones push","reconnect_countdown":"Desconectado. Reconectando en {seconds}…","reconnect_now":"Reintentar","reload_update":"Recargar","report_chat_warning":"¿Estás seguro de que quieres bloquear y reportar a esta conversación?","requested_permissions":"Solicitados","save_attachment":"guardar","search_for_contacts":"Usa la búsqueda para encontrar contactos","search_no_results":"La búsqueda no arrojó resultados","search_placeholder":"Ej. email:alice@example.com, tel:17025550003...","sidepanel_title_acc_notifications":"Notificaciones","sidepanel_title_acc_support":"Soporte","sidepanel_title_account_settings":"Ajustes de la cuenta","sidepanel_title_archive":"Chats archivados","sidepanel_title_blocked":"Chats bloqueados","sidepanel_title_cred":"Confirmar credenciales","sidepanel_title_login":"Iniciar sesión","sidepanel_title_newtpk":"Iniciar un nuevo chat","sidepanel_title_register":"Crear cuenta","sidepanel_title_reset":"Restablecer contraseña","sidepanel_title_settings":"Ajustes","stay_logged_in":"Permanecer conectado","tabtitle_find_user":"encontrar","tabtitle_group_by_id":"por ID","tabtitle_new_group":"nuevo grupo","tags_editor_no_tags":"Añadir etiquetas","tags_not_found":"No hay etiquetas definidas. Añade unas.","title_all_contacts":"Todos los contactos","title_group_members":"Miembros del grupo","title_manage_tags":"Gestionar","title_not_found":"No encontrado","title_permissions":"Permisos","title_tag_manager":"Etiquetas (descubrimiento de usuarios)","topic_block_warning":"¿Estás seguro de que quieres bloquear esta conversación","topic_delete_warning":"¿Estás seguro de que quieres eliminar esta conversación?","topic_name_editing_placeholder":"Nombre del grupo","unnamed_topic":"Sin nombre","update_available":"Actualización disponible.","upload_finishing":"terminando...","user_not_found":"Usuario no encontrado","validate_credential_action":"confirmar","description_editing_placeholder":"Descripción (opcional)","label_description":"Descripción","button_security":"Seguridad","panel_title_crop":"Arrastra para ajustar","panel_title_general":"General","panel_title_members":"Miembros","panel_title_security":"Seguridad","panel_title_info":"Información","permissions_anonymous":"Anónimo","permissions_authenticated":"Autenticado","topic_delete":"Eliminar chat","permissions_user":"Permisos del usuario","password_reset_email_sent":"Se ha enviado un correo electrónico a {email}. Siga las instrucciones del correo electrónico para restablecer su contraseña.","label_unarchive_topic":"Archivado:","menu_item_reply":"Respuesta","menu_item_forward":"Reenviar","forward_to":"Reenviar a","forward_to_search_placeholder":"Buscar contactos","label_new_password":"Nueva contraseña","drafty_unknown":"No soportado"},"ko":{"action_block_contact":"연락차단","action_cancel":"취소","action_clear_messages":"메시지지우기","action_delete_messages":"모든메시지지우기","action_leave_chat":"대화나누기","action_report_chat":"대화기록","archived_contacts":"보관된연락처({수})","badge_danger":"의심 많은","badge_owner":"소유자","badge_staff":"직원 관리하에","badge_verified":"확인 됨","badge_you":"당신","block_contact_warning":"이연락처를차단하시겠습니까?","blocked_contacts_link":"차단된연락처({수})","button_add_another":"다른항목추가","button_add_members":"회원추가","button_cancel":"취소","button_confirm":"확인","button_create":"작성","button_delete_account":"계정삭제","button_edit":"편집","button_logout":"로그아웃","button_ok":"OK","button_reset":"재설정","button_send_request":"요청보내기","button_sign_in":"로그인","button_sign_up":"가입","button_subscribe":"구독","button_update":"업데이트","cannot_initiate_file_upload":"파일업로드를시작할수없습니다.","channel":"채널","channel_prompt":"이 채널입니다","chat_invitation":"새로운대화를시작하도록초대되었습니다.무엇을하시겠습니까?","chat_invitation_accept":"수락","chat_invitation_block":"차단","chat_invitation_ignore":"무시","clear_messages_warning":"모든메시지를지우시겠습니까?실행취소할수없습니다.","code_doesnot_match":"코드가일치하지않습니다","contacts_not_found":"채팅이없습니다 ¯∖_(ツ)_/¯","contacts_not_found_short":"\'{문의}\'와일치하는연락처가없습니다.","credential_email_prompt":"등록이메일","delete_account":"계정삭제","delete_account_warning":"계정을삭제하시겠습니까?실행취소할수없습니다.","delete_messages_warning":"모든사람의모든메시지를삭제하시겠습니까?실행취소할수없습니다.","deleted_content":"내용이 삭제되었습니다","download_action":"다운로드","drafty_attachment":"부착","drafty_form":"형태:","drafty_image":"이미지","email_dative":"이메일","email_prompt":"이메일(예:hong@example.com)","enable_peers_messaging":"활성화","enter_confirmation_code_prompt":"{방법}으로보낸확인코드를입력하십시오:","error_invalid_id":"잘못된ID","file_attachment_too_large":"파일크기{크기}이(가){제한}제한을초과합니다.","forgot_password_link":"비밀번호를잊으셨습니까?","full_name_prompt":"전체이름(예:홍길동)","granted_permissions":"승낙하다","group_has_no_members":"회원없음","group_user_id_prompt":"그룹또는사용자ID","image_caption_prompt":"이미지설명","invalid_content":"잘못된내용","invalid_security_token":"유효하지않은보안토큰","label_client":"클라이언트: ","label_content_type":"컨텐츠유형: ","label_default_access_mode":"기본액세스모드: ","label_file_name":"파일이름: ","label_group_members":"그룹회원: ","label_incognito_mode":"시크릿모드: ","label_message_sound":"메시지소리: ","label_muting_topic":"음소거: ","label_other_user":"기타","label_password":"비밀번호","label_permissions":"권한: ","label_private":"개인코멘트","label_push_notifications":"통지경보: ","label_push_notifications_disabled":"통지경보(HTTPS필요): ","label_reset_password":"비밀번호재설정이메일보내기: ","label_sdk":"SDK:","label_server":"서버: ","label_server_address":"서버주소: ","label_server_to_use":"사용할서버:","label_size":"크기: ","label_topic_name":"이름","label_user_contacts":"연락처: ","label_user_id":"ID:","label_wire_transport":"와이어수송:","label_you":"당신: ","label_your_name":"이름","label_your_permissions":"권한: ","last_seen_timestamp":"마지막으로본","leave_chat_warning":"이대화를나가시겠습니까?","link_contact_us":"문의처","link_privacy_policy":"개인정보보호정책","link_terms_of_service":"서비스약관","login_prompt":"로그인","menu_item_archive_topic":"보관","menu_item_block":"차단","menu_item_clear_messages":"메시지지우기","menu_item_clear_messages_for_all":"모두지우기","menu_item_delete":"삭제","menu_item_delete_for_all":"모두삭제","menu_item_delete_topic":"삭제","menu_item_edit_permissions":"편집권한","menu_item_info":"정보","menu_item_member_delete":"제거","menu_item_mute":"음소거","menu_item_restore_topic":"복원","menu_item_send_retry":"다시시도","menu_item_unblock":"차단해제","menu_item_unmute":"음소거해제","message_sending":"보내기...","message_sending_failed":"실패","messages_not_readable":"메시지에 액세스 할 수 없습니다","messaging_disabled_prompt":"메시지비활성화","more_online_members":"+{넘침}더보기","new_message_prompt":"새메시지","new_password_placeholder":"새비밀번호입력","no_connection":"연결없음","no_contacts":"연락처가없습니다 (._.)","numeric_confirmation_code_prompt":"숫자만","online_now":"현재접속중","password_prompt":"비밀번호","password_unchanged_prompt":"변경되지않음","peers_messaging_disabled":"동료의메시지가비활성화되었습니다.","permission_admin":"승인({val})","permission_delete":"삭제({val})","permission_join":"참여({val})","permission_owner":"소유자({val})","permission_pres":"알림받기({val})","permission_read":"읽기({val})","permission_share":"공유({val})","permission_write":"쓰기({val})","phone_dative":"전화","private_editing_placeholder":"나만볼수있습니다","push_init_failed":"푸시알림을초기화하지못했습니다","reconnect_countdown":"연결이끊어졌습니다.다시연결하는중{초}…","reconnect_now":"지금시도","reload_update":"재로드","report_chat_warning":"이대화를차단하고기록하시겠습니까?","requested_permissions":"요청","save_attachment":"저장","search_for_contacts":"검색을사용하여연락처찾기","search_no_results":"검색결과가없습니다","search_placeholder":"email:alice@example.com,tel:17025550003...와같은목록","sidepanel_title_acc_notifications":"알림","sidepanel_title_acc_support":"지원","sidepanel_title_account_settings":"계정설정","sidepanel_title_archive":"보관된채팅","sidepanel_title_blocked":"차단된채팅","sidepanel_title_cred":"자격증명확인","sidepanel_title_login":"로그인","sidepanel_title_newtpk":"새채팅시작","sidepanel_title_register":"계정만들기","sidepanel_title_reset":"비밀번호재설정","sidepanel_title_settings":"설정","stay_logged_in":"로그인상태유지","tabtitle_find_user":"찾기","tabtitle_group_by_id":"id로","tabtitle_new_group":"새그룹","tags_editor_no_tags":"일부태그추가","tags_not_found":"태그가정의되지않았습니다.일부를추가하십시오.","title_all_contacts":"모든연락처","title_group_members":"그룹구성원","title_manage_tags":"관리","title_not_found":"찾을수없음","title_permissions":"권한","title_tag_manager":"태그(사용자검색)","topic_block_warning":"이대화를차단하시겠습니까?","topic_delete_warning":"이대화를삭제하시겠습니까?","topic_name_editing_placeholder":"그룹의자유형이름","unnamed_topic":"이름없는","update_available":"업데이트가능.","upload_finishing":"마무리...","user_not_found":"찾을수없음","validate_credential_action":"확인","description_editing_placeholder":"설명(선택 사항)","label_description":"설명","button_security":"보안","panel_title_crop":"드래그하여 조정","panel_title_general":"일반","panel_title_members":"구성원","panel_title_security":"보안","panel_title_info":"정보","permissions_anonymous":"익명","permissions_authenticated":"인증됨","topic_delete":"채팅 삭제","permissions_user":"사용자 권한","password_reset_email_sent":"이메일이 {email}(으)로 전송되었습니다. 이메일의 지침에 따라 비밀번호를 재설정하세요.","label_unarchive_topic":"보관됨:","menu_item_reply":"회신하다","menu_item_forward":"리디렉션","forward_to":"메시지를 리디렉션","forward_to_search_placeholder":"연락처 검색","label_new_password":"새 비밀번호","drafty_unknown":"지원되지 않음"},"ro":{"action_block_contact":"Blochează contact","action_cancel":"anulează","action_clear_messages":"Șterge mesajele","action_delete_messages":"Șterge toate mesajele","action_leave_chat":"Ieși din conversație","action_report_chat":"Raportează conversația","archived_contacts":"Contacte arhivate ({count})","badge_danger":"Suspicios","badge_owner":"owner","badge_staff":"Administrare","badge_verified":"Verificat","badge_you":"tu","block_contact_warning":"Ești sigur că dorești să blochezi acest contact?","blocked_contacts_link":"Contact blocate ({count})","button_add_another":"Adaugă","button_add_members":"Adaugă persoane","button_cancel":"Anulează","button_confirm":"Confirmă","button_create":"Creează","button_delete_account":"Șterge cont","button_edit":"Editează","button_logout":"Deconectare","button_ok":"OK","button_reset":"Resetează","button_send_request":"Trimite cerere","button_sign_in":"Conectează-te","button_sign_up":"Creează cont","button_subscribe":"Subscribe","button_update":"Actualizează","cannot_initiate_file_upload":"Nu se poate face încărcarea.","channel":"canal","channel_prompt":"Acesta este un canal","chat_invitation":"Ai primit invitație într-o conversație. Accepți?","chat_invitation_accept":"Da, accept","chat_invitation_block":"Blochează","chat_invitation_ignore":"Ignoră","clear_messages_warning":"Ești sigur că dorești să ștergi mesajele? Acestea nu pot fi recuperate.","code_doesnot_match":"Codul furnizat nu este valid","contacts_not_found":"Nu ai contacte salvate ¯∖_(ツ)_/¯","contacts_not_found_short":"Niciun contact găsit după criteriile \'\'{query}\'\'","credential_email_prompt":"Adresa de e-mail","delete_account":"Șterge contul","delete_account_warning":"Ești sigur că dorești să ștergi contul? Acesta nu va putea fi recuperat.","delete_messages_warning":"Ești sigur că dorești să șterge mesajele din toate conversațiile? Acestea nu pot fi recuperate.","deleted_content":"conținut șters","download_action":"download","drafty_attachment":"Atasament","drafty_form":"Formă:","drafty_image":"Imagine","email_dative":"email","email_prompt":"Adresa de e-mail","enable_peers_messaging":"Activează","enter_confirmation_code_prompt":"Introu codul de confirmare trimis pe {method}:","error_invalid_id":"ID Invalid","file_attachment_too_large":"Dimensiunea fișiterului {size} depășește limita de {limit}.","forgot_password_link":"Ți-ai uitat parola?","full_name_prompt":"Numele tău","granted_permissions":"Oferite","group_has_no_members":"În acest grup nu se află persoane","group_user_id_prompt":"Grup sau user ID","image_caption_prompt":"Titlul imaginii","invalid_content":"conținut invalid","invalid_security_token":"Codul de securitate este invalid","label_client":"Client:","label_content_type":"Tip conținut:","label_default_access_mode":"Default access mode:","label_file_name":"Nume fișier:","label_group_members":"Membrii grupului:","label_incognito_mode":"Mod incognito:","label_message_sound":"Sunet de mesaj:","label_muting_topic":"Mod silențios (muted):","label_other_user":"Altele","label_password":"Parola","label_permissions":"Permisiuni:","label_private":"Comentariu privat","label_push_notifications":"Alerte de notificare:","label_push_notifications_disabled":"Alerte de notificare (necesită HTTPS):","label_reset_password":"Resetează parola:","label_sdk":"SDK:","label_server":"Server:","label_server_address":"Adresa serverului:","label_server_to_use":"Server de utilizat:","label_size":"Size:","label_topic_name":"Nume","label_user_contacts":"Contacte:","label_user_id":"ID:","label_wire_transport":"Transportul legat:","label_you":"Tu:","label_your_name":"Numele tău","label_your_permissions":"Permisiuniile tale:","last_seen_timestamp":"Văzut ultima dată","leave_chat_warning":"Ești sigur că dorești să ieși din conersație?","link_contact_us":"Contactează-ne","link_privacy_policy":"Politica de Confidențialitate","link_terms_of_service":"Termenii Serviciului","login_prompt":"Conectează-te","menu_item_archive_topic":"Arhivează","menu_item_block":"Blochează","menu_item_clear_messages":"Șterge mesajele","menu_item_clear_messages_for_all":"Ștergele pe toate","menu_item_delete":"Șterge","menu_item_delete_for_all":"Ștergele pe toate","menu_item_delete_topic":"Șterge","menu_item_edit_permissions":"Editează permisiuni","menu_item_info":"Info","menu_item_member_delete":"Șterge persoană","menu_item_mute":"Mute","menu_item_restore_topic":"Restabili","menu_item_send_retry":"Reîncearcă","menu_item_unblock":"Deblochează","menu_item_unmute":"Unmute","message_sending":"se trimite...","message_sending_failed":"eroare","messages_not_readable":"Mesajele nu pot fi citite","messaging_disabled_prompt":"Mesageria este dezactivată","more_online_members":"+{overflow} mai mult","new_message_prompt":"Mesaj nou","new_password_placeholder":"Introdu parolă","no_connection":"Nu există conexiune","no_contacts":"Nu ai contacte adăugate :-(","numeric_confirmation_code_prompt":"Doar cifre","online_now":"online acum","password_prompt":"Parola","password_unchanged_prompt":"Neschimbată","peers_messaging_disabled":"Mesageria de tip Peer este dezactivată.","permission_admin":"Aprobare ({val})","permission_delete":"Ștergere ({val})","permission_join":"Participare ({val})","permission_owner":"Deținător ({val})","permission_pres":"Notificare ({val})","permission_read":"Citire ({val})","permission_share":"Distribuire ({val})","permission_write":"Scriere ({val})","phone_dative":"telefon","private_editing_placeholder":"Vizibil doar ție","push_init_failed":"Nu s-a reușit inițializarea tip push notifications","reconnect_countdown":"Deconectat. Se încearcă conectarea în {seconds}…","reconnect_now":"Încearcă din nou","reload_update":"Reîncarcă","report_chat_warning":"Ești sigur că dorești să blochezi și să raportezi această conversație?","requested_permissions":"Necesare","save_attachment":"salvează","search_for_contacts":"Caută în contacte","search_no_results":"Nu s-au găsit rezultate","search_placeholder":"Caută după e-mail sau număr telefon...","sidepanel_title_acc_notifications":"Notificări","sidepanel_title_acc_support":"Ajutor","sidepanel_title_account_settings":"Setările Contului","sidepanel_title_archive":"Conversații Arhivate","sidepanel_title_blocked":"Conversații Blocate","sidepanel_title_cred":"Confirmă credențiale","sidepanel_title_login":"Conectează-te","sidepanel_title_newtpk":"Creeză un nou Chat","sidepanel_title_register":"Creează Cont","sidepanel_title_reset":"Resetează Parola","sidepanel_title_settings":"Setări","stay_logged_in":"Rămâi conectat","tabtitle_find_user":"caută","tabtitle_group_by_id":"după id","tabtitle_new_group":"grup nou","tags_editor_no_tags":"Adaugă tag-uri","tags_not_found":"Niciun tag definit. Adaugă.","title_all_contacts":"Toate Contactele","title_group_members":"Persoanele din grup","title_manage_tags":"Administrează","title_not_found":"Nu a fost găsit","title_permissions":"Permisiuni","title_tag_manager":"Tag-uri (user discovery)","topic_block_warning":"Ești sigur că dorești să blochezi această conversație?","topic_delete_warning":"Ești sigur că dorești să șterge această conversație?","topic_name_editing_placeholder":"Numele grupului","unnamed_topic":"Nedenumit","update_available":"Actualizare disponibilă.","upload_finishing":"se încarcă...","user_not_found":"Utilizatorul nu a fost găsit","validate_credential_action":"confirmă","description_editing_placeholder":"Descriere (opțional)","label_description":"Descriere","button_security":"Securitate","panel_title_crop":"Trageți pentru a ajusta","panel_title_general":"Generale","panel_title_members":"Membri","panel_title_security":"Securitate","panel_title_info":"Info","permissions_anonymous":"Anonim","permissions_authenticated":"Autentificat","topic_delete":"Ștergeți Chat","permissions_user":"Permisiunile utilizatorului","password_reset_email_sent":"Un e-mail a fost trimis către {email}. Urmați instrucțiunile din e-mail pentru a vă reseta parola.","label_unarchive_topic":"Arhivat:","menu_item_reply":"A raspunde","menu_item_forward":"Redirecţiona","forward_to":"Redirecționați către","forward_to_search_placeholder":"Căutați contacte","label_new_password":"Parolă Nouă","drafty_unknown":"Neacceptat"},"ru":{"action_block_contact":"Заблокировать контакт","action_cancel":"отменить","action_clear_messages":"Удалить сообщения","action_delete_messages":"Удалить сообщения","action_leave_chat":"Уйти из чата","action_report_chat":"Сообщить о нарушении","archived_contacts":"Чаты в архиве ({count})","badge_danger":"Подозрительный","badge_owner":"влад.","badge_staff":"Администрация","badge_verified":"Верифицированный","badge_you":"вы","block_contact_warning":"Вы действительно заблокировать этот контакт?","blocked_contacts_link":"Заблокированные ({count})","button_add_another":"Добавить","button_add_members":"Добавить","button_cancel":"Отменить","button_confirm":"Подтвердить","button_create":"Создать","button_delete_account":"Удалить аккаунт","button_edit":"Редактировать","button_logout":"Выйти","button_ok":"OK","button_reset":"Изменить","button_send_request":"Отправить","button_sign_in":"Войти","button_sign_up":"Создать аккаунт","button_subscribe":"Подписаться","button_update":"Применить","cannot_initiate_file_upload":"Ошибка загрузки файла.","channel":"канал","channel_prompt":"Создать канал","chat_invitation":"Вас пригласили начать новый чат. Как вы хотите поступить?","chat_invitation_accept":"Принять","chat_invitation_block":"Заблокировать","chat_invitation_ignore":"Игнорировать","clear_messages_warning":"Вы действительно хотите удалить все сообщения в чате? Их будет невозможно восстановить.","code_doesnot_match":"Код не совпадает","contacts_not_found":"Чатов нет ¯∖_(ツ)_/¯","contacts_not_found_short":"Нет контактов для запроса \'\'{query}\'\'","credential_email_prompt":"Регистрационный емейл","delete_account":"Удалить аккаунт","delete_account_warning":"Вы уверены, что ходите удалить свой аккаунт? Его невозможно будет восстановить.","delete_messages_warning":"Вы действительно хотите удалить все сообщения?","deleted_content":"удалено","download_action":"скачать","drafty_attachment":"Аттачмент","drafty_form":"Форма:","drafty_image":"Картинка","email_dative":"емейлу","email_prompt":"Email, напр. ivan@example.com","enable_peers_messaging":"Разблокировать.","enter_confirmation_code_prompt":"Код подтверждения, полученный по {method}:","error_invalid_id":"Неверный ID","file_attachment_too_large":"Размер файла {size} превышает {limit} лимит.","forgot_password_link":"Напомнить пароль","full_name_prompt":"Полное имя, напр. Иван Петров","granted_permissions":"Получены","group_has_no_members":"Нет участников","group_user_id_prompt":"ID чата или пользователя","image_caption_prompt":"Подпись к фото","invalid_content":"сообщение не читается","invalid_security_token":"Токен некорректен","label_client":"Клиент:","label_content_type":"Тип:","label_default_access_mode":"Доступ по умолчанию:","label_file_name":"Имя файла:","label_group_members":"Участники чата:","label_incognito_mode":"Режим инкогнито:","label_message_sound":"Звук нового сообщения:","label_muting_topic":"Без уведомлений","label_other_user":"Второй","label_password":"Пароль","label_permissions":"Права доступа:","label_private":"Комментарий","label_push_notifications":"Уведомления:","label_push_notifications_disabled":"Уведомления (требуют HTTPS):","label_reset_password":"Отправить емейл для смены пароля:","label_sdk":"SDK:","label_server":"Сервер:","label_server_address":"Адрес сервера:","label_server_to_use":"Использовать сервер:","label_size":"Размер:","label_topic_name":"Название","label_user_contacts":"Конакты:","label_user_id":"ID:","label_wire_transport":"Соединение:","label_you":"Вы:","label_your_name":"Ваше имя","label_your_permissions":"Ваши права доступа:","last_seen_timestamp":"Был активен","leave_chat_warning":"Вы действительно хотите покинуть этот чат?","link_contact_us":"Связаться с нами","link_privacy_policy":"Политика конфиденциальности","link_terms_of_service":"Условия сервиса","login_prompt":"Логин","menu_item_archive_topic":"В архив","menu_item_block":"Заблокировать","menu_item_clear_messages":"Удалить сообщения","menu_item_clear_messages_for_all":"Удалить для всех","menu_item_delete":"Удалить","menu_item_delete_for_all":"Удалить для всех","menu_item_delete_topic":"Удалить чат","menu_item_edit_permissions":"Права доступа","menu_item_info":"Информация","menu_item_member_delete":"Отписать","menu_item_mute":"Не уведомлять","menu_item_restore_topic":"Разархивировать","menu_item_send_retry":"Отправить заново","menu_item_unblock":"Разблокировать","menu_item_unmute":"Уведомлять","message_sending":"в пути...","message_sending_failed":"ошибка","messages_not_readable":"нет доступа к сообщениям","messaging_disabled_prompt":"Отправка недоступна","more_online_members":"+еще {overflow}","new_message_prompt":"Новое сообщение","new_password_placeholder":"Введите новый пароль","no_connection":"Нет связи","no_contacts":"Ничего нет :-(","numeric_confirmation_code_prompt":"Только цифры","online_now":"онлайн","password_prompt":"Пароль","password_unchanged_prompt":"Не изменен","peers_messaging_disabled":"Чат заблокирован у корреспондента.","permission_admin":"Подтверждать ({val})","permission_delete":"Удалять ({val})","permission_join":"Подписываться ({val})","permission_owner":"Владелец ({val})","permission_pres":"Уведомлять ({val})","permission_read":"Читать ({val})","permission_share":"Приглашать ({val})","permission_write":"Писать ({val})","phone_dative":"телефону","private_editing_placeholder":"Виден только вам","push_init_failed":"Ошибка инициализации пуш уведомлений","reconnect_countdown":"Нет связи. Подключение через {seconds}…","reconnect_now":"Подключить сейчас.","reload_update":"Обновить","report_chat_warning":"Вы действительно хотите сообщить о нарушении и заблокировать этот чат?","requested_permissions":"Требуются","save_attachment":"сохранить","search_for_contacts":"Поиск контактов","search_no_results":"Ничего не найдено","search_placeholder":"Список, напр. email:alice@example.com, tel:+17025550003...","sidepanel_title_acc_notifications":"Уведомления","sidepanel_title_acc_support":"Поддержка","sidepanel_title_account_settings":"Настройки аккаунта","sidepanel_title_archive":"Архив чатов","sidepanel_title_blocked":"Заблокированные чаты","sidepanel_title_cred":"Подтвердить","sidepanel_title_login":"Авторизация","sidepanel_title_newtpk":"Новый чат","sidepanel_title_register":"Зарегистрироваться","sidepanel_title_reset":"Сменить пароль","sidepanel_title_settings":"Настройки","stay_logged_in":"Запомнить","tabtitle_find_user":"найти","tabtitle_group_by_id":"по id","tabtitle_new_group":"создать","tags_editor_no_tags":"Добавьте теги","tags_not_found":"Тегов нет. Добавьте","title_all_contacts":"Все контакты","title_group_members":"Участники","title_manage_tags":"Редактировать","title_not_found":"Не найден","title_permissions":"Права доступа","title_tag_manager":"Теги для поиска","topic_block_warning":"Вы действительно хотите заблокировать этот чат?","topic_delete_warning":"Вы действительно хотите удалить этот чат?","topic_name_editing_placeholder":"Название чата","unnamed_topic":"Без названия","update_available":"Есть новая версия приложения.","upload_finishing":"завершение...","user_not_found":"Не найден","validate_credential_action":"подтвердить","description_editing_placeholder":"Описание (не обязательно)","label_description":"Описание","button_security":"Безопасность","panel_title_crop":"Обрезать картинку","panel_title_general":"Общие настройки","panel_title_members":"Участники","panel_title_security":"Безопасность","panel_title_info":"Подробности","permissions_anonymous":"Анонимный","permissions_authenticated":"Авторизованный","topic_delete":"Удалить чат","permissions_user":"Права доступа","password_reset_email_sent":"Сообщение было отправлено на адрес {email}. Следуйте инструкциям в сообщении, чтобы изменить пароль.","label_unarchive_topic":"Архивирован:","menu_item_reply":"Ответить","menu_item_forward":"Переслать","forward_to":"Переслать","forward_to_search_placeholder":"Поиск контактов","label_new_password":"Новый пароль","drafty_unknown":"Не поддерживается"},"zh-TW":{"action_block_contact":"封鎖聯絡人","action_cancel":"取消","action_clear_messages":"清除訊息","action_delete_messages":"為所有人清除訊息","action_leave_chat":"離開對話","action_report_chat":"檢舉對話","archived_contacts":"已封存的聯絡人 ({count})","badge_danger":"不可信","badge_owner":"擁有者","badge_staff":"員工管理","badge_verified":"已驗證/官方","badge_you":"您","block_contact_warning":"您確定要封鎖此聯絡人嗎?","blocked_contacts_link":"已封鎖的聯絡人 ({count})","button_add_another":"新增其他人","button_add_members":"新增成員","button_cancel":"取消","button_confirm":"確認","button_create":"建立","button_delete_account":"刪除帳號","button_edit":"編輯","button_logout":"登出","button_ok":"OK","button_reset":"重設","button_send_request":"傳送要求","button_sign_in":"登入","button_sign_up":"註冊","button_subscribe":"訂閱","button_update":"更新","cannot_initiate_file_upload":"無法為檔案上傳初始化。","channel":"頻道","channel_prompt":"這是頻道","chat_invitation":"您已被邀請開始新對話。您接下來要做什麼呢?","chat_invitation_accept":"接受","chat_invitation_block":"封鎖","chat_invitation_ignore":"忽略","clear_messages_warning":"您確定要清除所有訊息嗎?此操作無法復原。","code_doesnot_match":"代碼不相符","contacts_not_found":"您沒有任何對話 ¯∖_(ツ)_/¯","contacts_not_found_short":"沒有符合 \'\'{query}\'\' 的聯絡人","credential_email_prompt":"您的註冊電子郵件地址","delete_account":"刪除帳號","delete_account_warning":"您確定要刪除您的帳戶嗎?此操作無法撤消。","delete_messages_warning":"您確定要為所有人刪除所有訊息嗎?此操作無法復原。","deleted_content":"內容已被刪除","download_action":"下載","drafty_attachment":"附加檔案","drafty_form":"表單:","drafty_image":"圖片","email_dative":"電子郵件地址","email_prompt":"電子郵件地址,例如:jdoe@example.com","enable_peers_messaging":"啟用","enter_confirmation_code_prompt":"輸入透過 {method} 傳送給您的確認碼:","error_invalid_id":"ID 無效","file_attachment_too_large":"檔案大小 {size} 超出 {limit} 限制。","forgot_password_link":"忘記密碼?","full_name_prompt":"全名,例如:王小明","granted_permissions":"已授權","group_has_no_members":"無成員","group_user_id_prompt":"群組或使用者 ID","image_caption_prompt":"圖片說明","invalid_content":"內容無效","invalid_security_token":"安全權杖無效","label_client":"客戶端:","label_content_type":"類型:","label_default_access_mode":"預設存取模式:","label_file_name":"檔名:","label_group_members":"群組成員:","label_incognito_mode":"無痕模式:","label_message_sound":"訊息提示聲:","label_muting_topic":"靜音:","label_other_user":"其他","label_password":"密碼","label_permissions":"權限:","label_private":"私人留言","label_push_notifications":"通知:","label_push_notifications_disabled":"通知 (需要 HTTPS):","label_reset_password":"傳送重設密碼郵件:","label_sdk":"SDK:","label_server":"伺服器:","label_server_address":"伺服器位址:","label_server_to_use":"使用的伺服器:","label_size":"大小:","label_topic_name":"名稱","label_user_contacts":"聯絡人:","label_user_id":"ID:","label_wire_transport":"Wire transport:","label_you":"您:","label_your_name":"您的名字","label_your_permissions":"您的權限:","last_seen_timestamp":"最後上線","leave_chat_warning":"您確定要離開此對話嗎?","link_contact_us":"聯絡我們","link_privacy_policy":"隱私權政策","link_terms_of_service":"服務條款","login_prompt":"登入","menu_item_archive_topic":"封存","menu_item_block":"封鎖","menu_item_clear_messages":"清除訊息","menu_item_clear_messages_for_all":"為所有人清除訊息","menu_item_delete":"刪除","menu_item_delete_for_all":"為所有人刪除","menu_item_delete_topic":"刪除","menu_item_edit_permissions":"編輯權限","menu_item_info":"Info","menu_item_member_delete":"移除","menu_item_mute":"靜音","menu_item_restore_topic":"恢復","menu_item_send_retry":"重試","menu_item_unblock":"解除封鎖","menu_item_unmute":"解除靜音","message_sending":"正在傳送...","message_sending_failed":"失敗","messages_not_readable":"沒有存取訊息的權限","messaging_disabled_prompt":"停用訊息","more_online_members":"+{overflow}","new_message_prompt":"新訊息","new_password_placeholder":"輸入新的密碼","no_connection":"無連線","no_contacts":"您沒有任何聯絡人 :-(","numeric_confirmation_code_prompt":"僅數字","online_now":"上線中","password_prompt":"密碼","password_unchanged_prompt":"未修改","peers_messaging_disabled":"Peer 已停用訊息。","permission_admin":"核可 ({val})","permission_delete":"刪除 ({val})","permission_join":"加入 ({val})","permission_owner":"擁有者 ({val})","permission_pres":"收到通知 ({val})","permission_read":"讀取 ({val})","permission_share":"分享 ({val})","permission_write":"撰寫 ({val})","phone_dative":"phone","private_editing_placeholder":"僅您可見","push_init_failed":"初始化通知失敗。","reconnect_countdown":"已斷線。將在 {seconds} 秒後重新連線…","reconnect_now":"現在重試","reload_update":"重新載入","report_chat_warning":"您確定要封鎖並檢舉此對話嗎?","requested_permissions":"重新請求","save_attachment":"儲存","search_for_contacts":"使用搜尋來尋找聯絡人","search_no_results":"搜尋無結果","search_placeholder":"例如 email:alice@example.com, tel:17025550003... 的清單","sidepanel_title_acc_notifications":"通知","sidepanel_title_acc_support":"支援","sidepanel_title_account_settings":"帳號設定","sidepanel_title_archive":"已封存的對話","sidepanel_title_blocked":"已封鎖的對話","sidepanel_title_cred":"確認認證","sidepanel_title_login":"登入","sidepanel_title_newtpk":"開始新對話","sidepanel_title_register":"建立帳號","sidepanel_title_reset":"重設密碼","sidepanel_title_settings":"設定","stay_logged_in":"保持登入","tabtitle_find_user":"尋找","tabtitle_group_by_id":"以 id","tabtitle_new_group":"新群組","tags_editor_no_tags":"新增一些標籤","tags_not_found":"未定義任何標籤。請新增一些標籤。","title_all_contacts":"所有聯絡人","title_group_members":"群組成員","title_manage_tags":"管理","title_not_found":"找不到","title_permissions":"權限","title_tag_manager":"標籤 (使用者探索)","topic_block_warning":"您確定要封鎖此對話嗎?","topic_delete_warning":"您確定要刪除此對話嗎?","topic_name_editing_placeholder":"群組的任意名稱","unnamed_topic":"未命名","update_available":"有可用的更新。","upload_finishing":"正在完成...","user_not_found":"找不到","validate_credential_action":"確認","description_editing_placeholder":"說明(可選)","label_description":"說明","button_security":"安全性","panel_title_crop":"拖動調整","panel_title_general":"一般","panel_title_members":"成員","panel_title_security":"安全性","panel_title_info":"資訊","permissions_anonymous":"匿名","permissions_authenticated":"已認證","topic_delete":"刪除聊天","permissions_user":"用戶權限","password_reset_email_sent":"一封電子郵件已發送至 {email}。按照電子郵件中的說明重置密碼。","label_unarchive_topic":"存檔聊天:","menu_item_reply":"回答","menu_item_forward":"重定向","forward_to":"重定向消息","forward_to_search_placeholder":"搜索聯繫人","label_new_password":"新密碼","drafty_unknown":"不支持"},"zh":{"action_block_contact":"屏蔽联系人","action_cancel":"取消","action_clear_messages":"删除讯息","action_delete_messages":"删除所有帖子","action_leave_chat":"离开","action_report_chat":"检举垃圾邮件","archived_contacts":"已归档联系人 ({count})","badge_danger":"可疑的","badge_owner":"所有者","badge_staff":"在员工管理下","badge_verified":"值得信赖","badge_you":"你","block_contact_warning":"您确定要阻止此联系人吗?","blocked_contacts_link":"封锁的联络人 ({count})","button_add_another":"加上另一个","button_add_members":"添加成员","button_cancel":"取消","button_confirm":"确认","button_create":"创建","button_delete_account":"删除帐户","button_edit":"编辑","button_logout":"登出","button_ok":"好","button_reset":"重置","button_send_request":"发送请求","button_sign_in":"登录","button_sign_up":"注册","button_subscribe":"订阅","button_update":"更新","cannot_initiate_file_upload":"无法初始化文件上传。","channel":"频道","channel_prompt":"这是一个频道","chat_invitation":"你受邀开始新会话。你想怎么做?","chat_invitation_accept":"接受","chat_invitation_block":"屏蔽","chat_invitation_ignore":"忽略","clear_messages_warning":"您确定要清除所有消息吗?无法撤消。","code_doesnot_match":"代码不匹配","contacts_not_found":"你尚无会话 ¯∖_(ツ)_/¯","contacts_not_found_short":"无联系人匹配\'\'{query}\'\'","credential_email_prompt":"你的注册邮箱","delete_account":"删除帐户","delete_account_warning":"您确定要删除您的帐户吗?无法撤消。","delete_messages_warning":"您确定要删除所有消息吗?无法撤消。","deleted_content":"内容已删除","download_action":"下载","drafty_attachment":"附件","drafty_form":"形式:","drafty_image":"图像","email_dative":"电子邮件","email_prompt":"电子邮件,例如 zhang@example.com","enable_peers_messaging":"启用","enter_confirmation_code_prompt":"输入通过{method}发送的验证码:","error_invalid_id":"无效 ID","file_attachment_too_large":"文件大小 {size} 超过 {limit} 限制。","forgot_password_link":"忘记密码?","full_name_prompt":"全名,例如张伟","granted_permissions":"已授予","group_has_no_members":"无成员","group_user_id_prompt":"群组或用户 ID","image_caption_prompt":"图片标题","invalid_content":"无效内容","invalid_security_token":"无效的安全令牌","label_client":"客户端:","label_content_type":"内容类型:","label_default_access_mode":"蓦然访问模式:","label_file_name":"文件名:","label_group_members":"群组成员:","label_incognito_mode":"无痕模式:","label_message_sound":"消息提示音:","label_muting_topic":"已静音:","label_other_user":"其他","label_password":"密码","label_permissions":"权限:","label_private":"私人评论","label_push_notifications":"通知提醒:","label_push_notifications_disabled":"通知提醒(需要 HTTPS):","label_reset_password":"发送密码重置邮件:","label_sdk":"开发包:","label_server":"服务器:","label_server_address":"服务器地址:","label_server_to_use":"使用的服务器:","label_size":"大小:","label_topic_name":"名称","label_user_contacts":"往来:","label_user_id":"地址:","label_wire_transport":"线路传输:","label_you":"你:","label_your_name":"你的姓名","label_your_permissions":"你的权限:","last_seen_timestamp":"最后可见","leave_chat_warning":"您确定要退出此对话吗?","link_contact_us":"联系我们","link_privacy_policy":"隐私政策","link_terms_of_service":"条款和条件","login_prompt":"登录","menu_item_archive_topic":"归档","menu_item_block":"屏蔽","menu_item_clear_messages":"清空消息","menu_item_clear_messages_for_all":"全部清除","menu_item_delete":"删除","menu_item_delete_for_all":"全部删除","menu_item_delete_topic":"删除","menu_item_edit_permissions":"编辑权限","menu_item_info":"信息","menu_item_member_delete":"移除","menu_item_mute":"静音","menu_item_restore_topic":"从存档中恢复","menu_item_send_retry":"重试","menu_item_unblock":"取消屏蔽","menu_item_unmute":"取消静音","message_sending":"正在发送...","message_sending_failed":"发送失败","messages_not_readable":"无消息访问权限","messaging_disabled_prompt":"消息已禁用","more_online_members":"还有{overflow}个","new_message_prompt":"新消息","new_password_placeholder":"输入新密码","no_connection":"无连接","no_contacts":"你尚无联系人 (._.)","numeric_confirmation_code_prompt":"仅数字","online_now":"在线","password_prompt":"密码","password_unchanged_prompt":"未改变","peers_messaging_disabled":"成员间消息已禁用。","permission_admin":"批准 ({val})","permission_delete":"删除 ({val})","permission_join":"加入 ({val})","permission_owner":"所有者 ({val})","permission_pres":"获取通知 ({val})","permission_read":"读取 ({val})","permission_share":"分享 ({val})","permission_write":"写入 ({val})","phone_dative":"电话","private_editing_placeholder":"仅自己可见","push_init_failed":"初始化推送通知失败","reconnect_countdown":"连接已断开。{seconds} 秒后重新连接…","reconnect_now":"立即尝试","reload_update":"重新载入","report_chat_warning":"您确定要停止并报告此对话吗?","requested_permissions":"已请求","save_attachment":"保存","search_for_contacts":"使用搜索寻找联系人","search_no_results":"搜索返回任何结果","search_placeholder":"列表如 email:alice@example.com, tel:+17025550003...","sidepanel_title_acc_notifications":"通知","sidepanel_title_acc_support":"支持","sidepanel_title_account_settings":"帐号设定","sidepanel_title_archive":"已存档会话","sidepanel_title_blocked":"被阻止的聊天","sidepanel_title_cred":"确认凭据","sidepanel_title_login":"登录","sidepanel_title_newtpk":"开始新会话","sidepanel_title_register":"创建账户","sidepanel_title_reset":"重置密码","sidepanel_title_settings":"设置","stay_logged_in":"保持登录","tabtitle_find_user":"搜索","tabtitle_group_by_id":"通过 id","tabtitle_new_group":"新群组","tags_editor_no_tags":"添加一些标签","tags_not_found":"尚未定义标签。添加一些。","title_all_contacts":"全部联系人","title_group_members":"群组成员","title_manage_tags":"管理标签","title_not_found":"无法找到","title_permissions":"权限","title_tag_manager":"标签(用户发现)","topic_block_warning":"您确定要阻止此对话吗?","topic_delete_warning":"您确定要删除此对话吗?","topic_name_editing_placeholder":"群组自由格式名称","unnamed_topic":"未命名","update_available":"更新可用。","upload_finishing":"正在结束...","user_not_found":"未找到","validate_credential_action":"确认","description_editing_placeholder":"说明(可选)","label_description":"说明","button_security":"安全","panel_title_crop":"拖动调整","panel_title_general":"常用设定","panel_title_members":"成员","panel_title_security":"安全","panel_title_info":"信息","permissions_anonymous":"匿名","permissions_authenticated":"已认证","topic_delete":"删除聊天","permissions_user":"用户权限","password_reset_email_sent":"一封电子邮件已发送至 {email}。按照电子邮件中的说明重置密码。","label_unarchive_topic":"存档:","menu_item_reply":"回复","menu_item_forward":"重定向","forward_to":"重定向消息","forward_to_search_placeholder":"搜索联系人","label_new_password":"新密码","drafty_unknown":"不支持"}}');
/***/ })
diff --git a/umd/index.dev.js.map b/umd/index.dev.js.map
index 4d69d66a..2eadb51f 100644
--- a/umd/index.dev.js.map
+++ b/umd/index.dev.js.map
@@ -1 +1 @@
-{"version":3,"file":"index.dev.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA,oBAAoB,eAAe;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,8BAA8B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,qBAAM;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qBAAM;AACrB,eAAe,qBAAM;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,MAAM;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,iBAAiB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,aAAa,GAAG,KAAK;AACjD;AACA;AACA;AACA,+BAA+B,iBAAiB,IAAI,SAAS,GAAG,SAAS;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,IAAI;AACvD,KAAK;AACL;AACA,mBAAmB,MAAM,IAAI;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY,GAAG;AACf;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY,QAAQ;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,aAAa,WAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,yBAAyB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,QAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,QAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,SAAS;AAClD;AACA,8BAA8B;AAC9B;AACA;AACA;AACA,wBAAwB,OAAO;AAC/B,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,QAAQ,UAAU,SAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,aAAa,IAAI,0EAA0E;AACjH;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,0EAA0E;AAC7H;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,UAAU;AACzD;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6DAA6D,OAAO,KAAK,0EAA0E;AACnJ;AACA;AACA;AACA,yDAAyD,OAAO,KAAK,UAAU;AAC/E;AACA,KAAK;AACL;;AAE+0B;AAC/0B;;;;;;;;;;;;;;;;;ACtgEA;AACA;AACA;AACe;AACf;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,uFAAuF;AACvF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACO;AACP;AACA;AACA;;;;;;;;;;;;;;;;AC7EO;AACP;AACA,qCAAqC;AACrC;AACA,mCAAmC;AACnC;AACA,sCAAsC,KAAK;AAC3C;AACA,wCAAwC,KAAK;AAC7C;AACA,0CAA0C,QAAQ;AAClD;AACA,yCAAyC,cAAc;AACvD;AACA;AACA;AACA;AACA;AACA,4DAA4D,gBAAgB;AAC5E;AACA,+DAA+D,cAAc;AAC7E;AACA,4DAA4D;AAC5D;AACA,gDAAgD,YAAY;AAC5D;AACA,iFAAiF,oBAAoB;AACrG;AACA,uEAAuE,uBAAuB;AAC9F;AACA,yDAAyD,YAAY;AACrE;AACA,4EAA4E,YAAY;AACxF;AACA,yEAAyE,mBAAmB;AAC5F;AACA;AACA;AACA,eAAe,iBAAiB;AAChC;AACA;AACA,qEAAqE,iBAAiB,GAAG;AACzF;AACA;AACA;AACA,cAAc,kBAAkB,GAAG,KAAK,GAAG;AAC3C;AACA;AACA;AACA,cAAc,oBAAoB,OAAO,OAAO,OAAO;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8BAA8B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC9DE;AACG;AACF;AAC6H;AAC/J;AACA;AACA;AACA,YAAY,uDAAe,QAAQ,uDAAe;AAClD;AACA;AACA;AACA;AACA;AACA,iBAAiB,uDAAe,QAAQ,wDAAgB;AACxD;AACA;AACA,kBAAkB,qDAAa,QAAQ,qDAAa;AACpD,YAAY,0DAAkB;AAC9B;AACA;AACA,iBAAiB,oDAAY;AAC7B;AACA;AACA,KAAK;AACL;AACO;AACP,2BAA2B;AAC3B,WAAW,+CAAQ,GAAG,uDAAuD;AAC7E,qBAAqB,2CAAM;AAC3B;AACA,gCAAgC,6CAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACwB;;;;;;;;;;;;;;;;;;;;;AC1CxB;AACiC;AACG;AACW;AACW;AACiE;AAC3H,wDAAwD,0EAA4B;AACpF,qDAAqD,0EAA4B;AACjF;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,YAAY,IAAI,eAAe;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,uBAAuB;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,uBAAuB;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C,YAAY,IAAI,eAAe;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA,0BAA0B;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,8CAAU;AACpC;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,mEAA+B;AACrE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,gDAAY;AACtC;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,yDAAqB;AAC3D;AACA;AACA;AACA;AACA,sCAAsC,mEAA+B;AACrE;AACA;AACA;AACA,sCAAsC,yDAAqB;AAC3D;AACA;AACA;AACA,8BAA8B,4CAAQ;AACtC;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,kCAAkC,0DAAsB;AACxD;AACA;AACA;AACA,8BAA8B,yDAAqB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,MAAM,gDAAY,oCAAoC;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB,eAAe;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB,wCAAwC;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B;AAC5B;AACA;AACA,6BAA6B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,KAAK;AAC1B;AACA;AACA,8BAA8B,2EAAuC;AACrE;AACA,qCAAqC;AACrC;AACA,8BAA8B,4DAAwB;AACtD;AACA;AACA;AACA;AACA,8BAA8B,gEAA4B;AAC1D;AACA;AACA;AACA,8BAA8B,2EAAuC;AACrE;AACA;AACA,kCAAkC,KAAK;AACvC,0BAA0B;AAC1B,6BAA6B,KAAK;AAClC;AACA;AACA,8BAA8B,iDAAa;AAC3C;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,wCAAwC,kBAAkB;AAC1D;AACA,6BAA6B;AAC7B;AACA;AACA,sCAAsC,2EAAuC;AAC7E;AACA;AACA;AACA;AACA,kCAAkC,gEAA4B;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA,YAAY;AACZ;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,kEAA8B;AAChE;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,mEAA+B;AACzE;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mCAAmC,MAAM,+CAAW,yDAAyD;AAC7G;AACA;AACA;AACA;AACA;AACA,8CAA8C,uEAAmC;AACjF;AACA;AACA,kCAAkC,0DAAsB;AACxD;AACA;AACA;AACA,kCAAkC,oFAAqB;AACvD,oCAAoC;AACpC;AACA,wDAAwD,6CAAS,GAAG,6CAAS;AAC7E;AACA,mCAAmC,8DAA8D;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,+CAAW;AACzC;AACA,kCAAkC,6CAAS;AAC3C,kCAAkC,6CAAS;AAC3C;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA,sCAAsC,4EAAwC,oCAAoC,+CAAQ,GAAG;AAC7H;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA;AACA,oBAAoB,mBAAmB,KAAK,OAAO;AACnD;AACA;AACA;AACA;AACA;AACA,0CAA0C,iFAA6C;AACvF;AACA;AACA,6DAA6D,iFAA6C,EAAE,kFAA8C;AAC1J;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,+CAAW;AAC7C;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,+CAAW;AAC7C;AACA;AACA;AACA;AACA;AACA,yBAAyB;AACzB;AACA;AACA;AACA;AACA;AACA,kCAAkC,mEAA+B;AACjE;AACA;AACA;AACA,mBAAmB;AACnB;AACA,qDAAqD;AACrD,8BAA8B,2EAAuC;AACrE;AACA,qBAAqB,KAAK;AAC1B,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,8EAA0C;AACpF;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA,8BAA8B;AAC9B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,4FAA6B;AAClD;AACA;AACA,8BAA8B,qEAAiC;AAC/D;AACA;AACA;AACA,sBAAsB,wDAAoB;AAC1C;AACA;AACA;AACA,sBAAsB,kFAAmB;AACzC,wBAAwB;AACxB,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB;AAChB;AACA;AACA;AACA;AACA;AACA,oCAAoC,OAAO;AAC3C,6DAA6D,6EAAyC,EAAE,8EAA0C;AAClJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,gFAA4C;AAClE,sBAAsB,gFAA4C;AAClE;AACA;AACA;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACA,+BAA+B;AAC/B;AACA,sBAAsB,sFAAkD;AACxE,sBAAsB,sFAAkD;AACxE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,6EAAyC;AAC3D,kBAAkB,6EAAyC;AAC3D;AACA;AACA,8BAA8B,kEAA8B;AAC5D;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,mBAAmB;AAC/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACiB;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,YAAY;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sCAAsC,eAAe;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;AClvCA;AACO;AACA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACFA;AACP;AACA;AACA;AACA;AACA;AACA;AACA,yDAAyD,IAAI;AAC7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,oBAAoB;AACd;AACP;AACA;AACA;AACA,CAAC,sCAAsC;AACvC;AACA;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;AC7FA;AACA;AACA;AACA;AACA;AACA,gCAAgC,IAAI,GAAG,IAAI,MAAM,IAAI,cAAc,IAAI,OAAO,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,EAAE,OAAO,IAAI,QAAQ,IAAI,GAAG,IAAI,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,WAAW,IAAI;AACrK;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;;;;;;;;;;;;;;;;;;;;ACxH4B;AACH;;;;;;;;;;;;;;;;;;;ACDQ;AACqB;AAC/C;AACP;AACA;AACA;AACA;AACA;AACA,eAAe,+DAAiB;AAChC,+BAA+B,sBAAsB;AACrD;AACA,oDAAoD,4BAA4B;AAChF;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,uBAAuB;AACrE;AACA;AACA;AACA;AACA;AACA,sBAAsB,8BAA8B;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA,wCAAwC,sBAAsB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;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lE,kBAAkB,4CAA4C;AAC9D,eAAe,yCAAyC;AACxD,eAAe,0CAA0C;AACzD,eAAe,2CAA2C;AAC1D,eAAe,oCAAoC;AACnD,iBAAiB,sCAAsC;AACvD,iBAAiB,qCAAqC;AACtD,kBAAkB,wCAAwC;AAC1D,kBAAkB,0CAA0C;AAC5D,iBAAiB,4CAA4C;AAC7D,kBAAkB,+CAA+C;AACjE,kBAAkB,uCAAuC;AACzD,kBAAkB,yCAAyC;AAC3D,qBAAqB,iCAAiC;AACtD,kBAAkB,gCAAgC;AAClD,kBAAkB,oCAAoC;AACtD,kBAAkB,uCAAuC;AACzD,kBAAkB,oCAAoC;AACtD,kBAAkB,mCAAmC;AACrD,kBAAkB,qCAAqC;AACvD,kBAAkB,qCAAqC;AACvD,kBAAkB,wCAAwC;AAC1D,kBAAkB,sCAAsC;AACxD,iBAAiB,iCAAiC;AAClD,iBAAiB,qCAAqC;AACtD,iBAAiB,kCAAkC;AACnD,iBAAiB,mCAAmC;AACpD,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,YAAY;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,kCAAkC;AAChE;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,yCAAyC,wBAAwB;AACjE;AACA;AACA;AACA,oCAAoC,QAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,gCAAgC;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;;;;;;;;;;;;;;;;;AChgBD;AACA;AACA;AACA;AACA;AAC+C;AACd;AACN;AACC;AAC5B,iEAAe,wDAAiB,EAAC;;;;;;;;;;;;;;;;;;;;ACTjC;AACA;AACA;AACA;AACA;AACgD;AACW;AACE;AACJ;AACzD;AACA;AACA;AACA;AACA;AACA,WAAW,+CAAQ,CAAC,+CAAQ,CAAC,+CAAQ,GAAG,WAAW,aAAa;AAChE,iBAAiB,+CAAQ,CAAC,+CAAQ,GAAG,sBAAsB;AAC3D;AACA,KAAK,IAAI;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK,EAAE,+CAAQ,GAAG;AAClB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA,iBAAiB;AACjB;AACA,SAAS;AACT;AACA;AACA;AACA,4BAA4B;AAC5B,kBAAkB;AAClB,oBAAoB;AACpB,uBAAuB;AACvB;AACA;AACA,yBAAyB,kEAAO;AAChC;AACA;AACA,6BAA6B,uBAAuB;AACpD;AACA;AACA,gEAAgE,oDAAa;AAC7E,SAAS;AACT;AACA,sBAAsB,uEAAmB;AACzC,SAAS;AACT,2BAA2B,kEAAO;AAClC;AACA;AACA,6BAA6B,uBAAuB;AACpD;AACA;AACA,kEAAkE,oDAAa;AAC/E,SAAS;AACT;AACA,sBAAsB,uEAAmB;AACzC,SAAS;AACT,wBAAwB,kEAAO;AAC/B;AACA;AACA,6BAA6B,uBAAuB;AACpD;AACA;AACA,+DAA+D,oDAAa;AAC5E,SAAS;AACT;AACA,sBAAsB,uEAAmB;AACzC,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,kCAAkC;AAClC;AACA,sBAAsB;AACtB,wBAAwB;AACxB,2BAA2B;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,0DAAiB;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,0DAAa;AAChC;AACA,6CAA6C;AAC7C;AACA,SAAS;AACT,oCAAoC;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,KAAK;AACL;AACA,gCAAgC,qEAAK;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA,CAAC;AAC4B;;;;;;;;;;;;;;;;;;;;;AC/NK;AAC3B;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,8BAA8B;AAC/B;AACA,IAAI,gDAAS;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;AACsB;AACvB;AACA,IAAI,gDAAS;AACb;AACA;AACA;AACA;AACA,CAAC;AAC4B;AAC7B;AACA,IAAI,gDAAS;AACb;AACA;AACA;AACA;AACA,CAAC;AACgC;AACjC;AACA,IAAI,gDAAS;AACb;AACA;AACA;AACA;AACA,CAAC;AAC4B;;;;;;;;;;;;;;;;;;;;AC/CkN;AAChI;AACxG;AACP;AACA;AACA;AACA,CAAC,8BAA8B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA,4BAA4B,oFAAgB;AAC5C;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,kCAAkC,mBAAmB;AACrD;AACA;AACA,YAAY,oFAAgB;AAC5B;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA,YAAY,kFAAc;AAC1B;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA,sBAAsB,qDAAiB;AACvC;AACA;AACA,YAAY,qFAAiB;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,YAAY,iFAAa;AACzB;AACA;AACA,kBAAkB,sFAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,YAAY,iFAAa;AACzB;AACA;AACA,kBAAkB,sFAAkB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,YAAY,mFAAe;AAC3B;AACA;AACA,kBAAkB,oFAAgB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA,YAAY,gFAAY;AACxB;AACA;AACA;AACA,0BAA0B,yDAAqB;AAC/C;AACA;AACA,2DAA2D,iBAAiB;AAC5E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA,YAAY,mFAAe;AAC3B;AACA;AACA,0BAA0B,qDAAiB;AAC3C;AACA;AACA;AACA;AACA,YAAY,mFAAe;AAC3B;AACA;AACA;AACA,8BAA8B,+CAAW,sHAAsH,8DAA0B;AACzL;AACA;AACA,+CAA+C,qBAAqB;AACpE;AACA;AACA;AACA;AACA,0BAA0B,qDAAiB;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;;;;;;;;;;;;;;;;;;;;;;;AChL0B;AACc;AACW;;AAEnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;;AAEA,cAAc,uBAAuB;AACrC;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;;AAEA;;AAEA;;AAEA;AACA;;AAEA,gBAAgB,6BAA6B;AAC7C;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;;AAEA,wCAAwC,0DAAiB;;AAEzD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;;AAEA;AACA,GAAG;AACH;;AAEA;AACA;;AAEA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA,0BAA0B;;AAE1B,wBAAwB;;AAExB,gEAAgE;;AAEhE,iEAAiE;;AAEjE,oDAAoD,QAAQ,EAAE,QAAQ,MAAM,QAAQ,IAAI;;AAExF,wEAAwE;;AAExE;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,GAAG,GAAG;;AAEN,oFAAoF;;AAEpF;AACA;AACA;;AAEA;AACA;AACA;AACA,IAAI;;AAEJ;AACA;AACA;AACA,IAAI;AACJ;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;AACJ;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,KAAK;AACL,IAAI;;;AAGJ;AACA,mBAAmB,MAAM;AACzB;AACA;AACA;AACA;AACA;;AAEA,mBAAmB,KAAK;AACxB,kDAAkD,MAAM;AACxD;AACA;AACA,OAAO;AACP;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;;AAEA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA,oBAAoB,QAAQ,KAAK;AACjC;AACA;AACA,sCAAsC,oBAAoB,KAAK,OAAO,MAAM;AAC5E,uCAAuC,oBAAoB,MAAM,OAAO,OAAO;AAC/E,yCAAyC,oBAAoB,QAAQ,OAAO,SAAS;AACrF,yCAAyC,oBAAoB,QAAQ,OAAO,SAAS;AACrF,GAAG;AACH;AACA;AACA,yBAAyB,OAAO,GAAG,MAAM;AACzC;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;;AAEA;AACA,+CAA+C;AAC/C;;AAEA;AACA,uLAAuL;;AAEvL;;AAEA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,GAAG;AACH;AACA;;AAEA;AACA;AACA;;AAEA;;AAEA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;;AAEA;AACA,sFAAsF,UAAU,QAAQ;AACxG;;AAEA;AACA,uFAAuF,QAAQ,EAAE,QAAQ;AACzG;;AAEA;;AAEA;AACA;AACA;;AAEA;AACA;AACA,mCAAmC,+HAA+H,oBAAoB,KAAK,OAAO,MAAM,mIAAmI,oBAAoB,MAAM,OAAO,OAAO,uIAAuI,oBAAoB,QAAQ,OAAO,SAAS,uIAAuI,oBAAoB,QAAQ,OAAO,SAAS;AACztB,iFAAiF,QAAQ,KAAK;AAC9F;AACA;AACA;AACA,GAAG;AACH;AACA;AACA,SAAS,0DAAmB;AAC5B;AACA,WAAW,0DAAmB;AAC9B;AACA,KAAK;AACL,GAAG;AACH;;AAEA,YAAY,sDAAU;;AAEtB,iEAAe,KAAK,EAAC;AACoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC3VzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,gBAAgB,sCAAsC,kBAAkB;AACnF,0BAA0B;AAC1B;AACA;AACA;AACO;AACP;AACA;AACA;AACA,oBAAoB;AACpB;AACA;AACA;AACO;AACP;AACA,iDAAiD,OAAO;AACxD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA,6DAA6D,cAAc;AAC3E;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA,6CAA6C,QAAQ;AACrD;AACA;AACA;AACO;AACP,oCAAoC;AACpC;AACA;AACO;AACP;AACA;AACA;AACO;AACP,4BAA4B,+DAA+D,iBAAiB;AAC5G;AACA,oCAAoC,MAAM,+BAA+B,YAAY;AACrF,mCAAmC,MAAM,mCAAmC,YAAY;AACxF,gCAAgC;AAChC;AACA,KAAK;AACL;AACA;AACO;AACP,cAAc,6BAA6B,0BAA0B,cAAc,qBAAqB;AACxG,iBAAiB,oDAAoD,qEAAqE,cAAc;AACxJ,uBAAuB,sBAAsB;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,mCAAmC,SAAS;AAC5C,mCAAmC,WAAW,UAAU;AACxD,0CAA0C,cAAc;AACxD;AACA,8GAA8G,OAAO;AACrH,iFAAiF,iBAAiB;AAClG,yDAAyD,gBAAgB,QAAQ;AACjF,+CAA+C,gBAAgB,gBAAgB;AAC/E;AACA,kCAAkC;AAClC;AACA;AACA,UAAU,YAAY,aAAa,SAAS,UAAU;AACtD,oCAAoC,SAAS;AAC7C;AACA;AACA;AACO;AACP;AACA,mCAAmC,oCAAoC,gBAAgB;AACvF,CAAC;AACD;AACA;AACA,CAAC;AACD;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,MAAM;AAC1B;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACO;AACP,6BAA6B,sBAAsB;AACnD;AACA;AACA;AACA;AACA;AACO;AACP,kDAAkD,QAAQ;AAC1D,yCAAyC,QAAQ;AACjD,yDAAyD,QAAQ;AACjE;AACA;AACA;AACA;AACO;AACP,6EAA6E,OAAO;AACpF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACO;AACP;AACA;AACA,iBAAiB,uFAAuF,cAAc;AACtH,uBAAuB,gCAAgC,qCAAqC,2CAA2C;AACvI,4BAA4B,MAAM,iBAAiB,YAAY;AAC/D,uBAAuB;AACvB,8BAA8B;AAC9B,6BAA6B;AAC7B,4BAA4B;AAC5B;AACA;AACO;AACP;AACA,iBAAiB,6CAA6C,UAAU,sDAAsD,cAAc;AAC5I,0BAA0B,6BAA6B,oBAAoB,gDAAgD,kBAAkB;AAC7I;AACA;AACO;AACP;AACA;AACA,2GAA2G,uFAAuF,cAAc;AAChN,uBAAuB,8BAA8B,gDAAgD,wDAAwD;AAC7J,6CAA6C,sCAAsC,UAAU,mBAAmB,IAAI;AACpH;AACA;AACO;AACP,iCAAiC,uCAAuC,YAAY,KAAK,OAAO;AAChG;AACA;AACA;AACA;AACA,0CAA0C,4BAA4B;AACtE,CAAC;AACD;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACA;AACA;AACO;AACP,6CAA6C;AAC7C;AACA;AACO;AACP;AACA;AACA;AACA;AACA;AACO;AACP;AACA;AACA;AACA;AACA;;;;;;;;;;;;AC9OA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAoE;AACuB;AACsD;AAClG;;AAE/C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,gBAAgB,GAAG,gBAAgB;AAC7D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oDAAM;;AAEzB;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,gBAAgB,sCAAsC,SAAS;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,cAAc;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA,8DAA8D,SAAS;AACvE,iEAAiE,SAAS;AAC1E,6DAA6D,SAAS;AACtE,oEAAoE,SAAS;AAC7E;AACA;AACA,8FAA8F,sBAAsB;AACpH,iGAAiG,sBAAsB;AACvH,iGAAiG,sBAAsB;AACvH,wGAAwG,sBAAsB;AAC9H;AACA,0BAA0B,wDAAY;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,uCAAuC;AACvC;AACA;AACA;AACA;AACA,wCAAwC,0DAAS;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E,qBAAqB;AAC/F;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA,sBAAsB;AACtB;AACA,mCAAmC,iEAAiE;AACpG;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,YAAY,yDAAS;AACrB,YAAY,yDAAS;AACrB;AACA;AACA;AACA,8EAA8E,eAAe;AAC7F;AACA;AACA,0BAA0B,mEAAkB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iCAAiC;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,eAAe;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA,2CAA2C,QAAQ,kBAAkB,QAAQ;AAC7E;AACA;AACA,0CAA0C,QAAQ;AAClD;AACA;AACA;AACA;AACA;AACA,0CAA0C,QAAQ;AAClD;AACA;AACA;AACA;AACA,2BAA2B,0DAAS,IAAI,QAAQ,oBAAoB,kBAAkB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mEAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,6DAAa;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,sDAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc,SAAS,GAAG,kBAAkB;AAC5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,aAAa;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kCAAkC;AAClD,6BAA6B,6EAA6B,kBAAkB,0CAA0C;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,oEAAoB;AACjC;AACA;AACA;AACA,mBAAmB,yEAAyB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,6EAA6B;AACxC;AACA,qBAAqB,yCAAyC;AAC9D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,0DAAS;AACpC,2BAA2B,0DAAS;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAE2R;AAC3R;;;;;;;;;;;;;;;;;;;AC54B0C;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,oDAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,WAAW;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,gBAAgB,eAAe,UAAU;AAC1F;AACA;AACA,yCAAyC,WAAW;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,wCAAwC;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB,gBAAgB,eAAe;AAC/B;AACA;AACA,2BAA2B,UAAU,GAAG,qBAAqB;AAC7D;AACA;AACA,qCAAqC,WAAW;AAChD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,kCAAkC;AAC/D;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4GAA4G;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,gBAAgB,mCAAmC,UAAU;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEmD;AACnD;;;;;;;;;;;;;;;;;;;;;;;ACxZ0F;AAC1C;AACqB;;AAErE;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA,gDAAgD;AAChD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uGAAuG,WAAW;AAClH;AACA;AACA,+CAA+C,cAAc,4BAA4B,cAAc,cAAc,GAAG,eAAe;AACvI;AACA;AACA;AACA,0BAA0B,wDAAY;AACtC;AACA;AACA,6BAA6B,yDAAa;AAC1C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,WAAW;AAC/C,cAAc,sBAAsB,YAAY,UAAU;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,yCAAyC,cAAc;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,uBAAuB,EAAE,aAAa;AACpD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,qCAAqC,IAAI,KAAK;AACzF;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,GAAG;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,kBAAkB,GAAG,gBAAgB;AACnD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,UAAU;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,sDAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yCAAyC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,qCAAqC;AAC/E;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,KAAK;AACxD,cAAc,oCAAoC,GAAG,IAAI;AACzD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,eAAe,aAAa,sCAAsC;AACnH;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,uEAAuE,wBAAwB,WAAW;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,wBAAwB,aAAa,sCAAsC;AACtJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,eAAe,gCAAgC;AACxF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,yCAAyC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,sBAAsB;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,KAAK;AAC7C,cAAc,oCAAoC,GAAG,IAAI;AACzD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,YAAY;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,YAAY;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD,IAAI,iCAAiC;AACrC,qBAAqB,iCAAiC;AACtD;AACA;AACA;AACA,gCAAgC,qDAAM;AACtC,8BAA8B,2DAAY;AAC1C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,2DAAY;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,2DAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iEAAkB,KAAK,0DAAS;AACpC,IAAI,iEAAkB,KAAK,0DAAS;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,8DAAe;AACf;AACA,8DAAe;;AAE+D;AAC9E;;;;;;;;;;;;;;;;;;;AC9nCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,IAAI,KAAK,cAAc;AACnD;AACA;AACA,sFAAsF,QAAQ;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,IAAI;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAE4D;AAC5D;;;;;;;;;;;;;;;;;;;;;;;;AC1NiC;AACe;AACwG;AAC9D;;AAE1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sCAAsC;;AAEvC;AACA;AACA;AACA;AACA,mEAAmE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kCAAkC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,sDAAM;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,UAAU,wDAAQ;AAClB,UAAU,wDAAQ;AAClB,UAAU,wDAAQ;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,sBAAsB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,sDAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,WAAW;AAC7B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uGAAuG,WAAW;AAClH;AACA;AACA;AACA;AACA;AACA;AACA,sIAAsI,qBAAqB;AAC3J,qHAAqH,WAAW;AAChI;AACA;AACA,yBAAyB,WAAW;AACpC,8GAA8G,WAAW;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,wDAAY;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,4CAA4C,GAAG,mBAAmB;AAC1G;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,4CAA4C,GAAG,MAAM;AAC7F;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,uBAAuB,WAAW;AAClC,cAAc,SAAS,YAAY,UAAU;AAC7C;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA;AACA;AACA;AACA,qDAAqD,UAAU;AAC/D,KAAK;AACL;AACA,mBAAmB,kCAAkC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,mBAAmB,6CAA6C;AAClI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,eAAe;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iEAAkB,KAAK,0DAAS;AACpC,IAAI,iEAAkB,KAAK,0DAAS;AACpC,IAAI,8DAAe;AACnB;AACA,IAAI,8DAAe;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,yEAAyB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,oEAAoB;AAC5B,QAAQ,iEAAiB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,qDAAM;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,WAAW,2DAAY,CAAC,kEAAkB;AAC1C;AACA;AACA,mBAAmB,iBAAiB;AACpC,gFAAgF;AAChF;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAkB;AAClC;AACA;AACA;AACA,wDAAwD,iBAAiB;AACzE,QAAQ,iBAAiB;AACzB;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAkB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAkB;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEoH;AACpH;;;;;;;;;;;;;;;;;;UCrsCA;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,GAAG;WACH;WACA;WACA,CAAC;;;;;WCPD;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;;;;;;ACHA;AACA;AAEA;AAEA;AACA;AACA;AAIA,MAAM;AAAE39B,EAAAA;AAAF,IAAaJ,uEAAA,CAA4BpG,MAAM,CAAC+E,QAAP,CAAgBuB,IAA5C,CAAnB;AACA,MAAMyB,QAAQ,GAAIvB,MAAM,IAAIA,MAAM,CAACkiD,EAAlB,IACd7gD,SAAS,CAAC8gD,SAAV,IAAuB9gD,SAAS,CAAC8gD,SAAV,CAAoB,CAApB,CADT,IAEf9gD,SAAS,CAACE,QAFK,IAGfF,SAAS,CAACC,YAHK,IAIf,IAJF;AAOA,MAAM8gD,YAAY,GAAG7gD,QAAQ,CAACuuC,WAAT,GAAuBl5C,KAAvB,CAA6B,MAA7B,EAAqC,CAArC,CAArB;AAGA,MAAMyrD,QAAQ,GAAGJ,2CAAW,CAAC1gD,QAAD,CAAX,GAAwBA,QAAxB,GAAmC0gD,2CAAW,CAACG,YAAD,CAAX,GAA4BA,YAA5B,GAA2C,IAA/F;AACA,MAAM5nD,QAAQ,GAAGynD,2CAAW,CAACI,QAAD,CAA5B;AAGAltD,QAAQ,CAAC4O,oBAAT,CAA8B,MAA9B,EAAsC,CAAtC,EAAyCu+C,YAAzC,CAAsD,MAAtD,EAA8DD,QAA9D;AAEAN,uDAAA,CACE,2DAAC,yDAAD,QACE,2DAAC,oDAAD;AAAc,QAAM,EAAExgD,QAAtB;AAAgC,UAAQ,EAAE/G,QAA1C;AAAoD,eAAa,EAAEX,uDAAcoD;AAAjF,GACE,2DAAC,6DAAD,OADF,CADF,CADF,EAME9H,QAAQ,CAAC0O,cAAT,CAAwB,YAAxB,CANF,E","sources":["webpack://tinode-webapp/./node_modules/@firebase/util/dist/index.esm2017.js","webpack://tinode-webapp/./node_modules/@formatjs/fast-memoize/lib/index.js","webpack://tinode-webapp/./node_modules/@formatjs/icu-messageformat-parser/lib/error.js","webpack://tinode-webapp/./node_modules/@formatjs/icu-messageformat-parser/lib/index.js","webpack://tinode-webapp/./node_modules/@formatjs/icu-messageformat-parser/lib/parser.js","webpack://tinode-webapp/./node_modules/@formatjs/icu-messageformat-parser/lib/regex.generated.js","webpack://tinode-webapp/./node_modules/@formatjs/icu-messageformat-parser/lib/types.js","webpack://tinode-webapp/./node_modules/@formatjs/icu-skeleton-parser/lib/date-time.js","webpack://tinode-webapp/./node_modules/@formatjs/icu-skeleton-parser/lib/index.js","webpack://tinode-webapp/./node_modules/@formatjs/icu-skeleton-parser/lib/number.js","webpack://tinode-webapp/./node_modules/@formatjs/icu-skeleton-parser/lib/regex.generated.js","webpack://tinode-webapp/./src/config.js","webpack://tinode-webapp/./src/constants.js","webpack://tinode-webapp/./src/lib/blob-helpers.js","webpack://tinode-webapp/./src/lib/formatters.js","webpack://tinode-webapp/./src/lib/host-name.js","webpack://tinode-webapp/./src/lib/local-storage.js","webpack://tinode-webapp/./src/lib/navigation.js","webpack://tinode-webapp/./src/lib/strformat.js","webpack://tinode-webapp/./src/lib/utils.js","webpack://tinode-webapp/./src/version.js","webpack://tinode-webapp/./src/views/acc-notifications-view.jsx","webpack://tinode-webapp/./src/views/acc-security-view.jsx","webpack://tinode-webapp/./src/views/acc-support-view.jsx","webpack://tinode-webapp/./src/views/account-settings-view.jsx","webpack://tinode-webapp/./src/views/contacts-view.jsx","webpack://tinode-webapp/./src/views/create-account-view.jsx","webpack://tinode-webapp/./src/views/incoming-call-view.jsx","webpack://tinode-webapp/./src/views/info-view.jsx","webpack://tinode-webapp/./src/views/login-view.jsx","webpack://tinode-webapp/./src/views/logo-view.jsx","webpack://tinode-webapp/./src/views/messages-view.jsx","webpack://tinode-webapp/./src/views/new-topic-view.jsx","webpack://tinode-webapp/./src/views/password-reset-view.jsx","webpack://tinode-webapp/./src/views/settings-view.jsx","webpack://tinode-webapp/./src/views/sidepanel-view.jsx","webpack://tinode-webapp/./src/views/tinode-web.jsx","webpack://tinode-webapp/./src/views/validation-view.jsx","webpack://tinode-webapp/./src/widgets/alert.jsx","webpack://tinode-webapp/./src/widgets/attachment.jsx","webpack://tinode-webapp/./src/widgets/audio-player.jsx","webpack://tinode-webapp/./src/widgets/audio-recorder.jsx","webpack://tinode-webapp/./src/widgets/avatar-crop.jsx","webpack://tinode-webapp/./src/widgets/avatar-upload.jsx","webpack://tinode-webapp/./src/widgets/badge-list.jsx","webpack://tinode-webapp/./src/widgets/button-back.jsx","webpack://tinode-webapp/./src/widgets/call-panel.jsx","webpack://tinode-webapp/./src/widgets/chat-message.jsx","webpack://tinode-webapp/./src/widgets/checkbox.jsx","webpack://tinode-webapp/./src/widgets/chip-input.jsx","webpack://tinode-webapp/./src/widgets/chip.jsx","webpack://tinode-webapp/./src/widgets/contact-action.jsx","webpack://tinode-webapp/./src/widgets/contact-badges.jsx","webpack://tinode-webapp/./src/widgets/contact-list.jsx","webpack://tinode-webapp/./src/widgets/contact.jsx","webpack://tinode-webapp/./src/widgets/context-menu.jsx","webpack://tinode-webapp/./src/widgets/cropper.jsx","webpack://tinode-webapp/./src/widgets/doc-preview.jsx","webpack://tinode-webapp/./src/widgets/error-panel.jsx","webpack://tinode-webapp/./src/widgets/file-progress.jsx","webpack://tinode-webapp/./src/widgets/forward-dialog.jsx","webpack://tinode-webapp/./src/widgets/group-manager.jsx","webpack://tinode-webapp/./src/widgets/group-subs.jsx","webpack://tinode-webapp/./src/widgets/host-selector.jsx","webpack://tinode-webapp/./src/widgets/image-preview.jsx","webpack://tinode-webapp/./src/widgets/in-place-edit.jsx","webpack://tinode-webapp/./src/widgets/invitation.jsx","webpack://tinode-webapp/./src/widgets/lazy-image.jsx","webpack://tinode-webapp/./src/widgets/letter-tile.jsx","webpack://tinode-webapp/./src/widgets/load-spinner.jsx","webpack://tinode-webapp/./src/widgets/menu-cancel.jsx","webpack://tinode-webapp/./src/widgets/menu-contacts.jsx","webpack://tinode-webapp/./src/widgets/menu-start.jsx","webpack://tinode-webapp/./src/widgets/meta-message.jsx","webpack://tinode-webapp/./src/widgets/new-topic-by-id.jsx","webpack://tinode-webapp/./src/widgets/new-topic-group.jsx","webpack://tinode-webapp/./src/widgets/permissions-editor.jsx","webpack://tinode-webapp/./src/widgets/received-marker.jsx","webpack://tinode-webapp/./src/widgets/search-contacts.jsx","webpack://tinode-webapp/./src/widgets/send-message.jsx","webpack://tinode-webapp/./src/widgets/side-navbar.jsx","webpack://tinode-webapp/./src/widgets/tag-manager.jsx","webpack://tinode-webapp/./src/widgets/topic-common.jsx","webpack://tinode-webapp/./src/widgets/topic-desc-edit.jsx","webpack://tinode-webapp/./src/widgets/topic-security.jsx","webpack://tinode-webapp/./src/widgets/unread-badge.jsx","webpack://tinode-webapp/./src/widgets/uploading-image.jsx","webpack://tinode-webapp/./src/widgets/visible-password.jsx","webpack://tinode-webapp/./node_modules/firebase/app/dist/index.esm.js","webpack://tinode-webapp/./node_modules/firebase/messaging/dist/index.esm.js","webpack://tinode-webapp/./node_modules/fix-webm-duration/fix-webm-duration.js","webpack://tinode-webapp/./node_modules/intl-messageformat/lib/index.js","webpack://tinode-webapp/./node_modules/intl-messageformat/lib/src/core.js","webpack://tinode-webapp/./node_modules/intl-messageformat/lib/src/error.js","webpack://tinode-webapp/./node_modules/intl-messageformat/lib/src/formatters.js","webpack://tinode-webapp/./node_modules/react-intl-formatted-duration/dist/module.js","webpack://tinode-webapp/./node_modules/tslib/tslib.es6.js","webpack://tinode-webapp/external var \"React\"","webpack://tinode-webapp/external var \"ReactDOM\"","webpack://tinode-webapp/external var \"ReactIntl\"","webpack://tinode-webapp/external var \"Tinode\"","webpack://tinode-webapp/./node_modules/@firebase/app/dist/esm/index.esm2017.js","webpack://tinode-webapp/./node_modules/@firebase/component/dist/esm/index.esm2017.js","webpack://tinode-webapp/./node_modules/@firebase/installations/dist/esm/index.esm2017.js","webpack://tinode-webapp/./node_modules/@firebase/logger/dist/esm/index.esm2017.js","webpack://tinode-webapp/./node_modules/@firebase/messaging/dist/esm/index.esm2017.js","webpack://tinode-webapp/webpack/bootstrap","webpack://tinode-webapp/webpack/runtime/compat get default export","webpack://tinode-webapp/webpack/runtime/define property getters","webpack://tinode-webapp/webpack/runtime/global","webpack://tinode-webapp/webpack/runtime/hasOwnProperty shorthand","webpack://tinode-webapp/webpack/runtime/make namespace object","webpack://tinode-webapp/./src/index.js"],"sourcesContent":["/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview Firebase constants. Some of these (@defines) can be overridden at compile-time.\r\n */\r\nconst CONSTANTS = {\r\n /**\r\n * @define {boolean} Whether this is the client Node.js SDK.\r\n */\r\n NODE_CLIENT: false,\r\n /**\r\n * @define {boolean} Whether this is the Admin Node.js SDK.\r\n */\r\n NODE_ADMIN: false,\r\n /**\r\n * Firebase SDK Version\r\n */\r\n SDK_VERSION: '${JSCORE_VERSION}'\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Throws an error if the provided assertion is falsy\r\n */\r\nconst assert = function (assertion, message) {\r\n if (!assertion) {\r\n throw assertionError(message);\r\n }\r\n};\r\n/**\r\n * Returns an Error object suitable for throwing.\r\n */\r\nconst assertionError = function (message) {\r\n return new Error('Firebase Database (' +\r\n CONSTANTS.SDK_VERSION +\r\n ') INTERNAL ASSERT FAILED: ' +\r\n message);\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst stringToByteArray$1 = function (str) {\r\n // TODO(user): Use native implementations if/when available\r\n const out = [];\r\n let p = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n let c = str.charCodeAt(i);\r\n if (c < 128) {\r\n out[p++] = c;\r\n }\r\n else if (c < 2048) {\r\n out[p++] = (c >> 6) | 192;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else if ((c & 0xfc00) === 0xd800 &&\r\n i + 1 < str.length &&\r\n (str.charCodeAt(i + 1) & 0xfc00) === 0xdc00) {\r\n // Surrogate Pair\r\n c = 0x10000 + ((c & 0x03ff) << 10) + (str.charCodeAt(++i) & 0x03ff);\r\n out[p++] = (c >> 18) | 240;\r\n out[p++] = ((c >> 12) & 63) | 128;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else {\r\n out[p++] = (c >> 12) | 224;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n }\r\n return out;\r\n};\r\n/**\r\n * Turns an array of numbers into the string given by the concatenation of the\r\n * characters to which the numbers correspond.\r\n * @param bytes Array of numbers representing characters.\r\n * @return Stringification of the array.\r\n */\r\nconst byteArrayToString = function (bytes) {\r\n // TODO(user): Use native implementations if/when available\r\n const out = [];\r\n let pos = 0, c = 0;\r\n while (pos < bytes.length) {\r\n const c1 = bytes[pos++];\r\n if (c1 < 128) {\r\n out[c++] = String.fromCharCode(c1);\r\n }\r\n else if (c1 > 191 && c1 < 224) {\r\n const c2 = bytes[pos++];\r\n out[c++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));\r\n }\r\n else if (c1 > 239 && c1 < 365) {\r\n // Surrogate Pair\r\n const c2 = bytes[pos++];\r\n const c3 = bytes[pos++];\r\n const c4 = bytes[pos++];\r\n const u = (((c1 & 7) << 18) | ((c2 & 63) << 12) | ((c3 & 63) << 6) | (c4 & 63)) -\r\n 0x10000;\r\n out[c++] = String.fromCharCode(0xd800 + (u >> 10));\r\n out[c++] = String.fromCharCode(0xdc00 + (u & 1023));\r\n }\r\n else {\r\n const c2 = bytes[pos++];\r\n const c3 = bytes[pos++];\r\n out[c++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\r\n }\r\n }\r\n return out.join('');\r\n};\r\n// We define it as an object literal instead of a class because a class compiled down to es5 can't\r\n// be treeshaked. https://github.com/rollup/rollup/issues/1691\r\n// Static lookup maps, lazily populated by init_()\r\nconst base64 = {\r\n /**\r\n * Maps bytes to characters.\r\n */\r\n byteToCharMap_: null,\r\n /**\r\n * Maps characters to bytes.\r\n */\r\n charToByteMap_: null,\r\n /**\r\n * Maps bytes to websafe characters.\r\n * @private\r\n */\r\n byteToCharMapWebSafe_: null,\r\n /**\r\n * Maps websafe characters to bytes.\r\n * @private\r\n */\r\n charToByteMapWebSafe_: null,\r\n /**\r\n * Our default alphabet, shared between\r\n * ENCODED_VALS and ENCODED_VALS_WEBSAFE\r\n */\r\n ENCODED_VALS_BASE: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 'abcdefghijklmnopqrstuvwxyz' + '0123456789',\r\n /**\r\n * Our default alphabet. Value 64 (=) is special; it means \"nothing.\"\r\n */\r\n get ENCODED_VALS() {\r\n return this.ENCODED_VALS_BASE + '+/=';\r\n },\r\n /**\r\n * Our websafe alphabet.\r\n */\r\n get ENCODED_VALS_WEBSAFE() {\r\n return this.ENCODED_VALS_BASE + '-_.';\r\n },\r\n /**\r\n * Whether this browser supports the atob and btoa functions. This extension\r\n * started at Mozilla but is now implemented by many browsers. We use the\r\n * ASSUME_* variables to avoid pulling in the full useragent detection library\r\n * but still allowing the standard per-browser compilations.\r\n *\r\n */\r\n HAS_NATIVE_SUPPORT: typeof atob === 'function',\r\n /**\r\n * Base64-encode an array of bytes.\r\n *\r\n * @param input An array of bytes (numbers with\r\n * value in [0, 255]) to encode.\r\n * @param webSafe Boolean indicating we should use the\r\n * alternative alphabet.\r\n * @return The base64 encoded string.\r\n */\r\n encodeByteArray(input, webSafe) {\r\n if (!Array.isArray(input)) {\r\n throw Error('encodeByteArray takes an array as a parameter');\r\n }\r\n this.init_();\r\n const byteToCharMap = webSafe\r\n ? this.byteToCharMapWebSafe_\r\n : this.byteToCharMap_;\r\n const output = [];\r\n for (let i = 0; i < input.length; i += 3) {\r\n const byte1 = input[i];\r\n const haveByte2 = i + 1 < input.length;\r\n const byte2 = haveByte2 ? input[i + 1] : 0;\r\n const haveByte3 = i + 2 < input.length;\r\n const byte3 = haveByte3 ? input[i + 2] : 0;\r\n const outByte1 = byte1 >> 2;\r\n const outByte2 = ((byte1 & 0x03) << 4) | (byte2 >> 4);\r\n let outByte3 = ((byte2 & 0x0f) << 2) | (byte3 >> 6);\r\n let outByte4 = byte3 & 0x3f;\r\n if (!haveByte3) {\r\n outByte4 = 64;\r\n if (!haveByte2) {\r\n outByte3 = 64;\r\n }\r\n }\r\n output.push(byteToCharMap[outByte1], byteToCharMap[outByte2], byteToCharMap[outByte3], byteToCharMap[outByte4]);\r\n }\r\n return output.join('');\r\n },\r\n /**\r\n * Base64-encode a string.\r\n *\r\n * @param input A string to encode.\r\n * @param webSafe If true, we should use the\r\n * alternative alphabet.\r\n * @return The base64 encoded string.\r\n */\r\n encodeString(input, webSafe) {\r\n // Shortcut for Mozilla browsers that implement\r\n // a native base64 encoder in the form of \"btoa/atob\"\r\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\r\n return btoa(input);\r\n }\r\n return this.encodeByteArray(stringToByteArray$1(input), webSafe);\r\n },\r\n /**\r\n * Base64-decode a string.\r\n *\r\n * @param input to decode.\r\n * @param webSafe True if we should use the\r\n * alternative alphabet.\r\n * @return string representing the decoded value.\r\n */\r\n decodeString(input, webSafe) {\r\n // Shortcut for Mozilla browsers that implement\r\n // a native base64 encoder in the form of \"btoa/atob\"\r\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\r\n return atob(input);\r\n }\r\n return byteArrayToString(this.decodeStringToByteArray(input, webSafe));\r\n },\r\n /**\r\n * Base64-decode a string.\r\n *\r\n * In base-64 decoding, groups of four characters are converted into three\r\n * bytes. If the encoder did not apply padding, the input length may not\r\n * be a multiple of 4.\r\n *\r\n * In this case, the last group will have fewer than 4 characters, and\r\n * padding will be inferred. If the group has one or two characters, it decodes\r\n * to one byte. If the group has three characters, it decodes to two bytes.\r\n *\r\n * @param input Input to decode.\r\n * @param webSafe True if we should use the web-safe alphabet.\r\n * @return bytes representing the decoded value.\r\n */\r\n decodeStringToByteArray(input, webSafe) {\r\n this.init_();\r\n const charToByteMap = webSafe\r\n ? this.charToByteMapWebSafe_\r\n : this.charToByteMap_;\r\n const output = [];\r\n for (let i = 0; i < input.length;) {\r\n const byte1 = charToByteMap[input.charAt(i++)];\r\n const haveByte2 = i < input.length;\r\n const byte2 = haveByte2 ? charToByteMap[input.charAt(i)] : 0;\r\n ++i;\r\n const haveByte3 = i < input.length;\r\n const byte3 = haveByte3 ? charToByteMap[input.charAt(i)] : 64;\r\n ++i;\r\n const haveByte4 = i < input.length;\r\n const byte4 = haveByte4 ? charToByteMap[input.charAt(i)] : 64;\r\n ++i;\r\n if (byte1 == null || byte2 == null || byte3 == null || byte4 == null) {\r\n throw Error();\r\n }\r\n const outByte1 = (byte1 << 2) | (byte2 >> 4);\r\n output.push(outByte1);\r\n if (byte3 !== 64) {\r\n const outByte2 = ((byte2 << 4) & 0xf0) | (byte3 >> 2);\r\n output.push(outByte2);\r\n if (byte4 !== 64) {\r\n const outByte3 = ((byte3 << 6) & 0xc0) | byte4;\r\n output.push(outByte3);\r\n }\r\n }\r\n }\r\n return output;\r\n },\r\n /**\r\n * Lazy static initialization function. Called before\r\n * accessing any of the static map variables.\r\n * @private\r\n */\r\n init_() {\r\n if (!this.byteToCharMap_) {\r\n this.byteToCharMap_ = {};\r\n this.charToByteMap_ = {};\r\n this.byteToCharMapWebSafe_ = {};\r\n this.charToByteMapWebSafe_ = {};\r\n // We want quick mappings back and forth, so we precompute two maps.\r\n for (let i = 0; i < this.ENCODED_VALS.length; i++) {\r\n this.byteToCharMap_[i] = this.ENCODED_VALS.charAt(i);\r\n this.charToByteMap_[this.byteToCharMap_[i]] = i;\r\n this.byteToCharMapWebSafe_[i] = this.ENCODED_VALS_WEBSAFE.charAt(i);\r\n this.charToByteMapWebSafe_[this.byteToCharMapWebSafe_[i]] = i;\r\n // Be forgiving when decoding and correctly decode both encodings.\r\n if (i >= this.ENCODED_VALS_BASE.length) {\r\n this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(i)] = i;\r\n this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(i)] = i;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n/**\r\n * URL-safe base64 encoding\r\n */\r\nconst base64Encode = function (str) {\r\n const utf8Bytes = stringToByteArray$1(str);\r\n return base64.encodeByteArray(utf8Bytes, true);\r\n};\r\n/**\r\n * URL-safe base64 encoding (without \".\" padding in the end).\r\n * e.g. Used in JSON Web Token (JWT) parts.\r\n */\r\nconst base64urlEncodeWithoutPadding = function (str) {\r\n // Use base64url encoding and remove padding in the end (dot characters).\r\n return base64Encode(str).replace(/\\./g, '');\r\n};\r\n/**\r\n * URL-safe base64 decoding\r\n *\r\n * NOTE: DO NOT use the global atob() function - it does NOT support the\r\n * base64Url variant encoding.\r\n *\r\n * @param str To be decoded\r\n * @return Decoded result, if possible\r\n */\r\nconst base64Decode = function (str) {\r\n try {\r\n return base64.decodeString(str, true);\r\n }\r\n catch (e) {\r\n console.error('base64Decode failed: ', e);\r\n }\r\n return null;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Do a deep-copy of basic JavaScript Objects or Arrays.\r\n */\r\nfunction deepCopy(value) {\r\n return deepExtend(undefined, value);\r\n}\r\n/**\r\n * Copy properties from source to target (recursively allows extension\r\n * of Objects and Arrays). Scalar values in the target are over-written.\r\n * If target is undefined, an object of the appropriate type will be created\r\n * (and returned).\r\n *\r\n * We recursively copy all child properties of plain Objects in the source- so\r\n * that namespace- like dictionaries are merged.\r\n *\r\n * Note that the target can be a function, in which case the properties in\r\n * the source Object are copied onto it as static properties of the Function.\r\n *\r\n * Note: we don't merge __proto__ to prevent prototype pollution\r\n */\r\nfunction deepExtend(target, source) {\r\n if (!(source instanceof Object)) {\r\n return source;\r\n }\r\n switch (source.constructor) {\r\n case Date:\r\n // Treat Dates like scalars; if the target date object had any child\r\n // properties - they will be lost!\r\n const dateValue = source;\r\n return new Date(dateValue.getTime());\r\n case Object:\r\n if (target === undefined) {\r\n target = {};\r\n }\r\n break;\r\n case Array:\r\n // Always copy the array source and overwrite the target.\r\n target = [];\r\n break;\r\n default:\r\n // Not a plain Object - treat it as a scalar.\r\n return source;\r\n }\r\n for (const prop in source) {\r\n // use isValidKey to guard against prototype pollution. See https://snyk.io/vuln/SNYK-JS-LODASH-450202\r\n if (!source.hasOwnProperty(prop) || !isValidKey(prop)) {\r\n continue;\r\n }\r\n target[prop] = deepExtend(target[prop], source[prop]);\r\n }\r\n return target;\r\n}\r\nfunction isValidKey(key) {\r\n return key !== '__proto__';\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass Deferred {\r\n constructor() {\r\n this.reject = () => { };\r\n this.resolve = () => { };\r\n this.promise = new Promise((resolve, reject) => {\r\n this.resolve = resolve;\r\n this.reject = reject;\r\n });\r\n }\r\n /**\r\n * Our API internals are not promiseified and cannot because our callback APIs have subtle expectations around\r\n * invoking promises inline, which Promises are forbidden to do. This method accepts an optional node-style callback\r\n * and returns a node-style callback which will resolve or reject the Deferred's promise.\r\n */\r\n wrapCallback(callback) {\r\n return (error, value) => {\r\n if (error) {\r\n this.reject(error);\r\n }\r\n else {\r\n this.resolve(value);\r\n }\r\n if (typeof callback === 'function') {\r\n // Attaching noop handler just in case developer wasn't expecting\r\n // promises\r\n this.promise.catch(() => { });\r\n // Some of our callbacks don't expect a value and our own tests\r\n // assert that the parameter length is 1\r\n if (callback.length === 1) {\r\n callback(error);\r\n }\r\n else {\r\n callback(error, value);\r\n }\r\n }\r\n };\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction createMockUserToken(token, projectId) {\r\n if (token.uid) {\r\n throw new Error('The \"uid\" field is no longer supported by mockUserToken. Please use \"sub\" instead for Firebase Auth User ID.');\r\n }\r\n // Unsecured JWTs use \"none\" as the algorithm.\r\n const header = {\r\n alg: 'none',\r\n type: 'JWT'\r\n };\r\n const project = projectId || 'demo-project';\r\n const iat = token.iat || 0;\r\n const sub = token.sub || token.user_id;\r\n if (!sub) {\r\n throw new Error(\"mockUserToken must contain 'sub' or 'user_id' field!\");\r\n }\r\n const payload = Object.assign({ \r\n // Set all required fields to decent defaults\r\n iss: `https://securetoken.google.com/${project}`, aud: project, iat, exp: iat + 3600, auth_time: iat, sub, user_id: sub, firebase: {\r\n sign_in_provider: 'custom',\r\n identities: {}\r\n } }, token);\r\n // Unsecured JWTs use the empty string as a signature.\r\n const signature = '';\r\n return [\r\n base64urlEncodeWithoutPadding(JSON.stringify(header)),\r\n base64urlEncodeWithoutPadding(JSON.stringify(payload)),\r\n signature\r\n ].join('.');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns navigator.userAgent string or '' if it's not defined.\r\n * @return user agent string\r\n */\r\nfunction getUA() {\r\n if (typeof navigator !== 'undefined' &&\r\n typeof navigator['userAgent'] === 'string') {\r\n return navigator['userAgent'];\r\n }\r\n else {\r\n return '';\r\n }\r\n}\r\n/**\r\n * Detect Cordova / PhoneGap / Ionic frameworks on a mobile device.\r\n *\r\n * Deliberately does not rely on checking `file://` URLs (as this fails PhoneGap\r\n * in the Ripple emulator) nor Cordova `onDeviceReady`, which would normally\r\n * wait for a callback.\r\n */\r\nfunction isMobileCordova() {\r\n return (typeof window !== 'undefined' &&\r\n // @ts-ignore Setting up an broadly applicable index signature for Window\r\n // just to deal with this case would probably be a bad idea.\r\n !!(window['cordova'] || window['phonegap'] || window['PhoneGap']) &&\r\n /ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(getUA()));\r\n}\r\n/**\r\n * Detect Node.js.\r\n *\r\n * @return true if Node.js environment is detected.\r\n */\r\n// Node detection logic from: https://github.com/iliakan/detect-node/\r\nfunction isNode() {\r\n try {\r\n return (Object.prototype.toString.call(global.process) === '[object process]');\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n}\r\n/**\r\n * Detect Browser Environment\r\n */\r\nfunction isBrowser() {\r\n return typeof self === 'object' && self.self === self;\r\n}\r\nfunction isBrowserExtension() {\r\n const runtime = typeof chrome === 'object'\r\n ? chrome.runtime\r\n : typeof browser === 'object'\r\n ? browser.runtime\r\n : undefined;\r\n return typeof runtime === 'object' && runtime.id !== undefined;\r\n}\r\n/**\r\n * Detect React Native.\r\n *\r\n * @return true if ReactNative environment is detected.\r\n */\r\nfunction isReactNative() {\r\n return (typeof navigator === 'object' && navigator['product'] === 'ReactNative');\r\n}\r\n/** Detects Electron apps. */\r\nfunction isElectron() {\r\n return getUA().indexOf('Electron/') >= 0;\r\n}\r\n/** Detects Internet Explorer. */\r\nfunction isIE() {\r\n const ua = getUA();\r\n return ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\r\n}\r\n/** Detects Universal Windows Platform apps. */\r\nfunction isUWP() {\r\n return getUA().indexOf('MSAppHost/') >= 0;\r\n}\r\n/**\r\n * Detect whether the current SDK build is the Node version.\r\n *\r\n * @return true if it's the Node SDK build.\r\n */\r\nfunction isNodeSdk() {\r\n return CONSTANTS.NODE_CLIENT === true || CONSTANTS.NODE_ADMIN === true;\r\n}\r\n/** Returns true if we are running in Safari. */\r\nfunction isSafari() {\r\n return (!isNode() &&\r\n navigator.userAgent.includes('Safari') &&\r\n !navigator.userAgent.includes('Chrome'));\r\n}\r\n/**\r\n * This method checks if indexedDB is supported by current browser/service worker context\r\n * @return true if indexedDB is supported by current browser/service worker context\r\n */\r\nfunction isIndexedDBAvailable() {\r\n return typeof indexedDB === 'object';\r\n}\r\n/**\r\n * This method validates browser/sw context for indexedDB by opening a dummy indexedDB database and reject\r\n * if errors occur during the database open operation.\r\n *\r\n * @throws exception if current browser/sw context can't run idb.open (ex: Safari iframe, Firefox\r\n * private browsing)\r\n */\r\nfunction validateIndexedDBOpenable() {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n let preExist = true;\r\n const DB_CHECK_NAME = 'validate-browser-context-for-indexeddb-analytics-module';\r\n const request = self.indexedDB.open(DB_CHECK_NAME);\r\n request.onsuccess = () => {\r\n request.result.close();\r\n // delete database only when it doesn't pre-exist\r\n if (!preExist) {\r\n self.indexedDB.deleteDatabase(DB_CHECK_NAME);\r\n }\r\n resolve(true);\r\n };\r\n request.onupgradeneeded = () => {\r\n preExist = false;\r\n };\r\n request.onerror = () => {\r\n var _a;\r\n reject(((_a = request.error) === null || _a === void 0 ? void 0 : _a.message) || '');\r\n };\r\n }\r\n catch (error) {\r\n reject(error);\r\n }\r\n });\r\n}\r\n/**\r\n *\r\n * This method checks whether cookie is enabled within current browser\r\n * @return true if cookie is enabled within current browser\r\n */\r\nfunction areCookiesEnabled() {\r\n if (typeof navigator === 'undefined' || !navigator.cookieEnabled) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n/**\r\n * Polyfill for `globalThis` object.\r\n * @returns the `globalThis` object for the given environment.\r\n */\r\nfunction getGlobal() {\r\n if (typeof self !== 'undefined') {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined') {\r\n return window;\r\n }\r\n if (typeof global !== 'undefined') {\r\n return global;\r\n }\r\n throw new Error('Unable to locate global object.');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview Standardized Firebase Error.\r\n *\r\n * Usage:\r\n *\r\n * // Typescript string literals for type-safe codes\r\n * type Err =\r\n * 'unknown' |\r\n * 'object-not-found'\r\n * ;\r\n *\r\n * // Closure enum for type-safe error codes\r\n * // at-enum {string}\r\n * var Err = {\r\n * UNKNOWN: 'unknown',\r\n * OBJECT_NOT_FOUND: 'object-not-found',\r\n * }\r\n *\r\n * let errors: Map = {\r\n * 'generic-error': \"Unknown error\",\r\n * 'file-not-found': \"Could not find file: {$file}\",\r\n * };\r\n *\r\n * // Type-safe function - must pass a valid error code as param.\r\n * let error = new ErrorFactory('service', 'Service', errors);\r\n *\r\n * ...\r\n * throw error.create(Err.GENERIC);\r\n * ...\r\n * throw error.create(Err.FILE_NOT_FOUND, {'file': fileName});\r\n * ...\r\n * // Service: Could not file file: foo.txt (service/file-not-found).\r\n *\r\n * catch (e) {\r\n * assert(e.message === \"Could not find file: foo.txt.\");\r\n * if (e.code === 'service/file-not-found') {\r\n * console.log(\"Could not read file: \" + e['file']);\r\n * }\r\n * }\r\n */\r\nconst ERROR_NAME = 'FirebaseError';\r\n// Based on code from:\r\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Custom_Error_Types\r\nclass FirebaseError extends Error {\r\n constructor(\r\n /** The error code for this error. */\r\n code, message, \r\n /** Custom data for this error. */\r\n customData) {\r\n super(message);\r\n this.code = code;\r\n this.customData = customData;\r\n /** The custom name for all FirebaseErrors. */\r\n this.name = ERROR_NAME;\r\n // Fix For ES5\r\n // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\r\n Object.setPrototypeOf(this, FirebaseError.prototype);\r\n // Maintains proper stack trace for where our error was thrown.\r\n // Only available on V8.\r\n if (Error.captureStackTrace) {\r\n Error.captureStackTrace(this, ErrorFactory.prototype.create);\r\n }\r\n }\r\n}\r\nclass ErrorFactory {\r\n constructor(service, serviceName, errors) {\r\n this.service = service;\r\n this.serviceName = serviceName;\r\n this.errors = errors;\r\n }\r\n create(code, ...data) {\r\n const customData = data[0] || {};\r\n const fullCode = `${this.service}/${code}`;\r\n const template = this.errors[code];\r\n const message = template ? replaceTemplate(template, customData) : 'Error';\r\n // Service Name: Error message (service/code).\r\n const fullMessage = `${this.serviceName}: ${message} (${fullCode}).`;\r\n const error = new FirebaseError(fullCode, fullMessage, customData);\r\n return error;\r\n }\r\n}\r\nfunction replaceTemplate(template, data) {\r\n return template.replace(PATTERN, (_, key) => {\r\n const value = data[key];\r\n return value != null ? String(value) : `<${key}?>`;\r\n });\r\n}\r\nconst PATTERN = /\\{\\$([^}]+)}/g;\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Evaluates a JSON string into a javascript object.\r\n *\r\n * @param {string} str A string containing JSON.\r\n * @return {*} The javascript object representing the specified JSON.\r\n */\r\nfunction jsonEval(str) {\r\n return JSON.parse(str);\r\n}\r\n/**\r\n * Returns JSON representing a javascript object.\r\n * @param {*} data Javascript object to be stringified.\r\n * @return {string} The JSON contents of the object.\r\n */\r\nfunction stringify(data) {\r\n return JSON.stringify(data);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Decodes a Firebase auth. token into constituent parts.\r\n *\r\n * Notes:\r\n * - May return with invalid / incomplete claims if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst decode = function (token) {\r\n let header = {}, claims = {}, data = {}, signature = '';\r\n try {\r\n const parts = token.split('.');\r\n header = jsonEval(base64Decode(parts[0]) || '');\r\n claims = jsonEval(base64Decode(parts[1]) || '');\r\n signature = parts[2];\r\n data = claims['d'] || {};\r\n delete claims['d'];\r\n }\r\n catch (e) { }\r\n return {\r\n header,\r\n claims,\r\n data,\r\n signature\r\n };\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and checks the validity of its time-based claims. Will return true if the\r\n * token is within the time window authorized by the 'nbf' (not-before) and 'iat' (issued-at) claims.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst isValidTimestamp = function (token) {\r\n const claims = decode(token).claims;\r\n const now = Math.floor(new Date().getTime() / 1000);\r\n let validSince = 0, validUntil = 0;\r\n if (typeof claims === 'object') {\r\n if (claims.hasOwnProperty('nbf')) {\r\n validSince = claims['nbf'];\r\n }\r\n else if (claims.hasOwnProperty('iat')) {\r\n validSince = claims['iat'];\r\n }\r\n if (claims.hasOwnProperty('exp')) {\r\n validUntil = claims['exp'];\r\n }\r\n else {\r\n // token will expire after 24h by default\r\n validUntil = validSince + 86400;\r\n }\r\n }\r\n return (!!now &&\r\n !!validSince &&\r\n !!validUntil &&\r\n now >= validSince &&\r\n now <= validUntil);\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and returns its issued at time if valid, null otherwise.\r\n *\r\n * Notes:\r\n * - May return null if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst issuedAtTime = function (token) {\r\n const claims = decode(token).claims;\r\n if (typeof claims === 'object' && claims.hasOwnProperty('iat')) {\r\n return claims['iat'];\r\n }\r\n return null;\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and checks the validity of its format. Expects a valid issued-at time.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst isValidFormat = function (token) {\r\n const decoded = decode(token), claims = decoded.claims;\r\n return !!claims && typeof claims === 'object' && claims.hasOwnProperty('iat');\r\n};\r\n/**\r\n * Attempts to peer into an auth token and determine if it's an admin auth token by looking at the claims portion.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst isAdmin = function (token) {\r\n const claims = decode(token).claims;\r\n return typeof claims === 'object' && claims['admin'] === true;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction contains(obj, key) {\r\n return Object.prototype.hasOwnProperty.call(obj, key);\r\n}\r\nfunction safeGet(obj, key) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n return obj[key];\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\nfunction isEmpty(obj) {\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction map(obj, fn, contextObj) {\r\n const res = {};\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n res[key] = fn.call(contextObj, obj[key], key, obj);\r\n }\r\n }\r\n return res;\r\n}\r\n/**\r\n * Deep equal two objects. Support Arrays and Objects.\r\n */\r\nfunction deepEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n const aKeys = Object.keys(a);\r\n const bKeys = Object.keys(b);\r\n for (const k of aKeys) {\r\n if (!bKeys.includes(k)) {\r\n return false;\r\n }\r\n const aProp = a[k];\r\n const bProp = b[k];\r\n if (isObject(aProp) && isObject(bProp)) {\r\n if (!deepEqual(aProp, bProp)) {\r\n return false;\r\n }\r\n }\r\n else if (aProp !== bProp) {\r\n return false;\r\n }\r\n }\r\n for (const k of bKeys) {\r\n if (!aKeys.includes(k)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction isObject(thing) {\r\n return thing !== null && typeof thing === 'object';\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns a querystring-formatted string (e.g. &arg=val&arg2=val2) from a\r\n * params object (e.g. {arg: 'val', arg2: 'val2'})\r\n * Note: You must prepend it with ? when adding it to a URL.\r\n */\r\nfunction querystring(querystringParams) {\r\n const params = [];\r\n for (const [key, value] of Object.entries(querystringParams)) {\r\n if (Array.isArray(value)) {\r\n value.forEach(arrayVal => {\r\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(arrayVal));\r\n });\r\n }\r\n else {\r\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\r\n }\r\n }\r\n return params.length ? '&' + params.join('&') : '';\r\n}\r\n/**\r\n * Decodes a querystring (e.g. ?arg=val&arg2=val2) into a params object\r\n * (e.g. {arg: 'val', arg2: 'val2'})\r\n */\r\nfunction querystringDecode(querystring) {\r\n const obj = {};\r\n const tokens = querystring.replace(/^\\?/, '').split('&');\r\n tokens.forEach(token => {\r\n if (token) {\r\n const [key, value] = token.split('=');\r\n obj[decodeURIComponent(key)] = decodeURIComponent(value);\r\n }\r\n });\r\n return obj;\r\n}\r\n/**\r\n * Extract the query string part of a URL, including the leading question mark (if present).\r\n */\r\nfunction extractQuerystring(url) {\r\n const queryStart = url.indexOf('?');\r\n if (!queryStart) {\r\n return '';\r\n }\r\n const fragmentStart = url.indexOf('#', queryStart);\r\n return url.substring(queryStart, fragmentStart > 0 ? fragmentStart : undefined);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview SHA-1 cryptographic hash.\r\n * Variable names follow the notation in FIPS PUB 180-3:\r\n * http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf.\r\n *\r\n * Usage:\r\n * var sha1 = new sha1();\r\n * sha1.update(bytes);\r\n * var hash = sha1.digest();\r\n *\r\n * Performance:\r\n * Chrome 23: ~400 Mbit/s\r\n * Firefox 16: ~250 Mbit/s\r\n *\r\n */\r\n/**\r\n * SHA-1 cryptographic hash constructor.\r\n *\r\n * The properties declared here are discussed in the above algorithm document.\r\n * @constructor\r\n * @final\r\n * @struct\r\n */\r\nclass Sha1 {\r\n constructor() {\r\n /**\r\n * Holds the previous values of accumulated variables a-e in the compress_\r\n * function.\r\n * @private\r\n */\r\n this.chain_ = [];\r\n /**\r\n * A buffer holding the partially computed hash result.\r\n * @private\r\n */\r\n this.buf_ = [];\r\n /**\r\n * An array of 80 bytes, each a part of the message to be hashed. Referred to\r\n * as the message schedule in the docs.\r\n * @private\r\n */\r\n this.W_ = [];\r\n /**\r\n * Contains data needed to pad messages less than 64 bytes.\r\n * @private\r\n */\r\n this.pad_ = [];\r\n /**\r\n * @private {number}\r\n */\r\n this.inbuf_ = 0;\r\n /**\r\n * @private {number}\r\n */\r\n this.total_ = 0;\r\n this.blockSize = 512 / 8;\r\n this.pad_[0] = 128;\r\n for (let i = 1; i < this.blockSize; ++i) {\r\n this.pad_[i] = 0;\r\n }\r\n this.reset();\r\n }\r\n reset() {\r\n this.chain_[0] = 0x67452301;\r\n this.chain_[1] = 0xefcdab89;\r\n this.chain_[2] = 0x98badcfe;\r\n this.chain_[3] = 0x10325476;\r\n this.chain_[4] = 0xc3d2e1f0;\r\n this.inbuf_ = 0;\r\n this.total_ = 0;\r\n }\r\n /**\r\n * Internal compress helper function.\r\n * @param buf Block to compress.\r\n * @param offset Offset of the block in the buffer.\r\n * @private\r\n */\r\n compress_(buf, offset) {\r\n if (!offset) {\r\n offset = 0;\r\n }\r\n const W = this.W_;\r\n // get 16 big endian words\r\n if (typeof buf === 'string') {\r\n for (let i = 0; i < 16; i++) {\r\n // TODO(user): [bug 8140122] Recent versions of Safari for Mac OS and iOS\r\n // have a bug that turns the post-increment ++ operator into pre-increment\r\n // during JIT compilation. We have code that depends heavily on SHA-1 for\r\n // correctness and which is affected by this bug, so I've removed all uses\r\n // of post-increment ++ in which the result value is used. We can revert\r\n // this change once the Safari bug\r\n // (https://bugs.webkit.org/show_bug.cgi?id=109036) has been fixed and\r\n // most clients have been updated.\r\n W[i] =\r\n (buf.charCodeAt(offset) << 24) |\r\n (buf.charCodeAt(offset + 1) << 16) |\r\n (buf.charCodeAt(offset + 2) << 8) |\r\n buf.charCodeAt(offset + 3);\r\n offset += 4;\r\n }\r\n }\r\n else {\r\n for (let i = 0; i < 16; i++) {\r\n W[i] =\r\n (buf[offset] << 24) |\r\n (buf[offset + 1] << 16) |\r\n (buf[offset + 2] << 8) |\r\n buf[offset + 3];\r\n offset += 4;\r\n }\r\n }\r\n // expand to 80 words\r\n for (let i = 16; i < 80; i++) {\r\n const t = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\r\n W[i] = ((t << 1) | (t >>> 31)) & 0xffffffff;\r\n }\r\n let a = this.chain_[0];\r\n let b = this.chain_[1];\r\n let c = this.chain_[2];\r\n let d = this.chain_[3];\r\n let e = this.chain_[4];\r\n let f, k;\r\n // TODO(user): Try to unroll this loop to speed up the computation.\r\n for (let i = 0; i < 80; i++) {\r\n if (i < 40) {\r\n if (i < 20) {\r\n f = d ^ (b & (c ^ d));\r\n k = 0x5a827999;\r\n }\r\n else {\r\n f = b ^ c ^ d;\r\n k = 0x6ed9eba1;\r\n }\r\n }\r\n else {\r\n if (i < 60) {\r\n f = (b & c) | (d & (b | c));\r\n k = 0x8f1bbcdc;\r\n }\r\n else {\r\n f = b ^ c ^ d;\r\n k = 0xca62c1d6;\r\n }\r\n }\r\n const t = (((a << 5) | (a >>> 27)) + f + e + k + W[i]) & 0xffffffff;\r\n e = d;\r\n d = c;\r\n c = ((b << 30) | (b >>> 2)) & 0xffffffff;\r\n b = a;\r\n a = t;\r\n }\r\n this.chain_[0] = (this.chain_[0] + a) & 0xffffffff;\r\n this.chain_[1] = (this.chain_[1] + b) & 0xffffffff;\r\n this.chain_[2] = (this.chain_[2] + c) & 0xffffffff;\r\n this.chain_[3] = (this.chain_[3] + d) & 0xffffffff;\r\n this.chain_[4] = (this.chain_[4] + e) & 0xffffffff;\r\n }\r\n update(bytes, length) {\r\n // TODO(johnlenz): tighten the function signature and remove this check\r\n if (bytes == null) {\r\n return;\r\n }\r\n if (length === undefined) {\r\n length = bytes.length;\r\n }\r\n const lengthMinusBlock = length - this.blockSize;\r\n let n = 0;\r\n // Using local instead of member variables gives ~5% speedup on Firefox 16.\r\n const buf = this.buf_;\r\n let inbuf = this.inbuf_;\r\n // The outer while loop should execute at most twice.\r\n while (n < length) {\r\n // When we have no data in the block to top up, we can directly process the\r\n // input buffer (assuming it contains sufficient data). This gives ~25%\r\n // speedup on Chrome 23 and ~15% speedup on Firefox 16, but requires that\r\n // the data is provided in large chunks (or in multiples of 64 bytes).\r\n if (inbuf === 0) {\r\n while (n <= lengthMinusBlock) {\r\n this.compress_(bytes, n);\r\n n += this.blockSize;\r\n }\r\n }\r\n if (typeof bytes === 'string') {\r\n while (n < length) {\r\n buf[inbuf] = bytes.charCodeAt(n);\r\n ++inbuf;\r\n ++n;\r\n if (inbuf === this.blockSize) {\r\n this.compress_(buf);\r\n inbuf = 0;\r\n // Jump to the outer loop so we use the full-block optimization.\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n while (n < length) {\r\n buf[inbuf] = bytes[n];\r\n ++inbuf;\r\n ++n;\r\n if (inbuf === this.blockSize) {\r\n this.compress_(buf);\r\n inbuf = 0;\r\n // Jump to the outer loop so we use the full-block optimization.\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n this.inbuf_ = inbuf;\r\n this.total_ += length;\r\n }\r\n /** @override */\r\n digest() {\r\n const digest = [];\r\n let totalBits = this.total_ * 8;\r\n // Add pad 0x80 0x00*.\r\n if (this.inbuf_ < 56) {\r\n this.update(this.pad_, 56 - this.inbuf_);\r\n }\r\n else {\r\n this.update(this.pad_, this.blockSize - (this.inbuf_ - 56));\r\n }\r\n // Add # bits.\r\n for (let i = this.blockSize - 1; i >= 56; i--) {\r\n this.buf_[i] = totalBits & 255;\r\n totalBits /= 256; // Don't use bit-shifting here!\r\n }\r\n this.compress_(this.buf_);\r\n let n = 0;\r\n for (let i = 0; i < 5; i++) {\r\n for (let j = 24; j >= 0; j -= 8) {\r\n digest[n] = (this.chain_[i] >> j) & 255;\r\n ++n;\r\n }\r\n }\r\n return digest;\r\n }\r\n}\n\n/**\r\n * Helper to make a Subscribe function (just like Promise helps make a\r\n * Thenable).\r\n *\r\n * @param executor Function which can make calls to a single Observer\r\n * as a proxy.\r\n * @param onNoObservers Callback when count of Observers goes to zero.\r\n */\r\nfunction createSubscribe(executor, onNoObservers) {\r\n const proxy = new ObserverProxy(executor, onNoObservers);\r\n return proxy.subscribe.bind(proxy);\r\n}\r\n/**\r\n * Implement fan-out for any number of Observers attached via a subscribe\r\n * function.\r\n */\r\nclass ObserverProxy {\r\n /**\r\n * @param executor Function which can make calls to a single Observer\r\n * as a proxy.\r\n * @param onNoObservers Callback when count of Observers goes to zero.\r\n */\r\n constructor(executor, onNoObservers) {\r\n this.observers = [];\r\n this.unsubscribes = [];\r\n this.observerCount = 0;\r\n // Micro-task scheduling by calling task.then().\r\n this.task = Promise.resolve();\r\n this.finalized = false;\r\n this.onNoObservers = onNoObservers;\r\n // Call the executor asynchronously so subscribers that are called\r\n // synchronously after the creation of the subscribe function\r\n // can still receive the very first value generated in the executor.\r\n this.task\r\n .then(() => {\r\n executor(this);\r\n })\r\n .catch(e => {\r\n this.error(e);\r\n });\r\n }\r\n next(value) {\r\n this.forEachObserver((observer) => {\r\n observer.next(value);\r\n });\r\n }\r\n error(error) {\r\n this.forEachObserver((observer) => {\r\n observer.error(error);\r\n });\r\n this.close(error);\r\n }\r\n complete() {\r\n this.forEachObserver((observer) => {\r\n observer.complete();\r\n });\r\n this.close();\r\n }\r\n /**\r\n * Subscribe function that can be used to add an Observer to the fan-out list.\r\n *\r\n * - We require that no event is sent to a subscriber sychronously to their\r\n * call to subscribe().\r\n */\r\n subscribe(nextOrObserver, error, complete) {\r\n let observer;\r\n if (nextOrObserver === undefined &&\r\n error === undefined &&\r\n complete === undefined) {\r\n throw new Error('Missing Observer.');\r\n }\r\n // Assemble an Observer object when passed as callback functions.\r\n if (implementsAnyMethods(nextOrObserver, [\r\n 'next',\r\n 'error',\r\n 'complete'\r\n ])) {\r\n observer = nextOrObserver;\r\n }\r\n else {\r\n observer = {\r\n next: nextOrObserver,\r\n error,\r\n complete\r\n };\r\n }\r\n if (observer.next === undefined) {\r\n observer.next = noop;\r\n }\r\n if (observer.error === undefined) {\r\n observer.error = noop;\r\n }\r\n if (observer.complete === undefined) {\r\n observer.complete = noop;\r\n }\r\n const unsub = this.unsubscribeOne.bind(this, this.observers.length);\r\n // Attempt to subscribe to a terminated Observable - we\r\n // just respond to the Observer with the final error or complete\r\n // event.\r\n if (this.finalized) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.task.then(() => {\r\n try {\r\n if (this.finalError) {\r\n observer.error(this.finalError);\r\n }\r\n else {\r\n observer.complete();\r\n }\r\n }\r\n catch (e) {\r\n // nothing\r\n }\r\n return;\r\n });\r\n }\r\n this.observers.push(observer);\r\n return unsub;\r\n }\r\n // Unsubscribe is synchronous - we guarantee that no events are sent to\r\n // any unsubscribed Observer.\r\n unsubscribeOne(i) {\r\n if (this.observers === undefined || this.observers[i] === undefined) {\r\n return;\r\n }\r\n delete this.observers[i];\r\n this.observerCount -= 1;\r\n if (this.observerCount === 0 && this.onNoObservers !== undefined) {\r\n this.onNoObservers(this);\r\n }\r\n }\r\n forEachObserver(fn) {\r\n if (this.finalized) {\r\n // Already closed by previous event....just eat the additional values.\r\n return;\r\n }\r\n // Since sendOne calls asynchronously - there is no chance that\r\n // this.observers will become undefined.\r\n for (let i = 0; i < this.observers.length; i++) {\r\n this.sendOne(i, fn);\r\n }\r\n }\r\n // Call the Observer via one of it's callback function. We are careful to\r\n // confirm that the observe has not been unsubscribed since this asynchronous\r\n // function had been queued.\r\n sendOne(i, fn) {\r\n // Execute the callback asynchronously\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.task.then(() => {\r\n if (this.observers !== undefined && this.observers[i] !== undefined) {\r\n try {\r\n fn(this.observers[i]);\r\n }\r\n catch (e) {\r\n // Ignore exceptions raised in Observers or missing methods of an\r\n // Observer.\r\n // Log error to console. b/31404806\r\n if (typeof console !== 'undefined' && console.error) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n close(err) {\r\n if (this.finalized) {\r\n return;\r\n }\r\n this.finalized = true;\r\n if (err !== undefined) {\r\n this.finalError = err;\r\n }\r\n // Proxy is no longer needed - garbage collect references\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.task.then(() => {\r\n this.observers = undefined;\r\n this.onNoObservers = undefined;\r\n });\r\n }\r\n}\r\n/** Turn synchronous function into one called asynchronously. */\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nfunction async(fn, onError) {\r\n return (...args) => {\r\n Promise.resolve(true)\r\n .then(() => {\r\n fn(...args);\r\n })\r\n .catch((error) => {\r\n if (onError) {\r\n onError(error);\r\n }\r\n });\r\n };\r\n}\r\n/**\r\n * Return true if the object passed in implements any of the named methods.\r\n */\r\nfunction implementsAnyMethods(obj, methods) {\r\n if (typeof obj !== 'object' || obj === null) {\r\n return false;\r\n }\r\n for (const method of methods) {\r\n if (method in obj && typeof obj[method] === 'function') {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction noop() {\r\n // do nothing\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Check to make sure the appropriate number of arguments are provided for a public function.\r\n * Throws an error if it fails.\r\n *\r\n * @param fnName The function name\r\n * @param minCount The minimum number of arguments to allow for the function call\r\n * @param maxCount The maximum number of argument to allow for the function call\r\n * @param argCount The actual number of arguments provided.\r\n */\r\nconst validateArgCount = function (fnName, minCount, maxCount, argCount) {\r\n let argError;\r\n if (argCount < minCount) {\r\n argError = 'at least ' + minCount;\r\n }\r\n else if (argCount > maxCount) {\r\n argError = maxCount === 0 ? 'none' : 'no more than ' + maxCount;\r\n }\r\n if (argError) {\r\n const error = fnName +\r\n ' failed: Was called with ' +\r\n argCount +\r\n (argCount === 1 ? ' argument.' : ' arguments.') +\r\n ' Expects ' +\r\n argError +\r\n '.';\r\n throw new Error(error);\r\n }\r\n};\r\n/**\r\n * Generates a string to prefix an error message about failed argument validation\r\n *\r\n * @param fnName The function name\r\n * @param argName The name of the argument\r\n * @return The prefix to add to the error thrown for validation.\r\n */\r\nfunction errorPrefix(fnName, argName) {\r\n return `${fnName} failed: ${argName} argument `;\r\n}\r\n/**\r\n * @param fnName\r\n * @param argumentNumber\r\n * @param namespace\r\n * @param optional\r\n */\r\nfunction validateNamespace(fnName, namespace, optional) {\r\n if (optional && !namespace) {\r\n return;\r\n }\r\n if (typeof namespace !== 'string') {\r\n //TODO: I should do more validation here. We only allow certain chars in namespaces.\r\n throw new Error(errorPrefix(fnName, 'namespace') + 'must be a valid firebase namespace.');\r\n }\r\n}\r\nfunction validateCallback(fnName, argumentName, \r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\ncallback, optional) {\r\n if (optional && !callback) {\r\n return;\r\n }\r\n if (typeof callback !== 'function') {\r\n throw new Error(errorPrefix(fnName, argumentName) + 'must be a valid function.');\r\n }\r\n}\r\nfunction validateContextObject(fnName, argumentName, context, optional) {\r\n if (optional && !context) {\r\n return;\r\n }\r\n if (typeof context !== 'object' || context === null) {\r\n throw new Error(errorPrefix(fnName, argumentName) + 'must be a valid context object.');\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Code originally came from goog.crypt.stringToUtf8ByteArray, but for some reason they\r\n// automatically replaced '\\r\\n' with '\\n', and they didn't handle surrogate pairs,\r\n// so it's been modified.\r\n// Note that not all Unicode characters appear as single characters in JavaScript strings.\r\n// fromCharCode returns the UTF-16 encoding of a character - so some Unicode characters\r\n// use 2 characters in Javascript. All 4-byte UTF-8 characters begin with a first\r\n// character in the range 0xD800 - 0xDBFF (the first character of a so-called surrogate\r\n// pair).\r\n// See http://www.ecma-international.org/ecma-262/5.1/#sec-15.1.3\r\n/**\r\n * @param {string} str\r\n * @return {Array}\r\n */\r\nconst stringToByteArray = function (str) {\r\n const out = [];\r\n let p = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n let c = str.charCodeAt(i);\r\n // Is this the lead surrogate in a surrogate pair?\r\n if (c >= 0xd800 && c <= 0xdbff) {\r\n const high = c - 0xd800; // the high 10 bits.\r\n i++;\r\n assert(i < str.length, 'Surrogate pair missing trail surrogate.');\r\n const low = str.charCodeAt(i) - 0xdc00; // the low 10 bits.\r\n c = 0x10000 + (high << 10) + low;\r\n }\r\n if (c < 128) {\r\n out[p++] = c;\r\n }\r\n else if (c < 2048) {\r\n out[p++] = (c >> 6) | 192;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else if (c < 65536) {\r\n out[p++] = (c >> 12) | 224;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else {\r\n out[p++] = (c >> 18) | 240;\r\n out[p++] = ((c >> 12) & 63) | 128;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n }\r\n return out;\r\n};\r\n/**\r\n * Calculate length without actually converting; useful for doing cheaper validation.\r\n * @param {string} str\r\n * @return {number}\r\n */\r\nconst stringLength = function (str) {\r\n let p = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n const c = str.charCodeAt(i);\r\n if (c < 128) {\r\n p++;\r\n }\r\n else if (c < 2048) {\r\n p += 2;\r\n }\r\n else if (c >= 0xd800 && c <= 0xdbff) {\r\n // Lead surrogate of a surrogate pair. The pair together will take 4 bytes to represent.\r\n p += 4;\r\n i++; // skip trail surrogate.\r\n }\r\n else {\r\n p += 3;\r\n }\r\n }\r\n return p;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * The amount of milliseconds to exponentially increase.\r\n */\r\nconst DEFAULT_INTERVAL_MILLIS = 1000;\r\n/**\r\n * The factor to backoff by.\r\n * Should be a number greater than 1.\r\n */\r\nconst DEFAULT_BACKOFF_FACTOR = 2;\r\n/**\r\n * The maximum milliseconds to increase to.\r\n *\r\n *
Visible for testing\r\n */\r\nconst MAX_VALUE_MILLIS = 4 * 60 * 60 * 1000; // Four hours, like iOS and Android.\r\n/**\r\n * The percentage of backoff time to randomize by.\r\n * See\r\n * http://go/safe-client-behavior#step-1-determine-the-appropriate-retry-interval-to-handle-spike-traffic\r\n * for context.\r\n *\r\n *
Visible for testing\r\n */\r\nconst RANDOM_FACTOR = 0.5;\r\n/**\r\n * Based on the backoff method from\r\n * https://github.com/google/closure-library/blob/master/closure/goog/math/exponentialbackoff.js.\r\n * Extracted here so we don't need to pass metadata and a stateful ExponentialBackoff object around.\r\n */\r\nfunction calculateBackoffMillis(backoffCount, intervalMillis = DEFAULT_INTERVAL_MILLIS, backoffFactor = DEFAULT_BACKOFF_FACTOR) {\r\n // Calculates an exponentially increasing value.\r\n // Deviation: calculates value from count and a constant interval, so we only need to save value\r\n // and count to restore state.\r\n const currBaseValue = intervalMillis * Math.pow(backoffFactor, backoffCount);\r\n // A random \"fuzz\" to avoid waves of retries.\r\n // Deviation: randomFactor is required.\r\n const randomWait = Math.round(\r\n // A fraction of the backoff value to add/subtract.\r\n // Deviation: changes multiplication order to improve readability.\r\n RANDOM_FACTOR *\r\n currBaseValue *\r\n // A random float (rounded to int by Math.round above) in the range [-1, 1]. Determines\r\n // if we add or subtract.\r\n (Math.random() - 0.5) *\r\n 2);\r\n // Limits backoff to max to avoid effectively permanent backoff.\r\n return Math.min(MAX_VALUE_MILLIS, currBaseValue + randomWait);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Provide English ordinal letters after a number\r\n */\r\nfunction ordinal(i) {\r\n if (!Number.isFinite(i)) {\r\n return `${i}`;\r\n }\r\n return i + indicator(i);\r\n}\r\nfunction indicator(i) {\r\n i = Math.abs(i);\r\n const cent = i % 100;\r\n if (cent >= 10 && cent <= 20) {\r\n return 'th';\r\n }\r\n const dec = i % 10;\r\n if (dec === 1) {\r\n return 'st';\r\n }\r\n if (dec === 2) {\r\n return 'nd';\r\n }\r\n if (dec === 3) {\r\n return 'rd';\r\n }\r\n return 'th';\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getModularInstance(service) {\r\n if (service && service._delegate) {\r\n return service._delegate;\r\n }\r\n else {\r\n return service;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2022 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @internal\r\n */\r\nfunction promisifyRequest(request, errorMessage) {\r\n return new Promise((resolve, reject) => {\r\n request.onsuccess = event => {\r\n resolve(event.target.result);\r\n };\r\n request.onerror = event => {\r\n var _a;\r\n reject(`${errorMessage}: ${(_a = event.target.error) === null || _a === void 0 ? void 0 : _a.message}`);\r\n };\r\n });\r\n}\r\n/**\r\n * @internal\r\n */\r\nclass DBWrapper {\r\n constructor(_db) {\r\n this._db = _db;\r\n this.objectStoreNames = this._db.objectStoreNames;\r\n }\r\n transaction(storeNames, mode = 'readonly') {\r\n return new TransactionWrapper(this._db.transaction.call(this._db, storeNames, mode));\r\n }\r\n createObjectStore(storeName, options) {\r\n return new ObjectStoreWrapper(this._db.createObjectStore(storeName, options));\r\n }\r\n close() {\r\n this._db.close();\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nclass TransactionWrapper {\r\n constructor(_transaction) {\r\n this._transaction = _transaction;\r\n this.complete = new Promise((resolve, reject) => {\r\n this._transaction.oncomplete = function () {\r\n resolve();\r\n };\r\n this._transaction.onerror = () => {\r\n reject(this._transaction.error);\r\n };\r\n this._transaction.onabort = () => {\r\n reject(this._transaction.error);\r\n };\r\n });\r\n }\r\n objectStore(storeName) {\r\n return new ObjectStoreWrapper(this._transaction.objectStore(storeName));\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nclass ObjectStoreWrapper {\r\n constructor(_store) {\r\n this._store = _store;\r\n }\r\n index(name) {\r\n return new IndexWrapper(this._store.index(name));\r\n }\r\n createIndex(name, keypath, options) {\r\n return new IndexWrapper(this._store.createIndex(name, keypath, options));\r\n }\r\n get(key) {\r\n const request = this._store.get(key);\r\n return promisifyRequest(request, 'Error reading from IndexedDB');\r\n }\r\n put(value, key) {\r\n const request = this._store.put(value, key);\r\n return promisifyRequest(request, 'Error writing to IndexedDB');\r\n }\r\n delete(key) {\r\n const request = this._store.delete(key);\r\n return promisifyRequest(request, 'Error deleting from IndexedDB');\r\n }\r\n clear() {\r\n const request = this._store.clear();\r\n return promisifyRequest(request, 'Error clearing IndexedDB object store');\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nclass IndexWrapper {\r\n constructor(_index) {\r\n this._index = _index;\r\n }\r\n get(key) {\r\n const request = this._index.get(key);\r\n return promisifyRequest(request, 'Error reading from IndexedDB');\r\n }\r\n}\r\n/**\r\n * @internal\r\n */\r\nfunction openDB(dbName, dbVersion, upgradeCallback) {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n const request = indexedDB.open(dbName, dbVersion);\r\n request.onsuccess = event => {\r\n resolve(new DBWrapper(event.target.result));\r\n };\r\n request.onerror = event => {\r\n var _a;\r\n reject(`Error opening indexedDB: ${(_a = event.target.error) === null || _a === void 0 ? void 0 : _a.message}`);\r\n };\r\n request.onupgradeneeded = event => {\r\n upgradeCallback(new DBWrapper(request.result), event.oldVersion, event.newVersion, new TransactionWrapper(request.transaction));\r\n };\r\n }\r\n catch (e) {\r\n reject(`Error opening indexedDB: ${e.message}`);\r\n }\r\n });\r\n}\r\n/**\r\n * @internal\r\n */\r\nasync function deleteDB(dbName) {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n const request = indexedDB.deleteDatabase(dbName);\r\n request.onsuccess = () => {\r\n resolve();\r\n };\r\n request.onerror = event => {\r\n var _a;\r\n reject(`Error deleting indexedDB database \"${dbName}\": ${(_a = event.target.error) === null || _a === void 0 ? void 0 : _a.message}`);\r\n };\r\n }\r\n catch (e) {\r\n reject(`Error deleting indexedDB database \"${dbName}\": ${e.message}`);\r\n }\r\n });\r\n}\n\nexport { CONSTANTS, DBWrapper, Deferred, ErrorFactory, FirebaseError, MAX_VALUE_MILLIS, RANDOM_FACTOR, Sha1, areCookiesEnabled, assert, assertionError, async, base64, base64Decode, base64Encode, base64urlEncodeWithoutPadding, calculateBackoffMillis, contains, createMockUserToken, createSubscribe, decode, deepCopy, deepEqual, deepExtend, deleteDB, errorPrefix, extractQuerystring, getGlobal, getModularInstance, getUA, isAdmin, isBrowser, isBrowserExtension, isElectron, isEmpty, isIE, isIndexedDBAvailable, isMobileCordova, isNode, isNodeSdk, isReactNative, isSafari, isUWP, isValidFormat, isValidTimestamp, issuedAtTime, jsonEval, map, openDB, ordinal, querystring, querystringDecode, safeGet, stringLength, stringToByteArray, stringify, validateArgCount, validateCallback, validateContextObject, validateIndexedDBOpenable, validateNamespace };\n//# sourceMappingURL=index.esm2017.js.map\n","//\n// Main\n//\nexport default function memoize(fn, options) {\n var cache = options && options.cache ? options.cache : cacheDefault;\n var serializer = options && options.serializer ? options.serializer : serializerDefault;\n var strategy = options && options.strategy ? options.strategy : strategyDefault;\n return strategy(fn, {\n cache: cache,\n serializer: serializer,\n });\n}\n//\n// Strategy\n//\nfunction isPrimitive(value) {\n return (value == null || typeof value === 'number' || typeof value === 'boolean'); // || typeof value === \"string\" 'unsafe' primitive for our needs\n}\nfunction monadic(fn, cache, serializer, arg) {\n var cacheKey = isPrimitive(arg) ? arg : serializer(arg);\n var computedValue = cache.get(cacheKey);\n if (typeof computedValue === 'undefined') {\n computedValue = fn.call(this, arg);\n cache.set(cacheKey, computedValue);\n }\n return computedValue;\n}\nfunction variadic(fn, cache, serializer) {\n var args = Array.prototype.slice.call(arguments, 3);\n var cacheKey = serializer(args);\n var computedValue = cache.get(cacheKey);\n if (typeof computedValue === 'undefined') {\n computedValue = fn.apply(this, args);\n cache.set(cacheKey, computedValue);\n }\n return computedValue;\n}\nfunction assemble(fn, context, strategy, cache, serialize) {\n return strategy.bind(context, fn, cache, serialize);\n}\nfunction strategyDefault(fn, options) {\n var strategy = fn.length === 1 ? monadic : variadic;\n return assemble(fn, this, strategy, options.cache.create(), options.serializer);\n}\nfunction strategyVariadic(fn, options) {\n return assemble(fn, this, variadic, options.cache.create(), options.serializer);\n}\nfunction strategyMonadic(fn, options) {\n return assemble(fn, this, monadic, options.cache.create(), options.serializer);\n}\n//\n// Serializer\n//\nvar serializerDefault = function () {\n return JSON.stringify(arguments);\n};\n//\n// Cache\n//\nfunction ObjectWithoutPrototypeCache() {\n this.cache = Object.create(null);\n}\nObjectWithoutPrototypeCache.prototype.get = function (key) {\n return this.cache[key];\n};\nObjectWithoutPrototypeCache.prototype.set = function (key, value) {\n this.cache[key] = value;\n};\nvar cacheDefault = {\n create: function create() {\n // @ts-ignore\n return new ObjectWithoutPrototypeCache();\n },\n};\nexport var strategies = {\n variadic: strategyVariadic,\n monadic: strategyMonadic,\n};\n","export var ErrorKind;\n(function (ErrorKind) {\n /** Argument is unclosed (e.g. `{0`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_CLOSING_BRACE\"] = 1] = \"EXPECT_ARGUMENT_CLOSING_BRACE\";\n /** Argument is empty (e.g. `{}`). */\n ErrorKind[ErrorKind[\"EMPTY_ARGUMENT\"] = 2] = \"EMPTY_ARGUMENT\";\n /** Argument is malformed (e.g. `{foo!}``) */\n ErrorKind[ErrorKind[\"MALFORMED_ARGUMENT\"] = 3] = \"MALFORMED_ARGUMENT\";\n /** Expect an argument type (e.g. `{foo,}`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_TYPE\"] = 4] = \"EXPECT_ARGUMENT_TYPE\";\n /** Unsupported argument type (e.g. `{foo,foo}`) */\n ErrorKind[ErrorKind[\"INVALID_ARGUMENT_TYPE\"] = 5] = \"INVALID_ARGUMENT_TYPE\";\n /** Expect an argument style (e.g. `{foo, number, }`) */\n ErrorKind[ErrorKind[\"EXPECT_ARGUMENT_STYLE\"] = 6] = \"EXPECT_ARGUMENT_STYLE\";\n /** The number skeleton is invalid. */\n ErrorKind[ErrorKind[\"INVALID_NUMBER_SKELETON\"] = 7] = \"INVALID_NUMBER_SKELETON\";\n /** The date time skeleton is invalid. */\n ErrorKind[ErrorKind[\"INVALID_DATE_TIME_SKELETON\"] = 8] = \"INVALID_DATE_TIME_SKELETON\";\n /** Exepct a number skeleton following the `::` (e.g. `{foo, number, ::}`) */\n ErrorKind[ErrorKind[\"EXPECT_NUMBER_SKELETON\"] = 9] = \"EXPECT_NUMBER_SKELETON\";\n /** Exepct a date time skeleton following the `::` (e.g. `{foo, date, ::}`) */\n ErrorKind[ErrorKind[\"EXPECT_DATE_TIME_SKELETON\"] = 10] = \"EXPECT_DATE_TIME_SKELETON\";\n /** Unmatched apostrophes in the argument style (e.g. `{foo, number, 'test`) */\n ErrorKind[ErrorKind[\"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\"] = 11] = \"UNCLOSED_QUOTE_IN_ARGUMENT_STYLE\";\n /** Missing select argument options (e.g. `{foo, select}`) */\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_OPTIONS\"] = 12] = \"EXPECT_SELECT_ARGUMENT_OPTIONS\";\n /** Expecting an offset value in `plural` or `selectordinal` argument (e.g `{foo, plural, offset}`) */\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 13] = \"EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE\";\n /** Offset value in `plural` or `selectordinal` is invalid (e.g. `{foo, plural, offset: x}`) */\n ErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\"] = 14] = \"INVALID_PLURAL_ARGUMENT_OFFSET_VALUE\";\n /** Expecting a selector in `select` argument (e.g `{foo, select}`) */\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR\"] = 15] = \"EXPECT_SELECT_ARGUMENT_SELECTOR\";\n /** Expecting a selector in `plural` or `selectordinal` argument (e.g `{foo, plural}`) */\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR\"] = 16] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR\";\n /** Expecting a message fragment after the `select` selector (e.g. `{foo, select, apple}`) */\n ErrorKind[ErrorKind[\"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\"] = 17] = \"EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\";\n /**\n * Expecting a message fragment after the `plural` or `selectordinal` selector\n * (e.g. `{foo, plural, one}`)\n */\n ErrorKind[ErrorKind[\"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\"] = 18] = \"EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT\";\n /** Selector in `plural` or `selectordinal` is malformed (e.g. `{foo, plural, =x {#}}`) */\n ErrorKind[ErrorKind[\"INVALID_PLURAL_ARGUMENT_SELECTOR\"] = 19] = \"INVALID_PLURAL_ARGUMENT_SELECTOR\";\n /**\n * Duplicate selectors in `plural` or `selectordinal` argument.\n * (e.g. {foo, plural, one {#} one {#}})\n */\n ErrorKind[ErrorKind[\"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\"] = 20] = \"DUPLICATE_PLURAL_ARGUMENT_SELECTOR\";\n /** Duplicate selectors in `select` argument.\n * (e.g. {foo, select, apple {apple} apple {apple}})\n */\n ErrorKind[ErrorKind[\"DUPLICATE_SELECT_ARGUMENT_SELECTOR\"] = 21] = \"DUPLICATE_SELECT_ARGUMENT_SELECTOR\";\n /** Plural or select argument option must have `other` clause. */\n ErrorKind[ErrorKind[\"MISSING_OTHER_CLAUSE\"] = 22] = \"MISSING_OTHER_CLAUSE\";\n /** The tag is malformed. (e.g. `foo) */\n ErrorKind[ErrorKind[\"INVALID_TAG\"] = 23] = \"INVALID_TAG\";\n /** The tag name is invalid. (e.g. `<123>foo123>`) */\n ErrorKind[ErrorKind[\"INVALID_TAG_NAME\"] = 25] = \"INVALID_TAG_NAME\";\n /** The closing tag does not match the opening tag. (e.g. `foo`) */\n ErrorKind[ErrorKind[\"UNMATCHED_CLOSING_TAG\"] = 26] = \"UNMATCHED_CLOSING_TAG\";\n /** The opening tag has unmatched closing tag. (e.g. `foo`) */\n ErrorKind[ErrorKind[\"UNCLOSED_TAG\"] = 27] = \"UNCLOSED_TAG\";\n})(ErrorKind || (ErrorKind = {}));\n","import { __assign } from \"tslib\";\nimport { ErrorKind } from './error';\nimport { Parser } from './parser';\nimport { isDateElement, isDateTimeSkeleton, isNumberElement, isNumberSkeleton, isPluralElement, isSelectElement, isTagElement, isTimeElement, } from './types';\nfunction pruneLocation(els) {\n els.forEach(function (el) {\n delete el.location;\n if (isSelectElement(el) || isPluralElement(el)) {\n for (var k in el.options) {\n delete el.options[k].location;\n pruneLocation(el.options[k].value);\n }\n }\n else if (isNumberElement(el) && isNumberSkeleton(el.style)) {\n delete el.style.location;\n }\n else if ((isDateElement(el) || isTimeElement(el)) &&\n isDateTimeSkeleton(el.style)) {\n delete el.style.location;\n }\n else if (isTagElement(el)) {\n pruneLocation(el.children);\n }\n });\n}\nexport function parse(message, opts) {\n if (opts === void 0) { opts = {}; }\n opts = __assign({ shouldParseSkeletons: true, requiresOtherClause: true }, opts);\n var result = new Parser(message, opts).parse();\n if (result.err) {\n var error = SyntaxError(ErrorKind[result.err.kind]);\n // @ts-expect-error Assign to error object\n error.location = result.err.location;\n // @ts-expect-error Assign to error object\n error.originalMessage = result.err.message;\n throw error;\n }\n if (!(opts === null || opts === void 0 ? void 0 : opts.captureLocation)) {\n pruneLocation(result.val);\n }\n return result.val;\n}\nexport * from './types';\n","var _a;\nimport { __assign } from \"tslib\";\nimport { ErrorKind } from './error';\nimport { SKELETON_TYPE, TYPE, } from './types';\nimport { SPACE_SEPARATOR_REGEX } from './regex.generated';\nimport { parseNumberSkeleton, parseNumberSkeletonFromString, parseDateTimeSkeleton, } from '@formatjs/icu-skeleton-parser';\nvar SPACE_SEPARATOR_START_REGEX = new RegExp(\"^\".concat(SPACE_SEPARATOR_REGEX.source, \"*\"));\nvar SPACE_SEPARATOR_END_REGEX = new RegExp(\"\".concat(SPACE_SEPARATOR_REGEX.source, \"*$\"));\nfunction createLocation(start, end) {\n return { start: start, end: end };\n}\n// #region Ponyfills\n// Consolidate these variables up top for easier toggling during debugging\nvar hasNativeStartsWith = !!String.prototype.startsWith;\nvar hasNativeFromCodePoint = !!String.fromCodePoint;\nvar hasNativeFromEntries = !!Object.fromEntries;\nvar hasNativeCodePointAt = !!String.prototype.codePointAt;\nvar hasTrimStart = !!String.prototype.trimStart;\nvar hasTrimEnd = !!String.prototype.trimEnd;\nvar hasNativeIsSafeInteger = !!Number.isSafeInteger;\nvar isSafeInteger = hasNativeIsSafeInteger\n ? Number.isSafeInteger\n : function (n) {\n return (typeof n === 'number' &&\n isFinite(n) &&\n Math.floor(n) === n &&\n Math.abs(n) <= 0x1fffffffffffff);\n };\n// IE11 does not support y and u.\nvar REGEX_SUPPORTS_U_AND_Y = true;\ntry {\n var re = RE('([^\\\\p{White_Space}\\\\p{Pattern_Syntax}]*)', 'yu');\n /**\n * legacy Edge or Xbox One browser\n * Unicode flag support: supported\n * Pattern_Syntax support: not supported\n * See https://github.com/formatjs/formatjs/issues/2822\n */\n REGEX_SUPPORTS_U_AND_Y = ((_a = re.exec('a')) === null || _a === void 0 ? void 0 : _a[0]) === 'a';\n}\ncatch (_) {\n REGEX_SUPPORTS_U_AND_Y = false;\n}\nvar startsWith = hasNativeStartsWith\n ? // Native\n function startsWith(s, search, position) {\n return s.startsWith(search, position);\n }\n : // For IE11\n function startsWith(s, search, position) {\n return s.slice(position, position + search.length) === search;\n };\nvar fromCodePoint = hasNativeFromCodePoint\n ? String.fromCodePoint\n : // IE11\n function fromCodePoint() {\n var codePoints = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n codePoints[_i] = arguments[_i];\n }\n var elements = '';\n var length = codePoints.length;\n var i = 0;\n var code;\n while (length > i) {\n code = codePoints[i++];\n if (code > 0x10ffff)\n throw RangeError(code + ' is not a valid code point');\n elements +=\n code < 0x10000\n ? String.fromCharCode(code)\n : String.fromCharCode(((code -= 0x10000) >> 10) + 0xd800, (code % 0x400) + 0xdc00);\n }\n return elements;\n };\nvar fromEntries = \n// native\nhasNativeFromEntries\n ? Object.fromEntries\n : // Ponyfill\n function fromEntries(entries) {\n var obj = {};\n for (var _i = 0, entries_1 = entries; _i < entries_1.length; _i++) {\n var _a = entries_1[_i], k = _a[0], v = _a[1];\n obj[k] = v;\n }\n return obj;\n };\nvar codePointAt = hasNativeCodePointAt\n ? // Native\n function codePointAt(s, index) {\n return s.codePointAt(index);\n }\n : // IE 11\n function codePointAt(s, index) {\n var size = s.length;\n if (index < 0 || index >= size) {\n return undefined;\n }\n var first = s.charCodeAt(index);\n var second;\n return first < 0xd800 ||\n first > 0xdbff ||\n index + 1 === size ||\n (second = s.charCodeAt(index + 1)) < 0xdc00 ||\n second > 0xdfff\n ? first\n : ((first - 0xd800) << 10) + (second - 0xdc00) + 0x10000;\n };\nvar trimStart = hasTrimStart\n ? // Native\n function trimStart(s) {\n return s.trimStart();\n }\n : // Ponyfill\n function trimStart(s) {\n return s.replace(SPACE_SEPARATOR_START_REGEX, '');\n };\nvar trimEnd = hasTrimEnd\n ? // Native\n function trimEnd(s) {\n return s.trimEnd();\n }\n : // Ponyfill\n function trimEnd(s) {\n return s.replace(SPACE_SEPARATOR_END_REGEX, '');\n };\n// Prevent minifier to translate new RegExp to literal form that might cause syntax error on IE11.\nfunction RE(s, flag) {\n return new RegExp(s, flag);\n}\n// #endregion\nvar matchIdentifierAtIndex;\nif (REGEX_SUPPORTS_U_AND_Y) {\n // Native\n var IDENTIFIER_PREFIX_RE_1 = RE('([^\\\\p{White_Space}\\\\p{Pattern_Syntax}]*)', 'yu');\n matchIdentifierAtIndex = function matchIdentifierAtIndex(s, index) {\n var _a;\n IDENTIFIER_PREFIX_RE_1.lastIndex = index;\n var match = IDENTIFIER_PREFIX_RE_1.exec(s);\n return (_a = match[1]) !== null && _a !== void 0 ? _a : '';\n };\n}\nelse {\n // IE11\n matchIdentifierAtIndex = function matchIdentifierAtIndex(s, index) {\n var match = [];\n while (true) {\n var c = codePointAt(s, index);\n if (c === undefined || _isWhiteSpace(c) || _isPatternSyntax(c)) {\n break;\n }\n match.push(c);\n index += c >= 0x10000 ? 2 : 1;\n }\n return fromCodePoint.apply(void 0, match);\n };\n}\nvar Parser = /** @class */ (function () {\n function Parser(message, options) {\n if (options === void 0) { options = {}; }\n this.message = message;\n this.position = { offset: 0, line: 1, column: 1 };\n this.ignoreTag = !!options.ignoreTag;\n this.requiresOtherClause = !!options.requiresOtherClause;\n this.shouldParseSkeletons = !!options.shouldParseSkeletons;\n }\n Parser.prototype.parse = function () {\n if (this.offset() !== 0) {\n throw Error('parser can only be used once');\n }\n return this.parseMessage(0, '', false);\n };\n Parser.prototype.parseMessage = function (nestingLevel, parentArgType, expectingCloseTag) {\n var elements = [];\n while (!this.isEOF()) {\n var char = this.char();\n if (char === 123 /* `{` */) {\n var result = this.parseArgument(nestingLevel, expectingCloseTag);\n if (result.err) {\n return result;\n }\n elements.push(result.val);\n }\n else if (char === 125 /* `}` */ && nestingLevel > 0) {\n break;\n }\n else if (char === 35 /* `#` */ &&\n (parentArgType === 'plural' || parentArgType === 'selectordinal')) {\n var position = this.clonePosition();\n this.bump();\n elements.push({\n type: TYPE.pound,\n location: createLocation(position, this.clonePosition()),\n });\n }\n else if (char === 60 /* `<` */ &&\n !this.ignoreTag &&\n this.peek() === 47 // char code for '/'\n ) {\n if (expectingCloseTag) {\n break;\n }\n else {\n return this.error(ErrorKind.UNMATCHED_CLOSING_TAG, createLocation(this.clonePosition(), this.clonePosition()));\n }\n }\n else if (char === 60 /* `<` */ &&\n !this.ignoreTag &&\n _isAlpha(this.peek() || 0)) {\n var result = this.parseTag(nestingLevel, parentArgType);\n if (result.err) {\n return result;\n }\n elements.push(result.val);\n }\n else {\n var result = this.parseLiteral(nestingLevel, parentArgType);\n if (result.err) {\n return result;\n }\n elements.push(result.val);\n }\n }\n return { val: elements, err: null };\n };\n /**\n * A tag name must start with an ASCII lower/upper case letter. The grammar is based on the\n * [custom element name][] except that a dash is NOT always mandatory and uppercase letters\n * are accepted:\n *\n * ```\n * tag ::= \"<\" tagName (whitespace)* \"/>\" | \"<\" tagName (whitespace)* \">\" message \"\" tagName (whitespace)* \">\"\n * tagName ::= [a-z] (PENChar)*\n * PENChar ::=\n * \"-\" | \".\" | [0-9] | \"_\" | [a-z] | [A-Z] | #xB7 | [#xC0-#xD6] | [#xD8-#xF6] | [#xF8-#x37D] |\n * [#x37F-#x1FFF] | [#x200C-#x200D] | [#x203F-#x2040] | [#x2070-#x218F] | [#x2C00-#x2FEF] |\n * [#x3001-#xD7FF] | [#xF900-#xFDCF] | [#xFDF0-#xFFFD] | [#x10000-#xEFFFF]\n * ```\n *\n * [custom element name]: https://html.spec.whatwg.org/multipage/custom-elements.html#valid-custom-element-name\n * NOTE: We're a bit more lax here since HTML technically does not allow uppercase HTML element but we do\n * since other tag-based engines like React allow it\n */\n Parser.prototype.parseTag = function (nestingLevel, parentArgType) {\n var startPosition = this.clonePosition();\n this.bump(); // `<`\n var tagName = this.parseTagName();\n this.bumpSpace();\n if (this.bumpIf('/>')) {\n // Self closing tag\n return {\n val: {\n type: TYPE.literal,\n value: \"<\".concat(tagName, \"/>\"),\n location: createLocation(startPosition, this.clonePosition()),\n },\n err: null,\n };\n }\n else if (this.bumpIf('>')) {\n var childrenResult = this.parseMessage(nestingLevel + 1, parentArgType, true);\n if (childrenResult.err) {\n return childrenResult;\n }\n var children = childrenResult.val;\n // Expecting a close tag\n var endTagStartPosition = this.clonePosition();\n if (this.bumpIf('')) {\n if (this.isEOF() || !_isAlpha(this.char())) {\n return this.error(ErrorKind.INVALID_TAG, createLocation(endTagStartPosition, this.clonePosition()));\n }\n var closingTagNameStartPosition = this.clonePosition();\n var closingTagName = this.parseTagName();\n if (tagName !== closingTagName) {\n return this.error(ErrorKind.UNMATCHED_CLOSING_TAG, createLocation(closingTagNameStartPosition, this.clonePosition()));\n }\n this.bumpSpace();\n if (!this.bumpIf('>')) {\n return this.error(ErrorKind.INVALID_TAG, createLocation(endTagStartPosition, this.clonePosition()));\n }\n return {\n val: {\n type: TYPE.tag,\n value: tagName,\n children: children,\n location: createLocation(startPosition, this.clonePosition()),\n },\n err: null,\n };\n }\n else {\n return this.error(ErrorKind.UNCLOSED_TAG, createLocation(startPosition, this.clonePosition()));\n }\n }\n else {\n return this.error(ErrorKind.INVALID_TAG, createLocation(startPosition, this.clonePosition()));\n }\n };\n /**\n * This method assumes that the caller has peeked ahead for the first tag character.\n */\n Parser.prototype.parseTagName = function () {\n var startOffset = this.offset();\n this.bump(); // the first tag name character\n while (!this.isEOF() && _isPotentialElementNameChar(this.char())) {\n this.bump();\n }\n return this.message.slice(startOffset, this.offset());\n };\n Parser.prototype.parseLiteral = function (nestingLevel, parentArgType) {\n var start = this.clonePosition();\n var value = '';\n while (true) {\n var parseQuoteResult = this.tryParseQuote(parentArgType);\n if (parseQuoteResult) {\n value += parseQuoteResult;\n continue;\n }\n var parseUnquotedResult = this.tryParseUnquoted(nestingLevel, parentArgType);\n if (parseUnquotedResult) {\n value += parseUnquotedResult;\n continue;\n }\n var parseLeftAngleResult = this.tryParseLeftAngleBracket();\n if (parseLeftAngleResult) {\n value += parseLeftAngleResult;\n continue;\n }\n break;\n }\n var location = createLocation(start, this.clonePosition());\n return {\n val: { type: TYPE.literal, value: value, location: location },\n err: null,\n };\n };\n Parser.prototype.tryParseLeftAngleBracket = function () {\n if (!this.isEOF() &&\n this.char() === 60 /* `<` */ &&\n (this.ignoreTag ||\n // If at the opening tag or closing tag position, bail.\n !_isAlphaOrSlash(this.peek() || 0))) {\n this.bump(); // `<`\n return '<';\n }\n return null;\n };\n /**\n * Starting with ICU 4.8, an ASCII apostrophe only starts quoted text if it immediately precedes\n * a character that requires quoting (that is, \"only where needed\"), and works the same in\n * nested messages as on the top level of the pattern. The new behavior is otherwise compatible.\n */\n Parser.prototype.tryParseQuote = function (parentArgType) {\n if (this.isEOF() || this.char() !== 39 /* `'` */) {\n return null;\n }\n // Parse escaped char following the apostrophe, or early return if there is no escaped char.\n // Check if is valid escaped character\n switch (this.peek()) {\n case 39 /* `'` */:\n // double quote, should return as a single quote.\n this.bump();\n this.bump();\n return \"'\";\n // '{', '<', '>', '}'\n case 123:\n case 60:\n case 62:\n case 125:\n break;\n case 35: // '#'\n if (parentArgType === 'plural' || parentArgType === 'selectordinal') {\n break;\n }\n return null;\n default:\n return null;\n }\n this.bump(); // apostrophe\n var codePoints = [this.char()]; // escaped char\n this.bump();\n // read chars until the optional closing apostrophe is found\n while (!this.isEOF()) {\n var ch = this.char();\n if (ch === 39 /* `'` */) {\n if (this.peek() === 39 /* `'` */) {\n codePoints.push(39);\n // Bump one more time because we need to skip 2 characters.\n this.bump();\n }\n else {\n // Optional closing apostrophe.\n this.bump();\n break;\n }\n }\n else {\n codePoints.push(ch);\n }\n this.bump();\n }\n return fromCodePoint.apply(void 0, codePoints);\n };\n Parser.prototype.tryParseUnquoted = function (nestingLevel, parentArgType) {\n if (this.isEOF()) {\n return null;\n }\n var ch = this.char();\n if (ch === 60 /* `<` */ ||\n ch === 123 /* `{` */ ||\n (ch === 35 /* `#` */ &&\n (parentArgType === 'plural' || parentArgType === 'selectordinal')) ||\n (ch === 125 /* `}` */ && nestingLevel > 0)) {\n return null;\n }\n else {\n this.bump();\n return fromCodePoint(ch);\n }\n };\n Parser.prototype.parseArgument = function (nestingLevel, expectingCloseTag) {\n var openingBracePosition = this.clonePosition();\n this.bump(); // `{`\n this.bumpSpace();\n if (this.isEOF()) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n if (this.char() === 125 /* `}` */) {\n this.bump();\n return this.error(ErrorKind.EMPTY_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n // argument name\n var value = this.parseIdentifierIfPossible().value;\n if (!value) {\n return this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n this.bumpSpace();\n if (this.isEOF()) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n switch (this.char()) {\n // Simple argument: `{name}`\n case 125 /* `}` */: {\n this.bump(); // `}`\n return {\n val: {\n type: TYPE.argument,\n // value does not include the opening and closing braces.\n value: value,\n location: createLocation(openingBracePosition, this.clonePosition()),\n },\n err: null,\n };\n }\n // Argument with options: `{name, format, ...}`\n case 44 /* `,` */: {\n this.bump(); // `,`\n this.bumpSpace();\n if (this.isEOF()) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n return this.parseArgumentOptions(nestingLevel, expectingCloseTag, value, openingBracePosition);\n }\n default:\n return this.error(ErrorKind.MALFORMED_ARGUMENT, createLocation(openingBracePosition, this.clonePosition()));\n }\n };\n /**\n * Advance the parser until the end of the identifier, if it is currently on\n * an identifier character. Return an empty string otherwise.\n */\n Parser.prototype.parseIdentifierIfPossible = function () {\n var startingPosition = this.clonePosition();\n var startOffset = this.offset();\n var value = matchIdentifierAtIndex(this.message, startOffset);\n var endOffset = startOffset + value.length;\n this.bumpTo(endOffset);\n var endPosition = this.clonePosition();\n var location = createLocation(startingPosition, endPosition);\n return { value: value, location: location };\n };\n Parser.prototype.parseArgumentOptions = function (nestingLevel, expectingCloseTag, value, openingBracePosition) {\n var _a;\n // Parse this range:\n // {name, type, style}\n // ^---^\n var typeStartPosition = this.clonePosition();\n var argType = this.parseIdentifierIfPossible().value;\n var typeEndPosition = this.clonePosition();\n switch (argType) {\n case '':\n // Expecting a style string number, date, time, plural, selectordinal, or select.\n return this.error(ErrorKind.EXPECT_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n case 'number':\n case 'date':\n case 'time': {\n // Parse this range:\n // {name, number, style}\n // ^-------^\n this.bumpSpace();\n var styleAndLocation = null;\n if (this.bumpIf(',')) {\n this.bumpSpace();\n var styleStartPosition = this.clonePosition();\n var result = this.parseSimpleArgStyleIfPossible();\n if (result.err) {\n return result;\n }\n var style = trimEnd(result.val);\n if (style.length === 0) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_STYLE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n var styleLocation = createLocation(styleStartPosition, this.clonePosition());\n styleAndLocation = { style: style, styleLocation: styleLocation };\n }\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n if (argCloseResult.err) {\n return argCloseResult;\n }\n var location_1 = createLocation(openingBracePosition, this.clonePosition());\n // Extract style or skeleton\n if (styleAndLocation && startsWith(styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style, '::', 0)) {\n // Skeleton starts with `::`.\n var skeleton = trimStart(styleAndLocation.style.slice(2));\n if (argType === 'number') {\n var result = this.parseNumberSkeletonFromString(skeleton, styleAndLocation.styleLocation);\n if (result.err) {\n return result;\n }\n return {\n val: { type: TYPE.number, value: value, location: location_1, style: result.val },\n err: null,\n };\n }\n else {\n if (skeleton.length === 0) {\n return this.error(ErrorKind.EXPECT_DATE_TIME_SKELETON, location_1);\n }\n var style = {\n type: SKELETON_TYPE.dateTime,\n pattern: skeleton,\n location: styleAndLocation.styleLocation,\n parsedOptions: this.shouldParseSkeletons\n ? parseDateTimeSkeleton(skeleton)\n : {},\n };\n var type = argType === 'date' ? TYPE.date : TYPE.time;\n return {\n val: { type: type, value: value, location: location_1, style: style },\n err: null,\n };\n }\n }\n // Regular style or no style.\n return {\n val: {\n type: argType === 'number'\n ? TYPE.number\n : argType === 'date'\n ? TYPE.date\n : TYPE.time,\n value: value,\n location: location_1,\n style: (_a = styleAndLocation === null || styleAndLocation === void 0 ? void 0 : styleAndLocation.style) !== null && _a !== void 0 ? _a : null,\n },\n err: null,\n };\n }\n case 'plural':\n case 'selectordinal':\n case 'select': {\n // Parse this range:\n // {name, plural, options}\n // ^---------^\n var typeEndPosition_1 = this.clonePosition();\n this.bumpSpace();\n if (!this.bumpIf(',')) {\n return this.error(ErrorKind.EXPECT_SELECT_ARGUMENT_OPTIONS, createLocation(typeEndPosition_1, __assign({}, typeEndPosition_1)));\n }\n this.bumpSpace();\n // Parse offset:\n // {name, plural, offset:1, options}\n // ^-----^\n //\n // or the first option:\n //\n // {name, plural, one {...} other {...}}\n // ^--^\n var identifierAndLocation = this.parseIdentifierIfPossible();\n var pluralOffset = 0;\n if (argType !== 'select' && identifierAndLocation.value === 'offset') {\n if (!this.bumpIf(':')) {\n return this.error(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n this.bumpSpace();\n var result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE, ErrorKind.INVALID_PLURAL_ARGUMENT_OFFSET_VALUE);\n if (result.err) {\n return result;\n }\n // Parse another identifier for option parsing\n this.bumpSpace();\n identifierAndLocation = this.parseIdentifierIfPossible();\n pluralOffset = result.val;\n }\n var optionsResult = this.tryParsePluralOrSelectOptions(nestingLevel, argType, expectingCloseTag, identifierAndLocation);\n if (optionsResult.err) {\n return optionsResult;\n }\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n if (argCloseResult.err) {\n return argCloseResult;\n }\n var location_2 = createLocation(openingBracePosition, this.clonePosition());\n if (argType === 'select') {\n return {\n val: {\n type: TYPE.select,\n value: value,\n options: fromEntries(optionsResult.val),\n location: location_2,\n },\n err: null,\n };\n }\n else {\n return {\n val: {\n type: TYPE.plural,\n value: value,\n options: fromEntries(optionsResult.val),\n offset: pluralOffset,\n pluralType: argType === 'plural' ? 'cardinal' : 'ordinal',\n location: location_2,\n },\n err: null,\n };\n }\n }\n default:\n return this.error(ErrorKind.INVALID_ARGUMENT_TYPE, createLocation(typeStartPosition, typeEndPosition));\n }\n };\n Parser.prototype.tryParseArgumentClose = function (openingBracePosition) {\n // Parse: {value, number, ::currency/GBP }\n //\n if (this.isEOF() || this.char() !== 125 /* `}` */) {\n return this.error(ErrorKind.EXPECT_ARGUMENT_CLOSING_BRACE, createLocation(openingBracePosition, this.clonePosition()));\n }\n this.bump(); // `}`\n return { val: true, err: null };\n };\n /**\n * See: https://github.com/unicode-org/icu/blob/af7ed1f6d2298013dc303628438ec4abe1f16479/icu4c/source/common/messagepattern.cpp#L659\n */\n Parser.prototype.parseSimpleArgStyleIfPossible = function () {\n var nestedBraces = 0;\n var startPosition = this.clonePosition();\n while (!this.isEOF()) {\n var ch = this.char();\n switch (ch) {\n case 39 /* `'` */: {\n // Treat apostrophe as quoting but include it in the style part.\n // Find the end of the quoted literal text.\n this.bump();\n var apostrophePosition = this.clonePosition();\n if (!this.bumpUntil(\"'\")) {\n return this.error(ErrorKind.UNCLOSED_QUOTE_IN_ARGUMENT_STYLE, createLocation(apostrophePosition, this.clonePosition()));\n }\n this.bump();\n break;\n }\n case 123 /* `{` */: {\n nestedBraces += 1;\n this.bump();\n break;\n }\n case 125 /* `}` */: {\n if (nestedBraces > 0) {\n nestedBraces -= 1;\n }\n else {\n return {\n val: this.message.slice(startPosition.offset, this.offset()),\n err: null,\n };\n }\n break;\n }\n default:\n this.bump();\n break;\n }\n }\n return {\n val: this.message.slice(startPosition.offset, this.offset()),\n err: null,\n };\n };\n Parser.prototype.parseNumberSkeletonFromString = function (skeleton, location) {\n var tokens = [];\n try {\n tokens = parseNumberSkeletonFromString(skeleton);\n }\n catch (e) {\n return this.error(ErrorKind.INVALID_NUMBER_SKELETON, location);\n }\n return {\n val: {\n type: SKELETON_TYPE.number,\n tokens: tokens,\n location: location,\n parsedOptions: this.shouldParseSkeletons\n ? parseNumberSkeleton(tokens)\n : {},\n },\n err: null,\n };\n };\n /**\n * @param nesting_level The current nesting level of messages.\n * This can be positive when parsing message fragment in select or plural argument options.\n * @param parent_arg_type The parent argument's type.\n * @param parsed_first_identifier If provided, this is the first identifier-like selector of\n * the argument. It is a by-product of a previous parsing attempt.\n * @param expecting_close_tag If true, this message is directly or indirectly nested inside\n * between a pair of opening and closing tags. The nested message will not parse beyond\n * the closing tag boundary.\n */\n Parser.prototype.tryParsePluralOrSelectOptions = function (nestingLevel, parentArgType, expectCloseTag, parsedFirstIdentifier) {\n var _a;\n var hasOtherClause = false;\n var options = [];\n var parsedSelectors = new Set();\n var selector = parsedFirstIdentifier.value, selectorLocation = parsedFirstIdentifier.location;\n // Parse:\n // one {one apple}\n // ^--^\n while (true) {\n if (selector.length === 0) {\n var startPosition = this.clonePosition();\n if (parentArgType !== 'select' && this.bumpIf('=')) {\n // Try parse `={number}` selector\n var result = this.tryParseDecimalInteger(ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, ErrorKind.INVALID_PLURAL_ARGUMENT_SELECTOR);\n if (result.err) {\n return result;\n }\n selectorLocation = createLocation(startPosition, this.clonePosition());\n selector = this.message.slice(startPosition.offset, this.offset());\n }\n else {\n break;\n }\n }\n // Duplicate selector clauses\n if (parsedSelectors.has(selector)) {\n return this.error(parentArgType === 'select'\n ? ErrorKind.DUPLICATE_SELECT_ARGUMENT_SELECTOR\n : ErrorKind.DUPLICATE_PLURAL_ARGUMENT_SELECTOR, selectorLocation);\n }\n if (selector === 'other') {\n hasOtherClause = true;\n }\n // Parse:\n // one {one apple}\n // ^----------^\n this.bumpSpace();\n var openingBracePosition = this.clonePosition();\n if (!this.bumpIf('{')) {\n return this.error(parentArgType === 'select'\n ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT\n : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT, createLocation(this.clonePosition(), this.clonePosition()));\n }\n var fragmentResult = this.parseMessage(nestingLevel + 1, parentArgType, expectCloseTag);\n if (fragmentResult.err) {\n return fragmentResult;\n }\n var argCloseResult = this.tryParseArgumentClose(openingBracePosition);\n if (argCloseResult.err) {\n return argCloseResult;\n }\n options.push([\n selector,\n {\n value: fragmentResult.val,\n location: createLocation(openingBracePosition, this.clonePosition()),\n },\n ]);\n // Keep track of the existing selectors\n parsedSelectors.add(selector);\n // Prep next selector clause.\n this.bumpSpace();\n (_a = this.parseIdentifierIfPossible(), selector = _a.value, selectorLocation = _a.location);\n }\n if (options.length === 0) {\n return this.error(parentArgType === 'select'\n ? ErrorKind.EXPECT_SELECT_ARGUMENT_SELECTOR\n : ErrorKind.EXPECT_PLURAL_ARGUMENT_SELECTOR, createLocation(this.clonePosition(), this.clonePosition()));\n }\n if (this.requiresOtherClause && !hasOtherClause) {\n return this.error(ErrorKind.MISSING_OTHER_CLAUSE, createLocation(this.clonePosition(), this.clonePosition()));\n }\n return { val: options, err: null };\n };\n Parser.prototype.tryParseDecimalInteger = function (expectNumberError, invalidNumberError) {\n var sign = 1;\n var startingPosition = this.clonePosition();\n if (this.bumpIf('+')) {\n }\n else if (this.bumpIf('-')) {\n sign = -1;\n }\n var hasDigits = false;\n var decimal = 0;\n while (!this.isEOF()) {\n var ch = this.char();\n if (ch >= 48 /* `0` */ && ch <= 57 /* `9` */) {\n hasDigits = true;\n decimal = decimal * 10 + (ch - 48);\n this.bump();\n }\n else {\n break;\n }\n }\n var location = createLocation(startingPosition, this.clonePosition());\n if (!hasDigits) {\n return this.error(expectNumberError, location);\n }\n decimal *= sign;\n if (!isSafeInteger(decimal)) {\n return this.error(invalidNumberError, location);\n }\n return { val: decimal, err: null };\n };\n Parser.prototype.offset = function () {\n return this.position.offset;\n };\n Parser.prototype.isEOF = function () {\n return this.offset() === this.message.length;\n };\n Parser.prototype.clonePosition = function () {\n // This is much faster than `Object.assign` or spread.\n return {\n offset: this.position.offset,\n line: this.position.line,\n column: this.position.column,\n };\n };\n /**\n * Return the code point at the current position of the parser.\n * Throws if the index is out of bound.\n */\n Parser.prototype.char = function () {\n var offset = this.position.offset;\n if (offset >= this.message.length) {\n throw Error('out of bound');\n }\n var code = codePointAt(this.message, offset);\n if (code === undefined) {\n throw Error(\"Offset \".concat(offset, \" is at invalid UTF-16 code unit boundary\"));\n }\n return code;\n };\n Parser.prototype.error = function (kind, location) {\n return {\n val: null,\n err: {\n kind: kind,\n message: this.message,\n location: location,\n },\n };\n };\n /** Bump the parser to the next UTF-16 code unit. */\n Parser.prototype.bump = function () {\n if (this.isEOF()) {\n return;\n }\n var code = this.char();\n if (code === 10 /* '\\n' */) {\n this.position.line += 1;\n this.position.column = 1;\n this.position.offset += 1;\n }\n else {\n this.position.column += 1;\n // 0 ~ 0x10000 -> unicode BMP, otherwise skip the surrogate pair.\n this.position.offset += code < 0x10000 ? 1 : 2;\n }\n };\n /**\n * If the substring starting at the current position of the parser has\n * the given prefix, then bump the parser to the character immediately\n * following the prefix and return true. Otherwise, don't bump the parser\n * and return false.\n */\n Parser.prototype.bumpIf = function (prefix) {\n if (startsWith(this.message, prefix, this.offset())) {\n for (var i = 0; i < prefix.length; i++) {\n this.bump();\n }\n return true;\n }\n return false;\n };\n /**\n * Bump the parser until the pattern character is found and return `true`.\n * Otherwise bump to the end of the file and return `false`.\n */\n Parser.prototype.bumpUntil = function (pattern) {\n var currentOffset = this.offset();\n var index = this.message.indexOf(pattern, currentOffset);\n if (index >= 0) {\n this.bumpTo(index);\n return true;\n }\n else {\n this.bumpTo(this.message.length);\n return false;\n }\n };\n /**\n * Bump the parser to the target offset.\n * If target offset is beyond the end of the input, bump the parser to the end of the input.\n */\n Parser.prototype.bumpTo = function (targetOffset) {\n if (this.offset() > targetOffset) {\n throw Error(\"targetOffset \".concat(targetOffset, \" must be greater than or equal to the current offset \").concat(this.offset()));\n }\n targetOffset = Math.min(targetOffset, this.message.length);\n while (true) {\n var offset = this.offset();\n if (offset === targetOffset) {\n break;\n }\n if (offset > targetOffset) {\n throw Error(\"targetOffset \".concat(targetOffset, \" is at invalid UTF-16 code unit boundary\"));\n }\n this.bump();\n if (this.isEOF()) {\n break;\n }\n }\n };\n /** advance the parser through all whitespace to the next non-whitespace code unit. */\n Parser.prototype.bumpSpace = function () {\n while (!this.isEOF() && _isWhiteSpace(this.char())) {\n this.bump();\n }\n };\n /**\n * Peek at the *next* Unicode codepoint in the input without advancing the parser.\n * If the input has been exhausted, then this returns null.\n */\n Parser.prototype.peek = function () {\n if (this.isEOF()) {\n return null;\n }\n var code = this.char();\n var offset = this.offset();\n var nextCode = this.message.charCodeAt(offset + (code >= 0x10000 ? 2 : 1));\n return nextCode !== null && nextCode !== void 0 ? nextCode : null;\n };\n return Parser;\n}());\nexport { Parser };\n/**\n * This check if codepoint is alphabet (lower & uppercase)\n * @param codepoint\n * @returns\n */\nfunction _isAlpha(codepoint) {\n return ((codepoint >= 97 && codepoint <= 122) ||\n (codepoint >= 65 && codepoint <= 90));\n}\nfunction _isAlphaOrSlash(codepoint) {\n return _isAlpha(codepoint) || codepoint === 47; /* '/' */\n}\n/** See `parseTag` function docs. */\nfunction _isPotentialElementNameChar(c) {\n return (c === 45 /* '-' */ ||\n c === 46 /* '.' */ ||\n (c >= 48 && c <= 57) /* 0..9 */ ||\n c === 95 /* '_' */ ||\n (c >= 97 && c <= 122) /** a..z */ ||\n (c >= 65 && c <= 90) /* A..Z */ ||\n c == 0xb7 ||\n (c >= 0xc0 && c <= 0xd6) ||\n (c >= 0xd8 && c <= 0xf6) ||\n (c >= 0xf8 && c <= 0x37d) ||\n (c >= 0x37f && c <= 0x1fff) ||\n (c >= 0x200c && c <= 0x200d) ||\n (c >= 0x203f && c <= 0x2040) ||\n (c >= 0x2070 && c <= 0x218f) ||\n (c >= 0x2c00 && c <= 0x2fef) ||\n (c >= 0x3001 && c <= 0xd7ff) ||\n (c >= 0xf900 && c <= 0xfdcf) ||\n (c >= 0xfdf0 && c <= 0xfffd) ||\n (c >= 0x10000 && c <= 0xeffff));\n}\n/**\n * Code point equivalent of regex `\\p{White_Space}`.\n * From: https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt\n */\nfunction _isWhiteSpace(c) {\n return ((c >= 0x0009 && c <= 0x000d) ||\n c === 0x0020 ||\n c === 0x0085 ||\n (c >= 0x200e && c <= 0x200f) ||\n c === 0x2028 ||\n c === 0x2029);\n}\n/**\n * Code point equivalent of regex `\\p{Pattern_Syntax}`.\n * See https://www.unicode.org/Public/UCD/latest/ucd/PropList.txt\n */\nfunction _isPatternSyntax(c) {\n return ((c >= 0x0021 && c <= 0x0023) ||\n c === 0x0024 ||\n (c >= 0x0025 && c <= 0x0027) ||\n c === 0x0028 ||\n c === 0x0029 ||\n c === 0x002a ||\n c === 0x002b ||\n c === 0x002c ||\n c === 0x002d ||\n (c >= 0x002e && c <= 0x002f) ||\n (c >= 0x003a && c <= 0x003b) ||\n (c >= 0x003c && c <= 0x003e) ||\n (c >= 0x003f && c <= 0x0040) ||\n c === 0x005b ||\n c === 0x005c ||\n c === 0x005d ||\n c === 0x005e ||\n c === 0x0060 ||\n c === 0x007b ||\n c === 0x007c ||\n c === 0x007d ||\n c === 0x007e ||\n c === 0x00a1 ||\n (c >= 0x00a2 && c <= 0x00a5) ||\n c === 0x00a6 ||\n c === 0x00a7 ||\n c === 0x00a9 ||\n c === 0x00ab ||\n c === 0x00ac ||\n c === 0x00ae ||\n c === 0x00b0 ||\n c === 0x00b1 ||\n c === 0x00b6 ||\n c === 0x00bb ||\n c === 0x00bf ||\n c === 0x00d7 ||\n c === 0x00f7 ||\n (c >= 0x2010 && c <= 0x2015) ||\n (c >= 0x2016 && c <= 0x2017) ||\n c === 0x2018 ||\n c === 0x2019 ||\n c === 0x201a ||\n (c >= 0x201b && c <= 0x201c) ||\n c === 0x201d ||\n c === 0x201e ||\n c === 0x201f ||\n (c >= 0x2020 && c <= 0x2027) ||\n (c >= 0x2030 && c <= 0x2038) ||\n c === 0x2039 ||\n c === 0x203a ||\n (c >= 0x203b && c <= 0x203e) ||\n (c >= 0x2041 && c <= 0x2043) ||\n c === 0x2044 ||\n c === 0x2045 ||\n c === 0x2046 ||\n (c >= 0x2047 && c <= 0x2051) ||\n c === 0x2052 ||\n c === 0x2053 ||\n (c >= 0x2055 && c <= 0x205e) ||\n (c >= 0x2190 && c <= 0x2194) ||\n (c >= 0x2195 && c <= 0x2199) ||\n (c >= 0x219a && c <= 0x219b) ||\n (c >= 0x219c && c <= 0x219f) ||\n c === 0x21a0 ||\n (c >= 0x21a1 && c <= 0x21a2) ||\n c === 0x21a3 ||\n (c >= 0x21a4 && c <= 0x21a5) ||\n c === 0x21a6 ||\n (c >= 0x21a7 && c <= 0x21ad) ||\n c === 0x21ae ||\n (c >= 0x21af && c <= 0x21cd) ||\n (c >= 0x21ce && c <= 0x21cf) ||\n (c >= 0x21d0 && c <= 0x21d1) ||\n c === 0x21d2 ||\n c === 0x21d3 ||\n c === 0x21d4 ||\n (c >= 0x21d5 && c <= 0x21f3) ||\n (c >= 0x21f4 && c <= 0x22ff) ||\n (c >= 0x2300 && c <= 0x2307) ||\n c === 0x2308 ||\n c === 0x2309 ||\n c === 0x230a ||\n c === 0x230b ||\n (c >= 0x230c && c <= 0x231f) ||\n (c >= 0x2320 && c <= 0x2321) ||\n (c >= 0x2322 && c <= 0x2328) ||\n c === 0x2329 ||\n c === 0x232a ||\n (c >= 0x232b && c <= 0x237b) ||\n c === 0x237c ||\n (c >= 0x237d && c <= 0x239a) ||\n (c >= 0x239b && c <= 0x23b3) ||\n (c >= 0x23b4 && c <= 0x23db) ||\n (c >= 0x23dc && c <= 0x23e1) ||\n (c >= 0x23e2 && c <= 0x2426) ||\n (c >= 0x2427 && c <= 0x243f) ||\n (c >= 0x2440 && c <= 0x244a) ||\n (c >= 0x244b && c <= 0x245f) ||\n (c >= 0x2500 && c <= 0x25b6) ||\n c === 0x25b7 ||\n (c >= 0x25b8 && c <= 0x25c0) ||\n c === 0x25c1 ||\n (c >= 0x25c2 && c <= 0x25f7) ||\n (c >= 0x25f8 && c <= 0x25ff) ||\n (c >= 0x2600 && c <= 0x266e) ||\n c === 0x266f ||\n (c >= 0x2670 && c <= 0x2767) ||\n c === 0x2768 ||\n c === 0x2769 ||\n c === 0x276a ||\n c === 0x276b ||\n c === 0x276c ||\n c === 0x276d ||\n c === 0x276e ||\n c === 0x276f ||\n c === 0x2770 ||\n c === 0x2771 ||\n c === 0x2772 ||\n c === 0x2773 ||\n c === 0x2774 ||\n c === 0x2775 ||\n (c >= 0x2794 && c <= 0x27bf) ||\n (c >= 0x27c0 && c <= 0x27c4) ||\n c === 0x27c5 ||\n c === 0x27c6 ||\n (c >= 0x27c7 && c <= 0x27e5) ||\n c === 0x27e6 ||\n c === 0x27e7 ||\n c === 0x27e8 ||\n c === 0x27e9 ||\n c === 0x27ea ||\n c === 0x27eb ||\n c === 0x27ec ||\n c === 0x27ed ||\n c === 0x27ee ||\n c === 0x27ef ||\n (c >= 0x27f0 && c <= 0x27ff) ||\n (c >= 0x2800 && c <= 0x28ff) ||\n (c >= 0x2900 && c <= 0x2982) ||\n c === 0x2983 ||\n c === 0x2984 ||\n c === 0x2985 ||\n c === 0x2986 ||\n c === 0x2987 ||\n c === 0x2988 ||\n c === 0x2989 ||\n c === 0x298a ||\n c === 0x298b ||\n c === 0x298c ||\n c === 0x298d ||\n c === 0x298e ||\n c === 0x298f ||\n c === 0x2990 ||\n c === 0x2991 ||\n c === 0x2992 ||\n c === 0x2993 ||\n c === 0x2994 ||\n c === 0x2995 ||\n c === 0x2996 ||\n c === 0x2997 ||\n c === 0x2998 ||\n (c >= 0x2999 && c <= 0x29d7) ||\n c === 0x29d8 ||\n c === 0x29d9 ||\n c === 0x29da ||\n c === 0x29db ||\n (c >= 0x29dc && c <= 0x29fb) ||\n c === 0x29fc ||\n c === 0x29fd ||\n (c >= 0x29fe && c <= 0x2aff) ||\n (c >= 0x2b00 && c <= 0x2b2f) ||\n (c >= 0x2b30 && c <= 0x2b44) ||\n (c >= 0x2b45 && c <= 0x2b46) ||\n (c >= 0x2b47 && c <= 0x2b4c) ||\n (c >= 0x2b4d && c <= 0x2b73) ||\n (c >= 0x2b74 && c <= 0x2b75) ||\n (c >= 0x2b76 && c <= 0x2b95) ||\n c === 0x2b96 ||\n (c >= 0x2b97 && c <= 0x2bff) ||\n (c >= 0x2e00 && c <= 0x2e01) ||\n c === 0x2e02 ||\n c === 0x2e03 ||\n c === 0x2e04 ||\n c === 0x2e05 ||\n (c >= 0x2e06 && c <= 0x2e08) ||\n c === 0x2e09 ||\n c === 0x2e0a ||\n c === 0x2e0b ||\n c === 0x2e0c ||\n c === 0x2e0d ||\n (c >= 0x2e0e && c <= 0x2e16) ||\n c === 0x2e17 ||\n (c >= 0x2e18 && c <= 0x2e19) ||\n c === 0x2e1a ||\n c === 0x2e1b ||\n c === 0x2e1c ||\n c === 0x2e1d ||\n (c >= 0x2e1e && c <= 0x2e1f) ||\n c === 0x2e20 ||\n c === 0x2e21 ||\n c === 0x2e22 ||\n c === 0x2e23 ||\n c === 0x2e24 ||\n c === 0x2e25 ||\n c === 0x2e26 ||\n c === 0x2e27 ||\n c === 0x2e28 ||\n c === 0x2e29 ||\n (c >= 0x2e2a && c <= 0x2e2e) ||\n c === 0x2e2f ||\n (c >= 0x2e30 && c <= 0x2e39) ||\n (c >= 0x2e3a && c <= 0x2e3b) ||\n (c >= 0x2e3c && c <= 0x2e3f) ||\n c === 0x2e40 ||\n c === 0x2e41 ||\n c === 0x2e42 ||\n (c >= 0x2e43 && c <= 0x2e4f) ||\n (c >= 0x2e50 && c <= 0x2e51) ||\n c === 0x2e52 ||\n (c >= 0x2e53 && c <= 0x2e7f) ||\n (c >= 0x3001 && c <= 0x3003) ||\n c === 0x3008 ||\n c === 0x3009 ||\n c === 0x300a ||\n c === 0x300b ||\n c === 0x300c ||\n c === 0x300d ||\n c === 0x300e ||\n c === 0x300f ||\n c === 0x3010 ||\n c === 0x3011 ||\n (c >= 0x3012 && c <= 0x3013) ||\n c === 0x3014 ||\n c === 0x3015 ||\n c === 0x3016 ||\n c === 0x3017 ||\n c === 0x3018 ||\n c === 0x3019 ||\n c === 0x301a ||\n c === 0x301b ||\n c === 0x301c ||\n c === 0x301d ||\n (c >= 0x301e && c <= 0x301f) ||\n c === 0x3020 ||\n c === 0x3030 ||\n c === 0xfd3e ||\n c === 0xfd3f ||\n (c >= 0xfe45 && c <= 0xfe46));\n}\n","// @generated from regex-gen.ts\nexport var SPACE_SEPARATOR_REGEX = /[ \\xA0\\u1680\\u2000-\\u200A\\u202F\\u205F\\u3000]/;\nexport var WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/;\n","export var TYPE;\n(function (TYPE) {\n /**\n * Raw text\n */\n TYPE[TYPE[\"literal\"] = 0] = \"literal\";\n /**\n * Variable w/o any format, e.g `var` in `this is a {var}`\n */\n TYPE[TYPE[\"argument\"] = 1] = \"argument\";\n /**\n * Variable w/ number format\n */\n TYPE[TYPE[\"number\"] = 2] = \"number\";\n /**\n * Variable w/ date format\n */\n TYPE[TYPE[\"date\"] = 3] = \"date\";\n /**\n * Variable w/ time format\n */\n TYPE[TYPE[\"time\"] = 4] = \"time\";\n /**\n * Variable w/ select format\n */\n TYPE[TYPE[\"select\"] = 5] = \"select\";\n /**\n * Variable w/ plural format\n */\n TYPE[TYPE[\"plural\"] = 6] = \"plural\";\n /**\n * Only possible within plural argument.\n * This is the `#` symbol that will be substituted with the count.\n */\n TYPE[TYPE[\"pound\"] = 7] = \"pound\";\n /**\n * XML-like tag\n */\n TYPE[TYPE[\"tag\"] = 8] = \"tag\";\n})(TYPE || (TYPE = {}));\nexport var SKELETON_TYPE;\n(function (SKELETON_TYPE) {\n SKELETON_TYPE[SKELETON_TYPE[\"number\"] = 0] = \"number\";\n SKELETON_TYPE[SKELETON_TYPE[\"dateTime\"] = 1] = \"dateTime\";\n})(SKELETON_TYPE || (SKELETON_TYPE = {}));\n/**\n * Type Guards\n */\nexport function isLiteralElement(el) {\n return el.type === TYPE.literal;\n}\nexport function isArgumentElement(el) {\n return el.type === TYPE.argument;\n}\nexport function isNumberElement(el) {\n return el.type === TYPE.number;\n}\nexport function isDateElement(el) {\n return el.type === TYPE.date;\n}\nexport function isTimeElement(el) {\n return el.type === TYPE.time;\n}\nexport function isSelectElement(el) {\n return el.type === TYPE.select;\n}\nexport function isPluralElement(el) {\n return el.type === TYPE.plural;\n}\nexport function isPoundElement(el) {\n return el.type === TYPE.pound;\n}\nexport function isTagElement(el) {\n return el.type === TYPE.tag;\n}\nexport function isNumberSkeleton(el) {\n return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.number);\n}\nexport function isDateTimeSkeleton(el) {\n return !!(el && typeof el === 'object' && el.type === SKELETON_TYPE.dateTime);\n}\nexport function createLiteralElement(value) {\n return {\n type: TYPE.literal,\n value: value,\n };\n}\nexport function createNumberElement(value, style) {\n return {\n type: TYPE.number,\n value: value,\n style: style,\n };\n}\n","/**\n * https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * Credit: https://github.com/caridy/intl-datetimeformat-pattern/blob/master/index.js\n * with some tweaks\n */\nvar DATE_TIME_REGEX = /(?:[Eec]{1,6}|G{1,5}|[Qq]{1,5}|(?:[yYur]+|U{1,5})|[ML]{1,5}|d{1,2}|D{1,3}|F{1}|[abB]{1,5}|[hkHK]{1,2}|w{1,2}|W{1}|m{1,2}|s{1,2}|[zZOvVxX]{1,4})(?=([^']*'[^']*')*[^']*$)/g;\n/**\n * Parse Date time skeleton into Intl.DateTimeFormatOptions\n * Ref: https://unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * @public\n * @param skeleton skeleton string\n */\nexport function parseDateTimeSkeleton(skeleton) {\n var result = {};\n skeleton.replace(DATE_TIME_REGEX, function (match) {\n var len = match.length;\n switch (match[0]) {\n // Era\n case 'G':\n result.era = len === 4 ? 'long' : len === 5 ? 'narrow' : 'short';\n break;\n // Year\n case 'y':\n result.year = len === 2 ? '2-digit' : 'numeric';\n break;\n case 'Y':\n case 'u':\n case 'U':\n case 'r':\n throw new RangeError('`Y/u/U/r` (year) patterns are not supported, use `y` instead');\n // Quarter\n case 'q':\n case 'Q':\n throw new RangeError('`q/Q` (quarter) patterns are not supported');\n // Month\n case 'M':\n case 'L':\n result.month = ['numeric', '2-digit', 'short', 'long', 'narrow'][len - 1];\n break;\n // Week\n case 'w':\n case 'W':\n throw new RangeError('`w/W` (week) patterns are not supported');\n case 'd':\n result.day = ['numeric', '2-digit'][len - 1];\n break;\n case 'D':\n case 'F':\n case 'g':\n throw new RangeError('`D/F/g` (day) patterns are not supported, use `d` instead');\n // Weekday\n case 'E':\n result.weekday = len === 4 ? 'short' : len === 5 ? 'narrow' : 'short';\n break;\n case 'e':\n if (len < 4) {\n throw new RangeError('`e..eee` (weekday) patterns are not supported');\n }\n result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n break;\n case 'c':\n if (len < 4) {\n throw new RangeError('`c..ccc` (weekday) patterns are not supported');\n }\n result.weekday = ['short', 'long', 'narrow', 'short'][len - 4];\n break;\n // Period\n case 'a': // AM, PM\n result.hour12 = true;\n break;\n case 'b': // am, pm, noon, midnight\n case 'B': // flexible day periods\n throw new RangeError('`b/B` (period) patterns are not supported, use `a` instead');\n // Hour\n case 'h':\n result.hourCycle = 'h12';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'H':\n result.hourCycle = 'h23';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'K':\n result.hourCycle = 'h11';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'k':\n result.hourCycle = 'h24';\n result.hour = ['numeric', '2-digit'][len - 1];\n break;\n case 'j':\n case 'J':\n case 'C':\n throw new RangeError('`j/J/C` (hour) patterns are not supported, use `h/H/K/k` instead');\n // Minute\n case 'm':\n result.minute = ['numeric', '2-digit'][len - 1];\n break;\n // Second\n case 's':\n result.second = ['numeric', '2-digit'][len - 1];\n break;\n case 'S':\n case 'A':\n throw new RangeError('`S/A` (second) patterns are not supported, use `s` instead');\n // Zone\n case 'z': // 1..3, 4: specific non-location format\n result.timeZoneName = len < 4 ? 'short' : 'long';\n break;\n case 'Z': // 1..3, 4, 5: The ISO8601 varios formats\n case 'O': // 1, 4: miliseconds in day short, long\n case 'v': // 1, 4: generic non-location format\n case 'V': // 1, 2, 3, 4: time zone ID or city\n case 'X': // 1, 2, 3, 4: The ISO8601 varios formats\n case 'x': // 1, 2, 3, 4: The ISO8601 varios formats\n throw new RangeError('`Z/O/v/V/X/x` (timeZone) patterns are not supported, use `z` instead');\n }\n return '';\n });\n return result;\n}\n","export * from './date-time';\nexport * from './number';\n","import { __assign } from \"tslib\";\nimport { WHITE_SPACE_REGEX } from './regex.generated';\nexport function parseNumberSkeletonFromString(skeleton) {\n if (skeleton.length === 0) {\n throw new Error('Number skeleton cannot be empty');\n }\n // Parse the skeleton\n var stringTokens = skeleton\n .split(WHITE_SPACE_REGEX)\n .filter(function (x) { return x.length > 0; });\n var tokens = [];\n for (var _i = 0, stringTokens_1 = stringTokens; _i < stringTokens_1.length; _i++) {\n var stringToken = stringTokens_1[_i];\n var stemAndOptions = stringToken.split('/');\n if (stemAndOptions.length === 0) {\n throw new Error('Invalid number skeleton');\n }\n var stem = stemAndOptions[0], options = stemAndOptions.slice(1);\n for (var _a = 0, options_1 = options; _a < options_1.length; _a++) {\n var option = options_1[_a];\n if (option.length === 0) {\n throw new Error('Invalid number skeleton');\n }\n }\n tokens.push({ stem: stem, options: options });\n }\n return tokens;\n}\nfunction icuUnitToEcma(unit) {\n return unit.replace(/^(.*?)-/, '');\n}\nvar FRACTION_PRECISION_REGEX = /^\\.(?:(0+)(\\*)?|(#+)|(0+)(#+))$/g;\nvar SIGNIFICANT_PRECISION_REGEX = /^(@+)?(\\+|#+)?[rs]?$/g;\nvar INTEGER_WIDTH_REGEX = /(\\*)(0+)|(#+)(0+)|(0+)/g;\nvar CONCISE_INTEGER_WIDTH_REGEX = /^(0+)$/;\nfunction parseSignificantPrecision(str) {\n var result = {};\n if (str[str.length - 1] === 'r') {\n result.roundingPriority = 'morePrecision';\n }\n else if (str[str.length - 1] === 's') {\n result.roundingPriority = 'lessPrecision';\n }\n str.replace(SIGNIFICANT_PRECISION_REGEX, function (_, g1, g2) {\n // @@@ case\n if (typeof g2 !== 'string') {\n result.minimumSignificantDigits = g1.length;\n result.maximumSignificantDigits = g1.length;\n }\n // @@@+ case\n else if (g2 === '+') {\n result.minimumSignificantDigits = g1.length;\n }\n // .### case\n else if (g1[0] === '#') {\n result.maximumSignificantDigits = g1.length;\n }\n // .@@## or .@@@ case\n else {\n result.minimumSignificantDigits = g1.length;\n result.maximumSignificantDigits =\n g1.length + (typeof g2 === 'string' ? g2.length : 0);\n }\n return '';\n });\n return result;\n}\nfunction parseSign(str) {\n switch (str) {\n case 'sign-auto':\n return {\n signDisplay: 'auto',\n };\n case 'sign-accounting':\n case '()':\n return {\n currencySign: 'accounting',\n };\n case 'sign-always':\n case '+!':\n return {\n signDisplay: 'always',\n };\n case 'sign-accounting-always':\n case '()!':\n return {\n signDisplay: 'always',\n currencySign: 'accounting',\n };\n case 'sign-except-zero':\n case '+?':\n return {\n signDisplay: 'exceptZero',\n };\n case 'sign-accounting-except-zero':\n case '()?':\n return {\n signDisplay: 'exceptZero',\n currencySign: 'accounting',\n };\n case 'sign-never':\n case '+_':\n return {\n signDisplay: 'never',\n };\n }\n}\nfunction parseConciseScientificAndEngineeringStem(stem) {\n // Engineering\n var result;\n if (stem[0] === 'E' && stem[1] === 'E') {\n result = {\n notation: 'engineering',\n };\n stem = stem.slice(2);\n }\n else if (stem[0] === 'E') {\n result = {\n notation: 'scientific',\n };\n stem = stem.slice(1);\n }\n if (result) {\n var signDisplay = stem.slice(0, 2);\n if (signDisplay === '+!') {\n result.signDisplay = 'always';\n stem = stem.slice(2);\n }\n else if (signDisplay === '+?') {\n result.signDisplay = 'exceptZero';\n stem = stem.slice(2);\n }\n if (!CONCISE_INTEGER_WIDTH_REGEX.test(stem)) {\n throw new Error('Malformed concise eng/scientific notation');\n }\n result.minimumIntegerDigits = stem.length;\n }\n return result;\n}\nfunction parseNotationOptions(opt) {\n var result = {};\n var signOpts = parseSign(opt);\n if (signOpts) {\n return signOpts;\n }\n return result;\n}\n/**\n * https://github.com/unicode-org/icu/blob/master/docs/userguide/format_parse/numbers/skeletons.md#skeleton-stems-and-options\n */\nexport function parseNumberSkeleton(tokens) {\n var result = {};\n for (var _i = 0, tokens_1 = tokens; _i < tokens_1.length; _i++) {\n var token = tokens_1[_i];\n switch (token.stem) {\n case 'percent':\n case '%':\n result.style = 'percent';\n continue;\n case '%x100':\n result.style = 'percent';\n result.scale = 100;\n continue;\n case 'currency':\n result.style = 'currency';\n result.currency = token.options[0];\n continue;\n case 'group-off':\n case ',_':\n result.useGrouping = false;\n continue;\n case 'precision-integer':\n case '.':\n result.maximumFractionDigits = 0;\n continue;\n case 'measure-unit':\n case 'unit':\n result.style = 'unit';\n result.unit = icuUnitToEcma(token.options[0]);\n continue;\n case 'compact-short':\n case 'K':\n result.notation = 'compact';\n result.compactDisplay = 'short';\n continue;\n case 'compact-long':\n case 'KK':\n result.notation = 'compact';\n result.compactDisplay = 'long';\n continue;\n case 'scientific':\n result = __assign(__assign(__assign({}, result), { notation: 'scientific' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));\n continue;\n case 'engineering':\n result = __assign(__assign(__assign({}, result), { notation: 'engineering' }), token.options.reduce(function (all, opt) { return (__assign(__assign({}, all), parseNotationOptions(opt))); }, {}));\n continue;\n case 'notation-simple':\n result.notation = 'standard';\n continue;\n // https://github.com/unicode-org/icu/blob/master/icu4c/source/i18n/unicode/unumberformatter.h\n case 'unit-width-narrow':\n result.currencyDisplay = 'narrowSymbol';\n result.unitDisplay = 'narrow';\n continue;\n case 'unit-width-short':\n result.currencyDisplay = 'code';\n result.unitDisplay = 'short';\n continue;\n case 'unit-width-full-name':\n result.currencyDisplay = 'name';\n result.unitDisplay = 'long';\n continue;\n case 'unit-width-iso-code':\n result.currencyDisplay = 'symbol';\n continue;\n case 'scale':\n result.scale = parseFloat(token.options[0]);\n continue;\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n case 'integer-width':\n if (token.options.length > 1) {\n throw new RangeError('integer-width stems only accept a single optional option');\n }\n token.options[0].replace(INTEGER_WIDTH_REGEX, function (_, g1, g2, g3, g4, g5) {\n if (g1) {\n result.minimumIntegerDigits = g2.length;\n }\n else if (g3 && g4) {\n throw new Error('We currently do not support maximum integer digits');\n }\n else if (g5) {\n throw new Error('We currently do not support exact integer digits');\n }\n return '';\n });\n continue;\n }\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#integer-width\n if (CONCISE_INTEGER_WIDTH_REGEX.test(token.stem)) {\n result.minimumIntegerDigits = token.stem.length;\n continue;\n }\n if (FRACTION_PRECISION_REGEX.test(token.stem)) {\n // Precision\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#fraction-precision\n // precision-integer case\n if (token.options.length > 1) {\n throw new RangeError('Fraction-precision stems only accept a single optional option');\n }\n token.stem.replace(FRACTION_PRECISION_REGEX, function (_, g1, g2, g3, g4, g5) {\n // .000* case (before ICU67 it was .000+)\n if (g2 === '*') {\n result.minimumFractionDigits = g1.length;\n }\n // .### case\n else if (g3 && g3[0] === '#') {\n result.maximumFractionDigits = g3.length;\n }\n // .00## case\n else if (g4 && g5) {\n result.minimumFractionDigits = g4.length;\n result.maximumFractionDigits = g4.length + g5.length;\n }\n else {\n result.minimumFractionDigits = g1.length;\n result.maximumFractionDigits = g1.length;\n }\n return '';\n });\n var opt = token.options[0];\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#trailing-zero-display\n if (opt === 'w') {\n result = __assign(__assign({}, result), { trailingZeroDisplay: 'stripIfInteger' });\n }\n else if (opt) {\n result = __assign(__assign({}, result), parseSignificantPrecision(opt));\n }\n continue;\n }\n // https://unicode-org.github.io/icu/userguide/format_parse/numbers/skeletons.html#significant-digits-precision\n if (SIGNIFICANT_PRECISION_REGEX.test(token.stem)) {\n result = __assign(__assign({}, result), parseSignificantPrecision(token.stem));\n continue;\n }\n var signOpts = parseSign(token.stem);\n if (signOpts) {\n result = __assign(__assign({}, result), signOpts);\n }\n var conciseScientificAndEngineeringOpts = parseConciseScientificAndEngineeringStem(token.stem);\n if (conciseScientificAndEngineeringOpts) {\n result = __assign(__assign({}, result), conciseScientificAndEngineeringOpts);\n }\n }\n return result;\n}\n","// @generated from regex-gen.ts\nexport var WHITE_SPACE_REGEX = /[\\t-\\r \\x85\\u200E\\u200F\\u2028\\u2029]/i;\n","import { PACKAGE_VERSION } from './version.js';\n\n// Name of this application, used in the User-Agent.\nexport const APP_NAME = 'TinodeWeb/' + (PACKAGE_VERSION || '0.17');\n\n// API key. Use https://github.com/tinode/chat/tree/master/keygen to generate your own\nexport const API_KEY = 'AQEAAAABAAD_rAp4DJh05a1HAwFT3A6K';\n\n// The array of possible hosts to connect to.\nexport const KNOWN_HOSTS = {hosted: 'web.tinode.co', local: 'localhost:6060'};\n\n// Default host name and port to connect to.\nexport const DEFAULT_HOST = KNOWN_HOSTS.hosted;\n\n// Enable console logging.\nexport const LOGGING_ENABLED = true;\n\n// Minimum time between two keypress notifications, milliseconds.\nexport const KEYPRESS_DELAY = 3*1000;\n// Delay before sending a {note} for reciving a message, milliseconds.\nexport const RECEIVED_DELAY = 500;\n// Delay before sending a read notification, milliseconds.\nexport const READ_DELAY = 1000;\n\n// The default shortest allowed tag length. Matches the value on the server.\nexport const MIN_TAG_LENGTH = 2;\n// The default greatest allowed tag length. Matches the value on the server.\nexport const MAX_TAG_LENGTH = 96;\n// The default maximum number of tags allowed. Matches the value on the server.\nexport const MAX_TAG_COUNT = 16;\n\n// Access mode for P2P subscriptions initiated by the current user.\nexport const DEFAULT_P2P_ACCESS_MODE = 'JRWPS';\n// Access mode for new group topics created by the current user.\nexport const NEW_GRP_ACCESS_MODE = 'JRWPSAO';\n// Access mode for a channel.\nexport const CHANNEL_ACCESS_MODE = 'JR';\n\n// Access mode for no access.\nexport const NO_ACCESS_MODE = 'N';\n\n// Mediaquery breakpoint between desktop and mobile, in px. Should match the value\n// in @media (max-size: 640px) in base.css\nexport const MEDIA_BREAKPOINT = 640;\n// Size of css 'rem' unit in pixels. Default 1rem = 10pt = 13px.\nexport const REM_SIZE = 13;\n\n// Size of the avatar image: when image dimensions are greater or the image is not square, it's resized to\n// a square of this size or less.\nexport const AVATAR_SIZE = 384;\n\n// Maximum size of an avatar in bytes for sending in-band. Bigger avatars will be sent out of band (as uploads).\nexport const MAX_AVATAR_BYTES = 4096;\n\n// Size of the broken_image shown in MessagesView\nexport const BROKEN_IMAGE_SIZE = 32;\n\n// Number of chat messages to fetch in one call.\nexport const MESSAGES_PAGE = 24;\n\n// Default maximum in-band (included directly into the message) attachment size which fits into\n// a message of 256K in size. Used when the server-provided value is unavailable. The actual\n// binary size of the attachment should be smaller due to base64 encoding expansion and some overhead,\n// for instance 1024 bytes.\n// Increase this limit to a greater value in production, if desired. Also increase\n// max_message_size in the server config.\nexport const MAX_INBAND_ATTACHMENT_SIZE = 262144;\n\n// Default absolute maximum attachment size to be used with the server = 8MB.\n// Used when the server-provided value is unavailable. Increase to something like 100MB in production.\nexport const MAX_EXTERN_ATTACHMENT_SIZE = 1 << 23;\n\n// Maximum allowed linear dimension (pixels) of an image sent inline. Larger images will be shrunk\n// to make the larger dimension fit under this size. You may want to adjust it to 1600 or\n// 2400 for production.\nexport const MAX_IMAGE_DIM = 1024;\n\n// Linear dimensions of image preview: shrink image under this size for previews.\nexport const IMAGE_PREVIEW_DIM = 64;\n\n// Linear dimensions of image thumbnail: shrink image under this size for thumbnails in reply quote previews.\nexport const IMAGE_THUMBNAIL_DIM = 36;\n\n// Maximum number of online users to be shown in a topic title bar. Others will be\n// hidden under \"+X more\"\nexport const MAX_ONLINE_IN_TOPIC = 4;\n\n// Maximum length of user name, topic title, and private comment.\nexport const MAX_TITLE_LENGTH = 60;\n// Maximum length of topic description.\nexport const MAX_TOPIC_DESCRIPTION_LENGTH = 360;\n\n// Length of message previews in chat list, in characters.\nexport const MESSAGE_PREVIEW_LENGTH = 80;\n\n// Length of a quote in quoted reply (for outgoing messages).\nexport const QUOTED_REPLY_LENGTH = 30;\n// Length of a preview of a forwarded message.\nexport const FORWARDED_PREVIEW_LENGTH = 84;\n\n// Link for \"Contact Us\".\nexport const LINK_CONTACT_US = 'email:support@tinode.co';\n\n// Link to Privacy Policy.\nexport const LINK_PRIVACY_POLICY = 'https://tinode.co/privacy.html';\n\n// Link to Terms of Service.\nexport const LINK_TERMS_OF_SERVICE = 'https://tinode.co/terms.html';\n\n// Video calls/WebRTC configuration.\nexport const CALL_WEBRTC_CONFIG = {\n iceServers: [\n { urls: [ \"stun:bn-turn1.xirsys.com\" ] },\n {\n username: \"0kYXFmQL9xojOrUy4VFemlTnNPVFZpp7jfPjpB3AjxahuRe4QWrCs6Ll1vDc7TTjAAAAAGAG2whXZWJUdXRzUGx1cw==\",\n credential: \"285ff060-5a58-11eb-b269-0242ac140004\",\n urls: [\n \"turn:bn-turn1.xirsys.com:80?transport=udp\",\n \"turn:bn-turn1.xirsys.com:3478?transport=udp\",\n \"turn:bn-turn1.xirsys.com:80?transport=tcp\",\n \"turn:bn-turn1.xirsys.com:3478?transport=tcp\",\n \"turns:bn-turn1.xirsys.com:443?transport=tcp\",\n \"turns:bn-turn1.xirsys.com:5349?transport=tcp\"\n ]\n }\n ]};\n","// Video call states.\nexport const CALL_STATE_NONE = 0;\nexport const CALL_STATE_OUTGOING_INITATED = 1;\nexport const CALL_STATE_INCOMING_RECEIVED = 2;\nexport const CALL_STATE_IN_PROGRESS = 3;\n\n// Mime type used for video call messages.\nexport const CALL_MESSAGE_MIME_TYPE = 'application/x-tinode-webrtc';\n","// File and image helper functions.\n\n// Supported image MIME types and corresponding file extensions.\nexport const SUPPORTED_IMAGE_FORMATS = ['image/jpeg', 'image/gif', 'image/png', 'image/svg', 'image/svg+xml'];\nexport const MIME_EXTENSIONS = ['jpg', 'gif', 'png', 'svg', 'svg'];\n\n// Get an URL from a theCard photo: either create a data: URL or return reference URL.\nexport function makeImageUrl(photo) {\n if (photo && typeof photo == 'object') {\n if (photo.ref) {\n return photo.ref\n }\n if (photo.data && photo.type) {\n const mime = photo.type.startsWith('image/') ? photo.type : ('image/' + photo.type);\n return 'data:' + mime + ';base64,' + photo.data;\n }\n }\n return null;\n}\n\n// Calculate linear dimensions for scaling image down to fit under a certain size.\n// Returns an object which contains destination sizes, source sizes, and offsets\n// into source (when making square images).\nexport function fitImageSize(width, height, maxWidth, maxHeight, forceSquare) {\n // Sanitize input\n width = width | 0;\n height = height | 0;\n maxWidth = maxWidth | 0;\n maxHeight = maxHeight | 0;\n\n if (width <= 0 || height <= 0 || maxWidth <= 0 || maxHeight <= 0) {\n return null;\n }\n\n if (forceSquare) {\n maxWidth = maxHeight = Math.min(maxWidth, maxHeight);\n }\n\n const scale = Math.min(\n Math.min(width, maxWidth) / width,\n Math.min(height, maxHeight) / height\n );\n\n const size = {\n dstWidth: (width * scale) | 0,\n dstHeight: (height * scale) | 0,\n };\n\n if (forceSquare) {\n // Also calculate parameters for making the image square.\n size.dstWidth = size.dstHeight = Math.min(size.dstWidth, size.dstHeight);\n size.srcWidth = size.srcHeight = Math.min(width, height);\n size.xoffset = ((width - size.srcWidth) / 2) | 0;\n size.yoffset = ((height - size.srcWidth) / 2) | 0;\n } else {\n size.xoffset = size.yoffset = 0;\n size.srcWidth = width;\n size.srcHeight = height;\n }\n return size;\n}\n\n// Ensure file's extension matches mime content type\nexport function fileNameForMime(fname, mime) {\n const idx = SUPPORTED_IMAGE_FORMATS.indexOf(mime);\n if (idx < 0 || !fname) {\n // Unknown mime or empty name.\n return fname;\n }\n const ext = MIME_EXTENSIONS[idx];\n\n const at = fname.lastIndexOf('.');\n if (at >= 0) {\n fname = fname.substring(0, at);\n }\n return fname + '.' + ext;\n}\n\n// Scale uploaded image to fit under certain dimensions and byte size, optionally constraining to a square.\n// Returns a promise which is resolven on success or rejected on failure.\nexport function imageScaled(fileOrBlob, maxWidth, maxHeight, maxSize, forceSquare) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.crossOrigin = 'Anonymous';\n img.onerror = function(err) {\n reject(new Error(\"Image format unrecognized\"));\n }\n img.onload = async function() {\n // Once the image is loaded, the URL is no longer needed.\n URL.revokeObjectURL(img.src);\n\n // Calculate the desired image dimensions.\n const dim = fitImageSize(img.width, img.height, maxWidth, maxHeight, forceSquare);\n if (!dim) {\n reject(new Error(\"Invalid image\"));\n return;\n }\n let canvas = document.createElement('canvas');\n canvas.width = dim.dstWidth;\n canvas.height = dim.dstHeight;\n let ctx = canvas.getContext('2d');\n ctx.imageSmoothingEnabled = true;\n ctx.drawImage(img, dim.xoffset, dim.yoffset, dim.srcWidth, dim.srcHeight,\n 0, 0, dim.dstWidth, dim.dstHeight);\n\n const mime = SUPPORTED_IMAGE_FORMATS.includes(fileOrBlob.type) ? fileOrBlob.type : 'image/jpeg';\n // Generate blob to check size of the image.\n let blob = await new Promise(resolve => canvas.toBlob(resolve, mime));\n if (!blob) {\n reject(new Error(\"Unsupported image format\"));\n return;\n }\n // Ensure the image is not too large. Shrink the image keeping the aspect ratio.\n // Do nothing if maxsize is <= 0.\n while (maxSize > 0 && blob.length > maxSize) {\n dim.dstWidth = (dim.dstWidth * 0.70710678118) | 0;\n dim.dstHeight = (dim.dstHeight * 0.70710678118) | 0;\n canvas.width = dim.dstWidth;\n canvas.height = dim.dstHeight;\n ctx = canvas.getContext('2d');\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.drawImage(img, dim.xoffset, dim.yoffset, dim.srcWidth, dim.srcHeight,\n 0, 0, dim.dstWidth, dim.dstHeight);\n blob = await new Promise(resolve => canvas.toBlob(resolve, mime));\n }\n\n canvas = null;\n resolve({mime: mime, blob: blob, width: dim.dstWidth, height: dim.dstHeight, name: fileNameForMime(fileOrBlob.name, mime)});\n };\n img.src = URL.createObjectURL(fileOrBlob);\n });\n}\n\n// Scale and crop image according to specified dimensions.\n// The coordinates are in unscaled image pixels, i.e. cut the rectangle first then scale it.\n// returns a promise.\nexport function imageCrop(mime, objURL, left, top, width, height, scale) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.crossOrigin = 'Anonymous';\n img.onerror = (err) => {\n reject(new Error(\"Image format unrecognized\"));\n };\n img.onload = () => {\n // Once the image is loaded, the URL is no longer needed.\n URL.revokeObjectURL(img.src);\n\n let canvas = document.createElement('canvas');\n canvas.width = width * scale;\n canvas.height = height * scale;\n let ctx = canvas.getContext('2d');\n ctx.imageSmoothingEnabled = true;\n ctx.drawImage(img, left, top, width, height, 0, 0, canvas.width, canvas.height);\n\n mime = SUPPORTED_IMAGE_FORMATS.includes(mime) ? mime : 'image/jpeg';\n // Generate blob to check size of the image.\n canvas.toBlob((blob) => {\n // Allow GC.\n canvas = null;\n if (blob) {\n resolve({mime: mime, blob: blob, width: width, height: height});\n } else {\n reject(new Error(\"Unsupported image format\"));\n }\n }, mime);\n };\n img.src = objURL;\n });\n}\n\n// Convert file to base64 string.\nexport function fileToBase64(file) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onerror = (evt) => {\n reject(reader.error);\n };\n reader.onload = () => {\n resolve({mime: file.type, bits: reader.result.split(',')[1], name: file.name});\n };\n reader.readAsDataURL(file);\n });\n}\n\n// Convert Blob to base64 string. Returns a promise resolved with the base64 string and mime.\nexport function blobToBase64(blob) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onerror = _ => {\n reject(reader.error);\n };\n reader.onload = () => {\n resolve({mime: blob.type, bits: reader.result.split(',')[1]});\n };\n reader.readAsDataURL(blob);\n });\n}\n\n// File pasted from the clipboard. It's either an inline image or a file attachment.\nexport function filePasted(event, onImageSuccess, onAttachmentSuccess, onError) {\n const items = (event.clipboardData || event.originalEvent.clipboardData || {}).items;\n if (!Array.isArray(items)) {\n return false;\n }\n\n for (let i in items) {\n const item = items[i];\n if (item.kind === 'file') {\n const file = item.getAsFile();\n if (!file) {\n console.error(\"Failed to get file object from pasted file item\", item.kind, item.type);\n onError(\"Failed to get file object from pasted file item\");\n continue;\n }\n if (file.type && file.type.split('/')[0] == 'image') {\n onImageSuccess(file);\n } else {\n onAttachmentSuccess(file);\n }\n // Indicate that the pasted data contains a file.\n return true;\n }\n }\n // No file found.\n return false;\n}\n\n// Get mime type from data URL header.\nexport function getMimeType(header) {\n var mime = /^data:(image\\/[-+a-z0-9.]+);base64/.exec(header);\n return (mime && mime.length > 1) ? mime[1] : null;\n}\n\n// Given length of a binary object in bytes, calculate the length after\n// base64 encoding.\nexport function base64EncodedLen(n) {\n return Math.floor((n + 2) / 3) * 4;\n}\n\n// Given length of a base64-encoded object, calculate decoded size of the\n// pbject in bytes.\nexport function base64DecodedLen(n) {\n return Math.floor(n / 4) * 3;\n}\n\n// Re-encode string to standard base64 encoding with padding.\n// The string may be base64-URL encoded without the padding.\nexport function base64ReEncode(str) {\n if (str) {\n str = str.replace(/-/g, '+').replace(/_/g, '/');\n try {\n str = btoa(atob(str));\n } catch(err) {\n console.error(\"Failed to base64 re-encode string.\", err);\n str = null;\n }\n }\n return str;\n}\n\n// Convert a base64 encoded string with the provided mime type into a Blob.\nexport function base64ToBlob(str, mime) {\n if (!str) {\n return null;\n }\n\n try {\n // Make blob.\n const bin = atob(str);\n const length = bin.length;\n const buf = new ArrayBuffer(length);\n const arr = new Uint8Array(buf);\n for (let i = 0; i < length; i++) {\n arr[i] = bin.charCodeAt(i);\n }\n\n return new Blob([buf], { type: mime });\n } catch(err) {\n console.error(\"Failed to convert base64 to blob: \", err);\n }\n\n return null;\n}\n\nexport function intArrayToBase64(arr) {\n if (!Array.isArray(arr)) {\n return null;\n }\n try {\n let bin = '';\n new Uint8Array(arr).forEach(b => bin += String.fromCharCode(b));\n return window.btoa(bin);\n } catch (err) {}\n return null;\n}\n\nexport function base64ToIntArray(b64) {\n const arr = [];\n try {\n const bin = window.atob(b64);\n [...bin].forEach(c => {\n arr.push(c.charCodeAt(0));\n });\n return arr;\n } catch (err) {}\n return null;\n}\n","import React from 'react';\nimport { defineMessages } from 'react-intl';\n\nimport { Drafty } from 'tinode-sdk';\n\nimport AudioPlayer from '../widgets/audio-player.jsx'\nimport LazyImage from '../widgets/lazy-image.jsx'\nimport UploadingImage from '../widgets/uploading-image.jsx'\n\nimport { IMAGE_THUMBNAIL_DIM, BROKEN_IMAGE_SIZE, REM_SIZE } from '../config.js';\nimport { base64ToBlob, blobToBase64, fitImageSize, imageScaled } from './blob-helpers.js';\nimport { idToColorClass, secondsToTime, shortenFileName } from './strformat.js';\nimport { cancelablePromise, sanitizeUrlForMime } from './utils.js';\n\nconst messages = defineMessages({\n drafty_form: {\n id: 'drafty_form',\n defaultMessage: 'Form: ',\n description: 'Comment for form in drafty'\n },\n drafty_attachment: {\n id: 'drafty_attachment',\n defaultMessage: 'Attachment',\n description: 'Comment for attachment in drafty'\n },\n drafty_image: {\n id: 'drafty_image',\n defaultMessage: 'Picture',\n description: 'Comment for embedded images in drafty'\n },\n drafty_unknown: {\n id: 'drafty_unknown',\n defaultMessage: 'Unsupported',\n description: 'Unsupported entity in drafty'\n }\n});\n\n// Additional processing of image data.\nfunction handleImageData(el, data, attr) {\n if (!data) {\n attr.src = 'img/broken_image.png';\n attr.style = {\n width: IMAGE_THUMBNAIL_DIM + 'px',\n height: IMAGE_THUMBNAIL_DIM + 'px',\n };\n return el;\n }\n\n attr.className = 'inline-image';\n const dim = fitImageSize(data.width, data.height,\n this.viewportWidth > 0 ? Math.min(this.viewportWidth - REM_SIZE * 6.5, REM_SIZE * 34.5) :\n REM_SIZE * 34.5, REM_SIZE * 24, false) ||\n {dstWidth: BROKEN_IMAGE_SIZE, dstHeight: BROKEN_IMAGE_SIZE};\n attr.style = {\n width: dim.dstWidth + 'px',\n height: dim.dstHeight + 'px',\n // Looks like a Chrome bug: broken image does not respect 'width' and 'height'.\n minWidth: dim.dstWidth + 'px',\n minHeight: dim.dstHeight + 'px'\n };\n if (!Drafty.isProcessing(data)) {\n attr.src = this.authorizeURL(sanitizeUrlForMime(attr.src, 'image'));\n attr.alt = data.name;\n if (attr.src) {\n if (Math.max(data.width || 0, data.height || 0) > IMAGE_THUMBNAIL_DIM) {\n // Allow previews for large enough images.\n attr.onClick = this.onImagePreview;\n attr.className += ' image-clickable';\n }\n attr.loading = 'lazy';\n } else {\n attr.src = 'img/broken_image.png';\n }\n } else {\n // Use custom element instead of .\n el = UploadingImage;\n }\n\n return el;\n}\n\n// The main Drafty formatter: converts Drafty elements into React classes. 'this' is set by the caller.\n// 'this' must contain:\n// viewportWidth: this.props.viewportWidth;\n// authorizeURL: this.props.tinode.authorizeURL\n// onImagePreview: this.handleImagePreview\n// onFormButtonClick: this.handleFormButtonClick\n// onQuoteClick: this.handleQuoteClick (optional)\nexport function fullFormatter(style, data, values, key, stack) {\n if (stack.includes('QQ')) {\n return quoteFormatter.call(this, style, data, values, key);\n }\n\n if (!style) {\n // Unformatted.\n return values;\n }\n\n let el = Drafty.tagName(style);\n let attr = Drafty.attrValue(style, data) || {};\n attr.key = key;\n switch (style) {\n case 'AU':\n // Show audio player.\n if (attr.src) {\n attr.src = this.authorizeURL(sanitizeUrlForMime(attr.src, 'audio'));\n attr.duration = data.duration > 0 ? (data.duration | 0) : undefined;\n attr.preview = data.preview;\n attr.loading = 'lazy';\n }\n el = AudioPlayer;\n // Audio element cannot have content.\n values = null;\n break;\n case 'BR':\n values = null;\n break;\n case 'EX':\n // Ignore.\n break;\n case 'HL':\n // Highlighted text. Assign class name.\n attr.className = 'highlight';\n break;\n case 'HD':\n el = null;\n values = null;\n break;\n case 'IM':\n // Additional processing for images\n el = handleImageData.call(this, el, data, attr);\n // Image element cannot have content.\n values = null;\n break;\n case 'BN':\n // Button\n attr.onClick = this.onFormButtonClick;\n let inner = React.Children.map(values, (child) => {\n return typeof child == 'string' ? child : undefined;\n });\n if (!inner || inner.length == 0) {\n inner = [attr.name]\n }\n // Get text which will be sent back when the button is clicked.\n attr['data-title'] = inner.join('');\n break;\n case 'MN':\n // Mention\n attr.className = 'mention'\n if (data) {\n attr.className += ' ' + idToColorClass(data.val, false, true);\n }\n break;\n case 'FM':\n // Form\n attr.className = 'bot-form';\n break;\n case 'RW':\n // Form element formatting is dependent on element content.\n break;\n case 'QQ':\n // Quote/citation.\n attr.className = 'reply-quote'\n attr.onClick = this.onQuoteClick;\n break;\n default:\n if (!el) {\n // Unknown element.\n el = React.Fragment;\n attr = {key: key};\n // Generate comment for unknown element.\n let body = values;\n if (!Array.isArray(values) || !values.join('').trim()) {\n body = [{this.formatMessage(messages.drafty_unknown)}];\n }\n values = [extension, ' '].concat(body);\n }\n break;\n }\n if (!el) {\n return values;\n }\n return React.createElement(el, attr, values);\n}\n\n// Converts Drafty object into a one-line preview. 'this' is set by the caller.\n// 'this' must contain:\n// formatMessage: this.props.intl.formatMessage\n// messages: formatjs messages defined with defineMessages.\nexport function previewFormatter(style, data, values, key) {\n if (!style) {\n // Unformatted.\n return values;\n }\n\n let el = Drafty.tagName(style);\n const attr = { key: key };\n switch (style) {\n case 'AU':\n // Voicemail as '[mic] 0:00'.\n el = React.Fragment;\n values = [mic, ' ', secondsToTime(data.duration/1000)];\n break;\n case 'BR':\n // Replace new line with a space.\n el = React.Fragment;\n values = [' '];\n break;\n case 'HL':\n // Make highlight less prominent in preview.\n attr.className = 'highlight preview';\n break;\n case 'LN':\n case 'MN':\n // Disable links in previews.\n el = 'span';\n break;\n case 'IM':\n // Replace image with '[icon] Image'.\n el = React.Fragment;\n values = [photo, ' ', this.formatMessage(messages.drafty_image)];\n break;\n case 'BN':\n el = 'span';\n attr.className = 'flat-button faux';\n break;\n case 'FM':\n el = React.Fragment;\n values = [dashboard,\n this.formatMessage(messages.drafty_form)].concat(' ', values || []);\n break;\n case 'RW':\n el = React.Fragment;\n break;\n case 'EX':\n if (data) {\n if (data.mime == 'application/json') {\n // Ignore JSON attachments: they are form response payloads.\n return null;\n }\n // Clear payload.\n delete data.val;\n delete data.ref;\n }\n el = React.Fragment;\n values = [attachment, ' ', this.formatMessage(messages.drafty_attachment)];\n break;\n case 'QQ':\n case 'HD':\n el = null;\n values = null;\n break;\n default:\n if (!el) {\n // Unknown element.\n el = React.Fragment;\n values = [extension, ' ', this.formatMessage(messages.drafty_unknown)];\n }\n break;\n }\n if (!el) {\n return values;\n }\n return React.createElement(el, attr, values);\n};\n\n// Converts Drafty object into a quoted reply. 'this' is set by the caller.\nfunction inlineImageAttr(attr, data) {\n attr.style = {\n width: IMAGE_THUMBNAIL_DIM + 'px',\n height: IMAGE_THUMBNAIL_DIM + 'px',\n maxWidth: IMAGE_THUMBNAIL_DIM + 'px',\n maxHeight: IMAGE_THUMBNAIL_DIM + 'px',\n }\n attr.className = 'inline-image';\n attr.alt = this.formatMessage(messages.drafty_image);\n if (!data) {\n attr.src = 'img/broken_image.png';\n }\n attr.title = attr.alt;\n return attr;\n}\n\n// Displays a portion of Drafty within 'QQ' quotes. 'this' is set by the caller.\n// 'this' must contain:\n// formatMessage: this.props.intl.formatMessage\n// messages: formatjs messages defined with defineMessages.\n// authorizeURL: this.props.tinode.authorizeURL\n// onQuoteClick: this.handleQuoteClick (optional)\nfunction quoteFormatter(style, data, values, key) {\n if (['BR', 'EX', 'IM', 'MN'].includes(style)) {\n let el = Drafty.tagName(style);\n let attr = Drafty.attrValue(style, data) || {};\n attr.key = key;\n switch(style) {\n case 'BR':\n values = null;\n break;\n case 'IM':\n attr = inlineImageAttr.call(this, attr, data);\n values = [React.createElement('img', attr, null), ' ', attr.alt];\n el = React.Fragment;\n // Fragment attributes.\n attr = {key: key};\n break;\n case 'MN':\n el = 'span';\n attr.className = 'mention'\n if (data) {\n attr.className += ' ' + idToColorClass(data.val, false, true);\n }\n break;\n case 'EX':\n let fname;\n if (data) {\n if (data.mime == 'application/json') {\n // Ignore JSON attachments: they are form response payloads.\n return null;\n }\n fname = data.name;\n // Clear payload.\n delete data.val;\n delete data.ref;\n }\n el = React.Fragment;\n values = [attachment,\n shortenFileName(fname, 16) || this.formatMessage(messages.drafty_attachment)];\n break;\n }\n return React.createElement(el, attr, values);\n }\n return previewFormatter.call(this, style, data, values, key);\n}\n\n// Create image thumbnail suitable for inclusion in a quote.\nfunction quoteImage(data) {\n let promise;\n // Get the blob from the image data.\n if (data.val) {\n const blob = base64ToBlob(data.val, data.mime);\n if (!blob) {\n throw new Error(\"Invalid image\");\n }\n promise = Promise.resolve(blob);\n } else if (data.ref) {\n promise = fetch(this.authorizeURL(sanitizeUrlForMime(data.ref, 'image')))\n .then(evt => {\n if (evt.ok) {\n return evt.blob();\n } else {\n throw new Error(`Image fetch unsuccessful: ${evt.status} ${evt.statusText}`);\n }\n });\n } else {\n throw new Error(\"Missing image data\");\n }\n\n // Scale the blob.\n return promise\n .then(blob => {\n // Cut the square from the center of the image and shrink it.\n return imageScaled(blob, IMAGE_THUMBNAIL_DIM, IMAGE_THUMBNAIL_DIM, -1, true)\n }).then(scaled => {\n data.mime = scaled.mime;\n data.size = scaled.blob.size;\n data.width = scaled.width;\n data.height = scaled.height;\n delete data.ref;\n // Keeping the original file name, if provided: ex.data.name;\n\n data.src = URL.createObjectURL(scaled.blob);\n return blobToBase64(scaled.blob);\n }).then(b64 => {\n data.val = b64.bits;\n return data;\n }).catch(err => {\n delete data.val;\n delete data.src;\n data.width = IMAGE_THUMBNAIL_DIM;\n data.height = IMAGE_THUMBNAIL_DIM;\n // Rethrow.\n throw err;\n });\n}\n\n// Create a preview of a reply.\nexport function replyFormatter(style, data, values, key, stack) {\n if (style == 'IM') {\n const attr = inlineImageAttr.call(this, {key: key}, data);\n let loadedPromise;\n try {\n loadedPromise = cancelablePromise(quoteImage.call(this, data));\n } catch (error) {\n loadedPromise = cancelablePromise(error);\n }\n attr.whenDone = loadedPromise;\n values = [React.createElement(LazyImage, attr, null), ' ', attr.alt];\n return React.createElement(React.Fragment, {key: key}, values);\n } else if (style == 'QQ') {\n if (stack.includes('QQ')) {\n // Quote inside quote when forwarding a message.\n return React.createElement('span', {key: key},\n [format_quote, ' ']);\n }\n\n const attr = Drafty.attrValue('QQ', data) || {};\n attr.key = key;\n attr.className = 'reply-quote'\n return React.createElement(Drafty.tagName('QQ'), attr, values);\n }\n return quoteFormatter.call(this, style, data, values, key);\n}\n","import { KNOWN_HOSTS, DEFAULT_HOST } from '../config.js';\n\n// Detect server address from the URL\nexport function detectServerAddress() {\n let host = DEFAULT_HOST;\n if (typeof window.location == 'object') {\n if (window.location.protocol == 'file:' || window.location.hostname == 'localhost') {\n host = KNOWN_HOSTS.local;\n } else if (window.location.hostname) {\n host = window.location.hostname + (window.location.port ? ':' + window.location.port : '');\n }\n }\n return host;\n}\n\n// Detect if the page is served over HTTPS.\nexport function isSecureConnection() {\n if (typeof window.location == 'object') {\n return window.location.protocol == 'https:';\n }\n return false;\n}\n\nexport function isLocalHost() {\n if (typeof window.location == 'object') {\n return window.location.hostname == 'localhost';\n }\n return false;\n}\n","// Helper functions for storing values in localStorage.\n// By default localStorage can store only strings, not objects or other types.\n\nexport default class LocalStorageUtil {\n // Replace old object with the new one.\n static setObject(key, value) {\n localStorage.setItem(key, JSON.stringify(value));\n }\n\n // Get stored object.\n static getObject(key) {\n const value = localStorage.getItem(key);\n return value && JSON.parse(value);\n }\n\n // Partially or wholly update stored object.\n static updateObject(key, value) {\n const oldVal = this.getObject(key);\n this.setObject(key, Object.assign(oldVal || {}, value));\n }\n\n // Just a wrapper.\n static removeItem(key) {\n localStorage.removeItem(key);\n }\n}\n","// Utility class for hash navigation.\n\n// Parse hash as in http://www.example.com/path#hash as if it were\n// path and arguments.\nexport default class HashNavigation {\n static parseUrlHash(hash) {\n // Split path from args, path -> parts[0], args->path[1]\n const parts = hash.split('?', 2);\n const params = {};\n let path = [];\n if (parts[0]) {\n path = parts[0].replace('#', '').split('/');\n }\n if (parts[1]) {\n parts[1].split('&').forEach(function(part) {\n const item = part.split('=');\n if (item[0]) {\n params[decodeURIComponent(item[0])] = decodeURIComponent(item[1]);\n }\n });\n }\n return {path: path, params: params};\n }\n\n static navigateTo(url) {\n window.location.hash = url;\n }\n\n static composeUrlHash(path, params) {\n let url = path.join('/');\n const args = [];\n for (const key in params) {\n if (params.hasOwnProperty(key)) {\n args.push(key + '=' + params[key]);\n }\n }\n if (args.length > 0) {\n url += '?' + args.join('&');\n }\n return url;\n }\n\n static addUrlParam(hash, key, value) {\n const parsed = this.parseUrlHash(hash);\n parsed.params[key] = value;\n return this.composeUrlHash(parsed.path, parsed.params);\n }\n\n static removeUrlParam(hash, key) {\n const parsed = this.parseUrlHash(hash);\n delete parsed.params[key];\n return this.composeUrlHash(parsed.path, parsed.params);\n }\n\n static setUrlSidePanel(hash, sidepanel) {\n const parsed = this.parseUrlHash(hash);\n parsed.path[0] = sidepanel;\n return this.composeUrlHash(parsed.path, parsed.params);\n }\n\n static setUrlInfoPanel(hash, infopanel) {\n const parsed = this.parseUrlHash(hash);\n if (infopanel) {\n parsed.params.info = infopanel;\n } else {\n delete parsed.params.info;\n }\n return this.composeUrlHash(parsed.path, parsed.params);\n }\n\n static setUrlTopic(hash, topic) {\n const parsed = this.parseUrlHash(hash);\n parsed.path[1] = topic;\n // Close InfoView on topic change.\n delete parsed.params.info;\n return this.composeUrlHash(parsed.path, parsed.params);\n }\n}\n","// Short representation of time in the past.\nexport function shortDateFormat(then, locale) {\n locale = locale || window.navigator.userLanguage || window.navigator.language;\n const now = new Date();\n if (then.getFullYear() == now.getFullYear()) {\n // Same year.\n if (then.getMonth() == now.getMonth() && then.getDate() == now.getDate()) {\n // Same month and day, show time only.\n return then.toLocaleTimeString(locale, {hour12: false, hour: '2-digit', minute: '2-digit'});\n }\n // Different month and/or day, show month day, time.\n return then.toLocaleDateString(locale,\n {hour12: false, month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit'});\n }\n // Different year: just show the date.\n return then.toLocaleDateString(locale, {year: 'numeric', month: 'short', day: 'numeric'});\n}\n\n// Convert seconds to minutes:seconds, i.e. 156 sec -> 2:36.\n// If fixedMins is true, then minutes are represented by at least two digits.\nexport function secondsToTime(seconds, fixedMin) {\n let min = Math.floor(seconds / 60) | 0;\n if (fixedMin) {\n min = min < 10 ? `0${min}` : min;\n }\n let sec = (seconds % 60) | 0;\n sec = sec < 10 ? `0${sec}` : sec;\n return `${min}:${sec}`;\n}\n\n// Convert a number of bytes to human-readable format.\nexport function bytesToHumanSize(bytes) {\n if (!bytes || bytes == 0) {\n return '0 Bytes';\n }\n\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB'];\n const bucket = Math.min(Math.floor(Math.log2(bytes) / 10) | 0, sizes.length-1);\n const count = bytes / Math.pow(1024, bucket);\n const round = bucket > 0 ? (count < 3 ? 2 : (count < 30 ? 1 : 0)) : 0;\n return count.toFixed(round) + ' ' + sizes[bucket];\n}\n\n// Shorten a file name to be under maxLength by clipping out the middle.\nexport function shortenFileName(filename, maxLength) {\n if (typeof filename != 'string') {\n return filename;\n }\n return filename.length > maxLength ?\n filename.slice(0, maxLength/2 - 1) + '…' + filename.slice(1 - maxLength/2) : filename;\n}\n\n// Get 32 bit integer hash value for a string. Ideally it should produce the same value\n// as Java's String#hash().\nfunction stringToColorHash(value) {\n let hash = 0;\n value = '' + value;\n for (let i = 0; i < value.length; i++) {\n hash = ((hash << 5) - hash) + value.charCodeAt(i);\n hash = hash & hash; // Convert to 32bit integer\n }\n return hash;\n}\n\n// User avatar letter color id.\nexport function letterTileColorId(userId) {\n return Math.abs(stringToColorHash(userId)) % 16;\n}\n\n// Converts user or topic ID to a CSS color class. Ideally it should produce the same color value as Java version.\n// params:\n// - {string} id: user or topic ID\n// - {boolean} light: light or dark version of the color.\n// - {boolean} fg: foreground (text) or background color.\nexport function idToColorClass(id, light, fg) {\n return (light ? 'lt-' : 'dk-') + (fg ? 'fg-' : 'bg-') + letterTileColorId(id);\n}\n","// Odds and ends\n\nimport { Tinode } from 'tinode-sdk';\n\nimport { CALL_MESSAGE_MIME_TYPE } from '../constants.js'\n\n// Make shortcut icon appear with a green dot + show unread count in title.\nexport function updateFavicon(count) {\n const oldIcon = document.getElementById('shortcut-icon');\n const head = document.head || document.getElementsByTagName('head')[0];\n const newIcon = document.createElement('link');\n newIcon.type = 'image/png';\n newIcon.id = 'shortcut-icon';\n newIcon.rel = 'shortcut icon';\n newIcon.href = 'img/logo32x32' + (count > 0 ? 'a' : '') + '.png';\n if (oldIcon) {\n head.removeChild(oldIcon);\n }\n head.appendChild(newIcon);\n\n document.title = (count > 0 ? '('+count+') ' : '') + 'Tinode';\n}\n\n// Create theCard which represents user's or topic's \"public\" info.\nexport function theCard(fn, imageUrl, imageMimeType, note) {\n let card = null;\n fn = fn && fn.trim();\n note = note && note.trim();\n\n if (fn) {\n card = {\n fn: fn\n };\n }\n\n if (typeof note == 'string') {\n card = card || {};\n card.note = note ? note : Tinode.DEL_CHAR;\n }\n\n if (imageUrl) {\n card = card || {};\n let mimeType = imageMimeType;\n // Is this a data URL \"data:[][;base64],\"?\n const matches = /^data:(image\\/[-a-z0-9+.]+)?(;base64)?,/i.exec(imageUrl);\n if (matches) {\n mimeType = matches[1];\n card.photo = {\n data: imageUrl.substring(imageUrl.indexOf(',') + 1),\n ref: Tinode.DEL_CHAR\n };\n } else {\n card.photo = {\n data: Tinode.DEL_CHAR,\n ref: imageUrl\n };\n }\n card.photo.type = (mimeType || 'image/jpeg').substring('image/'.length);\n }\n\n return card;\n}\n\n// Deep-shallow compare two arrays: shallow compare each element.\nexport function arrayEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (!Array.isArray(a) || !Array.isArray(b)) {\n return false;\n }\n\n // Compare lengths first.\n if (a.length != b.length) {\n return false;\n }\n // Order of elements is ignored.\n a.sort();\n b.sort();\n for (let i = 0, l = a.length; i < l; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\n\n// Checks (loosely) if the given string is a phone. If so, returns the phone number in a format\n// as close to E.164 as possible.\nexport function asPhone(val) {\n val = val.trim();\n if (/^(?:\\+?(\\d{1,3}))?[- (.]*(\\d{3})[- ).]*(\\d{3})[- .]*(\\d{2})[- .]*(\\d{2})?$/.test(val)) {\n return val.replace(/[- ().]*/, '');\n }\n return null;\n}\n\n// Checks (loosely) if the given string is an email. If so returns the email.\nexport function asEmail(val) {\n val = val.trim();\n if (/^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$/.test(val)) {\n return val;\n }\n return null;\n}\n\n// Checks if URL is a relative url, i.e. has no 'scheme://', including the case of missing scheme '//'.\n// The scheme is expected to be RFC-compliant, e.g. [a-z][a-z0-9+.-]*\n// example.html - ok\n// https:example.com - not ok.\n// http:/example.com - not ok.\n// ' ↲ https://example.com' - not ok. (↲ means carriage return)\nexport function isUrlRelative(url) {\n return url && !/^\\s*([a-z][a-z0-9+.-]*:|\\/\\/)/im.test(url);\n}\n\n// Ensure URL does not present an XSS risk. Optional allowedSchemes may contain an array of\n// strings with permitted URL schemes, such as ['ftp', 'ftps']; otherwise accept http and https only.\nexport function sanitizeUrl(url, allowedSchemes) {\n if (typeof url != 'string') {\n return url;\n }\n\n // Strip control characters and whitespace. They are not valid URL characters anyway.\n url = url.replace(/[^\\x20-\\x7E]/gmi, '').trim();\n\n // Relative URLs are safe.\n // Relative URL does not start with ':', abcd123: or '//'.\n if (!/^([a-z][a-z0-9+.-]*:|\\/\\/)/i.test(url)) {\n return url;\n }\n\n // Blob URLs are safe.\n if (/^blob:http/.test(url)) {\n return url;\n }\n\n // Absolute URL. Accept only safe schemes, or no scheme.\n const schemes = Array.isArray(allowedSchemes) ? allowedSchemes.join('|') : 'http|https';\n const re = new RegExp('^((' + schemes + '):|//)', 'i');\n if (!re.test(url)) {\n return null;\n }\n\n return url;\n}\n\n// Ensure URL is suitable as a source like field: the URL must be a relative URL or\n// have http:, https:, blob: or data: scheme.\n// In case of data: scheme, the URL must must be of the right MIME type such as 'data:{mimeMajor}/XXXX;base64,'.\nexport function sanitizeUrlForMime(url, mimeMajor) {\n if (!url) {\n return null;\n }\n\n const sanitizedUrl = sanitizeUrl(url);\n if (sanitizedUrl) {\n return sanitizedUrl;\n }\n\n // Is this a data: URL of the appropriate mime type?\n const re = new RegExp(`data:${mimeMajor}\\/[a-z0-9.-]+;base64,`, 'i');\n if (re.test(url.trim())) {\n return url;\n }\n\n return null;\n}\n\n// Given message's received status, return name and color of a delivery indicator icon.\nexport function deliveryMarker(received) {\n switch (received) {\n case Tinode.MESSAGE_STATUS_SENDING:\n return { name: 'access_time' }; // watch face\n case Tinode.MESSAGE_STATUS_FAILED:\n return { name: 'warning', color: 'danger-color' }; // yellow icon /!\\\n case Tinode.MESSAGE_STATUS_SENT:\n return { name: 'done' }; // checkmark\n case Tinode.MESSAGE_STATUS_RECEIVED:\n return { name: 'done_all' }; // double checkmark\n case Tinode.MESSAGE_STATUS_READ:\n return { name: 'done_all', color: 'blue' }; // blue double checkmark\n }\n return null;\n}\n\n// Wraps a promise to make it cancelable.\n// The parameter can be either a promise or an error. If it's an error, the wrapped promise is\n// created in a rejected state.\nexport function cancelablePromise(promise) {\n let hasCanceled = false;\n\n const wrappedPromise = promise instanceof Error ?\n Promise.reject(promise) :\n new Promise((resolve, reject) => {\n promise.then(\n result => hasCanceled ? reject({isCanceled: true}) : resolve(result),\n error => hasCanceled ? reject({isCanceled: true}) : reject(error)\n );\n });\n\n return {\n promise: wrappedPromise,\n cancel() {\n hasCanceled = true;\n },\n };\n};\n\n// Returns true if specified mime type represents a Tinode video call.\nexport function isVideoCall(mime) {\n return mime == CALL_MESSAGE_MIME_TYPE;\n}\n\n// Clips string to the specified length.\nexport function clipStr(str, length) {\n return str && str.substring(0, length);\n}\n","// This is a generated file. Don't edit.\n\nexport const PACKAGE_VERSION = \"0.20.0-alpha1\";\n","// Edit account parameters.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport CheckBox from '../widgets/checkbox.jsx';\n\nexport default class EditAccountView extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.handleCheckboxClick = this.handleCheckboxClick.bind(this);\n }\n\n handleCheckboxClick(what, checked) {\n if (what == 'sound') {\n this.props.onToggleMessageSounds(checked);\n } else if (what == 'alert') {\n this.props.onTogglePushNotifications(checked);\n } else if (what == 'incognito') {\n this.props.onToggleIncognitoMode(checked);\n }\n }\n\n render() {\n return (\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n );\n }\n};\n","// Edit account parameters.\nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\n\nimport InPlaceEdit from '../widgets/in-place-edit.jsx';\nimport PermissionsEditor from '../widgets/permissions-editor.jsx';\n\nconst messages = defineMessages({\n delete_account: {\n id: 'delete_account',\n defaultMessage: 'Delete account',\n description: 'Title for delete account warning'\n },\n delete_account_warning: {\n id: 'delete_account_warning',\n defaultMessage: 'Are you sure you want to delete your account? It cannot be undone.',\n description: 'Warning message when deleting an account'\n }\n});\n\nclass AccSecurityView extends React.Component {\n constructor(props) {\n super(props);\n\n const me = this.props.tinode.getMeTopic();\n let blockedCount = 0;\n me.contacts((c) => {\n if (c.acs && !c.acs.isJoiner()) {\n blockedCount ++;\n }\n });\n const defacs = me.getDefaultAccess();\n this.state = {\n auth: defacs ? defacs.auth : null,\n anon: defacs ? defacs.anon : null,\n showPermissionEditorFor: undefined,\n blockedCount: blockedCount,\n };\n\n this.handlePasswordUpdate = this.handlePasswordUpdate.bind(this);\n this.handleLaunchPermissionsEditor = this.handleLaunchPermissionsEditor.bind(this);\n this.handleHidePermissionsEditor = this.handleHidePermissionsEditor.bind(this);\n this.handlePermissionsChanged = this.handlePermissionsChanged.bind(this);\n this.handleDeleteAccount = this.handleDeleteAccount.bind(this);\n }\n\n handlePasswordUpdate(pwd) {\n this.setState({password: pwd});\n this.props.onUpdatePassword(pwd);\n }\n\n handleLaunchPermissionsEditor(which) {\n this.setState({\n showPermissionEditorFor: which,\n editedPermissions: this.state[which]\n });\n }\n\n handleHidePermissionsEditor() {\n this.setState({showPermissionEditorFor: undefined});\n }\n\n handlePermissionsChanged(perm) {\n let defacs = {};\n defacs[this.state.showPermissionEditorFor] = perm;\n this.props.onUpdateAccountDesc('me', undefined, undefined, defacs);\n\n let newState = {showPermissionEditorFor: undefined};\n newState[this.state.showPermissionEditorFor] = perm;\n this.setState(newState);\n }\n\n handleDeleteAccount(e) {\n e.preventDefault();\n const {formatMessage} = this.props.intl;\n this.props.onShowAlert(\n formatMessage(messages.delete_account), // title\n formatMessage(messages.delete_account_warning), // content\n (() => { this.props.onDeleteAccount(); }), // onConfirm\n null, // use default text \"OK\"\n true, // Show Reject button\n null // use default text \"Cancel\"\n );\n }\n\n render() {\n return (\n <>{this.state.showPermissionEditorFor ?\n \n :\n
\n );\n }\n};\n","import React from 'react';\n\nimport LetterTile from './letter-tile.jsx';\nimport LoadSpinner from './load-spinner.jsx';\n\nimport { sanitizeUrlForMime } from '../lib/utils.js';\n\nimport { AVATAR_SIZE } from '../config.js';\n\nexport default class AvatarUpload extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n source: props.avatar\n };\n\n this.handleFileReceived = this.handleFileReceived.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.avatar != prevProps.avatar) {\n this.setState({source: this.props.avatar});\n }\n }\n\n handleFileReceived(e) {\n const image = e.target.files[0];\n this.props.onImageUpdated(image.type, URL.createObjectURL(image), image.name);\n // Clear the value so the same file can be uploaded again.\n e.target.value = '';\n }\n\n render() {\n // Randomize id value in case more than one AvatarUpload is shown\n // at the same time.\n const randId = 'file-input-avatar-' + ('' + Math.random()).substring(0, 4);\n const className = 'avatar-upload' + (this.props.readOnly ? ' read-only' : '');\n return (\n
\n );\n }\n};\n","// A panel included into a list of contacts with an action text.\nimport React from 'react';\nimport { injectIntl } from 'react-intl';\n\nclass ContactAction extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.handleClick = this.handleClick.bind(this);\n }\n\n handleClick(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.onAction(this.props.action);\n }\n\n render() {\n const {formatMessage} = this.props.intl;\n return (\n
\n );\n }\n};\n\nexport default injectIntl(Contact);\n","// Context Menu: popup/dropdown menu.\nimport React from 'react';\nimport { injectIntl, defineMessages } from 'react-intl';\n\nimport { REM_SIZE } from '../config.js';\n\nconst messages = defineMessages({\n info: {\n id: 'menu_item_info',\n defaultMessage: 'Info',\n description: 'Show extended topic information'\n },\n clear_messages: {\n id: 'menu_item_clear_messages',\n defaultMessage: 'Clear messages',\n description: 'Delete all messages'\n },\n clear_for_all: {\n id: 'menu_item_clear_messages_for_all',\n defaultMessage: 'Clear for All',\n description: 'Delete all message(s) for all members'\n },\n delete: {\n id: 'menu_item_delete',\n defaultMessage: 'Delete',\n description: 'Delete selected messages'\n },\n delete_for_all: {\n id: 'menu_item_delete_for_all',\n defaultMessage: 'Delete for All',\n description: 'Delete selected message(s) for all members'\n },\n send_retry: {\n id: 'menu_item_send_retry',\n defaultMessage: 'Retry',\n description: 'Retry sending message'\n },\n mute: {\n id: 'menu_item_mute',\n defaultMessage: 'Mute',\n description: 'Turn off notifications'\n },\n unmute: {\n id: 'menu_item_unmute',\n defaultMessage: 'Unmute',\n description: 'Turn notifications on'\n },\n reply: {\n id: 'menu_item_reply',\n defaultMessage: 'Reply',\n description: 'Reply to message'\n },\n forward: {\n id: 'menu_item_forward',\n defaultMessage: 'Forward',\n description: 'Forward message'\n },\n topic_delete: {\n id: 'menu_item_delete_topic',\n defaultMessage: 'Delete',\n description: 'Delete entire topic'\n },\n topic_delete_warning: {\n id: 'topic_delete_warning',\n defaultMessage: 'Are you sure you want to delete this conversation? It cannot be undone.',\n description: 'Alert warning when deleting entire topic'\n },\n delete_messages_warning: {\n id: 'delete_messages_warning',\n defaultMessage: 'Are you sure you want to delete all messages for everyone? It cannot be undone.',\n description: 'Alert dialog warning when hard-deleting all messages.'\n },\n unblock: {\n id: 'menu_item_unblock',\n defaultMessage: 'Unblock',\n description: 'Unblock topic or user'\n },\n // Generic string suitable for either topic or user.\n block: {\n id: 'menu_item_block',\n defaultMessage: 'Block',\n description: 'Block topic or user'\n },\n topic_block_warning: {\n id: 'topic_block_warning',\n defaultMessage: 'Are you sure you want to block this conversation?',\n description: 'Alert warning when blocking a topic.'\n },\n member_delete: {\n id: 'menu_item_member_delete',\n defaultMessage: 'Remove',\n description: 'Remove user from topic'\n },\n archive: {\n id: 'menu_item_archive_topic',\n defaultMessage: 'Archive',\n description: 'Move topic from the list of active chats to archive'\n },\n unarchive: {\n id: 'menu_item_restore_topic',\n defaultMessage: 'Restore',\n description: 'Restore topic from archive'\n },\n edit_permissions: {\n id: 'menu_item_edit_permissions',\n defaultMessage: 'Edit permissions',\n description: 'Menu item [Edit permissions]'\n },\n clear_messages_warning: {\n id: 'clear_messages_warning',\n defaultMessage: 'Are you sure you want to clear all messages? It cannot be undone.',\n description: 'Alert dialog warning when deleting all messages.'\n },\n});\n\nclass ContextMenu extends React.Component {\n constructor(props) {\n super(props);\n\n this.selfRef = React.createRef();\n\n const {formatMessage} = props.intl;\n\n this.handlePageClick = this.handlePageClick.bind(this);\n this.handleEscapeKey = this.handleEscapeKey.bind(this);\n this.handleClick = this.handleClick.bind(this);\n\n // Preconfigured menu items.\n this.MenuItems = {\n 'topic_info': {\n id: 'topic_info',\n title: formatMessage(messages.info),\n handler: null\n },\n 'messages_clear': {\n id: 'messages_clear',\n title: formatMessage(messages.clear_messages),\n handler: (params, errorHandler) => {\n return props.onShowAlert(\n formatMessage(messages.clear_messages), // title\n formatMessage(messages.clear_messages_warning), // content\n (() => { this.deleteMessages(true, false, params, errorHandler); }), // onConfirm\n null, // \"OK\"\n true, // Show Reject button\n null // \"Cancel\"\n );\n }\n },\n 'messages_clear_hard': {\n id: 'messages_clear_hard',\n title: formatMessage(messages.clear_for_all),\n handler: (params, errorHandler) => {\n return props.onShowAlert(\n formatMessage(messages.clear_for_all), // title\n formatMessage(message.delete_messages_warning), // content\n (() => { return this.deleteMessages(true, true, params, errorHandler); }),\n null, // \"OK\"\n true, // Show Reject button\n null // \"Cancel\"\n );\n }\n },\n 'message_delete': {\n id: 'message_delete',\n title: formatMessage(messages.delete),\n handler: (params, errorHandler) => {\n return this.deleteMessages(false, false, params, errorHandler);\n }\n },\n 'message_delete_hard': {\n id: 'message_delete_hard',\n title: formatMessage(messages.delete_for_all),\n handler: (params, errorHandler) => {\n return this.deleteMessages(false, true, params, errorHandler);\n }\n },\n 'menu_item_send_retry': {\n id: 'menu_item_send_retry',\n title: formatMessage(messages.send_retry),\n handler: (params, errorHandler) => {\n return this.retryMessage(params, errorHandler);\n }\n },\n 'menu_item_reply': {\n id: 'menu_item_reply',\n title: formatMessage(messages.reply),\n handler: (params, errorHandler) => {\n return this.replyToMessage(params, errorHandler);\n }\n },\n 'menu_item_forward': {\n id: 'menu_item_forward',\n title: formatMessage(messages.forward),\n handler: () => {} /* the action is taken directly in tinode-web */\n },\n 'topic_unmute': {\n id: 'topic_unmute',\n title: formatMessage(messages.unmute),\n handler: this.topicPermissionSetter.bind(this, '+P')\n },\n 'topic_mute': {\n id: 'topic_mute',\n title: formatMessage(messages.mute),\n handler: this.topicPermissionSetter.bind(this, '-P')\n },\n 'topic_unblock': {\n id: 'topic_unblock',\n title: formatMessage(messages.unblock),\n handler: this.topicPermissionSetter.bind(this, '+JP')\n },\n 'topic_block': {\n id: 'topic_block',\n title: formatMessage(messages.block),\n handler: (params, errorHandler) => {\n return props.onShowAlert(\n formatMessage(messages.block), // title\n formatMessage(messages.topic_block_warning), // content\n (() => {\n return this.topicPermissionSetter('-JP', params, errorHandler).then((ctrl) => {\n this.props.onTopicRemoved(params.topicName);\n return ctrl;\n });\n }),\n null, // \"OK\"\n true, // Show Reject button\n null // \"Cancel\"\n );\n }\n },\n 'topic_delete': {\n id: 'topic_delete',\n title: formatMessage(messages.topic_delete),\n handler: (params, errorHandler) => {\n return props.onShowAlert(\n formatMessage(messages.topic_delete), // title\n formatMessage(messages.topic_delete_warning), // content\n (() => {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic) {\n console.warn(\"Topic not found: \", params.topicName);\n return;\n }\n return topic.delTopic(true).catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }),\n null, // \"OK\"\n true, // Show Reject button\n null // \"Cancel\"\n );\n }\n },\n 'topic_archive': {\n id: 'topic_archive',\n title: formatMessage(messages.archive),\n handler: (params, errorHandler) => {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic) {\n console.warn(\"Topic not found: \", params.topicName);\n return;\n }\n return topic.archive(true).catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }\n },\n 'topic_restore': {\n id: 'topic_restore',\n title: formatMessage(messages.unarchive),\n handler: (params, errorHandler) => {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic) {\n console.warn(\"Topic not found: \", params.topicName);\n return;\n }\n return topic.archive(false).catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }\n },\n // menu_item_edit_permissions is defined elsewhere.\n 'permissions': {\n id: 'permissions',\n title: formatMessage(messages.edit_permissions),\n handler: null\n },\n 'member_delete': {\n id: 'member_delete',\n title: formatMessage(messages.member_delete),\n handler: (params, errorHandler) => {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic || !params.user) {\n console.warn(\"Topic or user not found: '\" + params.topicName + \"', '\" + params.user + \"'\");\n return;\n }\n return topic.delSubscription(params.user).catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }\n },\n 'member_mute': {\n id: 'member_mute',\n title: formatMessage(messages.mute),\n handler: this.topicPermissionSetter.bind(this, '-P')\n },\n 'member_unmute': {\n id: 'member_unmute',\n title: formatMessage(messages.unmute),\n handler: this.topicPermissionSetter.bind(this, '+P')\n },\n 'member_block': {\n id: 'member_block',\n title: formatMessage(messages.block),\n handler: this.topicPermissionSetter.bind(this, '-JP')\n },\n 'member_unblock': {\n id: 'member_unblock',\n title: formatMessage(messages.unblock),\n handler: this.topicPermissionSetter.bind(this, '+JP')\n },\n };\n }\n\n componentDidMount() {\n document.addEventListener('mousedown', this.handlePageClick, false);\n document.addEventListener('keyup', this.handleEscapeKey, false);\n }\n\n componentWillUnmount() {\n document.removeEventListener('mousedown', this.handlePageClick, false);\n document.removeEventListener('keyup', this.handleEscapeKey, false);\n }\n\n handlePageClick(e) {\n if (this.selfRef.current.contains(e.target)) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n this.props.hide();\n }\n\n handleEscapeKey(e) {\n if (e.keyCode === 27) {\n this.props.hide();\n }\n }\n\n handleClick(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.hide();\n let item = this.props.items[e.currentTarget.dataset.id];\n if (typeof item == 'string') {\n item = this.MenuItems[item];\n }\n\n if (!item) {\n console.error(\"Invalid menu item ID\", e.currentTarget.dataset.id);\n } else {\n this.props.onAction(\n item.id,\n item.handler(this.props.params, this.props.onError),\n this.props.params);\n }\n }\n\n // Menu Actions\n\n deleteMessages(all, hard, params, errorHandler) {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic) {\n console.warn(\"Topic not found: \", params.topicName);\n return;\n }\n\n // We don't know if the message is still pending (e.g. attachment is being uploaded),\n // so try cancelling first. No harm if we can't cancel.\n // The message can be cancelled if transmission to the server has not\n // started yet or if the message send has failed.\n if (!all && topic.cancelSend(params.seq)) {\n return;\n }\n // Can't cancel. Delete instead.\n const promise = all ?\n topic.delMessagesAll(hard) :\n topic.delMessagesList([params.seq], hard);\n\n return promise.catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }\n\n // Retries sending failed message.\n retryMessage(params, errorHandler) {\n const topic = this.props.tinode.getTopic(params.topicName);\n // Remove the existing message entry.\n if (!topic || !topic.flushMessage(params.seq)) {\n return;\n }\n const msg = topic.createMessage(params.content, false);\n return topic.publishDraft(msg).catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }\n\n // Function is used by context menu to set permissions.\n topicPermissionSetter(mode, params, errorHandler) {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic) {\n console.warn(\"Topic not found\", params.topicName);\n return;\n }\n\n let result = topic.updateMode(params.user, mode);\n if (errorHandler) {\n result = result.catch((err) => {\n errorHandler(err.message, 'err');\n });\n }\n return result;\n }\n\n replyToMessage(params, errorHandler) {\n params.pickReply(params.seq, params.content, params.userFrom, params.userName, errorHandler);\n }\n\n render() {\n const menu = [];\n let count = 0;\n this.props.items.map((item) => {\n if (typeof item == 'string') {\n item = this.MenuItems[item];\n }\n if (item && item.title) {\n menu.push(\n item.title == '-' ?\n \n :\n
{item.title}
\n );\n }\n count++;\n });\n\n // Ensure that menu is inside the app-container.\n const hSize = 12 * REM_SIZE;\n const vSize = REM_SIZE * (0.7 + menu.length * 2.5);\n const left = (this.props.bounds.right - this.props.clickAt.x < hSize) ?\n (this.props.clickAt.x - this.props.bounds.left - hSize) :\n (this.props.clickAt.x - this.props.bounds.left);\n const top = (this.props.bounds.bottom - this.props.clickAt.y < vSize) ?\n (this.props.clickAt.y - this.props.bounds.top - vSize) :\n (this.props.clickAt.y - this.props.bounds.top);\n\n const position = {\n left: left + 'px',\n top: top + 'px'\n };\n\n return (\n
\n {menu}\n
\n );\n }\n}\n\nexport default injectIntl(ContextMenu);\n","// Image zoom and crop widget.\n\nimport React from 'react';\n\nconst DEFAULT_MAX_ZOOM = 2.5;\n\nexport default class Cropper extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n // Coordinates of the top left corner of the image in container coordinates.\n panX: 0,\n panY: 0,\n // Origin of the zoom in image coordinates.\n originX: 0,\n originY: 0,\n // Zoom scale.\n zoom: 1,\n // Zoom min and max.\n minZoom: 0,\n maxZoom: DEFAULT_MAX_ZOOM,\n };\n\n // References to DOM elements for hooking up events and getting screen dimensions.\n // The transparent element which captures mouse moves (moves with the image).\n this.overlay = React.createRef();\n // The image cutout window or view port (static).\n this.cutout = React.createRef();\n // Scaled and translated image preview.\n this.preview = React.createRef();\n // The main container (static).\n this.boundingBox = React.createRef();\n\n // The original image width and height before any scaling.\n this.imageWidth = 0;\n this.imageHeight = 0;\n\n // Mouse position when dragging.\n this.mouseX = 0\n this.mouseY = 0;\n // Length of the previous mouse move when dragging.\n this.prevDistance = 0;\n\n // Bounding rectangles of static elements.\n this.cutoutRect = {};\n this.bBoxRect = {};\n // Center of the bounding box.\n this.originX = 0;\n this.originY = 0;\n\n this.initScaling = this.initScaling.bind(this);\n this.onZoom = this.onZoom.bind(this);\n this.handleZoom = this.handleZoom.bind(this);\n this.mouseDown = this.mouseDown.bind(this);\n this.mouseUp = this.mouseUp.bind(this);\n this.mouseMove = this.mouseMove.bind(this);\n this.mouseTouch = this.mouseTouch.bind(this);\n this.positionAll = this.positionAll.bind(this);\n this.translate = this.translate.bind(this);\n }\n\n componentDidMount() {\n this.overlay.current.addEventListener('mousedown', this.mouseDown, { passive: true });\n this.overlay.current.addEventListener('touchstart', this.mouseDown, { passive: true });\n\n // The rectangle position is in viewport coordinates.\n this.bBoxRect = this.boundingBox.current.getBoundingClientRect();\n // Center of the bounding box in container coordinates.\n this.originX = this.bBoxRect.width / 2;\n this.originY = this.bBoxRect.height / 2;\n\n // The rectangle position is in viewport coordinates.\n this.cutoutRect = this.cutout.current.getBoundingClientRect();\n }\n\n componentWillUnmount() {\n this.overlay.current.removeEventListener('mousedown', this.mouseDown);\n this.overlay.current.removeEventListener('touchstart', this.mouseDown);\n }\n\n // Position all elements.\n positionAll(panX, panY, zoom) {\n // Zoom origin in image preview coordinates.\n this.setState({\n panX: panX,\n panY: panY,\n zoom: zoom,\n originX: this.originX - panX,\n originY: this.originY - panY,\n });\n\n // Pass cut out coordinates to caller.\n const left = (this.originX - panX) * zoom - this.originX;\n const top = (this.originY - panY) * zoom - this.originY;\n this.props.onChange(\n (left + this.cutoutRect.left - this.bBoxRect.left) / zoom,\n (top + this.cutoutRect.top - this.bBoxRect.top) / zoom,\n this.cutoutRect.width / zoom,\n this.cutoutRect.height / zoom,\n zoom);\n }\n\n // Check if new location is within the limits.\n static checkBound(currPan, img, cutout, delta) {\n let nextDiff = Math.min(0, cutout[0] - img[0] - delta, img[1] - cutout[1] + delta);\n if (nextDiff == 0) {\n // Cutout is completely within the image.\n currPan += delta;\n } else if (Math.min(0, cutout[0] - img[0], img[1] - cutout[1]) < nextDiff) {\n // Cutout is outside of the range but closer to the bound.\n currPan += delta;\n }\n return currPan;\n }\n\n initScaling() {\n // Initialize components.\n const imgRect = this.preview.current.getBoundingClientRect();\n\n this.imageWidth = imgRect.width;\n this.imageHeight = imgRect.height;\n\n // Set zoom slider's min and max values. Make sure the scaled image cannot be smaller than the cutout.\n const minZoom = Math.max(this.cutoutRect.width / imgRect.width, this.cutoutRect.height / imgRect.height);\n this.setState({\n minZoom: minZoom,\n maxZoom: Math.max(DEFAULT_MAX_ZOOM, minZoom + 1)\n });\n\n // Initial zoom level fills the bounding box at the smallest image dimension and overflows the largest, i.e. \"fill\" not \"fit\".\n const zoom = Math.max(this.bBoxRect.width / imgRect.width, this.bBoxRect.height / imgRect.height);\n // Converting from viewport coordinates to container, then panning.\n const panX = this.cutoutRect.left - this.bBoxRect.left -\n (imgRect.width - this.cutoutRect.width) / 2;\n const panY = this.cutoutRect.top - this.bBoxRect.top -\n (imgRect.height - this.cutoutRect.height) / 2;\n\n this.positionAll(panX, panY, zoom);\n }\n\n onZoom(e) {\n this.handleZoom(e.target.value);\n }\n\n handleZoom(zoom) {\n let panX = this.state.panX;\n let panY = this.state.panY;\n\n // Ensure that the image at the new zoom is not outside of the cutout boundaries.\n // Calculate image coordinates at the new zoom.\n const imgLeft = this.originX - (this.originX - panX) * zoom;\n const imgRight = imgLeft + this.imageWidth * zoom;\n // Cutout in the same coordinates as the image.\n const coLeft = this.cutoutRect.left - this.bBoxRect.left;\n const coRight = coLeft + this.cutoutRect.width;\n if (coLeft < imgLeft) {\n panX -= imgLeft - coLeft;\n } else if (coRight > imgRight) {\n panX += coRight - imgRight;\n }\n const imgTop = this.originY - (this.originY - panY) * zoom;\n const imgBottom = imgTop + this.imageHeight * zoom;\n const coTop = this.cutoutRect.top - this.bBoxRect.top;\n const coBottom = coTop + this.cutoutRect.height;\n if (coTop < imgTop) {\n panY -= imgTop - coTop;\n } else if (coBottom > imgBottom) {\n panY += coBottom - imgBottom;\n }\n\n this.positionAll(panX, panY, zoom);\n }\n\n mouseDown(e) {\n if (e.touches) {\n this.mouseX = e.touches[0].pageX;\n this.mouseY = e.touches[0].pageY;\n } else {\n this.mouseX = e.pageX;\n this.mouseY = e.pageY;\n }\n\n window.addEventListener('mousemove', this.mouseMove, { passive: false });\n window.addEventListener('touchmove', this.mouseTouch, { passive: false });\n window.addEventListener('mouseup', this.mouseUp, { passive: true });\n window.addEventListener('touchend', this.mouseUp, { passive: true });\n // Disable text selection in the entire document.\n document.body.style['userSelect'] = 'none';\n }\n\n // Perform image panning.\n translate(pageX, pageY) {\n const dX = pageX - this.mouseX;\n const dY = pageY - this.mouseY;\n\n this.mouseX = pageX;\n this.mouseY = pageY;\n\n // Make sure the image is within the cutout window.\n const imgRect = this.preview.current.getBoundingClientRect();\n\n // Check if the new position is within the boundaries, and if not if it's closer to them.\n let panX = Cropper.checkBound(this.state.panX, [imgRect.left, imgRect.right],\n [this.cutoutRect.left, this.cutoutRect.right], dX);\n let panY = Cropper.checkBound(this.state.panY, [imgRect.top, imgRect.bottom],\n [this.cutoutRect.top, this.cutoutRect.bottom], dY);\n\n this.positionAll(panX, panY, this.state.zoom);\n }\n\n // Image panning.\n mouseMove(e) {\n e.preventDefault();\n this.translate(e.pageX, e.pageY);\n }\n\n mouseTouch(e) {\n e.preventDefault();\n\n if (e.touches.length == 1) {\n this.translate(e.touches[0].pageX, e.touches[0].pageY);\n return;\n }\n\n // Image zooming by pinching.\n const [touch0, touch1] = e.touches;\n const distance = Math.sqrt((touch0.pageX - touch1.pageX) * (touch0.pageX - touch1.pageX) +\n (touch0.pageY - touch1.pageY) * (touch0.pageY - touch1.pageY));\n\n if (!this.prevDistance) {\n this.prevDistance = distance / this.state.zoom;\n }\n\n let scale = (distance / this.prevDistance);\n this.handleZoom(Math.max(this.minZoom, Math.min(this.maxZoom, scale)));\n }\n\n mouseUp(e) {\n window.removeEventListener('mousemove', this.mouseMove);\n window.removeEventListener('touchmove', this.mouseTouch);\n window.removeEventListener('mouseup', this.mouseUp);\n window.removeEventListener('touchend', this.mouseUp);\n // Re-enable text selection.\n document.body.style['userSelect'] = '';\n\n this.positionAll(this.state.panX, this.state.panY, this.state.zoom);\n }\n\n render() {\n // transform3d: position and scale.\n const t3d = `translate3d(${this.state.panX}px, ${this.state.panY}px, 0) scale(${this.state.zoom})`;\n // transformOrigin: zoom origin.\n const orig = `${this.state.originX}px ${this.state.originY}px`;\n\n // Overlay position and size are exactly equal to the position and size of the transformed image\n // except it uses different coordinates.\n const overlay = {\n top: `${this.originY - this.state.originY * this.state.zoom}px`,\n left: `${this.originX - this.state.originX * this.state.zoom}px`,\n width: `${this.imageWidth * this.state.zoom}px`,\n height: `${this.imageHeight * this.state.zoom}px`\n };\n return (\n
\n
\n \n \n \n
\n
\n \n
\n
\n );\n }\n}\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport SendMessage from '../widgets/send-message.jsx';\n\nimport { bytesToHumanSize, shortenFileName } from '../lib/strformat.js';\n\n// Get material icon name from mime type.\nfunction iconFromMime(mime) {\n // If more icons become available in material icons, add them to this mime-to-icon mapping.\n const mimeToIcon = {default: 'insert_drive_file', image: 'image', text: 'description', video: 'theaters'};\n\n return mimeToIcon[mime] || mimeToIcon[(mime || '').split('/')[0]] || mimeToIcon['default'];\n}\n\nexport default class DocPreview extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.handleSendDoc = this.handleSendDoc.bind(this);\n }\n\n handleSendDoc(caption) {\n this.props.onClose();\n this.props.onSendMessage(this.props.content.file);\n }\n\n render() {\n if (!this.props.content) {\n return null;\n }\n return (\n
\n );\n }\n}\n","// GroupMembers: control for managing a list of group members.\nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\n\nimport ChipInput from './chip-input.jsx';\nimport ContactList from './contact-list.jsx';\n\nconst messages = defineMessages({\n no_contacts: {\n id: 'no_contacts',\n defaultMessage: 'You have no contacts :-(',\n description: 'Shown in ContactsView when the user has no contacts'\n },\n contacts_not_found_short: {\n id: 'contacts_not_found_short',\n defaultMessage: \"No contacts match ''{query}''\",\n description: 'Shown in ContactsView when search returned no results'\n }\n});\n\nclass GroupManager extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n // Array of topic members\n members: props.members,\n index: GroupManager.indexMembers(props.members),\n staticMembers: GroupManager.staticMembers(props.members, props.keepInitialMembers, props.requiredMember),\n contactFilter: '',\n noContactsMessage: props.intl.formatMessage(messages.no_contacts),\n selectedContacts: GroupManager.selectedContacts(props.members)\n };\n\n this.handleContactSelected = this.handleContactSelected.bind(this);\n this.handleMemberRemoved = this.handleMemberRemoved.bind(this);\n this.handleContactFilter = this.handleContactFilter.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n }\n\n static indexMembers(members) {\n let index = {};\n members.map((m) => {\n index[m.user] = {delta: 0, present: true}; // Delta: 0 unchanged, +1 added, -1 removed\n });\n return index;\n }\n\n static staticMembers(members, keepInitial, requiredMember) {\n let stat = [];\n members.map((m) => {\n if (keepInitial || m.user == requiredMember) {\n stat.push(m.user);\n }\n });\n return stat;\n }\n\n static selectedContacts(members) {\n let sel = [];\n members.map((m) => {\n sel.push(m.user);\n });\n return sel;\n }\n\n handleContactSelected(userId, index) {\n let status = this.state.index[userId];\n if (status) {\n if (status.present) {\n // Prevent duplicate members\n return;\n }\n status.delta += 1;\n status.present = true;\n } else {\n status = {delta: 1, present: true};\n }\n\n let m = this.state.members.slice();\n m.push(this.props.contacts[index]);\n\n const sel = GroupManager.selectedContacts(m);\n\n const i = this.state.index;\n i[userId] = status;\n\n this.setState({members: m, index: i, selectedContacts: sel});\n }\n\n handleMemberRemoved(userId, index) {\n const status = this.state.index[userId];\n if (!status || !status.present) {\n return;\n }\n status.present = false;\n status.delta -= 1;\n\n let m = this.state.members.slice();\n m.splice(index, 1);\n\n const sel = GroupManager.selectedContacts(m);\n\n const i = this.state.index;\n i[userId] = status;\n\n this.setState({members: m, index: i, selectedContacts: sel});\n }\n\n handleContactFilter(val) {\n const {formatMessage} = this.props.intl;\n const msg = !val ?\n formatMessage(messages.no_contacts) :\n formatMessage(messages.contacts_not_found_short, {query: val});\n\n this.setState({contactFilter: val, noContactsMessage: msg});\n }\n\n static doContactFiltering(filter, values) {\n if (filter) {\n for (let i=0; i= 0) {\n return true;\n }\n }\n return false;\n }\n return true;\n }\n\n handleSubmit() {\n var instance = this;\n var members = [];\n var added = [];\n var removed = [];\n\n var keys = Object.keys(this.state.index);\n keys.map(function(k) {\n if (instance.state.index[k].present) {\n members.push(k);\n }\n\n if (instance.state.index[k].delta > 0) {\n added.push(k);\n } else if (instance.state.index[k].delta < 0) {\n removed.push(k);\n }\n });\n this.props.onSubmit(members, added, removed);\n }\n\n handleCancel() {\n this.props.onCancel();\n }\n\n render() {\n const {formatMessage} = this.props.intl;\n return (\n
\n
\n \n
\n
\n \n
\n
\n \n
\n \n
\n \n \n
\n
\n );\n }\n};\n\nexport default injectIntl(GroupManager);\n","// GroupSubs: a list of group subscribers currently online.\n// Show in the topic title bar\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport { MAX_ONLINE_IN_TOPIC } from '../config.js'\n\nimport LetterTile from './letter-tile.jsx';\nimport { makeImageUrl } from '../lib/blob-helpers.js';\n\nexport default class GroupSubs extends React.Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n const usersOnline = [];\n const totalCount = (this.props.subscribers || []).length;\n const countToShow = Math.min(MAX_ONLINE_IN_TOPIC, totalCount);\n\n (this.props.subscribers || []).some((sub) => {\n usersOnline.push(\n
: null);\n }\n}\n","// The X menu to be displayed in title bars.\nimport React from 'react';\n\nexport default class MenuCancel extends React.PureComponent {\n render() {\n return (\n {e.preventDefault(); this.props.onCancel();}}>\n close\n \n );\n }\n}\n","import React from 'react';\n\nexport default class MenuContacts extends React.PureComponent {\n render() {\n return (\n
\n );\n }\n};\n","// Message bubble with non-payload content, such as an indicator of deleted content or a date stamp.\n\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nexport default class MetaMessage extends React.PureComponent {\n constructor(props) {\n super(props);\n }\n\n render() {\n let content = null;\n let bubbleClass = 'bubble';\n if (this.props.deleted) {\n // Message represents a range of deleted messages.\n content = <>block\n \n >\n bubbleClass += ' deleted';\n } else if (this.props.date) {\n // A date badge.\n content = <>{this.props.date}>\n bubbleClass += ' date';\n }\n\n if (!content) {\n return <>{null}>\n }\n\n return (\n
\n );\n }\n}\n","import { registerVersion } from '@firebase/app';\nexport * from '@firebase/app';\n\nvar name = \"firebase\";\nvar version = \"9.6.11\";\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nregisterVersion(name, version, 'app');\n//# sourceMappingURL=index.esm.js.map\n","export * from '@firebase/messaging';\n//# sourceMappingURL=index.esm.js.map\n","(function (name, definition) {\r\n if (typeof define === 'function' && define.amd) { // RequireJS / AMD\r\n define(definition);\r\n } else if (typeof module !== 'undefined' && module.exports) { // CommonJS / Node.js\r\n module.exports = definition();\r\n } else { // Direct include\r\n window.ysFixWebmDuration = definition();\r\n }\r\n})('fix-webm-duration', function () {\r\n /*\r\n * This is the list of possible WEBM file sections by their IDs.\r\n * Possible types: Container, Binary, Uint, Int, String, Float, Date\r\n */\r\n var sections = {\r\n 0xa45dfa3: { name: 'EBML', type: 'Container' },\r\n 0x286: { name: 'EBMLVersion', type: 'Uint' },\r\n 0x2f7: { name: 'EBMLReadVersion', type: 'Uint' },\r\n 0x2f2: { name: 'EBMLMaxIDLength', type: 'Uint' },\r\n 0x2f3: { name: 'EBMLMaxSizeLength', type: 'Uint' },\r\n 0x282: { name: 'DocType', type: 'String' },\r\n 0x287: { name: 'DocTypeVersion', type: 'Uint' },\r\n 0x285: { name: 'DocTypeReadVersion', type: 'Uint' },\r\n 0x6c: { name: 'Void', type: 'Binary' },\r\n 0x3f: { name: 'CRC-32', type: 'Binary' },\r\n 0xb538667: { name: 'SignatureSlot', type: 'Container' },\r\n 0x3e8a: { name: 'SignatureAlgo', type: 'Uint' },\r\n 0x3e9a: { name: 'SignatureHash', type: 'Uint' },\r\n 0x3ea5: { name: 'SignaturePublicKey', type: 'Binary' },\r\n 0x3eb5: { name: 'Signature', type: 'Binary' },\r\n 0x3e5b: { name: 'SignatureElements', type: 'Container' },\r\n 0x3e7b: { name: 'SignatureElementList', type: 'Container' },\r\n 0x2532: { name: 'SignedElement', type: 'Binary' },\r\n 0x8538067: { name: 'Segment', type: 'Container' },\r\n 0x14d9b74: { name: 'SeekHead', type: 'Container' },\r\n 0xdbb: { name: 'Seek', type: 'Container' },\r\n 0x13ab: { name: 'SeekID', type: 'Binary' },\r\n 0x13ac: { name: 'SeekPosition', type: 'Uint' },\r\n 0x549a966: { name: 'Info', type: 'Container' },\r\n 0x33a4: { name: 'SegmentUID', type: 'Binary' },\r\n 0x3384: { name: 'SegmentFilename', type: 'String' },\r\n 0x1cb923: { name: 'PrevUID', type: 'Binary' },\r\n 0x1c83ab: { name: 'PrevFilename', type: 'String' },\r\n 0x1eb923: { name: 'NextUID', type: 'Binary' },\r\n 0x1e83bb: { name: 'NextFilename', type: 'String' },\r\n 0x444: { name: 'SegmentFamily', type: 'Binary' },\r\n 0x2924: { name: 'ChapterTranslate', type: 'Container' },\r\n 0x29fc: { name: 'ChapterTranslateEditionUID', type: 'Uint' },\r\n 0x29bf: { name: 'ChapterTranslateCodec', type: 'Uint' },\r\n 0x29a5: { name: 'ChapterTranslateID', type: 'Binary' },\r\n 0xad7b1: { name: 'TimecodeScale', type: 'Uint' },\r\n 0x489: { name: 'Duration', type: 'Float' },\r\n 0x461: { name: 'DateUTC', type: 'Date' },\r\n 0x3ba9: { name: 'Title', type: 'String' },\r\n 0xd80: { name: 'MuxingApp', type: 'String' },\r\n 0x1741: { name: 'WritingApp', type: 'String' },\r\n // 0xf43b675: { name: 'Cluster', type: 'Container' },\r\n 0x67: { name: 'Timecode', type: 'Uint' },\r\n 0x1854: { name: 'SilentTracks', type: 'Container' },\r\n 0x18d7: { name: 'SilentTrackNumber', type: 'Uint' },\r\n 0x27: { name: 'Position', type: 'Uint' },\r\n 0x2b: { name: 'PrevSize', type: 'Uint' },\r\n 0x23: { name: 'SimpleBlock', type: 'Binary' },\r\n 0x20: { name: 'BlockGroup', type: 'Container' },\r\n 0x21: { name: 'Block', type: 'Binary' },\r\n 0x22: { name: 'BlockVirtual', type: 'Binary' },\r\n 0x35a1: { name: 'BlockAdditions', type: 'Container' },\r\n 0x26: { name: 'BlockMore', type: 'Container' },\r\n 0x6e: { name: 'BlockAddID', type: 'Uint' },\r\n 0x25: { name: 'BlockAdditional', type: 'Binary' },\r\n 0x1b: { name: 'BlockDuration', type: 'Uint' },\r\n 0x7a: { name: 'ReferencePriority', type: 'Uint' },\r\n 0x7b: { name: 'ReferenceBlock', type: 'Int' },\r\n 0x7d: { name: 'ReferenceVirtual', type: 'Int' },\r\n 0x24: { name: 'CodecState', type: 'Binary' },\r\n 0x35a2: { name: 'DiscardPadding', type: 'Int' },\r\n 0xe: { name: 'Slices', type: 'Container' },\r\n 0x68: { name: 'TimeSlice', type: 'Container' },\r\n 0x4c: { name: 'LaceNumber', type: 'Uint' },\r\n 0x4d: { name: 'FrameNumber', type: 'Uint' },\r\n 0x4b: { name: 'BlockAdditionID', type: 'Uint' },\r\n 0x4e: { name: 'Delay', type: 'Uint' },\r\n 0x4f: { name: 'SliceDuration', type: 'Uint' },\r\n 0x48: { name: 'ReferenceFrame', type: 'Container' },\r\n 0x49: { name: 'ReferenceOffset', type: 'Uint' },\r\n 0x4a: { name: 'ReferenceTimeCode', type: 'Uint' },\r\n 0x2f: { name: 'EncryptedBlock', type: 'Binary' },\r\n 0x654ae6b: { name: 'Tracks', type: 'Container' },\r\n 0x2e: { name: 'TrackEntry', type: 'Container' },\r\n 0x57: { name: 'TrackNumber', type: 'Uint' },\r\n 0x33c5: { name: 'TrackUID', type: 'Uint' },\r\n 0x3: { name: 'TrackType', type: 'Uint' },\r\n 0x39: { name: 'FlagEnabled', type: 'Uint' },\r\n 0x8: { name: 'FlagDefault', type: 'Uint' },\r\n 0x15aa: { name: 'FlagForced', type: 'Uint' },\r\n 0x1c: { name: 'FlagLacing', type: 'Uint' },\r\n 0x2de7: { name: 'MinCache', type: 'Uint' },\r\n 0x2df8: { name: 'MaxCache', type: 'Uint' },\r\n 0x3e383: { name: 'DefaultDuration', type: 'Uint' },\r\n 0x34e7a: { name: 'DefaultDecodedFieldDuration', type: 'Uint' },\r\n 0x3314f: { name: 'TrackTimecodeScale', type: 'Float' },\r\n 0x137f: { name: 'TrackOffset', type: 'Int' },\r\n 0x15ee: { name: 'MaxBlockAdditionID', type: 'Uint' },\r\n 0x136e: { name: 'Name', type: 'String' },\r\n 0x2b59c: { name: 'Language', type: 'String' },\r\n 0x6: { name: 'CodecID', type: 'String' },\r\n 0x23a2: { name: 'CodecPrivate', type: 'Binary' },\r\n 0x58688: { name: 'CodecName', type: 'String' },\r\n 0x3446: { name: 'AttachmentLink', type: 'Uint' },\r\n 0x1a9697: { name: 'CodecSettings', type: 'String' },\r\n 0x1b4040: { name: 'CodecInfoURL', type: 'String' },\r\n 0x6b240: { name: 'CodecDownloadURL', type: 'String' },\r\n 0x2a: { name: 'CodecDecodeAll', type: 'Uint' },\r\n 0x2fab: { name: 'TrackOverlay', type: 'Uint' },\r\n 0x16aa: { name: 'CodecDelay', type: 'Uint' },\r\n 0x16bb: { name: 'SeekPreRoll', type: 'Uint' },\r\n 0x2624: { name: 'TrackTranslate', type: 'Container' },\r\n 0x26fc: { name: 'TrackTranslateEditionUID', type: 'Uint' },\r\n 0x26bf: { name: 'TrackTranslateCodec', type: 'Uint' },\r\n 0x26a5: { name: 'TrackTranslateTrackID', type: 'Binary' },\r\n 0x60: { name: 'Video', type: 'Container' },\r\n 0x1a: { name: 'FlagInterlaced', type: 'Uint' },\r\n 0x13b8: { name: 'StereoMode', type: 'Uint' },\r\n 0x13c0: { name: 'AlphaMode', type: 'Uint' },\r\n 0x13b9: { name: 'OldStereoMode', type: 'Uint' },\r\n 0x30: { name: 'PixelWidth', type: 'Uint' },\r\n 0x3a: { name: 'PixelHeight', type: 'Uint' },\r\n 0x14aa: { name: 'PixelCropBottom', type: 'Uint' },\r\n 0x14bb: { name: 'PixelCropTop', type: 'Uint' },\r\n 0x14cc: { name: 'PixelCropLeft', type: 'Uint' },\r\n 0x14dd: { name: 'PixelCropRight', type: 'Uint' },\r\n 0x14b0: { name: 'DisplayWidth', type: 'Uint' },\r\n 0x14ba: { name: 'DisplayHeight', type: 'Uint' },\r\n 0x14b2: { name: 'DisplayUnit', type: 'Uint' },\r\n 0x14b3: { name: 'AspectRatioType', type: 'Uint' },\r\n 0xeb524: { name: 'ColourSpace', type: 'Binary' },\r\n 0xfb523: { name: 'GammaValue', type: 'Float' },\r\n 0x383e3: { name: 'FrameRate', type: 'Float' },\r\n 0x61: { name: 'Audio', type: 'Container' },\r\n 0x35: { name: 'SamplingFrequency', type: 'Float' },\r\n 0x38b5: { name: 'OutputSamplingFrequency', type: 'Float' },\r\n 0x1f: { name: 'Channels', type: 'Uint' },\r\n 0x3d7b: { name: 'ChannelPositions', type: 'Binary' },\r\n 0x2264: { name: 'BitDepth', type: 'Uint' },\r\n 0x62: { name: 'TrackOperation', type: 'Container' },\r\n 0x63: { name: 'TrackCombinePlanes', type: 'Container' },\r\n 0x64: { name: 'TrackPlane', type: 'Container' },\r\n 0x65: { name: 'TrackPlaneUID', type: 'Uint' },\r\n 0x66: { name: 'TrackPlaneType', type: 'Uint' },\r\n 0x69: { name: 'TrackJoinBlocks', type: 'Container' },\r\n 0x6d: { name: 'TrackJoinUID', type: 'Uint' },\r\n 0x40: { name: 'TrickTrackUID', type: 'Uint' },\r\n 0x41: { name: 'TrickTrackSegmentUID', type: 'Binary' },\r\n 0x46: { name: 'TrickTrackFlag', type: 'Uint' },\r\n 0x47: { name: 'TrickMasterTrackUID', type: 'Uint' },\r\n 0x44: { name: 'TrickMasterTrackSegmentUID', type: 'Binary' },\r\n 0x2d80: { name: 'ContentEncodings', type: 'Container' },\r\n 0x2240: { name: 'ContentEncoding', type: 'Container' },\r\n 0x1031: { name: 'ContentEncodingOrder', type: 'Uint' },\r\n 0x1032: { name: 'ContentEncodingScope', type: 'Uint' },\r\n 0x1033: { name: 'ContentEncodingType', type: 'Uint' },\r\n 0x1034: { name: 'ContentCompression', type: 'Container' },\r\n 0x254: { name: 'ContentCompAlgo', type: 'Uint' },\r\n 0x255: { name: 'ContentCompSettings', type: 'Binary' },\r\n 0x1035: { name: 'ContentEncryption', type: 'Container' },\r\n 0x7e1: { name: 'ContentEncAlgo', type: 'Uint' },\r\n 0x7e2: { name: 'ContentEncKeyID', type: 'Binary' },\r\n 0x7e3: { name: 'ContentSignature', type: 'Binary' },\r\n 0x7e4: { name: 'ContentSigKeyID', type: 'Binary' },\r\n 0x7e5: { name: 'ContentSigAlgo', type: 'Uint' },\r\n 0x7e6: { name: 'ContentSigHashAlgo', type: 'Uint' },\r\n 0xc53bb6b: { name: 'Cues', type: 'Container' },\r\n 0x3b: { name: 'CuePoint', type: 'Container' },\r\n 0x33: { name: 'CueTime', type: 'Uint' },\r\n 0x37: { name: 'CueTrackPositions', type: 'Container' },\r\n 0x77: { name: 'CueTrack', type: 'Uint' },\r\n 0x71: { name: 'CueClusterPosition', type: 'Uint' },\r\n 0x70: { name: 'CueRelativePosition', type: 'Uint' },\r\n 0x32: { name: 'CueDuration', type: 'Uint' },\r\n 0x1378: { name: 'CueBlockNumber', type: 'Uint' },\r\n 0x6a: { name: 'CueCodecState', type: 'Uint' },\r\n 0x5b: { name: 'CueReference', type: 'Container' },\r\n 0x16: { name: 'CueRefTime', type: 'Uint' },\r\n 0x17: { name: 'CueRefCluster', type: 'Uint' },\r\n 0x135f: { name: 'CueRefNumber', type: 'Uint' },\r\n 0x6b: { name: 'CueRefCodecState', type: 'Uint' },\r\n 0x941a469: { name: 'Attachments', type: 'Container' },\r\n 0x21a7: { name: 'AttachedFile', type: 'Container' },\r\n 0x67e: { name: 'FileDescription', type: 'String' },\r\n 0x66e: { name: 'FileName', type: 'String' },\r\n 0x660: { name: 'FileMimeType', type: 'String' },\r\n 0x65c: { name: 'FileData', type: 'Binary' },\r\n 0x6ae: { name: 'FileUID', type: 'Uint' },\r\n 0x675: { name: 'FileReferral', type: 'Binary' },\r\n 0x661: { name: 'FileUsedStartTime', type: 'Uint' },\r\n 0x662: { name: 'FileUsedEndTime', type: 'Uint' },\r\n 0x43a770: { name: 'Chapters', type: 'Container' },\r\n 0x5b9: { name: 'EditionEntry', type: 'Container' },\r\n 0x5bc: { name: 'EditionUID', type: 'Uint' },\r\n 0x5bd: { name: 'EditionFlagHidden', type: 'Uint' },\r\n 0x5db: { name: 'EditionFlagDefault', type: 'Uint' },\r\n 0x5dd: { name: 'EditionFlagOrdered', type: 'Uint' },\r\n 0x36: { name: 'ChapterAtom', type: 'Container' },\r\n 0x33c4: { name: 'ChapterUID', type: 'Uint' },\r\n 0x1654: { name: 'ChapterStringUID', type: 'String' },\r\n 0x11: { name: 'ChapterTimeStart', type: 'Uint' },\r\n 0x12: { name: 'ChapterTimeEnd', type: 'Uint' },\r\n 0x18: { name: 'ChapterFlagHidden', type: 'Uint' },\r\n 0x598: { name: 'ChapterFlagEnabled', type: 'Uint' },\r\n 0x2e67: { name: 'ChapterSegmentUID', type: 'Binary' },\r\n 0x2ebc: { name: 'ChapterSegmentEditionUID', type: 'Uint' },\r\n 0x23c3: { name: 'ChapterPhysicalEquiv', type: 'Uint' },\r\n 0xf: { name: 'ChapterTrack', type: 'Container' },\r\n 0x9: { name: 'ChapterTrackNumber', type: 'Uint' },\r\n 0x0: { name: 'ChapterDisplay', type: 'Container' },\r\n 0x5: { name: 'ChapString', type: 'String' },\r\n 0x37c: { name: 'ChapLanguage', type: 'String' },\r\n 0x37e: { name: 'ChapCountry', type: 'String' },\r\n 0x2944: { name: 'ChapProcess', type: 'Container' },\r\n 0x2955: { name: 'ChapProcessCodecID', type: 'Uint' },\r\n 0x50d: { name: 'ChapProcessPrivate', type: 'Binary' },\r\n 0x2911: { name: 'ChapProcessCommand', type: 'Container' },\r\n 0x2922: { name: 'ChapProcessTime', type: 'Uint' },\r\n 0x2933: { name: 'ChapProcessData', type: 'Binary' },\r\n 0x254c367: { name: 'Tags', type: 'Container' },\r\n 0x3373: { name: 'Tag', type: 'Container' },\r\n 0x23c0: { name: 'Targets', type: 'Container' },\r\n 0x28ca: { name: 'TargetTypeValue', type: 'Uint' },\r\n 0x23ca: { name: 'TargetType', type: 'String' },\r\n 0x23c5: { name: 'TagTrackUID', type: 'Uint' },\r\n 0x23c9: { name: 'TagEditionUID', type: 'Uint' },\r\n 0x23c4: { name: 'TagChapterUID', type: 'Uint' },\r\n 0x23c6: { name: 'TagAttachmentUID', type: 'Uint' },\r\n 0x27c8: { name: 'SimpleTag', type: 'Container' },\r\n 0x5a3: { name: 'TagName', type: 'String' },\r\n 0x47a: { name: 'TagLanguage', type: 'String' },\r\n 0x484: { name: 'TagDefault', type: 'Uint' },\r\n 0x487: { name: 'TagString', type: 'String' },\r\n 0x485: { name: 'TagBinary', type: 'Binary' }\r\n };\r\n\r\n function doInherit(newClass, baseClass) {\r\n newClass.prototype = Object.create(baseClass.prototype);\r\n newClass.prototype.constructor = newClass;\r\n }\r\n\r\n function WebmBase(name, type) {\r\n this.name = name || 'Unknown';\r\n this.type = type || 'Unknown';\r\n }\r\n WebmBase.prototype.updateBySource = function() { };\r\n WebmBase.prototype.setSource = function(source) {\r\n this.source = source;\r\n this.updateBySource();\r\n };\r\n WebmBase.prototype.updateByData = function() { };\r\n WebmBase.prototype.setData = function(data) {\r\n this.data = data;\r\n this.updateByData();\r\n };\r\n\r\n function WebmUint(name, type) {\r\n WebmBase.call(this, name, type || 'Uint');\r\n }\r\n doInherit(WebmUint, WebmBase);\r\n function padHex(hex) {\r\n return hex.length % 2 === 1 ? '0' + hex : hex;\r\n }\r\n WebmUint.prototype.updateBySource = function() {\r\n // use hex representation of a number instead of number value\r\n this.data = '';\r\n for (var i = 0; i < this.source.length; i++) {\r\n var hex = this.source[i].toString(16);\r\n this.data += padHex(hex);\r\n }\r\n };\r\n WebmUint.prototype.updateByData = function() {\r\n var length = this.data.length / 2;\r\n this.source = new Uint8Array(length);\r\n for (var i = 0; i < length; i++) {\r\n var hex = this.data.substr(i * 2, 2);\r\n this.source[i] = parseInt(hex, 16);\r\n }\r\n };\r\n WebmUint.prototype.getValue = function() {\r\n return parseInt(this.data, 16);\r\n };\r\n WebmUint.prototype.setValue = function(value) {\r\n this.setData(padHex(value.toString(16)));\r\n };\r\n\r\n function WebmFloat(name, type) {\r\n WebmBase.call(this, name, type || 'Float');\r\n }\r\n doInherit(WebmFloat, WebmBase);\r\n WebmFloat.prototype.getFloatArrayType = function() {\r\n return this.source && this.source.length === 4 ? Float32Array : Float64Array;\r\n };\r\n WebmFloat.prototype.updateBySource = function() {\r\n var byteArray = this.source.reverse();\r\n var floatArrayType = this.getFloatArrayType();\r\n var floatArray = new floatArrayType(byteArray.buffer);\r\n this.data = floatArray[0];\r\n };\r\n WebmFloat.prototype.updateByData = function() {\r\n var floatArrayType = this.getFloatArrayType();\r\n var floatArray = new floatArrayType([ this.data ]);\r\n var byteArray = new Uint8Array(floatArray.buffer);\r\n this.source = byteArray.reverse();\r\n };\r\n WebmFloat.prototype.getValue = function() {\r\n return this.data;\r\n };\r\n WebmFloat.prototype.setValue = function(value) {\r\n this.setData(value);\r\n };\r\n\r\n function WebmContainer(name, type) {\r\n WebmBase.call(this, name, type || 'Container');\r\n }\r\n doInherit(WebmContainer, WebmBase);\r\n WebmContainer.prototype.readByte = function() {\r\n return this.source[this.offset++];\r\n };\r\n WebmContainer.prototype.readUint = function() {\r\n var firstByte = this.readByte();\r\n var bytes = 8 - firstByte.toString(2).length;\r\n var value = firstByte - (1 << (7 - bytes));\r\n for (var i = 0; i < bytes; i++) {\r\n // don't use bit operators to support x86\r\n value *= 256;\r\n value += this.readByte();\r\n }\r\n return value;\r\n };\r\n WebmContainer.prototype.updateBySource = function() {\r\n this.data = [];\r\n for (this.offset = 0; this.offset < this.source.length; this.offset = end) {\r\n var id = this.readUint();\r\n var len = this.readUint();\r\n var end = Math.min(this.offset + len, this.source.length);\r\n var data = this.source.slice(this.offset, end);\r\n\r\n var info = sections[id] || { name: 'Unknown', type: 'Unknown' };\r\n var ctr = WebmBase;\r\n switch (info.type) {\r\n case 'Container':\r\n ctr = WebmContainer;\r\n break;\r\n case 'Uint':\r\n ctr = WebmUint;\r\n break;\r\n case 'Float':\r\n ctr = WebmFloat;\r\n break;\r\n }\r\n var section = new ctr(info.name, info.type);\r\n section.setSource(data);\r\n this.data.push({\r\n id: id,\r\n idHex: id.toString(16),\r\n data: section\r\n });\r\n }\r\n };\r\n WebmContainer.prototype.writeUint = function(x, draft) {\r\n for (var bytes = 1, flag = 0x80; x >= flag && bytes < 8; bytes++, flag *= 0x80) { }\r\n\r\n if (!draft) {\r\n var value = flag + x;\r\n for (var i = bytes - 1; i >= 0; i--) {\r\n // don't use bit operators to support x86\r\n var c = value % 256;\r\n this.source[this.offset + i] = c;\r\n value = (value - c) / 256;\r\n }\r\n }\r\n\r\n this.offset += bytes;\r\n };\r\n WebmContainer.prototype.writeSections = function(draft) {\r\n this.offset = 0;\r\n for (var i = 0; i < this.data.length; i++) {\r\n var section = this.data[i],\r\n content = section.data.source,\r\n contentLength = content.length;\r\n this.writeUint(section.id, draft);\r\n this.writeUint(contentLength, draft);\r\n if (!draft) {\r\n this.source.set(content, this.offset);\r\n }\r\n this.offset += contentLength;\r\n }\r\n return this.offset;\r\n };\r\n WebmContainer.prototype.updateByData = function() {\r\n // run without accessing this.source to determine total length - need to know it to create Uint8Array\r\n var length = this.writeSections('draft');\r\n this.source = new Uint8Array(length);\r\n // now really write data\r\n this.writeSections();\r\n };\r\n WebmContainer.prototype.getSectionById = function(id) {\r\n for (var i = 0; i < this.data.length; i++) {\r\n var section = this.data[i];\r\n if (section.id === id) {\r\n return section.data;\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n function WebmFile(source) {\r\n WebmContainer.call(this, 'File', 'File');\r\n this.setSource(source);\r\n }\r\n doInherit(WebmFile, WebmContainer);\r\n WebmFile.prototype.fixDuration = function(duration, options) {\r\n var logger = options && options.logger;\r\n if (logger === undefined) {\r\n logger = function(message) {\r\n console.log(message);\r\n };\r\n } else if (!logger) {\r\n logger = function() { };\r\n }\r\n\r\n var segmentSection = this.getSectionById(0x8538067);\r\n if (!segmentSection) {\r\n logger('[fix-webm-duration] Segment section is missing');\r\n return false;\r\n }\r\n\r\n var infoSection = segmentSection.getSectionById(0x549a966);\r\n if (!infoSection) {\r\n logger('[fix-webm-duration] Info section is missing');\r\n return false;\r\n }\r\n\r\n var timeScaleSection = infoSection.getSectionById(0xad7b1);\r\n if (!timeScaleSection) {\r\n logger('[fix-webm-duration] TimecodeScale section is missing');\r\n return false;\r\n }\r\n\r\n var durationSection = infoSection.getSectionById(0x489);\r\n if (durationSection) {\r\n if (durationSection.getValue() <= 0) {\r\n logger('[fix-webm-duration] Duration section is present, but the value is empty');\r\n durationSection.setValue(duration);\r\n } else {\r\n logger('[fix-webm-duration] Duration section is present');\r\n return false;\r\n }\r\n } else {\r\n logger('[fix-webm-duration] Duration section is missing');\r\n // append Duration section\r\n durationSection = new WebmFloat('Duration', 'Float');\r\n durationSection.setValue(duration);\r\n infoSection.data.push({\r\n id: 0x489,\r\n data: durationSection\r\n });\r\n }\r\n\r\n // set default time scale to 1 millisecond (1000000 nanoseconds)\r\n timeScaleSection.setValue(1000000);\r\n infoSection.updateByData();\r\n segmentSection.updateByData();\r\n this.updateByData();\r\n\r\n return true;\r\n };\r\n WebmFile.prototype.toBlob = function(mimeType) {\r\n return new Blob([ this.source.buffer ], { type: mimeType || 'video/webm' });\r\n };\r\n\r\n function fixWebmDuration(blob, duration, callback, options) {\r\n // The callback may be omitted - then the third argument is options\r\n if (typeof callback === \"object\") {\r\n options = callback;\r\n callback = undefined;\r\n }\r\n\r\n if (!callback) {\r\n return new Promise(function(resolve) {\r\n fixWebmDuration(blob, duration, resolve, options);\r\n });\r\n }\r\n\r\n try {\r\n var reader = new FileReader();\r\n reader.onloadend = function() {\r\n try {\r\n var file = new WebmFile(new Uint8Array(reader.result));\r\n if (file.fixDuration(duration, options)) {\r\n blob = file.toBlob(blob.type);\r\n }\r\n } catch (ex) {\r\n // ignore\r\n }\r\n callback(blob);\r\n };\r\n reader.readAsArrayBuffer(blob);\r\n } catch (ex) {\r\n callback(blob);\r\n }\r\n }\r\n\r\n // Support AMD import default\r\n fixWebmDuration.default = fixWebmDuration;\r\n\r\n return fixWebmDuration;\r\n});\r\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nimport { IntlMessageFormat } from './src/core';\nexport * from './src/formatters';\nexport * from './src/core';\nexport * from './src/error';\nexport default IntlMessageFormat;\n","/*\nCopyright (c) 2014, Yahoo! Inc. All rights reserved.\nCopyrights licensed under the New BSD License.\nSee the accompanying LICENSE file for terms.\n*/\nimport { __assign, __spreadArray } from \"tslib\";\nimport { parse } from '@formatjs/icu-messageformat-parser';\nimport memoize, { strategies } from '@formatjs/fast-memoize';\nimport { formatToParts, PART_TYPE, } from './formatters';\n// -- MessageFormat --------------------------------------------------------\nfunction mergeConfig(c1, c2) {\n if (!c2) {\n return c1;\n }\n return __assign(__assign(__assign({}, (c1 || {})), (c2 || {})), Object.keys(c1).reduce(function (all, k) {\n all[k] = __assign(__assign({}, c1[k]), (c2[k] || {}));\n return all;\n }, {}));\n}\nfunction mergeConfigs(defaultConfig, configs) {\n if (!configs) {\n return defaultConfig;\n }\n return Object.keys(defaultConfig).reduce(function (all, k) {\n all[k] = mergeConfig(defaultConfig[k], configs[k]);\n return all;\n }, __assign({}, defaultConfig));\n}\nfunction createFastMemoizeCache(store) {\n return {\n create: function () {\n return {\n get: function (key) {\n return store[key];\n },\n set: function (key, value) {\n store[key] = value;\n },\n };\n },\n };\n}\nfunction createDefaultFormatters(cache) {\n if (cache === void 0) { cache = {\n number: {},\n dateTime: {},\n pluralRules: {},\n }; }\n return {\n getNumberFormat: memoize(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.NumberFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.number),\n strategy: strategies.variadic,\n }),\n getDateTimeFormat: memoize(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.DateTimeFormat).bind.apply(_a, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.dateTime),\n strategy: strategies.variadic,\n }),\n getPluralRules: memoize(function () {\n var _a;\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return new ((_a = Intl.PluralRules).bind.apply(_a, __spreadArray([void 0], args, false)))();\n }, {\n cache: createFastMemoizeCache(cache.pluralRules),\n strategy: strategies.variadic,\n }),\n };\n}\nvar IntlMessageFormat = /** @class */ (function () {\n function IntlMessageFormat(message, locales, overrideFormats, opts) {\n var _this = this;\n if (locales === void 0) { locales = IntlMessageFormat.defaultLocale; }\n this.formatterCache = {\n number: {},\n dateTime: {},\n pluralRules: {},\n };\n this.format = function (values) {\n var parts = _this.formatToParts(values);\n // Hot path for straight simple msg translations\n if (parts.length === 1) {\n return parts[0].value;\n }\n var result = parts.reduce(function (all, part) {\n if (!all.length ||\n part.type !== PART_TYPE.literal ||\n typeof all[all.length - 1] !== 'string') {\n all.push(part.value);\n }\n else {\n all[all.length - 1] += part.value;\n }\n return all;\n }, []);\n if (result.length <= 1) {\n return result[0] || '';\n }\n return result;\n };\n this.formatToParts = function (values) {\n return formatToParts(_this.ast, _this.locales, _this.formatters, _this.formats, values, undefined, _this.message);\n };\n this.resolvedOptions = function () { return ({\n locale: Intl.NumberFormat.supportedLocalesOf(_this.locales)[0],\n }); };\n this.getAst = function () { return _this.ast; };\n if (typeof message === 'string') {\n this.message = message;\n if (!IntlMessageFormat.__parse) {\n throw new TypeError('IntlMessageFormat.__parse must be set to process `message` of type `string`');\n }\n // Parse string messages into an AST.\n this.ast = IntlMessageFormat.__parse(message, {\n ignoreTag: opts === null || opts === void 0 ? void 0 : opts.ignoreTag,\n });\n }\n else {\n this.ast = message;\n }\n if (!Array.isArray(this.ast)) {\n throw new TypeError('A message must be provided as a String or AST.');\n }\n // Creates a new object with the specified `formats` merged with the default\n // formats.\n this.formats = mergeConfigs(IntlMessageFormat.formats, overrideFormats);\n // Defined first because it's used to build the format pattern.\n this.locales = locales;\n this.formatters =\n (opts && opts.formatters) || createDefaultFormatters(this.formatterCache);\n }\n Object.defineProperty(IntlMessageFormat, \"defaultLocale\", {\n get: function () {\n if (!IntlMessageFormat.memoizedDefaultLocale) {\n IntlMessageFormat.memoizedDefaultLocale =\n new Intl.NumberFormat().resolvedOptions().locale;\n }\n return IntlMessageFormat.memoizedDefaultLocale;\n },\n enumerable: false,\n configurable: true\n });\n IntlMessageFormat.memoizedDefaultLocale = null;\n IntlMessageFormat.__parse = parse;\n // Default format options used as the prototype of the `formats` provided to the\n // constructor. These are used when constructing the internal Intl.NumberFormat\n // and Intl.DateTimeFormat instances.\n IntlMessageFormat.formats = {\n number: {\n integer: {\n maximumFractionDigits: 0,\n },\n currency: {\n style: 'currency',\n },\n percent: {\n style: 'percent',\n },\n },\n date: {\n short: {\n month: 'numeric',\n day: 'numeric',\n year: '2-digit',\n },\n medium: {\n month: 'short',\n day: 'numeric',\n year: 'numeric',\n },\n long: {\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n },\n full: {\n weekday: 'long',\n month: 'long',\n day: 'numeric',\n year: 'numeric',\n },\n },\n time: {\n short: {\n hour: 'numeric',\n minute: 'numeric',\n },\n medium: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n },\n long: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n timeZoneName: 'short',\n },\n full: {\n hour: 'numeric',\n minute: 'numeric',\n second: 'numeric',\n timeZoneName: 'short',\n },\n },\n };\n return IntlMessageFormat;\n}());\nexport { IntlMessageFormat };\n","import { __extends } from \"tslib\";\nexport var ErrorCode;\n(function (ErrorCode) {\n // When we have a placeholder but no value to format\n ErrorCode[\"MISSING_VALUE\"] = \"MISSING_VALUE\";\n // When value supplied is invalid\n ErrorCode[\"INVALID_VALUE\"] = \"INVALID_VALUE\";\n // When we need specific Intl API but it's not available\n ErrorCode[\"MISSING_INTL_API\"] = \"MISSING_INTL_API\";\n})(ErrorCode || (ErrorCode = {}));\nvar FormatError = /** @class */ (function (_super) {\n __extends(FormatError, _super);\n function FormatError(msg, code, originalMessage) {\n var _this = _super.call(this, msg) || this;\n _this.code = code;\n _this.originalMessage = originalMessage;\n return _this;\n }\n FormatError.prototype.toString = function () {\n return \"[formatjs Error: \".concat(this.code, \"] \").concat(this.message);\n };\n return FormatError;\n}(Error));\nexport { FormatError };\nvar InvalidValueError = /** @class */ (function (_super) {\n __extends(InvalidValueError, _super);\n function InvalidValueError(variableId, value, options, originalMessage) {\n return _super.call(this, \"Invalid values for \\\"\".concat(variableId, \"\\\": \\\"\").concat(value, \"\\\". Options are \\\"\").concat(Object.keys(options).join('\", \"'), \"\\\"\"), ErrorCode.INVALID_VALUE, originalMessage) || this;\n }\n return InvalidValueError;\n}(FormatError));\nexport { InvalidValueError };\nvar InvalidValueTypeError = /** @class */ (function (_super) {\n __extends(InvalidValueTypeError, _super);\n function InvalidValueTypeError(value, type, originalMessage) {\n return _super.call(this, \"Value for \\\"\".concat(value, \"\\\" must be of type \").concat(type), ErrorCode.INVALID_VALUE, originalMessage) || this;\n }\n return InvalidValueTypeError;\n}(FormatError));\nexport { InvalidValueTypeError };\nvar MissingValueError = /** @class */ (function (_super) {\n __extends(MissingValueError, _super);\n function MissingValueError(variableId, originalMessage) {\n return _super.call(this, \"The intl string context variable \\\"\".concat(variableId, \"\\\" was not provided to the string \\\"\").concat(originalMessage, \"\\\"\"), ErrorCode.MISSING_VALUE, originalMessage) || this;\n }\n return MissingValueError;\n}(FormatError));\nexport { MissingValueError };\n","import { isArgumentElement, isDateElement, isDateTimeSkeleton, isLiteralElement, isNumberElement, isNumberSkeleton, isPluralElement, isPoundElement, isSelectElement, isTimeElement, isTagElement, } from '@formatjs/icu-messageformat-parser';\nimport { MissingValueError, InvalidValueError, ErrorCode, FormatError, InvalidValueTypeError, } from './error';\nexport var PART_TYPE;\n(function (PART_TYPE) {\n PART_TYPE[PART_TYPE[\"literal\"] = 0] = \"literal\";\n PART_TYPE[PART_TYPE[\"object\"] = 1] = \"object\";\n})(PART_TYPE || (PART_TYPE = {}));\nfunction mergeLiteral(parts) {\n if (parts.length < 2) {\n return parts;\n }\n return parts.reduce(function (all, part) {\n var lastPart = all[all.length - 1];\n if (!lastPart ||\n lastPart.type !== PART_TYPE.literal ||\n part.type !== PART_TYPE.literal) {\n all.push(part);\n }\n else {\n lastPart.value += part.value;\n }\n return all;\n }, []);\n}\nexport function isFormatXMLElementFn(el) {\n return typeof el === 'function';\n}\n// TODO(skeleton): add skeleton support\nexport function formatToParts(els, locales, formatters, formats, values, currentPluralValue, \n// For debugging\noriginalMessage) {\n // Hot path for straight simple msg translations\n if (els.length === 1 && isLiteralElement(els[0])) {\n return [\n {\n type: PART_TYPE.literal,\n value: els[0].value,\n },\n ];\n }\n var result = [];\n for (var _i = 0, els_1 = els; _i < els_1.length; _i++) {\n var el = els_1[_i];\n // Exit early for string parts.\n if (isLiteralElement(el)) {\n result.push({\n type: PART_TYPE.literal,\n value: el.value,\n });\n continue;\n }\n // TODO: should this part be literal type?\n // Replace `#` in plural rules with the actual numeric value.\n if (isPoundElement(el)) {\n if (typeof currentPluralValue === 'number') {\n result.push({\n type: PART_TYPE.literal,\n value: formatters.getNumberFormat(locales).format(currentPluralValue),\n });\n }\n continue;\n }\n var varName = el.value;\n // Enforce that all required values are provided by the caller.\n if (!(values && varName in values)) {\n throw new MissingValueError(varName, originalMessage);\n }\n var value = values[varName];\n if (isArgumentElement(el)) {\n if (!value || typeof value === 'string' || typeof value === 'number') {\n value =\n typeof value === 'string' || typeof value === 'number'\n ? String(value)\n : '';\n }\n result.push({\n type: typeof value === 'string' ? PART_TYPE.literal : PART_TYPE.object,\n value: value,\n });\n continue;\n }\n // Recursively format plural and select parts' option — which can be a\n // nested pattern structure. The choosing of the option to use is\n // abstracted-by and delegated-to the part helper object.\n if (isDateElement(el)) {\n var style = typeof el.style === 'string'\n ? formats.date[el.style]\n : isDateTimeSkeleton(el.style)\n ? el.style.parsedOptions\n : undefined;\n result.push({\n type: PART_TYPE.literal,\n value: formatters\n .getDateTimeFormat(locales, style)\n .format(value),\n });\n continue;\n }\n if (isTimeElement(el)) {\n var style = typeof el.style === 'string'\n ? formats.time[el.style]\n : isDateTimeSkeleton(el.style)\n ? el.style.parsedOptions\n : formats.time.medium;\n result.push({\n type: PART_TYPE.literal,\n value: formatters\n .getDateTimeFormat(locales, style)\n .format(value),\n });\n continue;\n }\n if (isNumberElement(el)) {\n var style = typeof el.style === 'string'\n ? formats.number[el.style]\n : isNumberSkeleton(el.style)\n ? el.style.parsedOptions\n : undefined;\n if (style && style.scale) {\n value =\n value *\n (style.scale || 1);\n }\n result.push({\n type: PART_TYPE.literal,\n value: formatters\n .getNumberFormat(locales, style)\n .format(value),\n });\n continue;\n }\n if (isTagElement(el)) {\n var children = el.children, value_1 = el.value;\n var formatFn = values[value_1];\n if (!isFormatXMLElementFn(formatFn)) {\n throw new InvalidValueTypeError(value_1, 'function', originalMessage);\n }\n var parts = formatToParts(children, locales, formatters, formats, values, currentPluralValue);\n var chunks = formatFn(parts.map(function (p) { return p.value; }));\n if (!Array.isArray(chunks)) {\n chunks = [chunks];\n }\n result.push.apply(result, chunks.map(function (c) {\n return {\n type: typeof c === 'string' ? PART_TYPE.literal : PART_TYPE.object,\n value: c,\n };\n }));\n }\n if (isSelectElement(el)) {\n var opt = el.options[value] || el.options.other;\n if (!opt) {\n throw new InvalidValueError(el.value, value, Object.keys(el.options), originalMessage);\n }\n result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values));\n continue;\n }\n if (isPluralElement(el)) {\n var opt = el.options[\"=\".concat(value)];\n if (!opt) {\n if (!Intl.PluralRules) {\n throw new FormatError(\"Intl.PluralRules is not available in this environment.\\nTry polyfilling it using \\\"@formatjs/intl-pluralrules\\\"\\n\", ErrorCode.MISSING_INTL_API, originalMessage);\n }\n var rule = formatters\n .getPluralRules(locales, { type: el.pluralType })\n .select(value - (el.offset || 0));\n opt = el.options[rule] || el.options.other;\n }\n if (!opt) {\n throw new InvalidValueError(el.value, value, Object.keys(el.options), originalMessage);\n }\n result.push.apply(result, formatToParts(opt.value, locales, formatters, formats, values, value - (el.offset || 0)));\n continue;\n }\n }\n return mergeLiteral(result);\n}\n","import React from 'react';\nimport { injectIntl } from 'react-intl';\nimport intlMessageformat from 'intl-messageformat';\n\nfunction _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nfunction _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\n for (i = 0; i < sourceKeys.length; i++) {\n key = sourceKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n target[key] = source[key];\n }\n\n return target;\n}\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n\n var target = _objectWithoutPropertiesLoose(source, excluded);\n\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nfunction _interopDefault(ex) {\n return ex && typeof ex === 'object' && 'default' in ex ? ex['default'] : ex;\n}\n\nvar IntlMessageFormat = _interopDefault(intlMessageformat);\n\nconst INITIAL_ZERO = /^0/;\n\nfunction leftTrim(parts) {\n let previousEmpty = true;\n return parts.filter(token => {\n if (token.type === 'literal' && !token.value.trim()) {\n if (previousEmpty) return false;\n previousEmpty = true;\n return true;\n } else {\n previousEmpty = false;\n }\n\n return true;\n });\n}\n\nfunction trim(parts, trimFirstPaddedValue = false) {\n const trimmed = leftTrim(leftTrim(parts).reverse()).reverse();\n\n if (trimFirstPaddedValue) {\n const first = trimmed.find(token => token.type !== 'literal');\n first.value = first.value.replace(INITIAL_ZERO, '');\n }\n\n return trimmed;\n}\n\nfunction DurationUnitFormat(locales, options = defaultOptions) {\n this.locales = locales; // TODO I'm ignoring the unit for now, value is always expressed in seconds\n\n this.unit = 'second'; // .style determines how the placeholders are converted to plain text\n\n this.style = options.style || DurationUnitFormat.styles.LONG; // .isTimer determines some special behaviour, we want to keep the 0s\n\n this.isTimer = this.style === DurationUnitFormat.styles.TIMER; // .format used `seconds`, `minutes`, `hours`, ... as placeholders\n\n this.format = options.format || (this.isTimer ? '{minutes}:{seconds}' : '{seconds}'); // How to format unit according to style\n\n this.formatUnits = options.formatUnits || defaultOptions.formatUnits; // .formatDuration determines whether we use a space or not\n\n this.formatDuration = options.formatDuration || defaultOptions.formatDuration;\n this.shouldRound = options.round === true;\n}\n\nDurationUnitFormat.units = {\n DAY: 'day',\n HOUR: 'hour',\n MINUTE: 'minute',\n SECOND: 'second'\n};\nDurationUnitFormat.styles = {\n CUSTOM: 'custom',\n TIMER: 'timer',\n // http://www.unicode.org/cldr/charts/27/summary/pl.html#5556\n LONG: 'long',\n SHORT: 'short',\n NARROW: 'narrow'\n};\n\nDurationUnitFormat.prototype.formatToParts = function (value) {\n // Extract all the parts that are actually used from the localised format\n const parts = new IntlMessageFormat(this.format, this.locales).formatToParts({\n second: {\n unit: DurationUnitFormat.units.SECOND\n },\n seconds: {\n unit: DurationUnitFormat.units.SECOND\n },\n minute: {\n unit: DurationUnitFormat.units.MINUTE\n },\n minutes: {\n unit: DurationUnitFormat.units.MINUTE\n },\n hour: {\n unit: DurationUnitFormat.units.HOUR\n },\n hours: {\n unit: DurationUnitFormat.units.HOUR\n },\n day: {\n unit: DurationUnitFormat.units.DAY\n },\n days: {\n unit: DurationUnitFormat.units.DAY\n }\n }); // Compute the value of each bucket depending on which parts are used\n\n const buckets = splitSecondsInBuckets(value, this.unit, parts, this.shouldRound); // Each part from the format message could potentially contain multiple parts\n\n const result = parts.reduce((all, token) => all.concat(this._formatToken(token, buckets)), []);\n return this._trimOutput(result, parts);\n};\n\nDurationUnitFormat.prototype._formatToken = function (token, buckets) {\n const {\n value\n } = token;\n\n if (value.unit) {\n const number = buckets[value.unit];\n return number || this.isTimer ? this._formatDurationToParts(value.unit, number) : [];\n } else if (value) {\n // If there is no .unit it's text, but it could be an empty string\n return [{\n type: 'literal',\n value\n }];\n }\n\n return [];\n};\n\nDurationUnitFormat.prototype._formatDurationToParts = function (unit, number) {\n if (this.isTimer) {\n // With timer style, we only show the value\n return [{\n type: unit,\n value: this._formatValue(number)\n }];\n } else if (isSpecialStyle(this.style)) {\n return new Intl.NumberFormat(this.locales, {\n style: 'unit',\n unit: unit,\n unitDisplay: this.style\n }).formatToParts(number).map(_ => ({\n // NumberFormat uses 'integer' for types, but I prefer using the unit\n // This is more similar to what happens in DateTimeFormat\n type: _.type === 'integer' ? unit : _.type,\n value: _.value\n }));\n } // This is now only needed for the custom formatting\n\n\n return this.formatDuration.split(SPLIT_POINTS).map(text => {\n if (text === '{value}') {\n return {\n type: unit,\n value: this._formatValue(number)\n };\n }\n\n if (text === '{unit}') {\n const message = this.formatUnits[unit] || '{value}';\n const formattedUnit = new IntlMessageFormat(message, this.locales).format({\n value: number\n });\n return {\n type: 'unit',\n value: formattedUnit\n };\n }\n\n if (text) {\n return {\n type: 'literal',\n value: text\n };\n }\n }).filter(Boolean);\n};\n\nDurationUnitFormat.prototype._formatValue = function (number) {\n return this.isTimer ? number.toString().padStart(2, '0') : number.toString();\n};\n\nDurationUnitFormat.prototype._trimOutput = function (result, parts) {\n const trimmed = trim(result, this.isTimer);\n\n if (!trimmed.find(_ => _.type !== 'literal')) {\n // if everything cancels out and there are only literals,\n // then return 0 on the lowest available unit\n const minUnit = [DurationUnitFormat.units.SECOND, DurationUnitFormat.units.MINUTE, DurationUnitFormat.units.HOUR, DurationUnitFormat.units.DAY].find(unit => has(parts, unit));\n return this._formatDurationToParts(minUnit, 0);\n }\n\n return trimmed;\n};\n\nconst defaultOptions = {\n // unit: DurationUnitFormat.units.SECOND,\n formatDuration: '{value} {unit}',\n formatUnits: {\n // custom values\n [DurationUnitFormat.units.DAY]: '{value, plural, one {day} other {days}}',\n [DurationUnitFormat.units.HOUR]: '{value, plural, one {hour} other {hours}}',\n [DurationUnitFormat.units.MINUTE]: '{value, plural, one {minute} other {minutes}}',\n [DurationUnitFormat.units.SECOND]: '{value, plural, one {second} other {seconds}}'\n },\n style: DurationUnitFormat.styles.LONG\n};\nconst SPLIT_POINTS = /(\\{value\\}|\\{unit\\})/;\nconst SECONDS_IN = {\n day: 24 * 60 * 60,\n hour: 60 * 60,\n minute: 60,\n second: 1\n};\n\nfunction has(parts, unit) {\n return !!parts.find(_ => _.value.unit === unit);\n}\n\nfunction splitSecondsInBuckets(value, valueUnit, parts, shouldRound) {\n let seconds = value * SECONDS_IN[valueUnit]; // Rounding will only affect the lowest unit\n // check how many seconds we need to add\n\n if (shouldRound) {\n const lowestUnit = [DurationUnitFormat.units.SECOND, DurationUnitFormat.units.MINUTE, DurationUnitFormat.units.HOUR, DurationUnitFormat.units.DAY].find(unit => has(parts, unit)); // These many seconds will be ignored by the lowest unit\n\n const remainder = seconds % SECONDS_IN[lowestUnit];\n\n if (2 * remainder >= SECONDS_IN[lowestUnit]) {\n // The remainder is large, add enough seconds to increse the lowest unit\n seconds += SECONDS_IN[lowestUnit] - remainder;\n }\n }\n\n const buckets = {};\n [DurationUnitFormat.units.DAY, DurationUnitFormat.units.HOUR, DurationUnitFormat.units.MINUTE, DurationUnitFormat.units.SECOND].forEach(unit => {\n if (has(parts, unit)) {\n buckets[unit] = Math.floor(seconds / SECONDS_IN[unit]);\n seconds -= buckets[unit] * SECONDS_IN[unit];\n }\n });\n return buckets;\n}\n\nfunction isSpecialStyle(style) {\n return [DurationUnitFormat.styles.LONG, DurationUnitFormat.styles.SHORT, DurationUnitFormat.styles.NARROW].includes(style);\n}\n\nvar durationUnitFormat_cjs = DurationUnitFormat;\n\nvar EXTENDED_FORMAT = 'EXTENDED_FORMAT';\nvar TIMER_FORMAT = 'TIMER_FORMAT';\n\nfunction DurationMessage(_ref) {\n var _formatUnits;\n\n var intl = _ref.intl,\n seconds = _ref.seconds,\n format = _ref.format,\n textComponent = _ref.textComponent,\n unitDisplay = _ref.unitDisplay,\n valueComponent = _ref.valueComponent,\n otherProps = _objectWithoutProperties(_ref, [\"intl\", \"seconds\", \"format\", \"textComponent\", \"unitDisplay\", \"valueComponent\"]);\n\n var actualFormat = intl.messages[\"react-intl-formatted-duration/custom-format/\".concat(format || '')] || format;\n\n if (!format || format === EXTENDED_FORMAT) {\n actualFormat = intl.messages['react-intl-formatted-duration.longFormatting'] || '{minutes} {seconds}';\n }\n\n if (format === TIMER_FORMAT) {\n actualFormat = intl.messages['react-intl-formatted-duration.timerFormatting'] || '{minutes}:{seconds}';\n }\n\n var actualSytle = unitDisplay;\n\n if (!actualSytle) {\n actualSytle = format === TIMER_FORMAT ? durationUnitFormat_cjs.styles.TIMER : durationUnitFormat_cjs.styles.CUSTOM;\n }\n\n var parts = new durationUnitFormat_cjs(intl.locale, {\n format: actualFormat,\n formatUnits: (_formatUnits = {}, _defineProperty(_formatUnits, durationUnitFormat_cjs.units.DAY, intl.messages['react-intl-formatted-duration.daysUnit'] || '{value, plural, one {day} other {days}}'), _defineProperty(_formatUnits, durationUnitFormat_cjs.units.HOUR, intl.messages['react-intl-formatted-duration.hoursUnit'] || '{value, plural, one {hour} other {hours}}'), _defineProperty(_formatUnits, durationUnitFormat_cjs.units.MINUTE, intl.messages['react-intl-formatted-duration.minutesUnit'] || '{value, plural, one {minute} other {minutes}}'), _defineProperty(_formatUnits, durationUnitFormat_cjs.units.SECOND, intl.messages['react-intl-formatted-duration.secondsUnit'] || '{value, plural, one {second} other {seconds}}'), _formatUnits),\n formatDuration: intl.messages['react-intl-formatted-duration.duration'] || '{value} {unit}',\n round: true,\n // TODO backward compatible, add a prop to configure it\n style: actualSytle\n }).formatToParts(seconds);\n var Text = textComponent || intl.textComponent;\n var Value = valueComponent || textComponent || intl.textComponent;\n return React.createElement(Text, otherProps, parts.map(function (token) {\n if (token.type === 'literal' || token.type === 'unit') return token.value;\n return React.createElement(Value, {\n key: token.type\n }, token.value);\n }));\n}\n\nvar index = injectIntl(DurationMessage);\n\nexport default index;\nexport { EXTENDED_FORMAT, TIMER_FORMAT };\n","/*! *****************************************************************************\r\nCopyright (c) Microsoft Corporation.\r\n\r\nPermission to use, copy, modify, and/or distribute this software for any\r\npurpose with or without fee is hereby granted.\r\n\r\nTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH\r\nREGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY\r\nAND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT,\r\nINDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM\r\nLOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR\r\nOTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR\r\nPERFORMANCE OF THIS SOFTWARE.\r\n***************************************************************************** */\r\n/* global Reflect, Promise */\r\n\r\nvar extendStatics = function(d, b) {\r\n extendStatics = Object.setPrototypeOf ||\r\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\r\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\r\n return extendStatics(d, b);\r\n};\r\n\r\nexport function __extends(d, b) {\r\n if (typeof b !== \"function\" && b !== null)\r\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\r\n extendStatics(d, b);\r\n function __() { this.constructor = d; }\r\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\r\n}\r\n\r\nexport var __assign = function() {\r\n __assign = Object.assign || function __assign(t) {\r\n for (var s, i = 1, n = arguments.length; i < n; i++) {\r\n s = arguments[i];\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r\n }\r\n return t;\r\n }\r\n return __assign.apply(this, arguments);\r\n}\r\n\r\nexport function __rest(s, e) {\r\n var t = {};\r\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\r\n t[p] = s[p];\r\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\r\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\r\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\r\n t[p[i]] = s[p[i]];\r\n }\r\n return t;\r\n}\r\n\r\nexport function __decorate(decorators, target, key, desc) {\r\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\r\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\r\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\r\n return c > 3 && r && Object.defineProperty(target, key, r), r;\r\n}\r\n\r\nexport function __param(paramIndex, decorator) {\r\n return function (target, key) { decorator(target, key, paramIndex); }\r\n}\r\n\r\nexport function __metadata(metadataKey, metadataValue) {\r\n if (typeof Reflect === \"object\" && typeof Reflect.metadata === \"function\") return Reflect.metadata(metadataKey, metadataValue);\r\n}\r\n\r\nexport function __awaiter(thisArg, _arguments, P, generator) {\r\n function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }\r\n return new (P || (P = Promise))(function (resolve, reject) {\r\n function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }\r\n function rejected(value) { try { step(generator[\"throw\"](value)); } catch (e) { reject(e); } }\r\n function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }\r\n step((generator = generator.apply(thisArg, _arguments || [])).next());\r\n });\r\n}\r\n\r\nexport function __generator(thisArg, body) {\r\n var _ = { label: 0, sent: function() { if (t[0] & 1) throw t[1]; return t[1]; }, trys: [], ops: [] }, f, y, t, g;\r\n return g = { next: verb(0), \"throw\": verb(1), \"return\": verb(2) }, typeof Symbol === \"function\" && (g[Symbol.iterator] = function() { return this; }), g;\r\n function verb(n) { return function (v) { return step([n, v]); }; }\r\n function step(op) {\r\n if (f) throw new TypeError(\"Generator is already executing.\");\r\n while (_) try {\r\n if (f = 1, y && (t = op[0] & 2 ? y[\"return\"] : op[0] ? y[\"throw\"] || ((t = y[\"return\"]) && t.call(y), 0) : y.next) && !(t = t.call(y, op[1])).done) return t;\r\n if (y = 0, t) op = [op[0] & 2, t.value];\r\n switch (op[0]) {\r\n case 0: case 1: t = op; break;\r\n case 4: _.label++; return { value: op[1], done: false };\r\n case 5: _.label++; y = op[1]; op = [0]; continue;\r\n case 7: op = _.ops.pop(); _.trys.pop(); continue;\r\n default:\r\n if (!(t = _.trys, t = t.length > 0 && t[t.length - 1]) && (op[0] === 6 || op[0] === 2)) { _ = 0; continue; }\r\n if (op[0] === 3 && (!t || (op[1] > t[0] && op[1] < t[3]))) { _.label = op[1]; break; }\r\n if (op[0] === 6 && _.label < t[1]) { _.label = t[1]; t = op; break; }\r\n if (t && _.label < t[2]) { _.label = t[2]; _.ops.push(op); break; }\r\n if (t[2]) _.ops.pop();\r\n _.trys.pop(); continue;\r\n }\r\n op = body.call(thisArg, _);\r\n } catch (e) { op = [6, e]; y = 0; } finally { f = t = 0; }\r\n if (op[0] & 5) throw op[1]; return { value: op[0] ? op[1] : void 0, done: true };\r\n }\r\n}\r\n\r\nexport var __createBinding = Object.create ? (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n Object.defineProperty(o, k2, { enumerable: true, get: function() { return m[k]; } });\r\n}) : (function(o, m, k, k2) {\r\n if (k2 === undefined) k2 = k;\r\n o[k2] = m[k];\r\n});\r\n\r\nexport function __exportStar(m, o) {\r\n for (var p in m) if (p !== \"default\" && !Object.prototype.hasOwnProperty.call(o, p)) __createBinding(o, m, p);\r\n}\r\n\r\nexport function __values(o) {\r\n var s = typeof Symbol === \"function\" && Symbol.iterator, m = s && o[s], i = 0;\r\n if (m) return m.call(o);\r\n if (o && typeof o.length === \"number\") return {\r\n next: function () {\r\n if (o && i >= o.length) o = void 0;\r\n return { value: o && o[i++], done: !o };\r\n }\r\n };\r\n throw new TypeError(s ? \"Object is not iterable.\" : \"Symbol.iterator is not defined.\");\r\n}\r\n\r\nexport function __read(o, n) {\r\n var m = typeof Symbol === \"function\" && o[Symbol.iterator];\r\n if (!m) return o;\r\n var i = m.call(o), r, ar = [], e;\r\n try {\r\n while ((n === void 0 || n-- > 0) && !(r = i.next()).done) ar.push(r.value);\r\n }\r\n catch (error) { e = { error: error }; }\r\n finally {\r\n try {\r\n if (r && !r.done && (m = i[\"return\"])) m.call(i);\r\n }\r\n finally { if (e) throw e.error; }\r\n }\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spread() {\r\n for (var ar = [], i = 0; i < arguments.length; i++)\r\n ar = ar.concat(__read(arguments[i]));\r\n return ar;\r\n}\r\n\r\n/** @deprecated */\r\nexport function __spreadArrays() {\r\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\r\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\r\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\r\n r[k] = a[j];\r\n return r;\r\n}\r\n\r\nexport function __spreadArray(to, from, pack) {\r\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\r\n if (ar || !(i in from)) {\r\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\r\n ar[i] = from[i];\r\n }\r\n }\r\n return to.concat(ar || Array.prototype.slice.call(from));\r\n}\r\n\r\nexport function __await(v) {\r\n return this instanceof __await ? (this.v = v, this) : new __await(v);\r\n}\r\n\r\nexport function __asyncGenerator(thisArg, _arguments, generator) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var g = generator.apply(thisArg, _arguments || []), i, q = [];\r\n return i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i;\r\n function verb(n) { if (g[n]) i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; }\r\n function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }\r\n function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }\r\n function fulfill(value) { resume(\"next\", value); }\r\n function reject(value) { resume(\"throw\", value); }\r\n function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }\r\n}\r\n\r\nexport function __asyncDelegator(o) {\r\n var i, p;\r\n return i = {}, verb(\"next\"), verb(\"throw\", function (e) { throw e; }), verb(\"return\"), i[Symbol.iterator] = function () { return this; }, i;\r\n function verb(n, f) { i[n] = o[n] ? function (v) { return (p = !p) ? { value: __await(o[n](v)), done: n === \"return\" } : f ? f(v) : v; } : f; }\r\n}\r\n\r\nexport function __asyncValues(o) {\r\n if (!Symbol.asyncIterator) throw new TypeError(\"Symbol.asyncIterator is not defined.\");\r\n var m = o[Symbol.asyncIterator], i;\r\n return m ? m.call(o) : (o = typeof __values === \"function\" ? __values(o) : o[Symbol.iterator](), i = {}, verb(\"next\"), verb(\"throw\"), verb(\"return\"), i[Symbol.asyncIterator] = function () { return this; }, i);\r\n function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }\r\n function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }\r\n}\r\n\r\nexport function __makeTemplateObject(cooked, raw) {\r\n if (Object.defineProperty) { Object.defineProperty(cooked, \"raw\", { value: raw }); } else { cooked.raw = raw; }\r\n return cooked;\r\n};\r\n\r\nvar __setModuleDefault = Object.create ? (function(o, v) {\r\n Object.defineProperty(o, \"default\", { enumerable: true, value: v });\r\n}) : function(o, v) {\r\n o[\"default\"] = v;\r\n};\r\n\r\nexport function __importStar(mod) {\r\n if (mod && mod.__esModule) return mod;\r\n var result = {};\r\n if (mod != null) for (var k in mod) if (k !== \"default\" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);\r\n __setModuleDefault(result, mod);\r\n return result;\r\n}\r\n\r\nexport function __importDefault(mod) {\r\n return (mod && mod.__esModule) ? mod : { default: mod };\r\n}\r\n\r\nexport function __classPrivateFieldGet(receiver, state, kind, f) {\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a getter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot read private member from an object whose class did not declare it\");\r\n return kind === \"m\" ? f : kind === \"a\" ? f.call(receiver) : f ? f.value : state.get(receiver);\r\n}\r\n\r\nexport function __classPrivateFieldSet(receiver, state, value, kind, f) {\r\n if (kind === \"m\") throw new TypeError(\"Private method is not writable\");\r\n if (kind === \"a\" && !f) throw new TypeError(\"Private accessor was defined without a setter\");\r\n if (typeof state === \"function\" ? receiver !== state || !f : !state.has(receiver)) throw new TypeError(\"Cannot write private member to an object whose class did not declare it\");\r\n return (kind === \"a\" ? f.call(receiver, value) : f ? f.value = value : state.set(receiver, value)), value;\r\n}\r\n","module.exports = React;","module.exports = ReactDOM;","module.exports = ReactIntl;","module.exports = Tinode;","import { Component, ComponentContainer } from '@firebase/component';\nimport { Logger, setUserLogHandler, setLogLevel as setLogLevel$1 } from '@firebase/logger';\nimport { ErrorFactory, deepEqual, openDB, base64urlEncodeWithoutPadding, isIndexedDBAvailable, validateIndexedDBOpenable } from '@firebase/util';\nexport { FirebaseError } from '@firebase/util';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass PlatformLoggerServiceImpl {\r\n constructor(container) {\r\n this.container = container;\r\n }\r\n // In initial implementation, this will be called by installations on\r\n // auth token refresh, and installations will send this string.\r\n getPlatformInfoString() {\r\n const providers = this.container.getProviders();\r\n // Loop through providers and get library/version pairs from any that are\r\n // version components.\r\n return providers\r\n .map(provider => {\r\n if (isVersionServiceProvider(provider)) {\r\n const service = provider.getImmediate();\r\n return `${service.library}/${service.version}`;\r\n }\r\n else {\r\n return null;\r\n }\r\n })\r\n .filter(logString => logString)\r\n .join(' ');\r\n }\r\n}\r\n/**\r\n *\r\n * @param provider check if this provider provides a VersionService\r\n *\r\n * NOTE: Using Provider<'app-version'> is a hack to indicate that the provider\r\n * provides VersionService. The provider is not necessarily a 'app-version'\r\n * provider.\r\n */\r\nfunction isVersionServiceProvider(provider) {\r\n const component = provider.getComponent();\r\n return (component === null || component === void 0 ? void 0 : component.type) === \"VERSION\" /* VERSION */;\r\n}\n\nconst name$o = \"@firebase/app\";\nconst version$1 = \"0.7.21\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst logger = new Logger('@firebase/app');\n\nconst name$n = \"@firebase/app-compat\";\n\nconst name$m = \"@firebase/analytics-compat\";\n\nconst name$l = \"@firebase/analytics\";\n\nconst name$k = \"@firebase/app-check-compat\";\n\nconst name$j = \"@firebase/app-check\";\n\nconst name$i = \"@firebase/auth\";\n\nconst name$h = \"@firebase/auth-compat\";\n\nconst name$g = \"@firebase/database\";\n\nconst name$f = \"@firebase/database-compat\";\n\nconst name$e = \"@firebase/functions\";\n\nconst name$d = \"@firebase/functions-compat\";\n\nconst name$c = \"@firebase/installations\";\n\nconst name$b = \"@firebase/installations-compat\";\n\nconst name$a = \"@firebase/messaging\";\n\nconst name$9 = \"@firebase/messaging-compat\";\n\nconst name$8 = \"@firebase/performance\";\n\nconst name$7 = \"@firebase/performance-compat\";\n\nconst name$6 = \"@firebase/remote-config\";\n\nconst name$5 = \"@firebase/remote-config-compat\";\n\nconst name$4 = \"@firebase/storage\";\n\nconst name$3 = \"@firebase/storage-compat\";\n\nconst name$2 = \"@firebase/firestore\";\n\nconst name$1 = \"@firebase/firestore-compat\";\n\nconst name = \"firebase\";\nconst version = \"9.6.11\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * The default app name\r\n *\r\n * @internal\r\n */\r\nconst DEFAULT_ENTRY_NAME = '[DEFAULT]';\r\nconst PLATFORM_LOG_STRING = {\r\n [name$o]: 'fire-core',\r\n [name$n]: 'fire-core-compat',\r\n [name$l]: 'fire-analytics',\r\n [name$m]: 'fire-analytics-compat',\r\n [name$j]: 'fire-app-check',\r\n [name$k]: 'fire-app-check-compat',\r\n [name$i]: 'fire-auth',\r\n [name$h]: 'fire-auth-compat',\r\n [name$g]: 'fire-rtdb',\r\n [name$f]: 'fire-rtdb-compat',\r\n [name$e]: 'fire-fn',\r\n [name$d]: 'fire-fn-compat',\r\n [name$c]: 'fire-iid',\r\n [name$b]: 'fire-iid-compat',\r\n [name$a]: 'fire-fcm',\r\n [name$9]: 'fire-fcm-compat',\r\n [name$8]: 'fire-perf',\r\n [name$7]: 'fire-perf-compat',\r\n [name$6]: 'fire-rc',\r\n [name$5]: 'fire-rc-compat',\r\n [name$4]: 'fire-gcs',\r\n [name$3]: 'fire-gcs-compat',\r\n [name$2]: 'fire-fst',\r\n [name$1]: 'fire-fst-compat',\r\n 'fire-js': 'fire-js',\r\n [name]: 'fire-js-all'\r\n};\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @internal\r\n */\r\nconst _apps = new Map();\r\n/**\r\n * Registered components.\r\n *\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst _components = new Map();\r\n/**\r\n * @param component - the component being added to this app's container\r\n *\r\n * @internal\r\n */\r\nfunction _addComponent(app, component) {\r\n try {\r\n app.container.addComponent(component);\r\n }\r\n catch (e) {\r\n logger.debug(`Component ${component.name} failed to register with FirebaseApp ${app.name}`, e);\r\n }\r\n}\r\n/**\r\n *\r\n * @internal\r\n */\r\nfunction _addOrOverwriteComponent(app, component) {\r\n app.container.addOrOverwriteComponent(component);\r\n}\r\n/**\r\n *\r\n * @param component - the component to register\r\n * @returns whether or not the component is registered successfully\r\n *\r\n * @internal\r\n */\r\nfunction _registerComponent(component) {\r\n const componentName = component.name;\r\n if (_components.has(componentName)) {\r\n logger.debug(`There were multiple attempts to register component ${componentName}.`);\r\n return false;\r\n }\r\n _components.set(componentName, component);\r\n // add the component to existing app instances\r\n for (const app of _apps.values()) {\r\n _addComponent(app, component);\r\n }\r\n return true;\r\n}\r\n/**\r\n *\r\n * @param app - FirebaseApp instance\r\n * @param name - service name\r\n *\r\n * @returns the provider for the service with the matching name\r\n *\r\n * @internal\r\n */\r\nfunction _getProvider(app, name) {\r\n const heartbeatController = app.container\r\n .getProvider('heartbeat')\r\n .getImmediate({ optional: true });\r\n if (heartbeatController) {\r\n void heartbeatController.triggerHeartbeat();\r\n }\r\n return app.container.getProvider(name);\r\n}\r\n/**\r\n *\r\n * @param app - FirebaseApp instance\r\n * @param name - service name\r\n * @param instanceIdentifier - service instance identifier in case the service supports multiple instances\r\n *\r\n * @internal\r\n */\r\nfunction _removeServiceInstance(app, name, instanceIdentifier = DEFAULT_ENTRY_NAME) {\r\n _getProvider(app, name).clearInstance(instanceIdentifier);\r\n}\r\n/**\r\n * Test only\r\n *\r\n * @internal\r\n */\r\nfunction _clearComponents() {\r\n _components.clear();\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst ERRORS = {\r\n [\"no-app\" /* NO_APP */]: \"No Firebase App '{$appName}' has been created - \" +\r\n 'call Firebase App.initializeApp()',\r\n [\"bad-app-name\" /* BAD_APP_NAME */]: \"Illegal App name: '{$appName}\",\r\n [\"duplicate-app\" /* DUPLICATE_APP */]: \"Firebase App named '{$appName}' already exists with different options or config\",\r\n [\"app-deleted\" /* APP_DELETED */]: \"Firebase App named '{$appName}' already deleted\",\r\n [\"invalid-app-argument\" /* INVALID_APP_ARGUMENT */]: 'firebase.{$appName}() takes either no argument or a ' +\r\n 'Firebase App instance.',\r\n [\"invalid-log-argument\" /* INVALID_LOG_ARGUMENT */]: 'First argument to `onLog` must be null or a function.',\r\n [\"storage-open\" /* STORAGE_OPEN */]: 'Error thrown when opening storage. Original error: {$originalErrorMessage}.',\r\n [\"storage-get\" /* STORAGE_GET */]: 'Error thrown when reading from storage. Original error: {$originalErrorMessage}.',\r\n [\"storage-set\" /* STORAGE_WRITE */]: 'Error thrown when writing to storage. Original error: {$originalErrorMessage}.',\r\n [\"storage-delete\" /* STORAGE_DELETE */]: 'Error thrown when deleting from storage. Original error: {$originalErrorMessage}.'\r\n};\r\nconst ERROR_FACTORY = new ErrorFactory('app', 'Firebase', ERRORS);\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass FirebaseAppImpl {\r\n constructor(options, config, container) {\r\n this._isDeleted = false;\r\n this._options = Object.assign({}, options);\r\n this._config = Object.assign({}, config);\r\n this._name = config.name;\r\n this._automaticDataCollectionEnabled =\r\n config.automaticDataCollectionEnabled;\r\n this._container = container;\r\n this.container.addComponent(new Component('app', () => this, \"PUBLIC\" /* PUBLIC */));\r\n }\r\n get automaticDataCollectionEnabled() {\r\n this.checkDestroyed();\r\n return this._automaticDataCollectionEnabled;\r\n }\r\n set automaticDataCollectionEnabled(val) {\r\n this.checkDestroyed();\r\n this._automaticDataCollectionEnabled = val;\r\n }\r\n get name() {\r\n this.checkDestroyed();\r\n return this._name;\r\n }\r\n get options() {\r\n this.checkDestroyed();\r\n return this._options;\r\n }\r\n get config() {\r\n this.checkDestroyed();\r\n return this._config;\r\n }\r\n get container() {\r\n return this._container;\r\n }\r\n get isDeleted() {\r\n return this._isDeleted;\r\n }\r\n set isDeleted(val) {\r\n this._isDeleted = val;\r\n }\r\n /**\r\n * This function will throw an Error if the App has already been deleted -\r\n * use before performing API actions on the App.\r\n */\r\n checkDestroyed() {\r\n if (this.isDeleted) {\r\n throw ERROR_FACTORY.create(\"app-deleted\" /* APP_DELETED */, { appName: this._name });\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * The current SDK version.\r\n *\r\n * @public\r\n */\r\nconst SDK_VERSION = version;\r\nfunction initializeApp(options, rawConfig = {}) {\r\n if (typeof rawConfig !== 'object') {\r\n const name = rawConfig;\r\n rawConfig = { name };\r\n }\r\n const config = Object.assign({ name: DEFAULT_ENTRY_NAME, automaticDataCollectionEnabled: false }, rawConfig);\r\n const name = config.name;\r\n if (typeof name !== 'string' || !name) {\r\n throw ERROR_FACTORY.create(\"bad-app-name\" /* BAD_APP_NAME */, {\r\n appName: String(name)\r\n });\r\n }\r\n const existingApp = _apps.get(name);\r\n if (existingApp) {\r\n // return the existing app if options and config deep equal the ones in the existing app.\r\n if (deepEqual(options, existingApp.options) &&\r\n deepEqual(config, existingApp.config)) {\r\n return existingApp;\r\n }\r\n else {\r\n throw ERROR_FACTORY.create(\"duplicate-app\" /* DUPLICATE_APP */, { appName: name });\r\n }\r\n }\r\n const container = new ComponentContainer(name);\r\n for (const component of _components.values()) {\r\n container.addComponent(component);\r\n }\r\n const newApp = new FirebaseAppImpl(options, config, container);\r\n _apps.set(name, newApp);\r\n return newApp;\r\n}\r\n/**\r\n * Retrieves a {@link @firebase/app#FirebaseApp} instance.\r\n *\r\n * When called with no arguments, the default app is returned. When an app name\r\n * is provided, the app corresponding to that name is returned.\r\n *\r\n * An exception is thrown if the app being retrieved has not yet been\r\n * initialized.\r\n *\r\n * @example\r\n * ```javascript\r\n * // Return the default app\r\n * const app = getApp();\r\n * ```\r\n *\r\n * @example\r\n * ```javascript\r\n * // Return a named app\r\n * const otherApp = getApp(\"otherApp\");\r\n * ```\r\n *\r\n * @param name - Optional name of the app to return. If no name is\r\n * provided, the default is `\"[DEFAULT]\"`.\r\n *\r\n * @returns The app corresponding to the provided app name.\r\n * If no app name is provided, the default app is returned.\r\n *\r\n * @public\r\n */\r\nfunction getApp(name = DEFAULT_ENTRY_NAME) {\r\n const app = _apps.get(name);\r\n if (!app) {\r\n throw ERROR_FACTORY.create(\"no-app\" /* NO_APP */, { appName: name });\r\n }\r\n return app;\r\n}\r\n/**\r\n * A (read-only) array of all initialized apps.\r\n * @public\r\n */\r\nfunction getApps() {\r\n return Array.from(_apps.values());\r\n}\r\n/**\r\n * Renders this app unusable and frees the resources of all associated\r\n * services.\r\n *\r\n * @example\r\n * ```javascript\r\n * deleteApp(app)\r\n * .then(function() {\r\n * console.log(\"App deleted successfully\");\r\n * })\r\n * .catch(function(error) {\r\n * console.log(\"Error deleting app:\", error);\r\n * });\r\n * ```\r\n *\r\n * @public\r\n */\r\nasync function deleteApp(app) {\r\n const name = app.name;\r\n if (_apps.has(name)) {\r\n _apps.delete(name);\r\n await Promise.all(app.container\r\n .getProviders()\r\n .map(provider => provider.delete()));\r\n app.isDeleted = true;\r\n }\r\n}\r\n/**\r\n * Registers a library's name and version for platform logging purposes.\r\n * @param library - Name of 1p or 3p library (e.g. firestore, angularfire)\r\n * @param version - Current version of that library.\r\n * @param variant - Bundle variant, e.g., node, rn, etc.\r\n *\r\n * @public\r\n */\r\nfunction registerVersion(libraryKeyOrName, version, variant) {\r\n var _a;\r\n // TODO: We can use this check to whitelist strings when/if we set up\r\n // a good whitelist system.\r\n let library = (_a = PLATFORM_LOG_STRING[libraryKeyOrName]) !== null && _a !== void 0 ? _a : libraryKeyOrName;\r\n if (variant) {\r\n library += `-${variant}`;\r\n }\r\n const libraryMismatch = library.match(/\\s|\\//);\r\n const versionMismatch = version.match(/\\s|\\//);\r\n if (libraryMismatch || versionMismatch) {\r\n const warning = [\r\n `Unable to register library \"${library}\" with version \"${version}\":`\r\n ];\r\n if (libraryMismatch) {\r\n warning.push(`library name \"${library}\" contains illegal characters (whitespace or \"/\")`);\r\n }\r\n if (libraryMismatch && versionMismatch) {\r\n warning.push('and');\r\n }\r\n if (versionMismatch) {\r\n warning.push(`version name \"${version}\" contains illegal characters (whitespace or \"/\")`);\r\n }\r\n logger.warn(warning.join(' '));\r\n return;\r\n }\r\n _registerComponent(new Component(`${library}-version`, () => ({ library, version }), \"VERSION\" /* VERSION */));\r\n}\r\n/**\r\n * Sets log handler for all Firebase SDKs.\r\n * @param logCallback - An optional custom log handler that executes user code whenever\r\n * the Firebase SDK makes a logging call.\r\n *\r\n * @public\r\n */\r\nfunction onLog(logCallback, options) {\r\n if (logCallback !== null && typeof logCallback !== 'function') {\r\n throw ERROR_FACTORY.create(\"invalid-log-argument\" /* INVALID_LOG_ARGUMENT */);\r\n }\r\n setUserLogHandler(logCallback, options);\r\n}\r\n/**\r\n * Sets log level for all Firebase SDKs.\r\n *\r\n * All of the log types above the current log level are captured (i.e. if\r\n * you set the log level to `info`, errors are logged, but `debug` and\r\n * `verbose` logs are not).\r\n *\r\n * @public\r\n */\r\nfunction setLogLevel(logLevel) {\r\n setLogLevel$1(logLevel);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst DB_NAME = 'firebase-heartbeat-database';\r\nconst DB_VERSION = 1;\r\nconst STORE_NAME = 'firebase-heartbeat-store';\r\nlet dbPromise = null;\r\nfunction getDbPromise() {\r\n if (!dbPromise) {\r\n dbPromise = openDB(DB_NAME, DB_VERSION, (db, oldVersion) => {\r\n // We don't use 'break' in this switch statement, the fall-through\r\n // behavior is what we want, because if there are multiple versions between\r\n // the old version and the current version, we want ALL the migrations\r\n // that correspond to those versions to run, not only the last one.\r\n // eslint-disable-next-line default-case\r\n switch (oldVersion) {\r\n case 0:\r\n db.createObjectStore(STORE_NAME);\r\n }\r\n }).catch(e => {\r\n throw ERROR_FACTORY.create(\"storage-open\" /* STORAGE_OPEN */, {\r\n originalErrorMessage: e.message\r\n });\r\n });\r\n }\r\n return dbPromise;\r\n}\r\nasync function readHeartbeatsFromIndexedDB(app) {\r\n try {\r\n const db = await getDbPromise();\r\n return db\r\n .transaction(STORE_NAME)\r\n .objectStore(STORE_NAME)\r\n .get(computeKey(app));\r\n }\r\n catch (e) {\r\n throw ERROR_FACTORY.create(\"storage-get\" /* STORAGE_GET */, {\r\n originalErrorMessage: e.message\r\n });\r\n }\r\n}\r\nasync function writeHeartbeatsToIndexedDB(app, heartbeatObject) {\r\n try {\r\n const db = await getDbPromise();\r\n const tx = db.transaction(STORE_NAME, 'readwrite');\r\n const objectStore = tx.objectStore(STORE_NAME);\r\n await objectStore.put(heartbeatObject, computeKey(app));\r\n return tx.complete;\r\n }\r\n catch (e) {\r\n throw ERROR_FACTORY.create(\"storage-set\" /* STORAGE_WRITE */, {\r\n originalErrorMessage: e.message\r\n });\r\n }\r\n}\r\nfunction computeKey(app) {\r\n return `${app.name}!${app.options.appId}`;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst MAX_HEADER_BYTES = 1024;\r\n// 30 days\r\nconst STORED_HEARTBEAT_RETENTION_MAX_MILLIS = 30 * 24 * 60 * 60 * 1000;\r\nclass HeartbeatServiceImpl {\r\n constructor(container) {\r\n this.container = container;\r\n /**\r\n * In-memory cache for heartbeats, used by getHeartbeatsHeader() to generate\r\n * the header string.\r\n * Stores one record per date. This will be consolidated into the standard\r\n * format of one record per user agent string before being sent as a header.\r\n * Populated from indexedDB when the controller is instantiated and should\r\n * be kept in sync with indexedDB.\r\n * Leave public for easier testing.\r\n */\r\n this._heartbeatsCache = null;\r\n const app = this.container.getProvider('app').getImmediate();\r\n this._storage = new HeartbeatStorageImpl(app);\r\n this._heartbeatsCachePromise = this._storage.read().then(result => {\r\n this._heartbeatsCache = result;\r\n return result;\r\n });\r\n }\r\n /**\r\n * Called to report a heartbeat. The function will generate\r\n * a HeartbeatsByUserAgent object, update heartbeatsCache, and persist it\r\n * to IndexedDB.\r\n * Note that we only store one heartbeat per day. So if a heartbeat for today is\r\n * already logged, subsequent calls to this function in the same day will be ignored.\r\n */\r\n async triggerHeartbeat() {\r\n const platformLogger = this.container\r\n .getProvider('platform-logger')\r\n .getImmediate();\r\n // This is the \"Firebase user agent\" string from the platform logger\r\n // service, not the browser user agent.\r\n const agent = platformLogger.getPlatformInfoString();\r\n const date = getUTCDateString();\r\n if (this._heartbeatsCache === null) {\r\n this._heartbeatsCache = await this._heartbeatsCachePromise;\r\n }\r\n // Do not store a heartbeat if one is already stored for this day\r\n // or if a header has already been sent today.\r\n if (this._heartbeatsCache.lastSentHeartbeatDate === date ||\r\n this._heartbeatsCache.heartbeats.some(singleDateHeartbeat => singleDateHeartbeat.date === date)) {\r\n return;\r\n }\r\n else {\r\n // There is no entry for this date. Create one.\r\n this._heartbeatsCache.heartbeats.push({ date, agent });\r\n }\r\n // Remove entries older than 30 days.\r\n this._heartbeatsCache.heartbeats = this._heartbeatsCache.heartbeats.filter(singleDateHeartbeat => {\r\n const hbTimestamp = new Date(singleDateHeartbeat.date).valueOf();\r\n const now = Date.now();\r\n return now - hbTimestamp <= STORED_HEARTBEAT_RETENTION_MAX_MILLIS;\r\n });\r\n return this._storage.overwrite(this._heartbeatsCache);\r\n }\r\n /**\r\n * Returns a base64 encoded string which can be attached to the heartbeat-specific header directly.\r\n * It also clears all heartbeats from memory as well as in IndexedDB.\r\n *\r\n * NOTE: Consuming product SDKs should not send the header if this method\r\n * returns an empty string.\r\n */\r\n async getHeartbeatsHeader() {\r\n if (this._heartbeatsCache === null) {\r\n await this._heartbeatsCachePromise;\r\n }\r\n // If it's still null or the array is empty, there is no data to send.\r\n if (this._heartbeatsCache === null ||\r\n this._heartbeatsCache.heartbeats.length === 0) {\r\n return '';\r\n }\r\n const date = getUTCDateString();\r\n // Extract as many heartbeats from the cache as will fit under the size limit.\r\n const { heartbeatsToSend, unsentEntries } = extractHeartbeatsForHeader(this._heartbeatsCache.heartbeats);\r\n const headerString = base64urlEncodeWithoutPadding(JSON.stringify({ version: 2, heartbeats: heartbeatsToSend }));\r\n // Store last sent date to prevent another being logged/sent for the same day.\r\n this._heartbeatsCache.lastSentHeartbeatDate = date;\r\n if (unsentEntries.length > 0) {\r\n // Store any unsent entries if they exist.\r\n this._heartbeatsCache.heartbeats = unsentEntries;\r\n // This seems more likely than emptying the array (below) to lead to some odd state\r\n // since the cache isn't empty and this will be called again on the next request,\r\n // and is probably safest if we await it.\r\n await this._storage.overwrite(this._heartbeatsCache);\r\n }\r\n else {\r\n this._heartbeatsCache.heartbeats = [];\r\n // Do not wait for this, to reduce latency.\r\n void this._storage.overwrite(this._heartbeatsCache);\r\n }\r\n return headerString;\r\n }\r\n}\r\nfunction getUTCDateString() {\r\n const today = new Date();\r\n // Returns date format 'YYYY-MM-DD'\r\n return today.toISOString().substring(0, 10);\r\n}\r\nfunction extractHeartbeatsForHeader(heartbeatsCache, maxSize = MAX_HEADER_BYTES) {\r\n // Heartbeats grouped by user agent in the standard format to be sent in\r\n // the header.\r\n const heartbeatsToSend = [];\r\n // Single date format heartbeats that are not sent.\r\n let unsentEntries = heartbeatsCache.slice();\r\n for (const singleDateHeartbeat of heartbeatsCache) {\r\n // Look for an existing entry with the same user agent.\r\n const heartbeatEntry = heartbeatsToSend.find(hb => hb.agent === singleDateHeartbeat.agent);\r\n if (!heartbeatEntry) {\r\n // If no entry for this user agent exists, create one.\r\n heartbeatsToSend.push({\r\n agent: singleDateHeartbeat.agent,\r\n dates: [singleDateHeartbeat.date]\r\n });\r\n if (countBytes(heartbeatsToSend) > maxSize) {\r\n // If the header would exceed max size, remove the added heartbeat\r\n // entry and stop adding to the header.\r\n heartbeatsToSend.pop();\r\n break;\r\n }\r\n }\r\n else {\r\n heartbeatEntry.dates.push(singleDateHeartbeat.date);\r\n // If the header would exceed max size, remove the added date\r\n // and stop adding to the header.\r\n if (countBytes(heartbeatsToSend) > maxSize) {\r\n heartbeatEntry.dates.pop();\r\n break;\r\n }\r\n }\r\n // Pop unsent entry from queue. (Skipped if adding the entry exceeded\r\n // quota and the loop breaks early.)\r\n unsentEntries = unsentEntries.slice(1);\r\n }\r\n return {\r\n heartbeatsToSend,\r\n unsentEntries\r\n };\r\n}\r\nclass HeartbeatStorageImpl {\r\n constructor(app) {\r\n this.app = app;\r\n this._canUseIndexedDBPromise = this.runIndexedDBEnvironmentCheck();\r\n }\r\n async runIndexedDBEnvironmentCheck() {\r\n if (!isIndexedDBAvailable()) {\r\n return false;\r\n }\r\n else {\r\n return validateIndexedDBOpenable()\r\n .then(() => true)\r\n .catch(() => false);\r\n }\r\n }\r\n /**\r\n * Read all heartbeats.\r\n */\r\n async read() {\r\n const canUseIndexedDB = await this._canUseIndexedDBPromise;\r\n if (!canUseIndexedDB) {\r\n return { heartbeats: [] };\r\n }\r\n else {\r\n const idbHeartbeatObject = await readHeartbeatsFromIndexedDB(this.app);\r\n return idbHeartbeatObject || { heartbeats: [] };\r\n }\r\n }\r\n // overwrite the storage with the provided heartbeats\r\n async overwrite(heartbeatsObject) {\r\n var _a;\r\n const canUseIndexedDB = await this._canUseIndexedDBPromise;\r\n if (!canUseIndexedDB) {\r\n return;\r\n }\r\n else {\r\n const existingHeartbeatsObject = await this.read();\r\n return writeHeartbeatsToIndexedDB(this.app, {\r\n lastSentHeartbeatDate: (_a = heartbeatsObject.lastSentHeartbeatDate) !== null && _a !== void 0 ? _a : existingHeartbeatsObject.lastSentHeartbeatDate,\r\n heartbeats: heartbeatsObject.heartbeats\r\n });\r\n }\r\n }\r\n // add heartbeats\r\n async add(heartbeatsObject) {\r\n var _a;\r\n const canUseIndexedDB = await this._canUseIndexedDBPromise;\r\n if (!canUseIndexedDB) {\r\n return;\r\n }\r\n else {\r\n const existingHeartbeatsObject = await this.read();\r\n return writeHeartbeatsToIndexedDB(this.app, {\r\n lastSentHeartbeatDate: (_a = heartbeatsObject.lastSentHeartbeatDate) !== null && _a !== void 0 ? _a : existingHeartbeatsObject.lastSentHeartbeatDate,\r\n heartbeats: [\r\n ...existingHeartbeatsObject.heartbeats,\r\n ...heartbeatsObject.heartbeats\r\n ]\r\n });\r\n }\r\n }\r\n}\r\n/**\r\n * Calculate bytes of a HeartbeatsByUserAgent array after being wrapped\r\n * in a platform logging header JSON object, stringified, and converted\r\n * to base 64.\r\n */\r\nfunction countBytes(heartbeatsCache) {\r\n // base64 has a restricted set of characters, all of which should be 1 byte.\r\n return base64urlEncodeWithoutPadding(\r\n // heartbeatsCache wrapper properties\r\n JSON.stringify({ version: 2, heartbeats: heartbeatsCache })).length;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction registerCoreComponents(variant) {\r\n _registerComponent(new Component('platform-logger', container => new PlatformLoggerServiceImpl(container), \"PRIVATE\" /* PRIVATE */));\r\n _registerComponent(new Component('heartbeat', container => new HeartbeatServiceImpl(container), \"PRIVATE\" /* PRIVATE */));\r\n // Register `app` package.\r\n registerVersion(name$o, version$1, variant);\r\n // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\r\n registerVersion(name$o, version$1, 'esm2017');\r\n // Register platform SDK identifier (no version).\r\n registerVersion('fire-js', '');\r\n}\n\n/**\r\n * Firebase App\r\n *\r\n * @remarks This package coordinates the communication between the different Firebase components\r\n * @packageDocumentation\r\n */\r\nregisterCoreComponents('');\n\nexport { SDK_VERSION, DEFAULT_ENTRY_NAME as _DEFAULT_ENTRY_NAME, _addComponent, _addOrOverwriteComponent, _apps, _clearComponents, _components, _getProvider, _registerComponent, _removeServiceInstance, deleteApp, getApp, getApps, initializeApp, onLog, registerVersion, setLogLevel };\n//# sourceMappingURL=index.esm2017.js.map\n","import { Deferred } from '@firebase/util';\n\n/**\r\n * Component for service name T, e.g. `auth`, `auth-internal`\r\n */\r\nclass Component {\r\n /**\r\n *\r\n * @param name The public service name, e.g. app, auth, firestore, database\r\n * @param instanceFactory Service factory responsible for creating the public interface\r\n * @param type whether the service provided by the component is public or private\r\n */\r\n constructor(name, instanceFactory, type) {\r\n this.name = name;\r\n this.instanceFactory = instanceFactory;\r\n this.type = type;\r\n this.multipleInstances = false;\r\n /**\r\n * Properties to be added to the service namespace\r\n */\r\n this.serviceProps = {};\r\n this.instantiationMode = \"LAZY\" /* LAZY */;\r\n this.onInstanceCreated = null;\r\n }\r\n setInstantiationMode(mode) {\r\n this.instantiationMode = mode;\r\n return this;\r\n }\r\n setMultipleInstances(multipleInstances) {\r\n this.multipleInstances = multipleInstances;\r\n return this;\r\n }\r\n setServiceProps(props) {\r\n this.serviceProps = props;\r\n return this;\r\n }\r\n setInstanceCreatedCallback(callback) {\r\n this.onInstanceCreated = callback;\r\n return this;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst DEFAULT_ENTRY_NAME = '[DEFAULT]';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Provider for instance for service name T, e.g. 'auth', 'auth-internal'\r\n * NameServiceMapping[T] is an alias for the type of the instance\r\n */\r\nclass Provider {\r\n constructor(name, container) {\r\n this.name = name;\r\n this.container = container;\r\n this.component = null;\r\n this.instances = new Map();\r\n this.instancesDeferred = new Map();\r\n this.instancesOptions = new Map();\r\n this.onInitCallbacks = new Map();\r\n }\r\n /**\r\n * @param identifier A provider can provide mulitple instances of a service\r\n * if this.component.multipleInstances is true.\r\n */\r\n get(identifier) {\r\n // if multipleInstances is not supported, use the default name\r\n const normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\r\n if (!this.instancesDeferred.has(normalizedIdentifier)) {\r\n const deferred = new Deferred();\r\n this.instancesDeferred.set(normalizedIdentifier, deferred);\r\n if (this.isInitialized(normalizedIdentifier) ||\r\n this.shouldAutoInitialize()) {\r\n // initialize the service if it can be auto-initialized\r\n try {\r\n const instance = this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier\r\n });\r\n if (instance) {\r\n deferred.resolve(instance);\r\n }\r\n }\r\n catch (e) {\r\n // when the instance factory throws an exception during get(), it should not cause\r\n // a fatal error. We just return the unresolved promise in this case.\r\n }\r\n }\r\n }\r\n return this.instancesDeferred.get(normalizedIdentifier).promise;\r\n }\r\n getImmediate(options) {\r\n var _a;\r\n // if multipleInstances is not supported, use the default name\r\n const normalizedIdentifier = this.normalizeInstanceIdentifier(options === null || options === void 0 ? void 0 : options.identifier);\r\n const optional = (_a = options === null || options === void 0 ? void 0 : options.optional) !== null && _a !== void 0 ? _a : false;\r\n if (this.isInitialized(normalizedIdentifier) ||\r\n this.shouldAutoInitialize()) {\r\n try {\r\n return this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier\r\n });\r\n }\r\n catch (e) {\r\n if (optional) {\r\n return null;\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n }\r\n else {\r\n // In case a component is not initialized and should/can not be auto-initialized at the moment, return null if the optional flag is set, or throw\r\n if (optional) {\r\n return null;\r\n }\r\n else {\r\n throw Error(`Service ${this.name} is not available`);\r\n }\r\n }\r\n }\r\n getComponent() {\r\n return this.component;\r\n }\r\n setComponent(component) {\r\n if (component.name !== this.name) {\r\n throw Error(`Mismatching Component ${component.name} for Provider ${this.name}.`);\r\n }\r\n if (this.component) {\r\n throw Error(`Component for ${this.name} has already been provided`);\r\n }\r\n this.component = component;\r\n // return early without attempting to initialize the component if the component requires explicit initialization (calling `Provider.initialize()`)\r\n if (!this.shouldAutoInitialize()) {\r\n return;\r\n }\r\n // if the service is eager, initialize the default instance\r\n if (isComponentEager(component)) {\r\n try {\r\n this.getOrInitializeService({ instanceIdentifier: DEFAULT_ENTRY_NAME });\r\n }\r\n catch (e) {\r\n // when the instance factory for an eager Component throws an exception during the eager\r\n // initialization, it should not cause a fatal error.\r\n // TODO: Investigate if we need to make it configurable, because some component may want to cause\r\n // a fatal error in this case?\r\n }\r\n }\r\n // Create service instances for the pending promises and resolve them\r\n // NOTE: if this.multipleInstances is false, only the default instance will be created\r\n // and all promises with resolve with it regardless of the identifier.\r\n for (const [instanceIdentifier, instanceDeferred] of this.instancesDeferred.entries()) {\r\n const normalizedIdentifier = this.normalizeInstanceIdentifier(instanceIdentifier);\r\n try {\r\n // `getOrInitializeService()` should always return a valid instance since a component is guaranteed. use ! to make typescript happy.\r\n const instance = this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier\r\n });\r\n instanceDeferred.resolve(instance);\r\n }\r\n catch (e) {\r\n // when the instance factory throws an exception, it should not cause\r\n // a fatal error. We just leave the promise unresolved.\r\n }\r\n }\r\n }\r\n clearInstance(identifier = DEFAULT_ENTRY_NAME) {\r\n this.instancesDeferred.delete(identifier);\r\n this.instancesOptions.delete(identifier);\r\n this.instances.delete(identifier);\r\n }\r\n // app.delete() will call this method on every provider to delete the services\r\n // TODO: should we mark the provider as deleted?\r\n async delete() {\r\n const services = Array.from(this.instances.values());\r\n await Promise.all([\r\n ...services\r\n .filter(service => 'INTERNAL' in service) // legacy services\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .map(service => service.INTERNAL.delete()),\r\n ...services\r\n .filter(service => '_delete' in service) // modularized services\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .map(service => service._delete())\r\n ]);\r\n }\r\n isComponentSet() {\r\n return this.component != null;\r\n }\r\n isInitialized(identifier = DEFAULT_ENTRY_NAME) {\r\n return this.instances.has(identifier);\r\n }\r\n getOptions(identifier = DEFAULT_ENTRY_NAME) {\r\n return this.instancesOptions.get(identifier) || {};\r\n }\r\n initialize(opts = {}) {\r\n const { options = {} } = opts;\r\n const normalizedIdentifier = this.normalizeInstanceIdentifier(opts.instanceIdentifier);\r\n if (this.isInitialized(normalizedIdentifier)) {\r\n throw Error(`${this.name}(${normalizedIdentifier}) has already been initialized`);\r\n }\r\n if (!this.isComponentSet()) {\r\n throw Error(`Component ${this.name} has not been registered yet`);\r\n }\r\n const instance = this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier,\r\n options\r\n });\r\n // resolve any pending promise waiting for the service instance\r\n for (const [instanceIdentifier, instanceDeferred] of this.instancesDeferred.entries()) {\r\n const normalizedDeferredIdentifier = this.normalizeInstanceIdentifier(instanceIdentifier);\r\n if (normalizedIdentifier === normalizedDeferredIdentifier) {\r\n instanceDeferred.resolve(instance);\r\n }\r\n }\r\n return instance;\r\n }\r\n /**\r\n *\r\n * @param callback - a function that will be invoked after the provider has been initialized by calling provider.initialize().\r\n * The function is invoked SYNCHRONOUSLY, so it should not execute any longrunning tasks in order to not block the program.\r\n *\r\n * @param identifier An optional instance identifier\r\n * @returns a function to unregister the callback\r\n */\r\n onInit(callback, identifier) {\r\n var _a;\r\n const normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\r\n const existingCallbacks = (_a = this.onInitCallbacks.get(normalizedIdentifier)) !== null && _a !== void 0 ? _a : new Set();\r\n existingCallbacks.add(callback);\r\n this.onInitCallbacks.set(normalizedIdentifier, existingCallbacks);\r\n const existingInstance = this.instances.get(normalizedIdentifier);\r\n if (existingInstance) {\r\n callback(existingInstance, normalizedIdentifier);\r\n }\r\n return () => {\r\n existingCallbacks.delete(callback);\r\n };\r\n }\r\n /**\r\n * Invoke onInit callbacks synchronously\r\n * @param instance the service instance`\r\n */\r\n invokeOnInitCallbacks(instance, identifier) {\r\n const callbacks = this.onInitCallbacks.get(identifier);\r\n if (!callbacks) {\r\n return;\r\n }\r\n for (const callback of callbacks) {\r\n try {\r\n callback(instance, identifier);\r\n }\r\n catch (_a) {\r\n // ignore errors in the onInit callback\r\n }\r\n }\r\n }\r\n getOrInitializeService({ instanceIdentifier, options = {} }) {\r\n let instance = this.instances.get(instanceIdentifier);\r\n if (!instance && this.component) {\r\n instance = this.component.instanceFactory(this.container, {\r\n instanceIdentifier: normalizeIdentifierForFactory(instanceIdentifier),\r\n options\r\n });\r\n this.instances.set(instanceIdentifier, instance);\r\n this.instancesOptions.set(instanceIdentifier, options);\r\n /**\r\n * Invoke onInit listeners.\r\n * Note this.component.onInstanceCreated is different, which is used by the component creator,\r\n * while onInit listeners are registered by consumers of the provider.\r\n */\r\n this.invokeOnInitCallbacks(instance, instanceIdentifier);\r\n /**\r\n * Order is important\r\n * onInstanceCreated() should be called after this.instances.set(instanceIdentifier, instance); which\r\n * makes `isInitialized()` return true.\r\n */\r\n if (this.component.onInstanceCreated) {\r\n try {\r\n this.component.onInstanceCreated(this.container, instanceIdentifier, instance);\r\n }\r\n catch (_a) {\r\n // ignore errors in the onInstanceCreatedCallback\r\n }\r\n }\r\n }\r\n return instance || null;\r\n }\r\n normalizeInstanceIdentifier(identifier = DEFAULT_ENTRY_NAME) {\r\n if (this.component) {\r\n return this.component.multipleInstances ? identifier : DEFAULT_ENTRY_NAME;\r\n }\r\n else {\r\n return identifier; // assume multiple instances are supported before the component is provided.\r\n }\r\n }\r\n shouldAutoInitialize() {\r\n return (!!this.component &&\r\n this.component.instantiationMode !== \"EXPLICIT\" /* EXPLICIT */);\r\n }\r\n}\r\n// undefined should be passed to the service factory for the default instance\r\nfunction normalizeIdentifierForFactory(identifier) {\r\n return identifier === DEFAULT_ENTRY_NAME ? undefined : identifier;\r\n}\r\nfunction isComponentEager(component) {\r\n return component.instantiationMode === \"EAGER\" /* EAGER */;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * ComponentContainer that provides Providers for service name T, e.g. `auth`, `auth-internal`\r\n */\r\nclass ComponentContainer {\r\n constructor(name) {\r\n this.name = name;\r\n this.providers = new Map();\r\n }\r\n /**\r\n *\r\n * @param component Component being added\r\n * @param overwrite When a component with the same name has already been registered,\r\n * if overwrite is true: overwrite the existing component with the new component and create a new\r\n * provider with the new component. It can be useful in tests where you want to use different mocks\r\n * for different tests.\r\n * if overwrite is false: throw an exception\r\n */\r\n addComponent(component) {\r\n const provider = this.getProvider(component.name);\r\n if (provider.isComponentSet()) {\r\n throw new Error(`Component ${component.name} has already been registered with ${this.name}`);\r\n }\r\n provider.setComponent(component);\r\n }\r\n addOrOverwriteComponent(component) {\r\n const provider = this.getProvider(component.name);\r\n if (provider.isComponentSet()) {\r\n // delete the existing provider from the container, so we can register the new component\r\n this.providers.delete(component.name);\r\n }\r\n this.addComponent(component);\r\n }\r\n /**\r\n * getProvider provides a type safe interface where it can only be called with a field name\r\n * present in NameServiceMapping interface.\r\n *\r\n * Firebase SDKs providing services should extend NameServiceMapping interface to register\r\n * themselves.\r\n */\r\n getProvider(name) {\r\n if (this.providers.has(name)) {\r\n return this.providers.get(name);\r\n }\r\n // create a Provider for a service that hasn't registered with Firebase\r\n const provider = new Provider(name, this);\r\n this.providers.set(name, provider);\r\n return provider;\r\n }\r\n getProviders() {\r\n return Array.from(this.providers.values());\r\n }\r\n}\n\nexport { Component, ComponentContainer, Provider };\n//# sourceMappingURL=index.esm2017.js.map\n","import { getApp, _getProvider, _registerComponent, registerVersion } from '@firebase/app';\nimport { Component } from '@firebase/component';\nimport { ErrorFactory, FirebaseError, openDB } from '@firebase/util';\n\nconst name = \"@firebase/installations\";\nconst version = \"0.5.8\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst PENDING_TIMEOUT_MS = 10000;\r\nconst PACKAGE_VERSION = `w:${version}`;\r\nconst INTERNAL_AUTH_VERSION = 'FIS_v2';\r\nconst INSTALLATIONS_API_URL = 'https://firebaseinstallations.googleapis.com/v1';\r\nconst TOKEN_EXPIRATION_BUFFER = 60 * 60 * 1000; // One hour\r\nconst SERVICE = 'installations';\r\nconst SERVICE_NAME = 'Installations';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst ERROR_DESCRIPTION_MAP = {\r\n [\"missing-app-config-values\" /* MISSING_APP_CONFIG_VALUES */]: 'Missing App configuration value: \"{$valueName}\"',\r\n [\"not-registered\" /* NOT_REGISTERED */]: 'Firebase Installation is not registered.',\r\n [\"installation-not-found\" /* INSTALLATION_NOT_FOUND */]: 'Firebase Installation not found.',\r\n [\"request-failed\" /* REQUEST_FAILED */]: '{$requestName} request failed with error \"{$serverCode} {$serverStatus}: {$serverMessage}\"',\r\n [\"app-offline\" /* APP_OFFLINE */]: 'Could not process request. Application offline.',\r\n [\"delete-pending-registration\" /* DELETE_PENDING_REGISTRATION */]: \"Can't delete installation while there is a pending registration request.\"\r\n};\r\nconst ERROR_FACTORY = new ErrorFactory(SERVICE, SERVICE_NAME, ERROR_DESCRIPTION_MAP);\r\n/** Returns true if error is a FirebaseError that is based on an error from the server. */\r\nfunction isServerError(error) {\r\n return (error instanceof FirebaseError &&\r\n error.code.includes(\"request-failed\" /* REQUEST_FAILED */));\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getInstallationsEndpoint({ projectId }) {\r\n return `${INSTALLATIONS_API_URL}/projects/${projectId}/installations`;\r\n}\r\nfunction extractAuthTokenInfoFromResponse(response) {\r\n return {\r\n token: response.token,\r\n requestStatus: 2 /* COMPLETED */,\r\n expiresIn: getExpiresInFromResponseExpiresIn(response.expiresIn),\r\n creationTime: Date.now()\r\n };\r\n}\r\nasync function getErrorFromResponse(requestName, response) {\r\n const responseJson = await response.json();\r\n const errorData = responseJson.error;\r\n return ERROR_FACTORY.create(\"request-failed\" /* REQUEST_FAILED */, {\r\n requestName,\r\n serverCode: errorData.code,\r\n serverMessage: errorData.message,\r\n serverStatus: errorData.status\r\n });\r\n}\r\nfunction getHeaders({ apiKey }) {\r\n return new Headers({\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n 'x-goog-api-key': apiKey\r\n });\r\n}\r\nfunction getHeadersWithAuth(appConfig, { refreshToken }) {\r\n const headers = getHeaders(appConfig);\r\n headers.append('Authorization', getAuthorizationHeader(refreshToken));\r\n return headers;\r\n}\r\n/**\r\n * Calls the passed in fetch wrapper and returns the response.\r\n * If the returned response has a status of 5xx, re-runs the function once and\r\n * returns the response.\r\n */\r\nasync function retryIfServerError(fn) {\r\n const result = await fn();\r\n if (result.status >= 500 && result.status < 600) {\r\n // Internal Server Error. Retry request.\r\n return fn();\r\n }\r\n return result;\r\n}\r\nfunction getExpiresInFromResponseExpiresIn(responseExpiresIn) {\r\n // This works because the server will never respond with fractions of a second.\r\n return Number(responseExpiresIn.replace('s', '000'));\r\n}\r\nfunction getAuthorizationHeader(refreshToken) {\r\n return `${INTERNAL_AUTH_VERSION} ${refreshToken}`;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function createInstallationRequest({ appConfig, heartbeatServiceProvider }, { fid }) {\r\n const endpoint = getInstallationsEndpoint(appConfig);\r\n const headers = getHeaders(appConfig);\r\n // If heartbeat service exists, add the heartbeat string to the header.\r\n const heartbeatService = heartbeatServiceProvider.getImmediate({\r\n optional: true\r\n });\r\n if (heartbeatService) {\r\n const heartbeatsHeader = await heartbeatService.getHeartbeatsHeader();\r\n if (heartbeatsHeader) {\r\n headers.append('x-firebase-client', heartbeatsHeader);\r\n }\r\n }\r\n const body = {\r\n fid,\r\n authVersion: INTERNAL_AUTH_VERSION,\r\n appId: appConfig.appId,\r\n sdkVersion: PACKAGE_VERSION\r\n };\r\n const request = {\r\n method: 'POST',\r\n headers,\r\n body: JSON.stringify(body)\r\n };\r\n const response = await retryIfServerError(() => fetch(endpoint, request));\r\n if (response.ok) {\r\n const responseValue = await response.json();\r\n const registeredInstallationEntry = {\r\n fid: responseValue.fid || fid,\r\n registrationStatus: 2 /* COMPLETED */,\r\n refreshToken: responseValue.refreshToken,\r\n authToken: extractAuthTokenInfoFromResponse(responseValue.authToken)\r\n };\r\n return registeredInstallationEntry;\r\n }\r\n else {\r\n throw await getErrorFromResponse('Create Installation', response);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** Returns a promise that resolves after given time passes. */\r\nfunction sleep(ms) {\r\n return new Promise(resolve => {\r\n setTimeout(resolve, ms);\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction bufferToBase64UrlSafe(array) {\r\n const b64 = btoa(String.fromCharCode(...array));\r\n return b64.replace(/\\+/g, '-').replace(/\\//g, '_');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst VALID_FID_PATTERN = /^[cdef][\\w-]{21}$/;\r\nconst INVALID_FID = '';\r\n/**\r\n * Generates a new FID using random values from Web Crypto API.\r\n * Returns an empty string if FID generation fails for any reason.\r\n */\r\nfunction generateFid() {\r\n try {\r\n // A valid FID has exactly 22 base64 characters, which is 132 bits, or 16.5\r\n // bytes. our implementation generates a 17 byte array instead.\r\n const fidByteArray = new Uint8Array(17);\r\n const crypto = self.crypto || self.msCrypto;\r\n crypto.getRandomValues(fidByteArray);\r\n // Replace the first 4 random bits with the constant FID header of 0b0111.\r\n fidByteArray[0] = 0b01110000 + (fidByteArray[0] % 0b00010000);\r\n const fid = encode(fidByteArray);\r\n return VALID_FID_PATTERN.test(fid) ? fid : INVALID_FID;\r\n }\r\n catch (_a) {\r\n // FID generation errored\r\n return INVALID_FID;\r\n }\r\n}\r\n/** Converts a FID Uint8Array to a base64 string representation. */\r\nfunction encode(fidByteArray) {\r\n const b64String = bufferToBase64UrlSafe(fidByteArray);\r\n // Remove the 23rd character that was added because of the extra 4 bits at the\r\n // end of our 17 byte array, and the '=' padding.\r\n return b64String.substr(0, 22);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** Returns a string key that can be used to identify the app. */\r\nfunction getKey(appConfig) {\r\n return `${appConfig.appName}!${appConfig.appId}`;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst fidChangeCallbacks = new Map();\r\n/**\r\n * Calls the onIdChange callbacks with the new FID value, and broadcasts the\r\n * change to other tabs.\r\n */\r\nfunction fidChanged(appConfig, fid) {\r\n const key = getKey(appConfig);\r\n callFidChangeCallbacks(key, fid);\r\n broadcastFidChange(key, fid);\r\n}\r\nfunction addCallback(appConfig, callback) {\r\n // Open the broadcast channel if it's not already open,\r\n // to be able to listen to change events from other tabs.\r\n getBroadcastChannel();\r\n const key = getKey(appConfig);\r\n let callbackSet = fidChangeCallbacks.get(key);\r\n if (!callbackSet) {\r\n callbackSet = new Set();\r\n fidChangeCallbacks.set(key, callbackSet);\r\n }\r\n callbackSet.add(callback);\r\n}\r\nfunction removeCallback(appConfig, callback) {\r\n const key = getKey(appConfig);\r\n const callbackSet = fidChangeCallbacks.get(key);\r\n if (!callbackSet) {\r\n return;\r\n }\r\n callbackSet.delete(callback);\r\n if (callbackSet.size === 0) {\r\n fidChangeCallbacks.delete(key);\r\n }\r\n // Close broadcast channel if there are no more callbacks.\r\n closeBroadcastChannel();\r\n}\r\nfunction callFidChangeCallbacks(key, fid) {\r\n const callbacks = fidChangeCallbacks.get(key);\r\n if (!callbacks) {\r\n return;\r\n }\r\n for (const callback of callbacks) {\r\n callback(fid);\r\n }\r\n}\r\nfunction broadcastFidChange(key, fid) {\r\n const channel = getBroadcastChannel();\r\n if (channel) {\r\n channel.postMessage({ key, fid });\r\n }\r\n closeBroadcastChannel();\r\n}\r\nlet broadcastChannel = null;\r\n/** Opens and returns a BroadcastChannel if it is supported by the browser. */\r\nfunction getBroadcastChannel() {\r\n if (!broadcastChannel && 'BroadcastChannel' in self) {\r\n broadcastChannel = new BroadcastChannel('[Firebase] FID Change');\r\n broadcastChannel.onmessage = e => {\r\n callFidChangeCallbacks(e.data.key, e.data.fid);\r\n };\r\n }\r\n return broadcastChannel;\r\n}\r\nfunction closeBroadcastChannel() {\r\n if (fidChangeCallbacks.size === 0 && broadcastChannel) {\r\n broadcastChannel.close();\r\n broadcastChannel = null;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst DATABASE_NAME = 'firebase-installations-database';\r\nconst DATABASE_VERSION = 1;\r\nconst OBJECT_STORE_NAME = 'firebase-installations-store';\r\nlet dbPromise = null;\r\nfunction getDbPromise() {\r\n if (!dbPromise) {\r\n dbPromise = openDB(DATABASE_NAME, DATABASE_VERSION, (db, oldVersion) => {\r\n // We don't use 'break' in this switch statement, the fall-through\r\n // behavior is what we want, because if there are multiple versions between\r\n // the old version and the current version, we want ALL the migrations\r\n // that correspond to those versions to run, not only the last one.\r\n // eslint-disable-next-line default-case\r\n switch (oldVersion) {\r\n case 0:\r\n db.createObjectStore(OBJECT_STORE_NAME);\r\n }\r\n });\r\n }\r\n return dbPromise;\r\n}\r\n/** Assigns or overwrites the record for the given key with the given value. */\r\nasync function set(appConfig, value) {\r\n const key = getKey(appConfig);\r\n const db = await getDbPromise();\r\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n const objectStore = tx.objectStore(OBJECT_STORE_NAME);\r\n const oldValue = (await objectStore.get(key));\r\n await objectStore.put(value, key);\r\n await tx.complete;\r\n if (!oldValue || oldValue.fid !== value.fid) {\r\n fidChanged(appConfig, value.fid);\r\n }\r\n return value;\r\n}\r\n/** Removes record(s) from the objectStore that match the given key. */\r\nasync function remove(appConfig) {\r\n const key = getKey(appConfig);\r\n const db = await getDbPromise();\r\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n await tx.objectStore(OBJECT_STORE_NAME).delete(key);\r\n await tx.complete;\r\n}\r\n/**\r\n * Atomically updates a record with the result of updateFn, which gets\r\n * called with the current value. If newValue is undefined, the record is\r\n * deleted instead.\r\n * @return Updated value\r\n */\r\nasync function update(appConfig, updateFn) {\r\n const key = getKey(appConfig);\r\n const db = await getDbPromise();\r\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n const store = tx.objectStore(OBJECT_STORE_NAME);\r\n const oldValue = (await store.get(key));\r\n const newValue = updateFn(oldValue);\r\n if (newValue === undefined) {\r\n await store.delete(key);\r\n }\r\n else {\r\n await store.put(newValue, key);\r\n }\r\n await tx.complete;\r\n if (newValue && (!oldValue || oldValue.fid !== newValue.fid)) {\r\n fidChanged(appConfig, newValue.fid);\r\n }\r\n return newValue;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Updates and returns the InstallationEntry from the database.\r\n * Also triggers a registration request if it is necessary and possible.\r\n */\r\nasync function getInstallationEntry(installations) {\r\n let registrationPromise;\r\n const installationEntry = await update(installations.appConfig, oldEntry => {\r\n const installationEntry = updateOrCreateInstallationEntry(oldEntry);\r\n const entryWithPromise = triggerRegistrationIfNecessary(installations, installationEntry);\r\n registrationPromise = entryWithPromise.registrationPromise;\r\n return entryWithPromise.installationEntry;\r\n });\r\n if (installationEntry.fid === INVALID_FID) {\r\n // FID generation failed. Waiting for the FID from the server.\r\n return { installationEntry: await registrationPromise };\r\n }\r\n return {\r\n installationEntry,\r\n registrationPromise\r\n };\r\n}\r\n/**\r\n * Creates a new Installation Entry if one does not exist.\r\n * Also clears timed out pending requests.\r\n */\r\nfunction updateOrCreateInstallationEntry(oldEntry) {\r\n const entry = oldEntry || {\r\n fid: generateFid(),\r\n registrationStatus: 0 /* NOT_STARTED */\r\n };\r\n return clearTimedOutRequest(entry);\r\n}\r\n/**\r\n * If the Firebase Installation is not registered yet, this will trigger the\r\n * registration and return an InProgressInstallationEntry.\r\n *\r\n * If registrationPromise does not exist, the installationEntry is guaranteed\r\n * to be registered.\r\n */\r\nfunction triggerRegistrationIfNecessary(installations, installationEntry) {\r\n if (installationEntry.registrationStatus === 0 /* NOT_STARTED */) {\r\n if (!navigator.onLine) {\r\n // Registration required but app is offline.\r\n const registrationPromiseWithError = Promise.reject(ERROR_FACTORY.create(\"app-offline\" /* APP_OFFLINE */));\r\n return {\r\n installationEntry,\r\n registrationPromise: registrationPromiseWithError\r\n };\r\n }\r\n // Try registering. Change status to IN_PROGRESS.\r\n const inProgressEntry = {\r\n fid: installationEntry.fid,\r\n registrationStatus: 1 /* IN_PROGRESS */,\r\n registrationTime: Date.now()\r\n };\r\n const registrationPromise = registerInstallation(installations, inProgressEntry);\r\n return { installationEntry: inProgressEntry, registrationPromise };\r\n }\r\n else if (installationEntry.registrationStatus === 1 /* IN_PROGRESS */) {\r\n return {\r\n installationEntry,\r\n registrationPromise: waitUntilFidRegistration(installations)\r\n };\r\n }\r\n else {\r\n return { installationEntry };\r\n }\r\n}\r\n/** This will be executed only once for each new Firebase Installation. */\r\nasync function registerInstallation(installations, installationEntry) {\r\n try {\r\n const registeredInstallationEntry = await createInstallationRequest(installations, installationEntry);\r\n return set(installations.appConfig, registeredInstallationEntry);\r\n }\r\n catch (e) {\r\n if (isServerError(e) && e.customData.serverCode === 409) {\r\n // Server returned a \"FID can not be used\" error.\r\n // Generate a new ID next time.\r\n await remove(installations.appConfig);\r\n }\r\n else {\r\n // Registration failed. Set FID as not registered.\r\n await set(installations.appConfig, {\r\n fid: installationEntry.fid,\r\n registrationStatus: 0 /* NOT_STARTED */\r\n });\r\n }\r\n throw e;\r\n }\r\n}\r\n/** Call if FID registration is pending in another request. */\r\nasync function waitUntilFidRegistration(installations) {\r\n // Unfortunately, there is no way of reliably observing when a value in\r\n // IndexedDB changes (yet, see https://github.com/WICG/indexed-db-observers),\r\n // so we need to poll.\r\n let entry = await updateInstallationRequest(installations.appConfig);\r\n while (entry.registrationStatus === 1 /* IN_PROGRESS */) {\r\n // createInstallation request still in progress.\r\n await sleep(100);\r\n entry = await updateInstallationRequest(installations.appConfig);\r\n }\r\n if (entry.registrationStatus === 0 /* NOT_STARTED */) {\r\n // The request timed out or failed in a different call. Try again.\r\n const { installationEntry, registrationPromise } = await getInstallationEntry(installations);\r\n if (registrationPromise) {\r\n return registrationPromise;\r\n }\r\n else {\r\n // if there is no registrationPromise, entry is registered.\r\n return installationEntry;\r\n }\r\n }\r\n return entry;\r\n}\r\n/**\r\n * Called only if there is a CreateInstallation request in progress.\r\n *\r\n * Updates the InstallationEntry in the DB based on the status of the\r\n * CreateInstallation request.\r\n *\r\n * Returns the updated InstallationEntry.\r\n */\r\nfunction updateInstallationRequest(appConfig) {\r\n return update(appConfig, oldEntry => {\r\n if (!oldEntry) {\r\n throw ERROR_FACTORY.create(\"installation-not-found\" /* INSTALLATION_NOT_FOUND */);\r\n }\r\n return clearTimedOutRequest(oldEntry);\r\n });\r\n}\r\nfunction clearTimedOutRequest(entry) {\r\n if (hasInstallationRequestTimedOut(entry)) {\r\n return {\r\n fid: entry.fid,\r\n registrationStatus: 0 /* NOT_STARTED */\r\n };\r\n }\r\n return entry;\r\n}\r\nfunction hasInstallationRequestTimedOut(installationEntry) {\r\n return (installationEntry.registrationStatus === 1 /* IN_PROGRESS */ &&\r\n installationEntry.registrationTime + PENDING_TIMEOUT_MS < Date.now());\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function generateAuthTokenRequest({ appConfig, heartbeatServiceProvider }, installationEntry) {\r\n const endpoint = getGenerateAuthTokenEndpoint(appConfig, installationEntry);\r\n const headers = getHeadersWithAuth(appConfig, installationEntry);\r\n // If heartbeat service exists, add the heartbeat string to the header.\r\n const heartbeatService = heartbeatServiceProvider.getImmediate({\r\n optional: true\r\n });\r\n if (heartbeatService) {\r\n const heartbeatsHeader = await heartbeatService.getHeartbeatsHeader();\r\n if (heartbeatsHeader) {\r\n headers.append('x-firebase-client', heartbeatsHeader);\r\n }\r\n }\r\n const body = {\r\n installation: {\r\n sdkVersion: PACKAGE_VERSION,\r\n appId: appConfig.appId\r\n }\r\n };\r\n const request = {\r\n method: 'POST',\r\n headers,\r\n body: JSON.stringify(body)\r\n };\r\n const response = await retryIfServerError(() => fetch(endpoint, request));\r\n if (response.ok) {\r\n const responseValue = await response.json();\r\n const completedAuthToken = extractAuthTokenInfoFromResponse(responseValue);\r\n return completedAuthToken;\r\n }\r\n else {\r\n throw await getErrorFromResponse('Generate Auth Token', response);\r\n }\r\n}\r\nfunction getGenerateAuthTokenEndpoint(appConfig, { fid }) {\r\n return `${getInstallationsEndpoint(appConfig)}/${fid}/authTokens:generate`;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns a valid authentication token for the installation. Generates a new\r\n * token if one doesn't exist, is expired or about to expire.\r\n *\r\n * Should only be called if the Firebase Installation is registered.\r\n */\r\nasync function refreshAuthToken(installations, forceRefresh = false) {\r\n let tokenPromise;\r\n const entry = await update(installations.appConfig, oldEntry => {\r\n if (!isEntryRegistered(oldEntry)) {\r\n throw ERROR_FACTORY.create(\"not-registered\" /* NOT_REGISTERED */);\r\n }\r\n const oldAuthToken = oldEntry.authToken;\r\n if (!forceRefresh && isAuthTokenValid(oldAuthToken)) {\r\n // There is a valid token in the DB.\r\n return oldEntry;\r\n }\r\n else if (oldAuthToken.requestStatus === 1 /* IN_PROGRESS */) {\r\n // There already is a token request in progress.\r\n tokenPromise = waitUntilAuthTokenRequest(installations, forceRefresh);\r\n return oldEntry;\r\n }\r\n else {\r\n // No token or token expired.\r\n if (!navigator.onLine) {\r\n throw ERROR_FACTORY.create(\"app-offline\" /* APP_OFFLINE */);\r\n }\r\n const inProgressEntry = makeAuthTokenRequestInProgressEntry(oldEntry);\r\n tokenPromise = fetchAuthTokenFromServer(installations, inProgressEntry);\r\n return inProgressEntry;\r\n }\r\n });\r\n const authToken = tokenPromise\r\n ? await tokenPromise\r\n : entry.authToken;\r\n return authToken;\r\n}\r\n/**\r\n * Call only if FID is registered and Auth Token request is in progress.\r\n *\r\n * Waits until the current pending request finishes. If the request times out,\r\n * tries once in this thread as well.\r\n */\r\nasync function waitUntilAuthTokenRequest(installations, forceRefresh) {\r\n // Unfortunately, there is no way of reliably observing when a value in\r\n // IndexedDB changes (yet, see https://github.com/WICG/indexed-db-observers),\r\n // so we need to poll.\r\n let entry = await updateAuthTokenRequest(installations.appConfig);\r\n while (entry.authToken.requestStatus === 1 /* IN_PROGRESS */) {\r\n // generateAuthToken still in progress.\r\n await sleep(100);\r\n entry = await updateAuthTokenRequest(installations.appConfig);\r\n }\r\n const authToken = entry.authToken;\r\n if (authToken.requestStatus === 0 /* NOT_STARTED */) {\r\n // The request timed out or failed in a different call. Try again.\r\n return refreshAuthToken(installations, forceRefresh);\r\n }\r\n else {\r\n return authToken;\r\n }\r\n}\r\n/**\r\n * Called only if there is a GenerateAuthToken request in progress.\r\n *\r\n * Updates the InstallationEntry in the DB based on the status of the\r\n * GenerateAuthToken request.\r\n *\r\n * Returns the updated InstallationEntry.\r\n */\r\nfunction updateAuthTokenRequest(appConfig) {\r\n return update(appConfig, oldEntry => {\r\n if (!isEntryRegistered(oldEntry)) {\r\n throw ERROR_FACTORY.create(\"not-registered\" /* NOT_REGISTERED */);\r\n }\r\n const oldAuthToken = oldEntry.authToken;\r\n if (hasAuthTokenRequestTimedOut(oldAuthToken)) {\r\n return Object.assign(Object.assign({}, oldEntry), { authToken: { requestStatus: 0 /* NOT_STARTED */ } });\r\n }\r\n return oldEntry;\r\n });\r\n}\r\nasync function fetchAuthTokenFromServer(installations, installationEntry) {\r\n try {\r\n const authToken = await generateAuthTokenRequest(installations, installationEntry);\r\n const updatedInstallationEntry = Object.assign(Object.assign({}, installationEntry), { authToken });\r\n await set(installations.appConfig, updatedInstallationEntry);\r\n return authToken;\r\n }\r\n catch (e) {\r\n if (isServerError(e) &&\r\n (e.customData.serverCode === 401 || e.customData.serverCode === 404)) {\r\n // Server returned a \"FID not found\" or a \"Invalid authentication\" error.\r\n // Generate a new ID next time.\r\n await remove(installations.appConfig);\r\n }\r\n else {\r\n const updatedInstallationEntry = Object.assign(Object.assign({}, installationEntry), { authToken: { requestStatus: 0 /* NOT_STARTED */ } });\r\n await set(installations.appConfig, updatedInstallationEntry);\r\n }\r\n throw e;\r\n }\r\n}\r\nfunction isEntryRegistered(installationEntry) {\r\n return (installationEntry !== undefined &&\r\n installationEntry.registrationStatus === 2 /* COMPLETED */);\r\n}\r\nfunction isAuthTokenValid(authToken) {\r\n return (authToken.requestStatus === 2 /* COMPLETED */ &&\r\n !isAuthTokenExpired(authToken));\r\n}\r\nfunction isAuthTokenExpired(authToken) {\r\n const now = Date.now();\r\n return (now < authToken.creationTime ||\r\n authToken.creationTime + authToken.expiresIn < now + TOKEN_EXPIRATION_BUFFER);\r\n}\r\n/** Returns an updated InstallationEntry with an InProgressAuthToken. */\r\nfunction makeAuthTokenRequestInProgressEntry(oldEntry) {\r\n const inProgressAuthToken = {\r\n requestStatus: 1 /* IN_PROGRESS */,\r\n requestTime: Date.now()\r\n };\r\n return Object.assign(Object.assign({}, oldEntry), { authToken: inProgressAuthToken });\r\n}\r\nfunction hasAuthTokenRequestTimedOut(authToken) {\r\n return (authToken.requestStatus === 1 /* IN_PROGRESS */ &&\r\n authToken.requestTime + PENDING_TIMEOUT_MS < Date.now());\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Creates a Firebase Installation if there isn't one for the app and\r\n * returns the Installation ID.\r\n * @param installations - The `Installations` instance.\r\n *\r\n * @public\r\n */\r\nasync function getId(installations) {\r\n const installationsImpl = installations;\r\n const { installationEntry, registrationPromise } = await getInstallationEntry(installationsImpl);\r\n if (registrationPromise) {\r\n registrationPromise.catch(console.error);\r\n }\r\n else {\r\n // If the installation is already registered, update the authentication\r\n // token if needed.\r\n refreshAuthToken(installationsImpl).catch(console.error);\r\n }\r\n return installationEntry.fid;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns a Firebase Installations auth token, identifying the current\r\n * Firebase Installation.\r\n * @param installations - The `Installations` instance.\r\n * @param forceRefresh - Force refresh regardless of token expiration.\r\n *\r\n * @public\r\n */\r\nasync function getToken(installations, forceRefresh = false) {\r\n const installationsImpl = installations;\r\n await completeInstallationRegistration(installationsImpl);\r\n // At this point we either have a Registered Installation in the DB, or we've\r\n // already thrown an error.\r\n const authToken = await refreshAuthToken(installationsImpl, forceRefresh);\r\n return authToken.token;\r\n}\r\nasync function completeInstallationRegistration(installations) {\r\n const { registrationPromise } = await getInstallationEntry(installations);\r\n if (registrationPromise) {\r\n // A createInstallation request is in progress. Wait until it finishes.\r\n await registrationPromise;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function deleteInstallationRequest(appConfig, installationEntry) {\r\n const endpoint = getDeleteEndpoint(appConfig, installationEntry);\r\n const headers = getHeadersWithAuth(appConfig, installationEntry);\r\n const request = {\r\n method: 'DELETE',\r\n headers\r\n };\r\n const response = await retryIfServerError(() => fetch(endpoint, request));\r\n if (!response.ok) {\r\n throw await getErrorFromResponse('Delete Installation', response);\r\n }\r\n}\r\nfunction getDeleteEndpoint(appConfig, { fid }) {\r\n return `${getInstallationsEndpoint(appConfig)}/${fid}`;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Deletes the Firebase Installation and all associated data.\r\n * @param installations - The `Installations` instance.\r\n *\r\n * @public\r\n */\r\nasync function deleteInstallations(installations) {\r\n const { appConfig } = installations;\r\n const entry = await update(appConfig, oldEntry => {\r\n if (oldEntry && oldEntry.registrationStatus === 0 /* NOT_STARTED */) {\r\n // Delete the unregistered entry without sending a deleteInstallation request.\r\n return undefined;\r\n }\r\n return oldEntry;\r\n });\r\n if (entry) {\r\n if (entry.registrationStatus === 1 /* IN_PROGRESS */) {\r\n // Can't delete while trying to register.\r\n throw ERROR_FACTORY.create(\"delete-pending-registration\" /* DELETE_PENDING_REGISTRATION */);\r\n }\r\n else if (entry.registrationStatus === 2 /* COMPLETED */) {\r\n if (!navigator.onLine) {\r\n throw ERROR_FACTORY.create(\"app-offline\" /* APP_OFFLINE */);\r\n }\r\n else {\r\n await deleteInstallationRequest(appConfig, entry);\r\n await remove(appConfig);\r\n }\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Sets a new callback that will get called when Installation ID changes.\r\n * Returns an unsubscribe function that will remove the callback when called.\r\n * @param installations - The `Installations` instance.\r\n * @param callback - The callback function that is invoked when FID changes.\r\n * @returns A function that can be called to unsubscribe.\r\n *\r\n * @public\r\n */\r\nfunction onIdChange(installations, callback) {\r\n const { appConfig } = installations;\r\n addCallback(appConfig, callback);\r\n return () => {\r\n removeCallback(appConfig, callback);\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns an instance of {@link Installations} associated with the given\r\n * {@link @firebase/app#FirebaseApp} instance.\r\n * @param app - The {@link @firebase/app#FirebaseApp} instance.\r\n *\r\n * @public\r\n */\r\nfunction getInstallations(app = getApp()) {\r\n const installationsImpl = _getProvider(app, 'installations').getImmediate();\r\n return installationsImpl;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction extractAppConfig(app) {\r\n if (!app || !app.options) {\r\n throw getMissingValueError('App Configuration');\r\n }\r\n if (!app.name) {\r\n throw getMissingValueError('App Name');\r\n }\r\n // Required app config keys\r\n const configKeys = [\r\n 'projectId',\r\n 'apiKey',\r\n 'appId'\r\n ];\r\n for (const keyName of configKeys) {\r\n if (!app.options[keyName]) {\r\n throw getMissingValueError(keyName);\r\n }\r\n }\r\n return {\r\n appName: app.name,\r\n projectId: app.options.projectId,\r\n apiKey: app.options.apiKey,\r\n appId: app.options.appId\r\n };\r\n}\r\nfunction getMissingValueError(valueName) {\r\n return ERROR_FACTORY.create(\"missing-app-config-values\" /* MISSING_APP_CONFIG_VALUES */, {\r\n valueName\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst INSTALLATIONS_NAME = 'installations';\r\nconst INSTALLATIONS_NAME_INTERNAL = 'installations-internal';\r\nconst publicFactory = (container) => {\r\n const app = container.getProvider('app').getImmediate();\r\n // Throws if app isn't configured properly.\r\n const appConfig = extractAppConfig(app);\r\n const heartbeatServiceProvider = _getProvider(app, 'heartbeat');\r\n const installationsImpl = {\r\n app,\r\n appConfig,\r\n heartbeatServiceProvider,\r\n _delete: () => Promise.resolve()\r\n };\r\n return installationsImpl;\r\n};\r\nconst internalFactory = (container) => {\r\n const app = container.getProvider('app').getImmediate();\r\n // Internal FIS instance relies on public FIS instance.\r\n const installations = _getProvider(app, INSTALLATIONS_NAME).getImmediate();\r\n const installationsInternal = {\r\n getId: () => getId(installations),\r\n getToken: (forceRefresh) => getToken(installations, forceRefresh)\r\n };\r\n return installationsInternal;\r\n};\r\nfunction registerInstallations() {\r\n _registerComponent(new Component(INSTALLATIONS_NAME, publicFactory, \"PUBLIC\" /* PUBLIC */));\r\n _registerComponent(new Component(INSTALLATIONS_NAME_INTERNAL, internalFactory, \"PRIVATE\" /* PRIVATE */));\r\n}\n\n/**\r\n * Firebase Installations\r\n *\r\n * @packageDocumentation\r\n */\r\nregisterInstallations();\r\nregisterVersion(name, version);\r\n// BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\r\nregisterVersion(name, version, 'esm2017');\n\nexport { deleteInstallations, getId, getInstallations, getToken, onIdChange };\n//# sourceMappingURL=index.esm2017.js.map\n","/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * A container for all of the Logger instances\r\n */\r\nconst instances = [];\r\n/**\r\n * The JS SDK supports 5 log levels and also allows a user the ability to\r\n * silence the logs altogether.\r\n *\r\n * The order is a follows:\r\n * DEBUG < VERBOSE < INFO < WARN < ERROR\r\n *\r\n * All of the log types above the current log level will be captured (i.e. if\r\n * you set the log level to `INFO`, errors will still be logged, but `DEBUG` and\r\n * `VERBOSE` logs will not)\r\n */\r\nvar LogLevel;\r\n(function (LogLevel) {\r\n LogLevel[LogLevel[\"DEBUG\"] = 0] = \"DEBUG\";\r\n LogLevel[LogLevel[\"VERBOSE\"] = 1] = \"VERBOSE\";\r\n LogLevel[LogLevel[\"INFO\"] = 2] = \"INFO\";\r\n LogLevel[LogLevel[\"WARN\"] = 3] = \"WARN\";\r\n LogLevel[LogLevel[\"ERROR\"] = 4] = \"ERROR\";\r\n LogLevel[LogLevel[\"SILENT\"] = 5] = \"SILENT\";\r\n})(LogLevel || (LogLevel = {}));\r\nconst levelStringToEnum = {\r\n 'debug': LogLevel.DEBUG,\r\n 'verbose': LogLevel.VERBOSE,\r\n 'info': LogLevel.INFO,\r\n 'warn': LogLevel.WARN,\r\n 'error': LogLevel.ERROR,\r\n 'silent': LogLevel.SILENT\r\n};\r\n/**\r\n * The default log level\r\n */\r\nconst defaultLogLevel = LogLevel.INFO;\r\n/**\r\n * By default, `console.debug` is not displayed in the developer console (in\r\n * chrome). To avoid forcing users to have to opt-in to these logs twice\r\n * (i.e. once for firebase, and once in the console), we are sending `DEBUG`\r\n * logs to the `console.log` function.\r\n */\r\nconst ConsoleMethod = {\r\n [LogLevel.DEBUG]: 'log',\r\n [LogLevel.VERBOSE]: 'log',\r\n [LogLevel.INFO]: 'info',\r\n [LogLevel.WARN]: 'warn',\r\n [LogLevel.ERROR]: 'error'\r\n};\r\n/**\r\n * The default log handler will forward DEBUG, VERBOSE, INFO, WARN, and ERROR\r\n * messages on to their corresponding console counterparts (if the log method\r\n * is supported by the current log level)\r\n */\r\nconst defaultLogHandler = (instance, logType, ...args) => {\r\n if (logType < instance.logLevel) {\r\n return;\r\n }\r\n const now = new Date().toISOString();\r\n const method = ConsoleMethod[logType];\r\n if (method) {\r\n console[method](`[${now}] ${instance.name}:`, ...args);\r\n }\r\n else {\r\n throw new Error(`Attempted to log a message with an invalid logType (value: ${logType})`);\r\n }\r\n};\r\nclass Logger {\r\n /**\r\n * Gives you an instance of a Logger to capture messages according to\r\n * Firebase's logging scheme.\r\n *\r\n * @param name The name that the logs will be associated with\r\n */\r\n constructor(name) {\r\n this.name = name;\r\n /**\r\n * The log level of the given Logger instance.\r\n */\r\n this._logLevel = defaultLogLevel;\r\n /**\r\n * The main (internal) log handler for the Logger instance.\r\n * Can be set to a new function in internal package code but not by user.\r\n */\r\n this._logHandler = defaultLogHandler;\r\n /**\r\n * The optional, additional, user-defined log handler for the Logger instance.\r\n */\r\n this._userLogHandler = null;\r\n /**\r\n * Capture the current instance for later use\r\n */\r\n instances.push(this);\r\n }\r\n get logLevel() {\r\n return this._logLevel;\r\n }\r\n set logLevel(val) {\r\n if (!(val in LogLevel)) {\r\n throw new TypeError(`Invalid value \"${val}\" assigned to \\`logLevel\\``);\r\n }\r\n this._logLevel = val;\r\n }\r\n // Workaround for setter/getter having to be the same type.\r\n setLogLevel(val) {\r\n this._logLevel = typeof val === 'string' ? levelStringToEnum[val] : val;\r\n }\r\n get logHandler() {\r\n return this._logHandler;\r\n }\r\n set logHandler(val) {\r\n if (typeof val !== 'function') {\r\n throw new TypeError('Value assigned to `logHandler` must be a function');\r\n }\r\n this._logHandler = val;\r\n }\r\n get userLogHandler() {\r\n return this._userLogHandler;\r\n }\r\n set userLogHandler(val) {\r\n this._userLogHandler = val;\r\n }\r\n /**\r\n * The functions below are all based on the `console` interface\r\n */\r\n debug(...args) {\r\n this._userLogHandler && this._userLogHandler(this, LogLevel.DEBUG, ...args);\r\n this._logHandler(this, LogLevel.DEBUG, ...args);\r\n }\r\n log(...args) {\r\n this._userLogHandler &&\r\n this._userLogHandler(this, LogLevel.VERBOSE, ...args);\r\n this._logHandler(this, LogLevel.VERBOSE, ...args);\r\n }\r\n info(...args) {\r\n this._userLogHandler && this._userLogHandler(this, LogLevel.INFO, ...args);\r\n this._logHandler(this, LogLevel.INFO, ...args);\r\n }\r\n warn(...args) {\r\n this._userLogHandler && this._userLogHandler(this, LogLevel.WARN, ...args);\r\n this._logHandler(this, LogLevel.WARN, ...args);\r\n }\r\n error(...args) {\r\n this._userLogHandler && this._userLogHandler(this, LogLevel.ERROR, ...args);\r\n this._logHandler(this, LogLevel.ERROR, ...args);\r\n }\r\n}\r\nfunction setLogLevel(level) {\r\n instances.forEach(inst => {\r\n inst.setLogLevel(level);\r\n });\r\n}\r\nfunction setUserLogHandler(logCallback, options) {\r\n for (const instance of instances) {\r\n let customLogLevel = null;\r\n if (options && options.level) {\r\n customLogLevel = levelStringToEnum[options.level];\r\n }\r\n if (logCallback === null) {\r\n instance.userLogHandler = null;\r\n }\r\n else {\r\n instance.userLogHandler = (instance, level, ...args) => {\r\n const message = args\r\n .map(arg => {\r\n if (arg == null) {\r\n return null;\r\n }\r\n else if (typeof arg === 'string') {\r\n return arg;\r\n }\r\n else if (typeof arg === 'number' || typeof arg === 'boolean') {\r\n return arg.toString();\r\n }\r\n else if (arg instanceof Error) {\r\n return arg.message;\r\n }\r\n else {\r\n try {\r\n return JSON.stringify(arg);\r\n }\r\n catch (ignored) {\r\n return null;\r\n }\r\n }\r\n })\r\n .filter(arg => arg)\r\n .join(' ');\r\n if (level >= (customLogLevel !== null && customLogLevel !== void 0 ? customLogLevel : instance.logLevel)) {\r\n logCallback({\r\n level: LogLevel[level].toLowerCase(),\r\n message,\r\n args,\r\n type: instance.name\r\n });\r\n }\r\n };\r\n }\r\n }\r\n}\n\nexport { LogLevel, Logger, setLogLevel, setUserLogHandler };\n//# sourceMappingURL=index.esm2017.js.map\n","import '@firebase/installations';\nimport { Component } from '@firebase/component';\nimport { openDB, deleteDB, ErrorFactory, validateIndexedDBOpenable, isIndexedDBAvailable, areCookiesEnabled, getModularInstance } from '@firebase/util';\nimport { _registerComponent, registerVersion, getApp, _getProvider } from '@firebase/app';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst DEFAULT_SW_PATH = '/firebase-messaging-sw.js';\r\nconst DEFAULT_SW_SCOPE = '/firebase-cloud-messaging-push-scope';\r\nconst DEFAULT_VAPID_KEY = 'BDOU99-h67HcA6JeFXHbSNMu7e2yNNu3RzoMj8TM4W88jITfq7ZmPvIM1Iv-4_l2LxQcYwhqby2xGpWwzjfAnG4';\r\nconst ENDPOINT = 'https://fcmregistrations.googleapis.com/v1';\r\nconst CONSOLE_CAMPAIGN_ID = 'google.c.a.c_id';\r\nconst CONSOLE_CAMPAIGN_NAME = 'google.c.a.c_l';\r\nconst CONSOLE_CAMPAIGN_TIME = 'google.c.a.ts';\r\n/** Set to '1' if Analytics is enabled for the campaign */\r\nconst CONSOLE_CAMPAIGN_ANALYTICS_ENABLED = 'google.c.a.e';\r\nvar MessageType$1;\r\n(function (MessageType) {\r\n MessageType[MessageType[\"DATA_MESSAGE\"] = 1] = \"DATA_MESSAGE\";\r\n MessageType[MessageType[\"DISPLAY_NOTIFICATION\"] = 3] = \"DISPLAY_NOTIFICATION\";\r\n})(MessageType$1 || (MessageType$1 = {}));\n\n/**\r\n * @license\r\n * Copyright 2018 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\r\n * in compliance with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software distributed under the License\r\n * is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express\r\n * or implied. See the License for the specific language governing permissions and limitations under\r\n * the License.\r\n */\r\nvar MessageType;\r\n(function (MessageType) {\r\n MessageType[\"PUSH_RECEIVED\"] = \"push-received\";\r\n MessageType[\"NOTIFICATION_CLICKED\"] = \"notification-clicked\";\r\n})(MessageType || (MessageType = {}));\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction arrayToBase64(array) {\r\n const uint8Array = new Uint8Array(array);\r\n const base64String = btoa(String.fromCharCode(...uint8Array));\r\n return base64String.replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\r\n}\r\nfunction base64ToArray(base64String) {\r\n const padding = '='.repeat((4 - (base64String.length % 4)) % 4);\r\n const base64 = (base64String + padding)\r\n .replace(/\\-/g, '+')\r\n .replace(/_/g, '/');\r\n const rawData = atob(base64);\r\n const outputArray = new Uint8Array(rawData.length);\r\n for (let i = 0; i < rawData.length; ++i) {\r\n outputArray[i] = rawData.charCodeAt(i);\r\n }\r\n return outputArray;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst OLD_DB_NAME = 'fcm_token_details_db';\r\n/**\r\n * The last DB version of 'fcm_token_details_db' was 4. This is one higher, so that the upgrade\r\n * callback is called for all versions of the old DB.\r\n */\r\nconst OLD_DB_VERSION = 5;\r\nconst OLD_OBJECT_STORE_NAME = 'fcm_token_object_Store';\r\nasync function migrateOldDatabase(senderId) {\r\n if ('databases' in indexedDB) {\r\n // indexedDb.databases() is an IndexedDB v3 API and does not exist in all browsers. TODO: Remove\r\n // typecast when it lands in TS types.\r\n const databases = await indexedDB.databases();\r\n const dbNames = databases.map(db => db.name);\r\n if (!dbNames.includes(OLD_DB_NAME)) {\r\n // old DB didn't exist, no need to open.\r\n return null;\r\n }\r\n }\r\n let tokenDetails = null;\r\n const db = await openDB(OLD_DB_NAME, OLD_DB_VERSION, async (db, oldVersion, newVersion, upgradeTransaction) => {\r\n var _a;\r\n if (oldVersion < 2) {\r\n // Database too old, skip migration.\r\n return;\r\n }\r\n if (!db.objectStoreNames.contains(OLD_OBJECT_STORE_NAME)) {\r\n // Database did not exist. Nothing to do.\r\n return;\r\n }\r\n const objectStore = upgradeTransaction.objectStore(OLD_OBJECT_STORE_NAME);\r\n const value = await objectStore.index('fcmSenderId').get(senderId);\r\n await objectStore.clear();\r\n if (!value) {\r\n // No entry in the database, nothing to migrate.\r\n return;\r\n }\r\n if (oldVersion === 2) {\r\n const oldDetails = value;\r\n if (!oldDetails.auth || !oldDetails.p256dh || !oldDetails.endpoint) {\r\n return;\r\n }\r\n tokenDetails = {\r\n token: oldDetails.fcmToken,\r\n createTime: (_a = oldDetails.createTime) !== null && _a !== void 0 ? _a : Date.now(),\r\n subscriptionOptions: {\r\n auth: oldDetails.auth,\r\n p256dh: oldDetails.p256dh,\r\n endpoint: oldDetails.endpoint,\r\n swScope: oldDetails.swScope,\r\n vapidKey: typeof oldDetails.vapidKey === 'string'\r\n ? oldDetails.vapidKey\r\n : arrayToBase64(oldDetails.vapidKey)\r\n }\r\n };\r\n }\r\n else if (oldVersion === 3) {\r\n const oldDetails = value;\r\n tokenDetails = {\r\n token: oldDetails.fcmToken,\r\n createTime: oldDetails.createTime,\r\n subscriptionOptions: {\r\n auth: arrayToBase64(oldDetails.auth),\r\n p256dh: arrayToBase64(oldDetails.p256dh),\r\n endpoint: oldDetails.endpoint,\r\n swScope: oldDetails.swScope,\r\n vapidKey: arrayToBase64(oldDetails.vapidKey)\r\n }\r\n };\r\n }\r\n else if (oldVersion === 4) {\r\n const oldDetails = value;\r\n tokenDetails = {\r\n token: oldDetails.fcmToken,\r\n createTime: oldDetails.createTime,\r\n subscriptionOptions: {\r\n auth: arrayToBase64(oldDetails.auth),\r\n p256dh: arrayToBase64(oldDetails.p256dh),\r\n endpoint: oldDetails.endpoint,\r\n swScope: oldDetails.swScope,\r\n vapidKey: arrayToBase64(oldDetails.vapidKey)\r\n }\r\n };\r\n }\r\n });\r\n db.close();\r\n // Delete all old databases.\r\n await deleteDB(OLD_DB_NAME);\r\n await deleteDB('fcm_vapid_details_db');\r\n await deleteDB('undefined');\r\n return checkTokenDetails(tokenDetails) ? tokenDetails : null;\r\n}\r\nfunction checkTokenDetails(tokenDetails) {\r\n if (!tokenDetails || !tokenDetails.subscriptionOptions) {\r\n return false;\r\n }\r\n const { subscriptionOptions } = tokenDetails;\r\n return (typeof tokenDetails.createTime === 'number' &&\r\n tokenDetails.createTime > 0 &&\r\n typeof tokenDetails.token === 'string' &&\r\n tokenDetails.token.length > 0 &&\r\n typeof subscriptionOptions.auth === 'string' &&\r\n subscriptionOptions.auth.length > 0 &&\r\n typeof subscriptionOptions.p256dh === 'string' &&\r\n subscriptionOptions.p256dh.length > 0 &&\r\n typeof subscriptionOptions.endpoint === 'string' &&\r\n subscriptionOptions.endpoint.length > 0 &&\r\n typeof subscriptionOptions.swScope === 'string' &&\r\n subscriptionOptions.swScope.length > 0 &&\r\n typeof subscriptionOptions.vapidKey === 'string' &&\r\n subscriptionOptions.vapidKey.length > 0);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Exported for tests.\r\nconst DATABASE_NAME = 'firebase-messaging-database';\r\nconst DATABASE_VERSION = 1;\r\nconst OBJECT_STORE_NAME = 'firebase-messaging-store';\r\nlet dbPromise = null;\r\nfunction getDbPromise() {\r\n if (!dbPromise) {\r\n dbPromise = openDB(DATABASE_NAME, DATABASE_VERSION, (upgradeDb, oldVersion) => {\r\n // We don't use 'break' in this switch statement, the fall-through behavior is what we want,\r\n // because if there are multiple versions between the old version and the current version, we\r\n // want ALL the migrations that correspond to those versions to run, not only the last one.\r\n // eslint-disable-next-line default-case\r\n switch (oldVersion) {\r\n case 0:\r\n upgradeDb.createObjectStore(OBJECT_STORE_NAME);\r\n }\r\n });\r\n }\r\n return dbPromise;\r\n}\r\n/** Gets record(s) from the objectStore that match the given key. */\r\nasync function dbGet(firebaseDependencies) {\r\n const key = getKey(firebaseDependencies);\r\n const db = await getDbPromise();\r\n const tokenDetails = (await db\r\n .transaction(OBJECT_STORE_NAME)\r\n .objectStore(OBJECT_STORE_NAME)\r\n .get(key));\r\n if (tokenDetails) {\r\n return tokenDetails;\r\n }\r\n else {\r\n // Check if there is a tokenDetails object in the old DB.\r\n const oldTokenDetails = await migrateOldDatabase(firebaseDependencies.appConfig.senderId);\r\n if (oldTokenDetails) {\r\n await dbSet(firebaseDependencies, oldTokenDetails);\r\n return oldTokenDetails;\r\n }\r\n }\r\n}\r\n/** Assigns or overwrites the record for the given key with the given value. */\r\nasync function dbSet(firebaseDependencies, tokenDetails) {\r\n const key = getKey(firebaseDependencies);\r\n const db = await getDbPromise();\r\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n await tx.objectStore(OBJECT_STORE_NAME).put(tokenDetails, key);\r\n await tx.complete;\r\n return tokenDetails;\r\n}\r\n/** Removes record(s) from the objectStore that match the given key. */\r\nasync function dbRemove(firebaseDependencies) {\r\n const key = getKey(firebaseDependencies);\r\n const db = await getDbPromise();\r\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n await tx.objectStore(OBJECT_STORE_NAME).delete(key);\r\n await tx.complete;\r\n}\r\nfunction getKey({ appConfig }) {\r\n return appConfig.appId;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst ERROR_MAP = {\r\n [\"missing-app-config-values\" /* MISSING_APP_CONFIG_VALUES */]: 'Missing App configuration value: \"{$valueName}\"',\r\n [\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */]: 'This method is available in a Window context.',\r\n [\"only-available-in-sw\" /* AVAILABLE_IN_SW */]: 'This method is available in a service worker context.',\r\n [\"permission-default\" /* PERMISSION_DEFAULT */]: 'The notification permission was not granted and dismissed instead.',\r\n [\"permission-blocked\" /* PERMISSION_BLOCKED */]: 'The notification permission was not granted and blocked instead.',\r\n [\"unsupported-browser\" /* UNSUPPORTED_BROWSER */]: \"This browser doesn't support the API's required to use the Firebase SDK.\",\r\n [\"indexed-db-unsupported\" /* INDEXED_DB_UNSUPPORTED */]: \"This browser doesn't support indexedDb.open() (ex. Safari iFrame, Firefox Private Browsing, etc)\",\r\n [\"failed-service-worker-registration\" /* FAILED_DEFAULT_REGISTRATION */]: 'We are unable to register the default service worker. {$browserErrorMessage}',\r\n [\"token-subscribe-failed\" /* TOKEN_SUBSCRIBE_FAILED */]: 'A problem occurred while subscribing the user to FCM: {$errorInfo}',\r\n [\"token-subscribe-no-token\" /* TOKEN_SUBSCRIBE_NO_TOKEN */]: 'FCM returned no token when subscribing the user to push.',\r\n [\"token-unsubscribe-failed\" /* TOKEN_UNSUBSCRIBE_FAILED */]: 'A problem occurred while unsubscribing the ' +\r\n 'user from FCM: {$errorInfo}',\r\n [\"token-update-failed\" /* TOKEN_UPDATE_FAILED */]: 'A problem occurred while updating the user from FCM: {$errorInfo}',\r\n [\"token-update-no-token\" /* TOKEN_UPDATE_NO_TOKEN */]: 'FCM returned no token when updating the user to push.',\r\n [\"use-sw-after-get-token\" /* USE_SW_AFTER_GET_TOKEN */]: 'The useServiceWorker() method may only be called once and must be ' +\r\n 'called before calling getToken() to ensure your service worker is used.',\r\n [\"invalid-sw-registration\" /* INVALID_SW_REGISTRATION */]: 'The input to useServiceWorker() must be a ServiceWorkerRegistration.',\r\n [\"invalid-bg-handler\" /* INVALID_BG_HANDLER */]: 'The input to setBackgroundMessageHandler() must be a function.',\r\n [\"invalid-vapid-key\" /* INVALID_VAPID_KEY */]: 'The public VAPID key must be a string.',\r\n [\"use-vapid-key-after-get-token\" /* USE_VAPID_KEY_AFTER_GET_TOKEN */]: 'The usePublicVapidKey() method may only be called once and must be ' +\r\n 'called before calling getToken() to ensure your VAPID key is used.'\r\n};\r\nconst ERROR_FACTORY = new ErrorFactory('messaging', 'Messaging', ERROR_MAP);\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function requestGetToken(firebaseDependencies, subscriptionOptions) {\r\n const headers = await getHeaders(firebaseDependencies);\r\n const body = getBody(subscriptionOptions);\r\n const subscribeOptions = {\r\n method: 'POST',\r\n headers,\r\n body: JSON.stringify(body)\r\n };\r\n let responseData;\r\n try {\r\n const response = await fetch(getEndpoint(firebaseDependencies.appConfig), subscribeOptions);\r\n responseData = await response.json();\r\n }\r\n catch (err) {\r\n throw ERROR_FACTORY.create(\"token-subscribe-failed\" /* TOKEN_SUBSCRIBE_FAILED */, {\r\n errorInfo: err\r\n });\r\n }\r\n if (responseData.error) {\r\n const message = responseData.error.message;\r\n throw ERROR_FACTORY.create(\"token-subscribe-failed\" /* TOKEN_SUBSCRIBE_FAILED */, {\r\n errorInfo: message\r\n });\r\n }\r\n if (!responseData.token) {\r\n throw ERROR_FACTORY.create(\"token-subscribe-no-token\" /* TOKEN_SUBSCRIBE_NO_TOKEN */);\r\n }\r\n return responseData.token;\r\n}\r\nasync function requestUpdateToken(firebaseDependencies, tokenDetails) {\r\n const headers = await getHeaders(firebaseDependencies);\r\n const body = getBody(tokenDetails.subscriptionOptions);\r\n const updateOptions = {\r\n method: 'PATCH',\r\n headers,\r\n body: JSON.stringify(body)\r\n };\r\n let responseData;\r\n try {\r\n const response = await fetch(`${getEndpoint(firebaseDependencies.appConfig)}/${tokenDetails.token}`, updateOptions);\r\n responseData = await response.json();\r\n }\r\n catch (err) {\r\n throw ERROR_FACTORY.create(\"token-update-failed\" /* TOKEN_UPDATE_FAILED */, {\r\n errorInfo: err\r\n });\r\n }\r\n if (responseData.error) {\r\n const message = responseData.error.message;\r\n throw ERROR_FACTORY.create(\"token-update-failed\" /* TOKEN_UPDATE_FAILED */, {\r\n errorInfo: message\r\n });\r\n }\r\n if (!responseData.token) {\r\n throw ERROR_FACTORY.create(\"token-update-no-token\" /* TOKEN_UPDATE_NO_TOKEN */);\r\n }\r\n return responseData.token;\r\n}\r\nasync function requestDeleteToken(firebaseDependencies, token) {\r\n const headers = await getHeaders(firebaseDependencies);\r\n const unsubscribeOptions = {\r\n method: 'DELETE',\r\n headers\r\n };\r\n try {\r\n const response = await fetch(`${getEndpoint(firebaseDependencies.appConfig)}/${token}`, unsubscribeOptions);\r\n const responseData = await response.json();\r\n if (responseData.error) {\r\n const message = responseData.error.message;\r\n throw ERROR_FACTORY.create(\"token-unsubscribe-failed\" /* TOKEN_UNSUBSCRIBE_FAILED */, {\r\n errorInfo: message\r\n });\r\n }\r\n }\r\n catch (err) {\r\n throw ERROR_FACTORY.create(\"token-unsubscribe-failed\" /* TOKEN_UNSUBSCRIBE_FAILED */, {\r\n errorInfo: err\r\n });\r\n }\r\n}\r\nfunction getEndpoint({ projectId }) {\r\n return `${ENDPOINT}/projects/${projectId}/registrations`;\r\n}\r\nasync function getHeaders({ appConfig, installations }) {\r\n const authToken = await installations.getToken();\r\n return new Headers({\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n 'x-goog-api-key': appConfig.apiKey,\r\n 'x-goog-firebase-installations-auth': `FIS ${authToken}`\r\n });\r\n}\r\nfunction getBody({ p256dh, auth, endpoint, vapidKey }) {\r\n const body = {\r\n web: {\r\n endpoint,\r\n auth,\r\n p256dh\r\n }\r\n };\r\n if (vapidKey !== DEFAULT_VAPID_KEY) {\r\n body.web.applicationPubKey = vapidKey;\r\n }\r\n return body;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// UpdateRegistration will be called once every week.\r\nconst TOKEN_EXPIRATION_MS = 7 * 24 * 60 * 60 * 1000; // 7 days\r\nasync function getTokenInternal(messaging) {\r\n const pushSubscription = await getPushSubscription(messaging.swRegistration, messaging.vapidKey);\r\n const subscriptionOptions = {\r\n vapidKey: messaging.vapidKey,\r\n swScope: messaging.swRegistration.scope,\r\n endpoint: pushSubscription.endpoint,\r\n auth: arrayToBase64(pushSubscription.getKey('auth')),\r\n p256dh: arrayToBase64(pushSubscription.getKey('p256dh'))\r\n };\r\n const tokenDetails = await dbGet(messaging.firebaseDependencies);\r\n if (!tokenDetails) {\r\n // No token, get a new one.\r\n return getNewToken(messaging.firebaseDependencies, subscriptionOptions);\r\n }\r\n else if (!isTokenValid(tokenDetails.subscriptionOptions, subscriptionOptions)) {\r\n // Invalid token, get a new one.\r\n try {\r\n await requestDeleteToken(messaging.firebaseDependencies, tokenDetails.token);\r\n }\r\n catch (e) {\r\n // Suppress errors because of #2364\r\n console.warn(e);\r\n }\r\n return getNewToken(messaging.firebaseDependencies, subscriptionOptions);\r\n }\r\n else if (Date.now() >= tokenDetails.createTime + TOKEN_EXPIRATION_MS) {\r\n // Weekly token refresh\r\n return updateToken(messaging, {\r\n token: tokenDetails.token,\r\n createTime: Date.now(),\r\n subscriptionOptions\r\n });\r\n }\r\n else {\r\n // Valid token, nothing to do.\r\n return tokenDetails.token;\r\n }\r\n}\r\n/**\r\n * This method deletes the token from the database, unsubscribes the token from FCM, and unregisters\r\n * the push subscription if it exists.\r\n */\r\nasync function deleteTokenInternal(messaging) {\r\n const tokenDetails = await dbGet(messaging.firebaseDependencies);\r\n if (tokenDetails) {\r\n await requestDeleteToken(messaging.firebaseDependencies, tokenDetails.token);\r\n await dbRemove(messaging.firebaseDependencies);\r\n }\r\n // Unsubscribe from the push subscription.\r\n const pushSubscription = await messaging.swRegistration.pushManager.getSubscription();\r\n if (pushSubscription) {\r\n return pushSubscription.unsubscribe();\r\n }\r\n // If there's no SW, consider it a success.\r\n return true;\r\n}\r\nasync function updateToken(messaging, tokenDetails) {\r\n try {\r\n const updatedToken = await requestUpdateToken(messaging.firebaseDependencies, tokenDetails);\r\n const updatedTokenDetails = Object.assign(Object.assign({}, tokenDetails), { token: updatedToken, createTime: Date.now() });\r\n await dbSet(messaging.firebaseDependencies, updatedTokenDetails);\r\n return updatedToken;\r\n }\r\n catch (e) {\r\n await deleteTokenInternal(messaging);\r\n throw e;\r\n }\r\n}\r\nasync function getNewToken(firebaseDependencies, subscriptionOptions) {\r\n const token = await requestGetToken(firebaseDependencies, subscriptionOptions);\r\n const tokenDetails = {\r\n token,\r\n createTime: Date.now(),\r\n subscriptionOptions\r\n };\r\n await dbSet(firebaseDependencies, tokenDetails);\r\n return tokenDetails.token;\r\n}\r\n/**\r\n * Gets a PushSubscription for the current user.\r\n */\r\nasync function getPushSubscription(swRegistration, vapidKey) {\r\n const subscription = await swRegistration.pushManager.getSubscription();\r\n if (subscription) {\r\n return subscription;\r\n }\r\n return swRegistration.pushManager.subscribe({\r\n userVisibleOnly: true,\r\n // Chrome <= 75 doesn't support base64-encoded VAPID key. For backward compatibility, VAPID key\r\n // submitted to pushManager#subscribe must be of type Uint8Array.\r\n applicationServerKey: base64ToArray(vapidKey)\r\n });\r\n}\r\n/**\r\n * Checks if the saved tokenDetails object matches the configuration provided.\r\n */\r\nfunction isTokenValid(dbOptions, currentOptions) {\r\n const isVapidKeyEqual = currentOptions.vapidKey === dbOptions.vapidKey;\r\n const isEndpointEqual = currentOptions.endpoint === dbOptions.endpoint;\r\n const isAuthEqual = currentOptions.auth === dbOptions.auth;\r\n const isP256dhEqual = currentOptions.p256dh === dbOptions.p256dh;\r\n return isVapidKeyEqual && isEndpointEqual && isAuthEqual && isP256dhEqual;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction externalizePayload(internalPayload) {\r\n const payload = {\r\n from: internalPayload.from,\r\n // eslint-disable-next-line camelcase\r\n collapseKey: internalPayload.collapse_key,\r\n // eslint-disable-next-line camelcase\r\n messageId: internalPayload.fcmMessageId\r\n };\r\n propagateNotificationPayload(payload, internalPayload);\r\n propagateDataPayload(payload, internalPayload);\r\n propagateFcmOptions(payload, internalPayload);\r\n return payload;\r\n}\r\nfunction propagateNotificationPayload(payload, messagePayloadInternal) {\r\n if (!messagePayloadInternal.notification) {\r\n return;\r\n }\r\n payload.notification = {};\r\n const title = messagePayloadInternal.notification.title;\r\n if (!!title) {\r\n payload.notification.title = title;\r\n }\r\n const body = messagePayloadInternal.notification.body;\r\n if (!!body) {\r\n payload.notification.body = body;\r\n }\r\n const image = messagePayloadInternal.notification.image;\r\n if (!!image) {\r\n payload.notification.image = image;\r\n }\r\n}\r\nfunction propagateDataPayload(payload, messagePayloadInternal) {\r\n if (!messagePayloadInternal.data) {\r\n return;\r\n }\r\n payload.data = messagePayloadInternal.data;\r\n}\r\nfunction propagateFcmOptions(payload, messagePayloadInternal) {\r\n if (!messagePayloadInternal.fcmOptions) {\r\n return;\r\n }\r\n payload.fcmOptions = {};\r\n const link = messagePayloadInternal.fcmOptions.link;\r\n if (!!link) {\r\n payload.fcmOptions.link = link;\r\n }\r\n // eslint-disable-next-line camelcase\r\n const analyticsLabel = messagePayloadInternal.fcmOptions.analytics_label;\r\n if (!!analyticsLabel) {\r\n payload.fcmOptions.analyticsLabel = analyticsLabel;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction isConsoleMessage(data) {\r\n // This message has a campaign ID, meaning it was sent using the Firebase Console.\r\n return typeof data === 'object' && !!data && CONSOLE_CAMPAIGN_ID in data;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n_mergeStrings('hts/frbslgigp.ogepscmv/ieo/eaylg', 'tp:/ieaeogn-agolai.o/1frlglgc/o');\r\n_mergeStrings('AzSCbw63g1R0nCw85jG8', 'Iaya3yLKwmgvh7cF0q4');\r\nfunction _mergeStrings(s1, s2) {\r\n const resultArray = [];\r\n for (let i = 0; i < s1.length; i++) {\r\n resultArray.push(s1.charAt(i));\r\n if (i < s2.length) {\r\n resultArray.push(s2.charAt(i));\r\n }\r\n }\r\n return resultArray.join('');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction extractAppConfig(app) {\r\n if (!app || !app.options) {\r\n throw getMissingValueError('App Configuration Object');\r\n }\r\n if (!app.name) {\r\n throw getMissingValueError('App Name');\r\n }\r\n // Required app config keys\r\n const configKeys = [\r\n 'projectId',\r\n 'apiKey',\r\n 'appId',\r\n 'messagingSenderId'\r\n ];\r\n const { options } = app;\r\n for (const keyName of configKeys) {\r\n if (!options[keyName]) {\r\n throw getMissingValueError(keyName);\r\n }\r\n }\r\n return {\r\n appName: app.name,\r\n projectId: options.projectId,\r\n apiKey: options.apiKey,\r\n appId: options.appId,\r\n senderId: options.messagingSenderId\r\n };\r\n}\r\nfunction getMissingValueError(valueName) {\r\n return ERROR_FACTORY.create(\"missing-app-config-values\" /* MISSING_APP_CONFIG_VALUES */, {\r\n valueName\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass MessagingService {\r\n constructor(app, installations, analyticsProvider) {\r\n // logging is only done with end user consent. Default to false.\r\n this.deliveryMetricsExportedToBigQueryEnabled = false;\r\n this.onBackgroundMessageHandler = null;\r\n this.onMessageHandler = null;\r\n this.logEvents = [];\r\n this.isLogServiceStarted = false;\r\n const appConfig = extractAppConfig(app);\r\n this.firebaseDependencies = {\r\n app,\r\n appConfig,\r\n installations,\r\n analyticsProvider\r\n };\r\n }\r\n _delete() {\r\n return Promise.resolve();\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function registerDefaultSw(messaging) {\r\n try {\r\n messaging.swRegistration = await navigator.serviceWorker.register(DEFAULT_SW_PATH, {\r\n scope: DEFAULT_SW_SCOPE\r\n });\r\n // The timing when browser updates sw when sw has an update is unreliable from experiment. It\r\n // leads to version conflict when the SDK upgrades to a newer version in the main page, but sw\r\n // is stuck with the old version. For example,\r\n // https://github.com/firebase/firebase-js-sdk/issues/2590 The following line reliably updates\r\n // sw if there was an update.\r\n messaging.swRegistration.update().catch(() => {\r\n /* it is non blocking and we don't care if it failed */\r\n });\r\n }\r\n catch (e) {\r\n throw ERROR_FACTORY.create(\"failed-service-worker-registration\" /* FAILED_DEFAULT_REGISTRATION */, {\r\n browserErrorMessage: e.message\r\n });\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function updateSwReg(messaging, swRegistration) {\r\n if (!swRegistration && !messaging.swRegistration) {\r\n await registerDefaultSw(messaging);\r\n }\r\n if (!swRegistration && !!messaging.swRegistration) {\r\n return;\r\n }\r\n if (!(swRegistration instanceof ServiceWorkerRegistration)) {\r\n throw ERROR_FACTORY.create(\"invalid-sw-registration\" /* INVALID_SW_REGISTRATION */);\r\n }\r\n messaging.swRegistration = swRegistration;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function updateVapidKey(messaging, vapidKey) {\r\n if (!!vapidKey) {\r\n messaging.vapidKey = vapidKey;\r\n }\r\n else if (!messaging.vapidKey) {\r\n messaging.vapidKey = DEFAULT_VAPID_KEY;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function getToken$1(messaging, options) {\r\n if (!navigator) {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */);\r\n }\r\n if (Notification.permission === 'default') {\r\n await Notification.requestPermission();\r\n }\r\n if (Notification.permission !== 'granted') {\r\n throw ERROR_FACTORY.create(\"permission-blocked\" /* PERMISSION_BLOCKED */);\r\n }\r\n await updateVapidKey(messaging, options === null || options === void 0 ? void 0 : options.vapidKey);\r\n await updateSwReg(messaging, options === null || options === void 0 ? void 0 : options.serviceWorkerRegistration);\r\n return getTokenInternal(messaging);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function logToScion(messaging, messageType, data) {\r\n const eventType = getEventType(messageType);\r\n const analytics = await messaging.firebaseDependencies.analyticsProvider.get();\r\n analytics.logEvent(eventType, {\r\n /* eslint-disable camelcase */\r\n message_id: data[CONSOLE_CAMPAIGN_ID],\r\n message_name: data[CONSOLE_CAMPAIGN_NAME],\r\n message_time: data[CONSOLE_CAMPAIGN_TIME],\r\n message_device_time: Math.floor(Date.now() / 1000)\r\n /* eslint-enable camelcase */\r\n });\r\n}\r\nfunction getEventType(messageType) {\r\n switch (messageType) {\r\n case MessageType.NOTIFICATION_CLICKED:\r\n return 'notification_open';\r\n case MessageType.PUSH_RECEIVED:\r\n return 'notification_foreground';\r\n default:\r\n throw new Error();\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function messageEventListener(messaging, event) {\r\n const internalPayload = event.data;\r\n if (!internalPayload.isFirebaseMessaging) {\r\n return;\r\n }\r\n if (messaging.onMessageHandler &&\r\n internalPayload.messageType === MessageType.PUSH_RECEIVED) {\r\n if (typeof messaging.onMessageHandler === 'function') {\r\n messaging.onMessageHandler(externalizePayload(internalPayload));\r\n }\r\n else {\r\n messaging.onMessageHandler.next(externalizePayload(internalPayload));\r\n }\r\n }\r\n // Log to Scion if applicable\r\n const dataPayload = internalPayload.data;\r\n if (isConsoleMessage(dataPayload) &&\r\n dataPayload[CONSOLE_CAMPAIGN_ANALYTICS_ENABLED] === '1') {\r\n await logToScion(messaging, internalPayload.messageType, dataPayload);\r\n }\r\n}\n\nconst name = \"@firebase/messaging\";\nconst version = \"0.9.12\";\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst WindowMessagingFactory = (container) => {\r\n const messaging = new MessagingService(container.getProvider('app').getImmediate(), container.getProvider('installations-internal').getImmediate(), container.getProvider('analytics-internal'));\r\n navigator.serviceWorker.addEventListener('message', e => messageEventListener(messaging, e));\r\n return messaging;\r\n};\r\nconst WindowMessagingInternalFactory = (container) => {\r\n const messaging = container\r\n .getProvider('messaging')\r\n .getImmediate();\r\n const messagingInternal = {\r\n getToken: (options) => getToken$1(messaging, options)\r\n };\r\n return messagingInternal;\r\n};\r\nfunction registerMessagingInWindow() {\r\n _registerComponent(new Component('messaging', WindowMessagingFactory, \"PUBLIC\" /* PUBLIC */));\r\n _registerComponent(new Component('messaging-internal', WindowMessagingInternalFactory, \"PRIVATE\" /* PRIVATE */));\r\n registerVersion(name, version);\r\n // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\r\n registerVersion(name, version, 'esm2017');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Checks if all required APIs exist in the browser.\r\n * @returns a Promise that resolves to a boolean.\r\n *\r\n * @public\r\n */\r\nasync function isWindowSupported() {\r\n try {\r\n // This throws if open() is unsupported, so adding it to the conditional\r\n // statement below can cause an uncaught error.\r\n await validateIndexedDBOpenable();\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n // firebase-js-sdk/issues/2393 reveals that idb#open in Safari iframe and Firefox private browsing\r\n // might be prohibited to run. In these contexts, an error would be thrown during the messaging\r\n // instantiating phase, informing the developers to import/call isSupported for special handling.\r\n return (typeof window !== 'undefined' &&\r\n isIndexedDBAvailable() &&\r\n areCookiesEnabled() &&\r\n 'serviceWorker' in navigator &&\r\n 'PushManager' in window &&\r\n 'Notification' in window &&\r\n 'fetch' in window &&\r\n ServiceWorkerRegistration.prototype.hasOwnProperty('showNotification') &&\r\n PushSubscription.prototype.hasOwnProperty('getKey'));\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function deleteToken$1(messaging) {\r\n if (!navigator) {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */);\r\n }\r\n if (!messaging.swRegistration) {\r\n await registerDefaultSw(messaging);\r\n }\r\n return deleteTokenInternal(messaging);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction onMessage$1(messaging, nextOrObserver) {\r\n if (!navigator) {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */);\r\n }\r\n messaging.onMessageHandler = nextOrObserver;\r\n return () => {\r\n messaging.onMessageHandler = null;\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Retrieves a Firebase Cloud Messaging instance.\r\n *\r\n * @returns The Firebase Cloud Messaging instance associated with the provided firebase app.\r\n *\r\n * @public\r\n */\r\nfunction getMessagingInWindow(app = getApp()) {\r\n // Conscious decision to make this async check non-blocking during the messaging instance\r\n // initialization phase for performance consideration. An error would be thrown latter for\r\n // developer's information. Developers can then choose to import and call `isSupported` for\r\n // special handling.\r\n isWindowSupported().then(isSupported => {\r\n // If `isWindowSupported()` resolved, but returned false.\r\n if (!isSupported) {\r\n throw ERROR_FACTORY.create(\"unsupported-browser\" /* UNSUPPORTED_BROWSER */);\r\n }\r\n }, _ => {\r\n // If `isWindowSupported()` rejected.\r\n throw ERROR_FACTORY.create(\"indexed-db-unsupported\" /* INDEXED_DB_UNSUPPORTED */);\r\n });\r\n return _getProvider(getModularInstance(app), 'messaging').getImmediate();\r\n}\r\n/**\r\n * Subscribes the {@link Messaging} instance to push notifications. Returns an Firebase Cloud\r\n * Messaging registration token that can be used to send push messages to that {@link Messaging}\r\n * instance.\r\n *\r\n * If a notification permission isn't already granted, this method asks the user for permission. The\r\n * returned promise rejects if the user does not allow the app to show notifications.\r\n *\r\n * @param messaging - The {@link Messaging} instance.\r\n * @param options - Provides an optional vapid key and an optinoal service worker registration\r\n *\r\n * @returns The promise resolves with an FCM registration token.\r\n *\r\n * @public\r\n */\r\nasync function getToken(messaging, options) {\r\n messaging = getModularInstance(messaging);\r\n return getToken$1(messaging, options);\r\n}\r\n/**\r\n * Deletes the registration token associated with this {@link Messaging} instance and unsubscribes\r\n * the {@link Messaging} instance from the push subscription.\r\n *\r\n * @param messaging - The {@link Messaging} instance.\r\n *\r\n * @returns The promise resolves when the token has been successfully deleted.\r\n *\r\n * @public\r\n */\r\nfunction deleteToken(messaging) {\r\n messaging = getModularInstance(messaging);\r\n return deleteToken$1(messaging);\r\n}\r\n/**\r\n * When a push message is received and the user is currently on a page for your origin, the\r\n * message is passed to the page and an `onMessage()` event is dispatched with the payload of\r\n * the push message.\r\n *\r\n *\r\n * @param messaging - The {@link Messaging} instance.\r\n * @param nextOrObserver - This function, or observer object with `next` defined,\r\n * is called when a message is received and the user is currently viewing your page.\r\n * @returns To stop listening for messages execute this returned function.\r\n *\r\n * @public\r\n */\r\nfunction onMessage(messaging, nextOrObserver) {\r\n messaging = getModularInstance(messaging);\r\n return onMessage$1(messaging, nextOrObserver);\r\n}\n\n/**\r\n * Firebase Cloud Messaging\r\n *\r\n * @packageDocumentation\r\n */\r\nregisterMessagingInWindow();\n\nexport { deleteToken, getMessagingInWindow as getMessaging, getToken, isWindowSupported as isSupported, onMessage };\n//# sourceMappingURL=index.esm2017.js.map\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","// define __esModule on exports\n__webpack_require__.r = (exports) => {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","// Put all packages together.\n// Used to generate umd/index.prod.js\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { IntlProvider } from 'react-intl';\n\nimport allMessages from './messages.json';\nimport TinodeWeb from './views/tinode-web.jsx';\nimport HashNavigation from './lib/navigation.js';\n\n// Detect human language to use in the UI:\n// Check parameters from URL hash #?hl=ru, then browser, then use 'en' as a fallback.\nconst { params } = HashNavigation.parseUrlHash(window.location.hash);\nconst language = (params && params.hl) ||\n (navigator.languages && navigator.languages[0]) ||\n navigator.language ||\n navigator.userLanguage ||\n 'en';\n\n// Get the base language 'en' from a more specific 'en_GB' or 'en-US' as a partial fallback.\nconst baseLanguage = language.toLowerCase().split(/[-_]/)[0];\n\n// Try the full locale first, then the locale without the region code, fallback to 'en'.\nconst htmlLang = allMessages[language] ? language : allMessages[baseLanguage] ? baseLanguage : 'en';\nconst messages = allMessages[htmlLang];\n\n// Set lang attribute of the HTML element: \ndocument.getElementsByTagName('html')[0].setAttribute('lang', htmlLang);\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById('mountPoint')\n);\n"],"names":["PACKAGE_VERSION","APP_NAME","API_KEY","KNOWN_HOSTS","hosted","local","DEFAULT_HOST","LOGGING_ENABLED","KEYPRESS_DELAY","RECEIVED_DELAY","READ_DELAY","MIN_TAG_LENGTH","MAX_TAG_LENGTH","MAX_TAG_COUNT","DEFAULT_P2P_ACCESS_MODE","NEW_GRP_ACCESS_MODE","CHANNEL_ACCESS_MODE","NO_ACCESS_MODE","MEDIA_BREAKPOINT","REM_SIZE","AVATAR_SIZE","MAX_AVATAR_BYTES","BROKEN_IMAGE_SIZE","MESSAGES_PAGE","MAX_INBAND_ATTACHMENT_SIZE","MAX_EXTERN_ATTACHMENT_SIZE","MAX_IMAGE_DIM","IMAGE_PREVIEW_DIM","IMAGE_THUMBNAIL_DIM","MAX_ONLINE_IN_TOPIC","MAX_TITLE_LENGTH","MAX_TOPIC_DESCRIPTION_LENGTH","MESSAGE_PREVIEW_LENGTH","QUOTED_REPLY_LENGTH","FORWARDED_PREVIEW_LENGTH","LINK_CONTACT_US","LINK_PRIVACY_POLICY","LINK_TERMS_OF_SERVICE","CALL_WEBRTC_CONFIG","iceServers","urls","username","credential","CALL_STATE_NONE","CALL_STATE_OUTGOING_INITATED","CALL_STATE_INCOMING_RECEIVED","CALL_STATE_IN_PROGRESS","CALL_MESSAGE_MIME_TYPE","SUPPORTED_IMAGE_FORMATS","MIME_EXTENSIONS","makeImageUrl","photo","ref","data","type","mime","startsWith","fitImageSize","width","height","maxWidth","maxHeight","forceSquare","Math","min","scale","size","dstWidth","dstHeight","srcWidth","srcHeight","xoffset","yoffset","fileNameForMime","fname","idx","indexOf","ext","at","lastIndexOf","substring","imageScaled","fileOrBlob","maxSize","Promise","resolve","reject","img","Image","crossOrigin","onerror","err","Error","onload","URL","revokeObjectURL","src","dim","canvas","document","createElement","ctx","getContext","imageSmoothingEnabled","drawImage","includes","blob","toBlob","length","clearRect","name","createObjectURL","imageCrop","objURL","left","top","fileToBase64","file","reader","FileReader","evt","error","bits","result","split","readAsDataURL","blobToBase64","_","filePasted","event","onImageSuccess","onAttachmentSuccess","onError","items","clipboardData","originalEvent","Array","isArray","i","item","kind","getAsFile","console","getMimeType","header","exec","base64EncodedLen","n","floor","base64DecodedLen","base64ReEncode","str","replace","btoa","atob","base64ToBlob","bin","buf","ArrayBuffer","arr","Uint8Array","charCodeAt","Blob","intArrayToBase64","forEach","b","String","fromCharCode","window","base64ToIntArray","b64","c","push","React","defineMessages","Drafty","AudioPlayer","LazyImage","UploadingImage","idToColorClass","secondsToTime","shortenFileName","cancelablePromise","sanitizeUrlForMime","messages","drafty_form","id","defaultMessage","drafty_attachment","drafty_image","drafty_unknown","handleImageData","el","attr","style","className","viewportWidth","minWidth","minHeight","isProcessing","authorizeURL","alt","max","onClick","onImagePreview","loading","fullFormatter","values","key","stack","quoteFormatter","call","tagName","attrValue","duration","undefined","preview","onFormButtonClick","inner","Children","map","child","join","val","onQuoteClick","Fragment","body","trim","formatMessage","concat","previewFormatter","inlineImageAttr","title","quoteImage","promise","fetch","then","ok","status","statusText","scaled","catch","replyFormatter","loadedPromise","whenDone","detectServerAddress","host","location","protocol","hostname","port","isSecureConnection","isLocalHost","LocalStorageUtil","setObject","value","localStorage","setItem","JSON","stringify","getObject","getItem","parse","updateObject","oldVal","Object","assign","removeItem","HashNavigation","parseUrlHash","hash","parts","params","path","part","decodeURIComponent","navigateTo","url","composeUrlHash","args","hasOwnProperty","addUrlParam","parsed","removeUrlParam","setUrlSidePanel","sidepanel","setUrlInfoPanel","infopanel","info","setUrlTopic","topic","shortDateFormat","locale","navigator","userLanguage","language","now","Date","getFullYear","getMonth","getDate","toLocaleTimeString","hour12","hour","minute","toLocaleDateString","month","day","year","seconds","fixedMin","sec","bytesToHumanSize","bytes","sizes","bucket","log2","count","pow","round","toFixed","filename","maxLength","slice","stringToColorHash","letterTileColorId","userId","abs","light","fg","Tinode","updateFavicon","oldIcon","getElementById","head","getElementsByTagName","newIcon","rel","href","removeChild","appendChild","theCard","fn","imageUrl","imageMimeType","note","card","DEL_CHAR","mimeType","matches","arrayEqual","a","sort","l","asPhone","test","asEmail","isUrlRelative","sanitizeUrl","allowedSchemes","schemes","re","RegExp","mimeMajor","sanitizedUrl","deliveryMarker","received","MESSAGE_STATUS_SENDING","MESSAGE_STATUS_FAILED","color","MESSAGE_STATUS_SENT","MESSAGE_STATUS_RECEIVED","MESSAGE_STATUS_READ","hasCanceled","wrappedPromise","isCanceled","cancel","isVideoCall","clipStr","FormattedMessage","CheckBox","EditAccountView","PureComponent","constructor","props","handleCheckboxClick","bind","what","checked","onToggleMessageSounds","onTogglePushNotifications","onToggleIncognitoMode","render","messageSounds","desktopAlertsEnabled","desktopAlerts","incognitoMode","injectIntl","InPlaceEdit","PermissionsEditor","delete_account","delete_account_warning","AccSecurityView","Component","me","tinode","getMeTopic","blockedCount","contacts","acs","isJoiner","defacs","getDefaultAccess","state","auth","anon","showPermissionEditorFor","handlePasswordUpdate","handleLaunchPermissionsEditor","handleHidePermissionsEditor","handlePermissionsChanged","handleDeleteAccount","pwd","setState","password","onUpdatePassword","which","editedPermissions","perm","onUpdateAccountDesc","newState","e","preventDefault","intl","onShowAlert","onDeleteAccount","password_unchanged","onLogout","onShowBlocked","AccSupportView","getLibrary","serverVersion","serverAddress","AvatarUpload","BadgeList","_clip","AccountSettingsView","fullName","public","description","avatar","onNavigate","myUserId","trustedBadges","ContactList","archived_contacts_title","ContactsView","handleAction","deriveStateFromProps","unreadThreads","archivedCount","chatList","blocked","private","arch","archive","unread","touched","action","contactList","componentDidUpdate","prevProps","prevState","action_ignored","onShowArchive","no_contacts","connected","topicSelected","onTopicSelected","showContextMenu","VisiblePassword","CreateAccountView","login","email","imageDataUrl","errorCleared","saveToken","handleLoginChange","handlePasswordChange","handleEmailChange","handleFnChange","handleImageChanged","handleToggleSaveToken","handleSubmit","target","onCreateAccount","submitClasses","disabled","login_prompt","password_prompt","full_name_prompt","email_prompt","stay_logged_in","MenuCancel","RING_SOUND","Audio","IncomingCallView","previousMetaDesc","resetDesc","onMetaDesc","handleRejectCall","handleAcceptCall","ringTimer","componentDidMount","getTopic","callState","play","setInterval","onRinging","seq","componentWillUnmount","clearInterval","pause","getAccessMode","badges","trusted","entries","desc","onAcceptCall","onReject","onClose","panelTitle","ErrorPanel","GroupManager","TopicCommon","TopicSecurity","general","security","members","crop","perm_want","perm_given","perm_auth","perm_anon","perm_user","edit_permissions","InfoView","owner","admin","sharer","deleter","muted","address","groupTopic","channel","selectedContact","access","modeGiven","modeWant","modeGiven2","modeWant2","previousSubsUpdated","resetSubs","resetTags","onSubsUpdated","handleMuted","handleUnarchive","handleShowAddMembers","handleMemberUpdateRequest","handleMemberSelected","handleContextMenu","handleBackNavigate","getType","user2","subscriber","getGiven","getWant","subscribers","sub","isOwner","isAdmin","isSharer","isDeleter","isMuted","comment","archived","isArchived","isGroupType","isChannelType","chan","getMode","getMeta","startMetaQuery","withTags","build","subs","onTopicDescUpdate","ignored","onChangePermissions","ignored2","onTopicUnArchive","onTopicDescUpdateRequest","userPermissionsEdited","uid","toEdit","toCompare","toSkip","titleEdit","titleCompare","userTitle","userAvatar","AccessMode","encode","diff","user","userPermissionsTitle","userPermissionsAvatar","immutablePermissions","editedPermissionsTitle","immutablePermissionsTitle","editedPermissionsSkipped","onInitFind","added","removed","onMemberUpdateRequest","panel","topicName","isMe","menuItems","handler","x","y","view","shift","displayMobile","errorLevel","errorText","searchableContacts","mode","onCredAdd","onTopicTagsUpdateRequest","onCredConfirm","onCredDelete","onDeleteMessages","onLeaveTopic","onBlockTopic","onReportTopic","no_members","LoginView","hostName","persist","onPersistenceChange","onLogin","LogoView","version","CallPanel","ChatMessage","ContactBadges","DocPreview","GroupSubs","ImagePreview","Invitation","LetterTile","LoadSpinner","MetaMessage","SendMessage","NOTIFICATION_EXEC_INTERVAL","SHOW_GO_TO_LAST_DIST","online_now","last_seen","not_found","file_attachment_too_large","invalid_content","isUnconfirmed","ex","getExcessive","isPeerRestricted","ms","getMissing","shouldPresentCallPanel","MessagesView","getDerivedStateFromProps","leave","sendMessage","retrySend","sendImageAttachment","sendFileAttachment","sendAudioAttachment","sendKeyPress","subscribe","handleScrollReference","handleScrollEvent","handleDescChange","handleSubsUpdated","handleMessageUpdate","handleAllMessagesReceived","handleInfoReceipt","handleImagePostview","handleClosePreview","handleFormResponse","handleContextClick","handleShowMessageContextMenu","handleNewChatAcceptance","handleEnablePeer","handleAttachFile","handleAttachImage","handleCancelUpload","postReadNotification","clearNotificationQueue","goToLatestMessage","handlePickReply","handleCancelReply","handleQuoteClick","handleCallHangup","chatMessageRefs","getOrCreateMessageRef","readNotificationQueue","readNotificationTimer","seqId","createRef","messagesScroller","addEventListener","removeEventListener","messageCount","scrollPosition","scrollTop","scrollHeight","offsetHeight","isNewGroupTopicName","rtcPanel","callSeq","onData","onAllMessagesReceived","onInfo","onPres","applicationVisible","ready","_new","isP2PType","withDesc","nextProps","nextState","latestClearId","onlineSubs","isVerified","isStaff","isDangerous","deleted","docPreview","imagePreview","imagePostview","typingIndicator","fetchingMessages","peerMessagingDisabled","reply","showGoToLastButton","forwardMessage","content","_deleted","online","peer","p2pPeerDesc","maxClearId","callTopic","isWriter","isReader","readingBlocked","unconformed","unconfirmed","isSubscribed","newTopic","newTopicParams","_topicName","getQuery","withLaterDesc","withLaterSub","withLaterData","withLaterDel","setQuery","ctrl","code","onNewTopicCreated","queuedMessages","pub","_sending","message","blankState","oldTopicName","isTopicCached","oldTopic","finally","node","pos","msgHasMoreMessages","getMessagesPage","sendAt","noteRead","setMilliseconds","getMilliseconds","msg","clearTimeout","keyPressTimer","isNewMessage","msgStatus","from","setTimeout","forceUpdate","text","attachJSON","searchParams","resp","set","search","open","stopPropagation","pageY","pageX","messageSpecificMenuItems","userFrom","userName","onNewChat","noteKeyPress","uploadCompletionPromise","uploader","append","sanitizeEntities","maxInbandAttachmentSize","getServerLimit","getLargeFileHelper","cannot_initiate_upload","upload","attachFile","urlPromise","maxExternAttachmentSize","limit","onVideoCallClosed","onCallHangup","caption","insertImage","_tempPreview","appendLineBreak","appendAudio","found","findMessage","_cancelled","senderId","senderName","init","isValid","replyContent","wrapInto","quote","onCancelForwardMessage","replyToSeq","current","scrollIntoView","block","behavior","classList","add","remove","component","hideSelf","component2","onCallInvite","onCallSendOffer","onCallIceCandidate","onCallSendAnswer","isChannel","icon_badges","verified","icon","staff","danger","messageNodes","previousFrom","prevDate","chatBoxClass","dateFmt","Intl","DateTimeFormat","prev","next","nextFrom","sequence","thisFrom","isReply","deliveryStatus","userDesc","parseInt","isNaN","hi","thisDate","ts","toDateString","format","messageVersions","cur","before","_uploader","lastSeen","cont","getContact","isP2PTopicName","seen","when","titleClass","onHideMessagesView","NewTopicById","NewTopicGroup","SearchContacts","search_for_contacts","search_no_results","search_placeholder","NewTopicView","tabSelected","searchQuery","handleTabClick","handleSearchContacts","handleSearchResultSelected","handleNewGroupSubmit","handleGroupByID","currentTarget","dataset","query","onSearchContacts","isNullValue","onCreateTopic","dataUrl","priv","tags","no_contacts_placeholder","searchResults","PasswordResetView","sent","token","scheme","onReset","onCancel","onRequest","placeholder","HostSelector","SettingsView","transport","handleTransportSelected","handleServerAddressChange","onUpdate","names","def","ws","lp","transportOptions","SideNavbar","AccNotificationsView","ValidationView","register","settings","edit","notif","support","newtpk","cred","reset","SidepanelView","handleNewTopic","onSignUp","onSettings","errorAction","errorActionText","loadSpinnerVisible","loginDisabled","onLoginRequest","onGlobalSettings","onUpdateAccountTags","credCode","credMethod","onValidateCredentials","onPasswordResetRequest","onResetPassword","initializeApp","firebaseInitApp","getMessaging","firebaseGetMessaging","getToken","firebaseGetToken","deleteToken","firebaseDelToken","onMessage","firebaseOnMessage","Alert","ContextMenu","ForwardDialog","POP_SOUND","reconnect_countdown","reconnect_now","push_init_failed","invalid_security_token","no_connection","code_doesnot_match","menu_item_info","menu_item_video_call","TinodeWeb","selfRef","getBlankState","handleResize","handleHashRoute","handleOnline","checkForAppUpdate","handleVisibilityEvent","handleError","handleLoginRequest","handlePersistenceChange","handleConnected","handleAutoreconnectIteration","doLogin","handleCredentialsRequest","handleLoginSuccessful","handleDisconnect","tnMeMetaDesc","tnMeContactUpdate","tnMeSubsUpdated","resetContactList","tnData","tnInitFind","tnFndSubsUpdated","handleTopicSelected","handleHideMessagesView","handleSendMessage","handleNewChatInvitation","handleNewAccount","handleNewAccountRequest","handleUpdatePasswordRequest","handleUpdateAccountTagsRequest","handleToggleIncognitoMode","handleSettings","handleGlobalSettings","handleShowArchive","handleShowBlocked","handleToggleMessageSounds","handleCredAdd","handleCredDelete","handleCredConfirm","initFCMessaging","toggleFCMToken","handlePushMessage","handleSidepanelCancel","handleStartTopicRequest","handleNewTopicCreated","handleTopicUpdateRequest","handleChangePermissions","handleTagsUpdateRequest","handleLogout","handleDeleteTopicRequest","handleDeleteMessagesRequest","handleLeaveUnsubRequest","handleBlockTopicRequest","handleReportTopic","handleShowContextMenu","defaultTopicContextMenu","handleHideContextMenu","handleShowAlert","handleShowInfoView","handleValidateCredentialsRequest","handlePasswordResetRequest","handleResetPassword","handleContextMenuAction","handleShowForwardDialog","handleHideForwardDialog","handleStartVideoCall","handleInfoMessage","handleCallClose","handleCallInvite","handleCallRinging","handleCallSendOffer","handleCallIceCandidate","handleCallSendAnswer","handleCallAcceptCall","sendMessageToTopic","autoLogin","messageSoundsOff","FIREBASE_INIT","firebaseToken","hidden","sidePanelSelected","sidePanelTitle","sidePanelAvatar","myTrustedBadges","liveConnection","onLine","topicSelectedOnline","topicSelectedAcs","innerWidth","infoPanel","mobilePanel","callShouldStart","contextMenuVisible","contextMenuBounds","contextMenuClickAt","contextMenuParams","contextMenuItems","forwardDialogVisible","alertVisible","alertParams","requestedTopic","BroadcastChannel","serviceWorkerChannel","warn","documentElement","clientWidth","viewportHeight","clientHeight","tnSetup","onConnect","onDisconnect","onAutoreconnectIteration","onInfoMessage","setDeviceToken","parsedNav","expires","setAuthToken","connect","readTimer","readTimerCallback","persistentCache","onSetupCompleted","appName","apiKey","secure","setHumanLanguage","enableLogging","payload","isChannelTopicName","oobNotification","fcm","serviceWorker","reg","active","postMessage","requestFCMToken","sw","serviceWorkerRegistration","vapidKey","messagingVapidKey","Notification","requestPermission","permission","mobile","onupdatefound","installingWorker","installing","onstatechange","controller","topicType","getTopicAccessMode","method","newTopicTabSelected","tab","reconnectCountdown","reconnect","level","actionText","isConnected","meth","initStorage","clearStorage","getServerInfo","ver","prom","timeLeft","isAuthenticated","getAuthToken","loginBasic","loginToken","goToTopic","onContactUpdate","getCurrentUserID","withCred","disconnect","urlHash","isPresencer","unused","prepareSearchableContacts","foundContacts","merged","updated","past","getTime","receivedTimer","noteRecv","fnd","getFndTopic","withSub","s","setMeta","isTopicOnline","createMessage","completion","subscribePromise","publishMessage","publishDraft","all","response","delTopic","am","updateWant","login_","password_","public_","cred_","tags_","createAccountBasic","on","enabled","delCredential","basicNavigator","infoNavigator","newGroupTopicName","oldName","newName","attachments","updateAccountBasic","getCurrentLogin","updateGiven","cleared","Promose","delCurrentUser","delMessagesAll","updateMode","report","getBoundingClientRect","forwardedContent","mention","msgPreview","forwarded","self_blocked","subscribed","keepForwardedMessage","onConfirm","confirmText","rejectText","confirm","invite","delSubscription","requestResetAuthSecret","newPassword","videoCall","sdp","candidate","callTimeout","log","isMeTopicName","handleManageGroupMembers","phone","handleChange","handleKeyPress","handleCancel","onSubmit","methods","numbers_only","visible","FileProgress","Attachment","downloader","progress","downloadFile","mimetype","download","loaded","uploading","onCancelUpload","substr","helperFunc","downloadUrl","downloadWidget","CANVAS_UPSCALING","LINE_WIDTH","SPACING","BAR_COLOR","BAR_COLOR_DARK","THUMB_COLOR","MIN_PREVIEW_LENGTH","canPlay","playing","currentTime","longMin","initAudio","initCanvas","resampleBars","visualize","handlePlay","handleSeek","audioPlayer","viewBuffer","canvasRef","oncanplay","ontimeupdate","onended","offsetWidth","canvasContext","lineCap","effectiveWidth","lineWidth","drawFrame","requestAnimationFrame","thumbAt","beginPath","strokeStyle","stroke","moveTo","lineTo","arc","PI","fillStyle","fill","original","barCount","factor","amps","lo","amp","j","rect","offset","clientX","playClass","short","fixWebmDuration","BUFFER_SIZE","MILLIS_PER_BAR","BAR_SCALE","MIN_DURATION","MAX_DURATION","VISUALIZATION_BARS","MAX_SAMPLES_PER_BAR","AUDIO_MIME_TYPE","AudioRecorder","audioRecord","recording","paused","blobUrl","initMediaRecording","getRecording","cleanUp","handleResume","handlePause","handleDelete","handleDone","durationMillis","startedOn","stream","mediaRecorder","audioContext","audioInput","analyser","audioChunks","mediaDevices","getUserMedia","audio","video","pcmData","frequencyBinCount","canvasWidth","canvasHeight","viewLength","viewDuration","prevBarCount","volume","countPerBar","getByteTimeDomainData","amplitude","sqrt","dx","requestData","resume","stop","translate","MediaRecorder","AudioContext","createMediaStreamSource","createAnalyser","fftSize","onstop","onFinished","onDeleted","ondataavailable","start","logger","fixedBlob","arrayBuffer","arrayBuff","decodeAudioData","decoded","createPreview","getChannelData","totalSPB","samplingRate","buffer","getTracks","track","resumeClass","Cropper","AvatarCrop","source","handleFileReceived","image","files","onImageUpdated","randId","random","readOnly","icon_mapping","badge_verified","badge_staff","badge_danger","ButtonBack","onBack","localStream","pc","previousOnInfo","localStreamConstraints","localRef","remoteRef","createPeerConnection","handleNegotiationNeededEvent","handleICECandidateEvent","handleNewICECandidateMsg","handleICEConnectionStateChangeEvent","handleSignalingStateChangeEvent","handleICEGatheringStateChangeEvent","handleTrackEvent","handleVideoOfferMsg","handleVideoAnswerMsg","reportError","handleGetUserMediaError","stopTracks","handleCloseClick","handleToggleCameraClick","handleToggleMicClick","toggleMedia","handleRemoteHangup","handleVideoCallAccepted","addTrack","onInvite","srcObject","RTCPeerConnection","onicecandidate","oniceconnectionstatechange","onicegatheringstatechange","onsignalingstatechange","onnegotiationneeded","ontrack","RTCSessionDescription","setRemoteDescription","createOffer","offer","setLocalDescription","onSendOffer","localDescription","toJSON","onIceCandidate","RTCIceCandidate","addIceCandidate","iceConnectionState","signalingState","streams","createAnswer","answer","onSendAnswer","tracks","onremovetrack","onremovestream","close","onHangup","remoteActive","audioIcon","getAudioTracks","videoIcon","getVideoTracks","FormattedDuration","ReceivedMarker","BaseChatMessage","onProgress","handleProgress","handleImagePreview","handleFormButtonClick","formatterContext","act","onFormResponse","userIsWriter","MESSAGE_STATUS_DEL_RANGE","pickReply","ratio","sideClass","bubbleClass","fullDisplay","isGroup","getContentType","att","getDownloadUrl","getEntitySize","tree","direction","isCallDropped","innerRef","timestamp","IntlChatMessage","forwardRef","onChange","Chip","ChipInput","input","focused","handleTextInput","removeChipAt","handleChipCancel","handleFocusGained","handleFocusLost","handleKeyDown","chips","prompt","sortedChips","sortChips","staticMembers","chipIndex","indexChips","index","keep","required","normal","filterFunc","onChipRemoved","onFocusLost","onEnter","avatarDisabled","invalid","autoFocus","tabIndex","noAvatar","ContactAction","handleClick","onAction","Contact","badge_you","badge_owner","showCheckmark","contactNodes","contactsCount","showMode","filter","filterOn","toLowerCase","selected","previewIsVideoCall","previewIsResponse","latestMessage","_status","showUnread","showOnline","noScroll","__html","emptyListMessage","UnreadBadge","onSelected","marker","small","clear_messages","clear_for_all","delete","delete_for_all","send_retry","mute","unmute","forward","topic_delete","topic_delete_warning","delete_messages_warning","unblock","topic_block_warning","member_delete","unarchive","clear_messages_warning","handlePageClick","handleEscapeKey","MenuItems","errorHandler","deleteMessages","retryMessage","replyToMessage","topicPermissionSetter","onTopicRemoved","contains","hide","keyCode","hard","cancelSend","delMessagesList","flushMessage","menu","hSize","vSize","bounds","right","clickAt","bottom","position","DEFAULT_MAX_ZOOM","panX","panY","originX","originY","zoom","minZoom","maxZoom","overlay","cutout","boundingBox","imageWidth","imageHeight","mouseX","mouseY","prevDistance","cutoutRect","bBoxRect","initScaling","onZoom","handleZoom","mouseDown","mouseUp","mouseMove","mouseTouch","positionAll","passive","checkBound","currPan","delta","nextDiff","imgRect","imgLeft","imgRight","coLeft","coRight","imgTop","imgBottom","coTop","coBottom","touches","dX","dY","touch0","touch1","distance","t3d","orig","transform","transformOrigin","iconFromMime","mimeToIcon","default","handleSendDoc","onSendMessage","onCancelReply","show","onClearError","icons","whiteSpace","handleClose","handleContactSelected","not_found_placeholder","contacts_not_found_short","indexMembers","keepInitialMembers","requiredMember","contactFilter","noContactsMessage","selectedContacts","handleMemberRemoved","handleContactFilter","m","present","keepInitial","stat","sel","splice","doContactFiltering","instance","keys","k","usersOnline","totalCount","countToShow","some","overflow","changed","handleHostNameChange","handleEditingFinished","onServerAddressChange","hostOptions","handleSendImage","assignWidth","maxlength","initialValue","handeTextChange","handleStartEditing","handlePasswordFinished","newValue","focus","checkValidity","spanText","spanClass","multiline","element","rows","onKeyDown","onBlur","autoComplete","handleButtonAction","padding","isGroupTopicName","iconColor","letter","charAt","large","clear","centered","MenuContacts","onNewTopic","MenuStart","date","invalid_id","groupId","prefix","TagManager","handleFieldEdit","handleTagsChanged","handleChannelToggle","joiner","writer","preser","approver","skip","compare","modeTitle","compareTitle","message_sending","message_sending_failed","timeStyle","edited","handleSearchChange","handleSearch","handleClear","messaging_disabled","type_new_message","add_image_caption","audioRec","audioAvailable","keypressTimestamp","handlePasteEvent","handleAttachAudio","handleSend","handleMessageTyping","formatReply","messageEditArea","onAttachImage","onAttachFile","onAttachAudio","acceptBlank","noInput","shiftKey","onKeyPress","messagePrompt","audioEnabled","attachImage","click","display","tagInput","activated","handleTagInput","handleAddTag","handleRemoveTag","last","tag","maxTagCount","onTagsChanged","minTagLength","maxTagLength","add_tags_prompt","TopicDescEdit","credentials","getCredentials","addCredActive","addCredInvalid","newCred","previousTagsUpdated","onTagsUpdated","handleTagsUpdated","tnCredsUpdated","handleCredChange","handleCredKeyDown","handleCredEntered","onCredsUpdated","creds","done","onUpdateTopicDesc","newAvatar","newAvatarMime","previousOnTags","tnNewTags","handleFullNameUpdate","handleImageUpdated","handleAvatarCropped","handlePrivateUpdate","handleDescriptionUpdate","uploadAvatar","handleAvatarCropCancel","readyToUpload","du","onUpdateTags","editable","full_name_placeholder","group_name_placeholder","private_placeholder","title_tag_manager","delete_messages","leave_chat","leave_chat_warning","block_contact","block_contact_warning","report_chat","report_chat_warning","other_user","handleDeleteTopic","handleDeleteMessages","handleLeave","handleBlock","handleReport","onDeleteTopic","onLaunchPermissionsEditor","handleVisibility","activeElement","ReactDOM","IntlProvider","allMessages","hl","languages","baseLanguage","htmlLang","setAttribute"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"index.dev.js","mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA,gBAAgB,SAAS;AACzB;AACA;AACA;AACA;AACA;AACA,oBAAoB,eAAe;AACnC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,sDAAsD;AACtD;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,kBAAkB;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,iBAAiB;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,8BAA8B;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4CAA4C;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,QAAQ;AACvD;AACA;AACA,WAAW;AACX;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+CAA+C,qBAAM;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,eAAe,qBAAM;AACrB,eAAe,qBAAM;AACrB;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,MAAM;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C,iBAAiB;AAC9D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,aAAa,GAAG,KAAK;AACjD;AACA;AACA;AACA,+BAA+B,iBAAiB,IAAI,SAAS,GAAG,SAAS;AACzE;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,IAAI;AACvD,KAAK;AACL;AACA,mBAAmB,MAAM,IAAI;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY,GAAG;AACf;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,GAAG;AACd,YAAY,QAAQ;AACpB;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,aAAa,WAAW;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,yBAAyB;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU,yBAAyB;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA,wBAAwB,oBAAoB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,QAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,QAAQ;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yBAAyB,QAAQ;AACjC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,QAAQ;AAChC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,SAAS;AAClD;AACA,8BAA8B;AAC9B;AACA;AACA;AACA,wBAAwB,OAAO;AAC/B,6BAA6B,QAAQ;AACrC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,2BAA2B;AACnD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,QAAQ,UAAU,SAAS;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA,qCAAqC;AACrC;AACA;AACA,oDAAoD;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD;AACjD,WAAW,QAAQ;AACnB,YAAY;AACZ;AACA;AACA;AACA,oBAAoB,gBAAgB;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6CAA6C;AAC7C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,EAAE;AACpB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEkzB;AAClzB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AC12DA;AAGO,MAAMC,QAAQ,GAAG,gBAAgBD,wDAAe,IAAI,MAAnC,CAAjB;AAGA,MAAME,OAAO,GAAG,kCAAhB;AAGA,MAAMC,WAAW,GAAG;EAACC,MAAM,EAAE,eAAT;EAA0BC,KAAK,EAAE;AAAjC,CAApB;AAGA,MAAMC,YAAY,GAAGH,WAAW,CAACC,MAAjC;AAGA,MAAMG,eAAe,GAAG,IAAxB;AAGA,MAAMC,cAAc,GAAG,IAAvB;AAEA,MAAMC,cAAc,GAAG,GAAvB;AAEA,MAAMC,UAAU,GAAG,IAAnB;AAGA,MAAMC,cAAc,GAAG,CAAvB;AAEA,MAAMC,cAAc,GAAG,EAAvB;AAEA,MAAMC,aAAa,GAAG,EAAtB;AAGA,MAAMC,uBAAuB,GAAG,OAAhC;AAEA,MAAMC,mBAAmB,GAAG,SAA5B;AAEA,MAAMC,mBAAmB,GAAG,IAA5B;AA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AACtD,gBAAgB,yCAAyC;AACzD,iBAAiB,0CAA0C;AAC3D,kBAAkB,2CAA2C;AAC7D,kBAAkB,gDAAgD;AAClE,kBAAkB,4CAA4C;AAC9D,eAAe,yCAAyC;AACxD,eAAe,0CAA0C;AACzD,eAAe,2CAA2C;AAC1D,eAAe,oCAAoC;AACnD,iBAAiB,sCAAsC;AACvD,iBAAiB,qCAAqC;AACtD,kBAAkB,wCAAwC;AAC1D,kBAAkB,0CAA0C;AAC5D,iBAAiB,4CAA4C;AAC7D,kBAAkB,+CAA+C;AACjE,kBAAkB,uCAAuC;AACzD,kBAAkB,yCAAyC;AAC3D,qBAAqB,iCAAiC;AACtD,kBAAkB,gCAAgC;AAClD,kBAAkB,oCAAoC;AACtD,kBAAkB,uCAAuC;AACzD,kBAAkB,oCAAoC;AACtD,kBAAkB,mCAAmC;AACrD,kBAAkB,qCAAqC;AACvD,kBAAkB,qCAAqC;AACvD,kBAAkB,wCAAwC;AAC1D,kBAAkB,sCAAsC;AACxD,iBAAiB,iCAAiC;AAClD,iBAAiB,qCAAqC;AACtD,iBAAiB,kCAAkC;AACnD,iBAAiB,mCAAmC;AACpD,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,wBAAwB;AAChD;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,YAAY;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,WAAW;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,kCAAkC;AAChE;AACA;AACA;AACA;AACA;AACA,yCAAyC;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA,yCAAyC,wBAAwB;AACjE;AACA;AACA;AACA,oCAAoC,QAAQ;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,sBAAsB;AAC9C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc;AACd;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,gCAAgC;AAClF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB;AAClB;AACA;AACA;AACA;AACA;AACA,UAAU;AACV;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC;;;;;;;;;;;;AChgBD;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;ACAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;ACAoE;AACuB;AAC8C;AAC1F;AAClB;;AAE7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,gBAAgB,GAAG,gBAAgB;AAC7D;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mBAAmB,oDAAM;;AAEzB;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kCAAkC,gBAAgB,sCAAsC,SAAS;AACjG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,cAAc;AACzF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB,gBAAgB;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gDAAgD,SAAS;AACzD;AACA,8DAA8D,SAAS;AACvE,iEAAiE,SAAS;AAC1E,6DAA6D,SAAS;AACtE,oEAAoE,SAAS;AAC7E;AACA;AACA,8FAA8F,sBAAsB;AACpH,iGAAiG,sBAAsB;AACvH,iGAAiG,sBAAsB;AACvH,wGAAwG,sBAAsB;AAC9H;AACA,0BAA0B,wDAAY;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC;AACxC,uCAAuC;AACvC;AACA;AACA;AACA;AACA,wCAAwC,0DAAS;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0EAA0E,qBAAqB;AAC/F;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C;AAC9C;AACA;AACA,sBAAsB;AACtB;AACA,mCAAmC,iEAAiE;AACpG;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,YAAY,yDAAS;AACrB,YAAY,yDAAS;AACrB;AACA;AACA;AACA,8EAA8E,eAAe;AAC7F;AACA;AACA,0BAA0B,mEAAkB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,iCAAiC;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4DAA4D,eAAe;AAC3E;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,MAAM;AACN;AACA;AACA,MAAM;AACN;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uBAAuB,QAAQ;AAC/B;AACA;AACA;AACA;AACA;AACA,2CAA2C,QAAQ,kBAAkB,QAAQ;AAC7E;AACA;AACA,0CAA0C,QAAQ;AAClD;AACA;AACA;AACA;AACA;AACA,0CAA0C,QAAQ;AAClD;AACA;AACA;AACA;AACA,2BAA2B,0DAAS,IAAI,QAAQ,oBAAoB,kBAAkB;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,mEAAiB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,6DAAa;AACjB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,2CAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,aAAa;AACb,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA,cAAc,SAAS,GAAG,kBAAkB;AAC5C;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oDAAoD,aAAa;AACjE;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kCAAkC;AAClD,6BAA6B,6EAA6B,kBAAkB,0CAA0C;AACtH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa,oEAAoB;AACjC;AACA;AACA;AACA,mBAAmB,yEAAyB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA,2CAA2C;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,WAAW,6EAA6B;AACxC;AACA,qBAAqB,yCAAyC;AAC9D;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,0DAAS;AACpC,2BAA2B,0DAAS;AACpC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;;AAE2R;AAC3R;;;;;;;;;;;;;;;;;;;AC/4B0C;;AAE1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,oDAAQ;AACzC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uCAAuC,WAAW;AAClD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,gBAAgB,eAAe,UAAU;AAC1F;AACA;AACA,yCAAyC,WAAW;AACpD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8CAA8C,wCAAwC;AACtF;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wBAAwB;AACxB,gBAAgB,eAAe;AAC/B;AACA;AACA,2BAA2B,UAAU,GAAG,qBAAqB;AAC7D;AACA;AACA,qCAAqC,WAAW;AAChD;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,kCAAkC;AAC/D;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4GAA4G;AAC5G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,+BAA+B;AAC/B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,gBAAgB,mCAAmC,UAAU;AACtG;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEmD;AACnD;;;;;;;;;;;;;;;;;;;;;;;;ACxZ0F;AAC1C;AACa;AAChC;;AAE7B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,6BAA6B,QAAQ;AACrC;AACA;AACA,gDAAgD;AAChD;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uGAAuG,WAAW;AAClH;AACA;AACA,+CAA+C,cAAc,4BAA4B,cAAc,cAAc,GAAG,eAAe;AACvI;AACA;AACA;AACA,0BAA0B,wDAAY;AACtC;AACA;AACA,6BAA6B,yDAAa;AAC1C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,WAAW;AAC/C,cAAc,sBAAsB,YAAY,UAAU;AAC1D;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,sBAAsB,QAAQ;AAC9B;AACA;AACA;AACA;AACA,KAAK;AACL;AACA,yCAAyC,cAAc;AACvD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,uBAAuB,EAAE,aAAa;AACpD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2CAA2C,qCAAqC,IAAI,KAAK;AACzF;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,GAAG;AAC3C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,kBAAkB,GAAG,gBAAgB;AACnD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,8BAA8B,UAAU;AACxC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,2CAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,yCAAyC;AACzD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0CAA0C,qCAAqC;AAC/E;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,mDAAmD,KAAK;AACxD,cAAc,oCAAoC,GAAG,IAAI;AACzD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iDAAiD,eAAe,aAAa,sCAAsC;AACnH;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA,uEAAuE,wBAAwB,WAAW;AAC1G;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2EAA2E,wBAAwB,aAAa,sCAAsC;AACtJ;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,yCAAyC,eAAe,gCAAgC;AACxF;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,yCAAyC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,sBAAsB;AAClC;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,KAAK;AAC7C,cAAc,oCAAoC,GAAG,IAAI;AACzD;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,YAAY;AACxB;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,YAAY;AACxB;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,qBAAqB;AAChD,IAAI,iCAAiC;AACrC,qBAAqB,iCAAiC;AACtD;AACA;AACA;AACA,gCAAgC,qDAAM;AACtC,8BAA8B,2DAAY;AAC1C;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qCAAqC,2DAAY;AACjD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,2DAAY;AACtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iEAAkB,KAAK,0DAAS;AACpC,IAAI,iEAAkB,KAAK,0DAAS;AACpC;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA,8DAAe;AACf;AACA,8DAAe;;AAE+D;AAC9E;;;;;;;;;;;;;;;;;;;ACjoCA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,4BAA4B;AAC7B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,4BAA4B,IAAI,KAAK,cAAc;AACnD;AACA;AACA,sFAAsF,QAAQ;AAC9F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kDAAkD,IAAI;AACtD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iBAAiB;AACjB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB;AACrB;AACA;AACA;AACA;AACA;;AAE4D;AAC5D;;;;;;;;;;;;;;;;;;;;;;;;;AC1NiC;AACe;AACT;AAC+F;AAC5C;;AAE1F;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,sCAAsC;;AAEvC;AACA;AACA;AACA;AACA,mEAAmE;AACnE;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,CAAC,kCAAkC;;AAEnC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,oBAAoB;AACxC;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qBAAqB,2CAAM;AAC3B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,UAAU,6CAAQ;AAClB,UAAU,6CAAQ;AAClB,UAAU,6CAAQ;AAClB;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,sBAAsB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,2CAAM;AAC1B;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kBAAkB,WAAW;AAC7B;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,uGAAuG,WAAW;AAClH;AACA;AACA;AACA;AACA;AACA;AACA,sIAAsI,qBAAqB;AAC3J,qHAAqH,WAAW;AAChI;AACA;AACA,yBAAyB,WAAW;AACpC,8GAA8G,WAAW;AACzH;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,wDAAY;;AAEtC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,4CAA4C,GAAG,mBAAmB;AAC1G;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,wCAAwC,4CAA4C,GAAG,MAAM;AAC7F;AACA;AACA;AACA;AACA;AACA,aAAa;AACb;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA,uBAAuB,WAAW;AAClC,cAAc,SAAS,YAAY,UAAU;AAC7C;AACA,4BAA4B,0BAA0B;AACtD;AACA;AACA;AACA;AACA;AACA,qDAAqD,UAAU;AAC/D,KAAK;AACL;AACA,mBAAmB,kCAAkC;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAqD;AACrD;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,kEAAkE,mBAAmB,6CAA6C;AAClI;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oBAAoB,eAAe;AACnC;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,YAAY,UAAU;AACtB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;AACA;AACA;AACA,SAAS;AACT;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,IAAI,iEAAkB,KAAK,0DAAS;AACpC,IAAI,iEAAkB,KAAK,0DAAS;AACpC,IAAI,8DAAe;AACnB;AACA,IAAI,8DAAe;AACnB;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,cAAc,yEAAyB;AACvC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,QAAQ,oEAAoB;AAC5B,QAAQ,iEAAiB;AACzB;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,oCAAoC,qDAAM;AAC1C;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA,KAAK;AACL,WAAW,2DAAY,CAAC,kEAAkB;AAC1C;AACA;AACA,mBAAmB,iBAAiB;AACpC,gFAAgF;AAChF;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAkB;AAClC;AACA;AACA;AACA,wDAAwD,iBAAiB;AACzE,QAAQ,iBAAiB;AACzB;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAkB;AAClC;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,2BAA2B,iBAAiB;AAC5C;AACA;AACA;AACA;AACA;AACA;AACA;AACA,gBAAgB,kEAAkB;AAClC;AACA;;AAEA;AACA;AACA;AACA;AACA;AACA;;AAEoH;AACpH;;;;;;;;;;;;;;;;;;;;AC1sCmE;AACN;;AAE7D;AACA;AACA;AACA;AACA;AACA;AACA;AACA,iCAAiC,yCAAyC,IAAI;AAC9E;AACA,wBAAwB,qDAAI;AAC5B;AACA;AACA,oBAAoB,qDAAI,sDAAsD,qDAAI;AAClF,SAAS;AACT;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA,0BAA0B,UAAU,IAAI;AACxC;AACA;AACA;AACA,WAAW,qDAAI;AACf;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,qDAAY;AACZ;AACA;AACA;AACA,CAAC;;AAE2B;;;;;;;;;;;;;;;;;;;;ACvF5B;;AAEA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL,wBAAwB;AACxB;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA,KAAK;AACL;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;AACA;;AAEqG;;;;;;;;;;;;;;;;;;UCxLrG;UACA;;UAEA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;;UAEA;UACA;;UAEA;UACA;UACA;;;;;WCtBA;WACA;WACA;WACA;WACA;WACA,iCAAiC,WAAW;WAC5C;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,yCAAyC,wCAAwC;WACjF;WACA;WACA;;;;;WCPA;WACA;WACA;WACA;WACA,GAAG;WACH;WACA;WACA,CAAC;;;;;WCPD;;;;;WCAA;WACA;WACA;WACA,uDAAuD,iBAAiB;WACxE;WACA,gDAAgD,aAAa;WAC7D;;;;;;;;;;;;;;;;;;;;;ACHA;AACA;AAEA;AAEA;AACA;AACA;AAIA,MAAM;EAAE39B;AAAF,IAAaJ,uEAAA,CAA4BpG,MAAM,CAAC+E,QAAP,CAAgBuB,IAA5C,CAAnB;AACA,MAAMyB,QAAQ,GAAIvB,MAAM,IAAIA,MAAM,CAACmiD,EAAlB,IACd9gD,SAAS,CAAC+gD,SAAV,IAAuB/gD,SAAS,CAAC+gD,SAAV,CAAoB,CAApB,CADT,IAEf/gD,SAAS,CAACE,QAFK,IAGfF,SAAS,CAACC,YAHK,IAIf,IAJF;AAOA,MAAM+gD,YAAY,GAAG9gD,QAAQ,CAACuuC,WAAT,GAAuBl5C,KAAvB,CAA6B,MAA7B,EAAqC,CAArC,CAArB;AAGA,MAAM0rD,QAAQ,GAAGJ,2CAAW,CAAC3gD,QAAD,CAAX,GAAwBA,QAAxB,GAAmC2gD,2CAAW,CAACG,YAAD,CAAX,GAA4BA,YAA5B,GAA2C,IAA/F;AACA,MAAM7nD,QAAQ,GAAG0nD,2CAAW,CAACI,QAAD,CAA5B;AAGAntD,QAAQ,CAAC6O,oBAAT,CAA8B,MAA9B,EAAsC,CAAtC,EAAyCu+C,YAAzC,CAAsD,MAAtD,EAA8DD,QAA9D;AAEAN,uDAAA,CACE,2DAAC,yDAAD,QACE,2DAAC,oDAAD;EAAc,MAAM,EAAEzgD,QAAtB;EAAgC,QAAQ,EAAE/G,QAA1C;EAAoD,aAAa,EAAEX,uDAAcoD;AAAjF,GACE,2DAAC,6DAAD,OADF,CADF,CADF,EAME9H,QAAQ,CAAC2O,cAAT,CAAwB,YAAxB,CANF,E","sources":["webpack://tinode-webapp/./node_modules/@firebase/util/dist/index.esm2017.js","webpack://tinode-webapp/./src/config.js","webpack://tinode-webapp/./src/constants.js","webpack://tinode-webapp/./src/lib/blob-helpers.js","webpack://tinode-webapp/./src/lib/formatters.js","webpack://tinode-webapp/./src/lib/host-name.js","webpack://tinode-webapp/./src/lib/local-storage.js","webpack://tinode-webapp/./src/lib/navigation.js","webpack://tinode-webapp/./src/lib/strformat.js","webpack://tinode-webapp/./src/lib/utils.js","webpack://tinode-webapp/./src/version.js","webpack://tinode-webapp/./src/views/acc-notifications-view.jsx","webpack://tinode-webapp/./src/views/acc-security-view.jsx","webpack://tinode-webapp/./src/views/acc-support-view.jsx","webpack://tinode-webapp/./src/views/account-settings-view.jsx","webpack://tinode-webapp/./src/views/contacts-view.jsx","webpack://tinode-webapp/./src/views/create-account-view.jsx","webpack://tinode-webapp/./src/views/incoming-call-view.jsx","webpack://tinode-webapp/./src/views/info-view.jsx","webpack://tinode-webapp/./src/views/login-view.jsx","webpack://tinode-webapp/./src/views/logo-view.jsx","webpack://tinode-webapp/./src/views/messages-view.jsx","webpack://tinode-webapp/./src/views/new-topic-view.jsx","webpack://tinode-webapp/./src/views/password-reset-view.jsx","webpack://tinode-webapp/./src/views/settings-view.jsx","webpack://tinode-webapp/./src/views/sidepanel-view.jsx","webpack://tinode-webapp/./src/views/tinode-web.jsx","webpack://tinode-webapp/./src/views/validation-view.jsx","webpack://tinode-webapp/./src/widgets/alert.jsx","webpack://tinode-webapp/./src/widgets/attachment.jsx","webpack://tinode-webapp/./src/widgets/audio-player.jsx","webpack://tinode-webapp/./src/widgets/audio-recorder.jsx","webpack://tinode-webapp/./src/widgets/avatar-crop.jsx","webpack://tinode-webapp/./src/widgets/avatar-upload.jsx","webpack://tinode-webapp/./src/widgets/badge-list.jsx","webpack://tinode-webapp/./src/widgets/button-back.jsx","webpack://tinode-webapp/./src/widgets/call-panel.jsx","webpack://tinode-webapp/./src/widgets/chat-message.jsx","webpack://tinode-webapp/./src/widgets/checkbox.jsx","webpack://tinode-webapp/./src/widgets/chip-input.jsx","webpack://tinode-webapp/./src/widgets/chip.jsx","webpack://tinode-webapp/./src/widgets/contact-action.jsx","webpack://tinode-webapp/./src/widgets/contact-badges.jsx","webpack://tinode-webapp/./src/widgets/contact-list.jsx","webpack://tinode-webapp/./src/widgets/contact.jsx","webpack://tinode-webapp/./src/widgets/context-menu.jsx","webpack://tinode-webapp/./src/widgets/cropper.jsx","webpack://tinode-webapp/./src/widgets/doc-preview.jsx","webpack://tinode-webapp/./src/widgets/error-panel.jsx","webpack://tinode-webapp/./src/widgets/file-progress.jsx","webpack://tinode-webapp/./src/widgets/forward-dialog.jsx","webpack://tinode-webapp/./src/widgets/group-manager.jsx","webpack://tinode-webapp/./src/widgets/group-subs.jsx","webpack://tinode-webapp/./src/widgets/host-selector.jsx","webpack://tinode-webapp/./src/widgets/image-preview.jsx","webpack://tinode-webapp/./src/widgets/in-place-edit.jsx","webpack://tinode-webapp/./src/widgets/invitation.jsx","webpack://tinode-webapp/./src/widgets/lazy-image.jsx","webpack://tinode-webapp/./src/widgets/letter-tile.jsx","webpack://tinode-webapp/./src/widgets/load-spinner.jsx","webpack://tinode-webapp/./src/widgets/menu-cancel.jsx","webpack://tinode-webapp/./src/widgets/menu-contacts.jsx","webpack://tinode-webapp/./src/widgets/menu-start.jsx","webpack://tinode-webapp/./src/widgets/meta-message.jsx","webpack://tinode-webapp/./src/widgets/new-topic-by-id.jsx","webpack://tinode-webapp/./src/widgets/new-topic-group.jsx","webpack://tinode-webapp/./src/widgets/permissions-editor.jsx","webpack://tinode-webapp/./src/widgets/received-marker.jsx","webpack://tinode-webapp/./src/widgets/search-contacts.jsx","webpack://tinode-webapp/./src/widgets/send-message.jsx","webpack://tinode-webapp/./src/widgets/side-navbar.jsx","webpack://tinode-webapp/./src/widgets/tag-manager.jsx","webpack://tinode-webapp/./src/widgets/topic-common.jsx","webpack://tinode-webapp/./src/widgets/topic-desc-edit.jsx","webpack://tinode-webapp/./src/widgets/topic-security.jsx","webpack://tinode-webapp/./src/widgets/unread-badge.jsx","webpack://tinode-webapp/./src/widgets/uploading-image.jsx","webpack://tinode-webapp/./src/widgets/visible-password.jsx","webpack://tinode-webapp/./node_modules/firebase/app/dist/index.esm.js","webpack://tinode-webapp/./node_modules/firebase/messaging/dist/index.esm.js","webpack://tinode-webapp/./node_modules/fix-webm-duration/fix-webm-duration.js","webpack://tinode-webapp/external var \"React\"","webpack://tinode-webapp/external var \"ReactDOM\"","webpack://tinode-webapp/external var \"ReactIntl\"","webpack://tinode-webapp/external var \"Tinode\"","webpack://tinode-webapp/./node_modules/@firebase/app/dist/esm/index.esm2017.js","webpack://tinode-webapp/./node_modules/@firebase/component/dist/esm/index.esm2017.js","webpack://tinode-webapp/./node_modules/@firebase/installations/dist/esm/index.esm2017.js","webpack://tinode-webapp/./node_modules/@firebase/logger/dist/esm/index.esm2017.js","webpack://tinode-webapp/./node_modules/@firebase/messaging/dist/esm/index.esm2017.js","webpack://tinode-webapp/./node_modules/idb/build/index.js","webpack://tinode-webapp/./node_modules/idb/build/wrap-idb-value.js","webpack://tinode-webapp/webpack/bootstrap","webpack://tinode-webapp/webpack/runtime/compat get default export","webpack://tinode-webapp/webpack/runtime/define property getters","webpack://tinode-webapp/webpack/runtime/global","webpack://tinode-webapp/webpack/runtime/hasOwnProperty shorthand","webpack://tinode-webapp/webpack/runtime/make namespace object","webpack://tinode-webapp/./src/index.js"],"sourcesContent":["/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview Firebase constants. Some of these (@defines) can be overridden at compile-time.\r\n */\r\nconst CONSTANTS = {\r\n /**\r\n * @define {boolean} Whether this is the client Node.js SDK.\r\n */\r\n NODE_CLIENT: false,\r\n /**\r\n * @define {boolean} Whether this is the Admin Node.js SDK.\r\n */\r\n NODE_ADMIN: false,\r\n /**\r\n * Firebase SDK Version\r\n */\r\n SDK_VERSION: '${JSCORE_VERSION}'\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Throws an error if the provided assertion is falsy\r\n */\r\nconst assert = function (assertion, message) {\r\n if (!assertion) {\r\n throw assertionError(message);\r\n }\r\n};\r\n/**\r\n * Returns an Error object suitable for throwing.\r\n */\r\nconst assertionError = function (message) {\r\n return new Error('Firebase Database (' +\r\n CONSTANTS.SDK_VERSION +\r\n ') INTERNAL ASSERT FAILED: ' +\r\n message);\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst stringToByteArray$1 = function (str) {\r\n // TODO(user): Use native implementations if/when available\r\n const out = [];\r\n let p = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n let c = str.charCodeAt(i);\r\n if (c < 128) {\r\n out[p++] = c;\r\n }\r\n else if (c < 2048) {\r\n out[p++] = (c >> 6) | 192;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else if ((c & 0xfc00) === 0xd800 &&\r\n i + 1 < str.length &&\r\n (str.charCodeAt(i + 1) & 0xfc00) === 0xdc00) {\r\n // Surrogate Pair\r\n c = 0x10000 + ((c & 0x03ff) << 10) + (str.charCodeAt(++i) & 0x03ff);\r\n out[p++] = (c >> 18) | 240;\r\n out[p++] = ((c >> 12) & 63) | 128;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else {\r\n out[p++] = (c >> 12) | 224;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n }\r\n return out;\r\n};\r\n/**\r\n * Turns an array of numbers into the string given by the concatenation of the\r\n * characters to which the numbers correspond.\r\n * @param bytes Array of numbers representing characters.\r\n * @return Stringification of the array.\r\n */\r\nconst byteArrayToString = function (bytes) {\r\n // TODO(user): Use native implementations if/when available\r\n const out = [];\r\n let pos = 0, c = 0;\r\n while (pos < bytes.length) {\r\n const c1 = bytes[pos++];\r\n if (c1 < 128) {\r\n out[c++] = String.fromCharCode(c1);\r\n }\r\n else if (c1 > 191 && c1 < 224) {\r\n const c2 = bytes[pos++];\r\n out[c++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));\r\n }\r\n else if (c1 > 239 && c1 < 365) {\r\n // Surrogate Pair\r\n const c2 = bytes[pos++];\r\n const c3 = bytes[pos++];\r\n const c4 = bytes[pos++];\r\n const u = (((c1 & 7) << 18) | ((c2 & 63) << 12) | ((c3 & 63) << 6) | (c4 & 63)) -\r\n 0x10000;\r\n out[c++] = String.fromCharCode(0xd800 + (u >> 10));\r\n out[c++] = String.fromCharCode(0xdc00 + (u & 1023));\r\n }\r\n else {\r\n const c2 = bytes[pos++];\r\n const c3 = bytes[pos++];\r\n out[c++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\r\n }\r\n }\r\n return out.join('');\r\n};\r\n// We define it as an object literal instead of a class because a class compiled down to es5 can't\r\n// be treeshaked. https://github.com/rollup/rollup/issues/1691\r\n// Static lookup maps, lazily populated by init_()\r\nconst base64 = {\r\n /**\r\n * Maps bytes to characters.\r\n */\r\n byteToCharMap_: null,\r\n /**\r\n * Maps characters to bytes.\r\n */\r\n charToByteMap_: null,\r\n /**\r\n * Maps bytes to websafe characters.\r\n * @private\r\n */\r\n byteToCharMapWebSafe_: null,\r\n /**\r\n * Maps websafe characters to bytes.\r\n * @private\r\n */\r\n charToByteMapWebSafe_: null,\r\n /**\r\n * Our default alphabet, shared between\r\n * ENCODED_VALS and ENCODED_VALS_WEBSAFE\r\n */\r\n ENCODED_VALS_BASE: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 'abcdefghijklmnopqrstuvwxyz' + '0123456789',\r\n /**\r\n * Our default alphabet. Value 64 (=) is special; it means \"nothing.\"\r\n */\r\n get ENCODED_VALS() {\r\n return this.ENCODED_VALS_BASE + '+/=';\r\n },\r\n /**\r\n * Our websafe alphabet.\r\n */\r\n get ENCODED_VALS_WEBSAFE() {\r\n return this.ENCODED_VALS_BASE + '-_.';\r\n },\r\n /**\r\n * Whether this browser supports the atob and btoa functions. This extension\r\n * started at Mozilla but is now implemented by many browsers. We use the\r\n * ASSUME_* variables to avoid pulling in the full useragent detection library\r\n * but still allowing the standard per-browser compilations.\r\n *\r\n */\r\n HAS_NATIVE_SUPPORT: typeof atob === 'function',\r\n /**\r\n * Base64-encode an array of bytes.\r\n *\r\n * @param input An array of bytes (numbers with\r\n * value in [0, 255]) to encode.\r\n * @param webSafe Boolean indicating we should use the\r\n * alternative alphabet.\r\n * @return The base64 encoded string.\r\n */\r\n encodeByteArray(input, webSafe) {\r\n if (!Array.isArray(input)) {\r\n throw Error('encodeByteArray takes an array as a parameter');\r\n }\r\n this.init_();\r\n const byteToCharMap = webSafe\r\n ? this.byteToCharMapWebSafe_\r\n : this.byteToCharMap_;\r\n const output = [];\r\n for (let i = 0; i < input.length; i += 3) {\r\n const byte1 = input[i];\r\n const haveByte2 = i + 1 < input.length;\r\n const byte2 = haveByte2 ? input[i + 1] : 0;\r\n const haveByte3 = i + 2 < input.length;\r\n const byte3 = haveByte3 ? input[i + 2] : 0;\r\n const outByte1 = byte1 >> 2;\r\n const outByte2 = ((byte1 & 0x03) << 4) | (byte2 >> 4);\r\n let outByte3 = ((byte2 & 0x0f) << 2) | (byte3 >> 6);\r\n let outByte4 = byte3 & 0x3f;\r\n if (!haveByte3) {\r\n outByte4 = 64;\r\n if (!haveByte2) {\r\n outByte3 = 64;\r\n }\r\n }\r\n output.push(byteToCharMap[outByte1], byteToCharMap[outByte2], byteToCharMap[outByte3], byteToCharMap[outByte4]);\r\n }\r\n return output.join('');\r\n },\r\n /**\r\n * Base64-encode a string.\r\n *\r\n * @param input A string to encode.\r\n * @param webSafe If true, we should use the\r\n * alternative alphabet.\r\n * @return The base64 encoded string.\r\n */\r\n encodeString(input, webSafe) {\r\n // Shortcut for Mozilla browsers that implement\r\n // a native base64 encoder in the form of \"btoa/atob\"\r\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\r\n return btoa(input);\r\n }\r\n return this.encodeByteArray(stringToByteArray$1(input), webSafe);\r\n },\r\n /**\r\n * Base64-decode a string.\r\n *\r\n * @param input to decode.\r\n * @param webSafe True if we should use the\r\n * alternative alphabet.\r\n * @return string representing the decoded value.\r\n */\r\n decodeString(input, webSafe) {\r\n // Shortcut for Mozilla browsers that implement\r\n // a native base64 encoder in the form of \"btoa/atob\"\r\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\r\n return atob(input);\r\n }\r\n return byteArrayToString(this.decodeStringToByteArray(input, webSafe));\r\n },\r\n /**\r\n * Base64-decode a string.\r\n *\r\n * In base-64 decoding, groups of four characters are converted into three\r\n * bytes. If the encoder did not apply padding, the input length may not\r\n * be a multiple of 4.\r\n *\r\n * In this case, the last group will have fewer than 4 characters, and\r\n * padding will be inferred. If the group has one or two characters, it decodes\r\n * to one byte. If the group has three characters, it decodes to two bytes.\r\n *\r\n * @param input Input to decode.\r\n * @param webSafe True if we should use the web-safe alphabet.\r\n * @return bytes representing the decoded value.\r\n */\r\n decodeStringToByteArray(input, webSafe) {\r\n this.init_();\r\n const charToByteMap = webSafe\r\n ? this.charToByteMapWebSafe_\r\n : this.charToByteMap_;\r\n const output = [];\r\n for (let i = 0; i < input.length;) {\r\n const byte1 = charToByteMap[input.charAt(i++)];\r\n const haveByte2 = i < input.length;\r\n const byte2 = haveByte2 ? charToByteMap[input.charAt(i)] : 0;\r\n ++i;\r\n const haveByte3 = i < input.length;\r\n const byte3 = haveByte3 ? charToByteMap[input.charAt(i)] : 64;\r\n ++i;\r\n const haveByte4 = i < input.length;\r\n const byte4 = haveByte4 ? charToByteMap[input.charAt(i)] : 64;\r\n ++i;\r\n if (byte1 == null || byte2 == null || byte3 == null || byte4 == null) {\r\n throw Error();\r\n }\r\n const outByte1 = (byte1 << 2) | (byte2 >> 4);\r\n output.push(outByte1);\r\n if (byte3 !== 64) {\r\n const outByte2 = ((byte2 << 4) & 0xf0) | (byte3 >> 2);\r\n output.push(outByte2);\r\n if (byte4 !== 64) {\r\n const outByte3 = ((byte3 << 6) & 0xc0) | byte4;\r\n output.push(outByte3);\r\n }\r\n }\r\n }\r\n return output;\r\n },\r\n /**\r\n * Lazy static initialization function. Called before\r\n * accessing any of the static map variables.\r\n * @private\r\n */\r\n init_() {\r\n if (!this.byteToCharMap_) {\r\n this.byteToCharMap_ = {};\r\n this.charToByteMap_ = {};\r\n this.byteToCharMapWebSafe_ = {};\r\n this.charToByteMapWebSafe_ = {};\r\n // We want quick mappings back and forth, so we precompute two maps.\r\n for (let i = 0; i < this.ENCODED_VALS.length; i++) {\r\n this.byteToCharMap_[i] = this.ENCODED_VALS.charAt(i);\r\n this.charToByteMap_[this.byteToCharMap_[i]] = i;\r\n this.byteToCharMapWebSafe_[i] = this.ENCODED_VALS_WEBSAFE.charAt(i);\r\n this.charToByteMapWebSafe_[this.byteToCharMapWebSafe_[i]] = i;\r\n // Be forgiving when decoding and correctly decode both encodings.\r\n if (i >= this.ENCODED_VALS_BASE.length) {\r\n this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(i)] = i;\r\n this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(i)] = i;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n/**\r\n * URL-safe base64 encoding\r\n */\r\nconst base64Encode = function (str) {\r\n const utf8Bytes = stringToByteArray$1(str);\r\n return base64.encodeByteArray(utf8Bytes, true);\r\n};\r\n/**\r\n * URL-safe base64 encoding (without \".\" padding in the end).\r\n * e.g. Used in JSON Web Token (JWT) parts.\r\n */\r\nconst base64urlEncodeWithoutPadding = function (str) {\r\n // Use base64url encoding and remove padding in the end (dot characters).\r\n return base64Encode(str).replace(/\\./g, '');\r\n};\r\n/**\r\n * URL-safe base64 decoding\r\n *\r\n * NOTE: DO NOT use the global atob() function - it does NOT support the\r\n * base64Url variant encoding.\r\n *\r\n * @param str To be decoded\r\n * @return Decoded result, if possible\r\n */\r\nconst base64Decode = function (str) {\r\n try {\r\n return base64.decodeString(str, true);\r\n }\r\n catch (e) {\r\n console.error('base64Decode failed: ', e);\r\n }\r\n return null;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Do a deep-copy of basic JavaScript Objects or Arrays.\r\n */\r\nfunction deepCopy(value) {\r\n return deepExtend(undefined, value);\r\n}\r\n/**\r\n * Copy properties from source to target (recursively allows extension\r\n * of Objects and Arrays). Scalar values in the target are over-written.\r\n * If target is undefined, an object of the appropriate type will be created\r\n * (and returned).\r\n *\r\n * We recursively copy all child properties of plain Objects in the source- so\r\n * that namespace- like dictionaries are merged.\r\n *\r\n * Note that the target can be a function, in which case the properties in\r\n * the source Object are copied onto it as static properties of the Function.\r\n *\r\n * Note: we don't merge __proto__ to prevent prototype pollution\r\n */\r\nfunction deepExtend(target, source) {\r\n if (!(source instanceof Object)) {\r\n return source;\r\n }\r\n switch (source.constructor) {\r\n case Date:\r\n // Treat Dates like scalars; if the target date object had any child\r\n // properties - they will be lost!\r\n const dateValue = source;\r\n return new Date(dateValue.getTime());\r\n case Object:\r\n if (target === undefined) {\r\n target = {};\r\n }\r\n break;\r\n case Array:\r\n // Always copy the array source and overwrite the target.\r\n target = [];\r\n break;\r\n default:\r\n // Not a plain Object - treat it as a scalar.\r\n return source;\r\n }\r\n for (const prop in source) {\r\n // use isValidKey to guard against prototype pollution. See https://snyk.io/vuln/SNYK-JS-LODASH-450202\r\n if (!source.hasOwnProperty(prop) || !isValidKey(prop)) {\r\n continue;\r\n }\r\n target[prop] = deepExtend(target[prop], source[prop]);\r\n }\r\n return target;\r\n}\r\nfunction isValidKey(key) {\r\n return key !== '__proto__';\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass Deferred {\r\n constructor() {\r\n this.reject = () => { };\r\n this.resolve = () => { };\r\n this.promise = new Promise((resolve, reject) => {\r\n this.resolve = resolve;\r\n this.reject = reject;\r\n });\r\n }\r\n /**\r\n * Our API internals are not promiseified and cannot because our callback APIs have subtle expectations around\r\n * invoking promises inline, which Promises are forbidden to do. This method accepts an optional node-style callback\r\n * and returns a node-style callback which will resolve or reject the Deferred's promise.\r\n */\r\n wrapCallback(callback) {\r\n return (error, value) => {\r\n if (error) {\r\n this.reject(error);\r\n }\r\n else {\r\n this.resolve(value);\r\n }\r\n if (typeof callback === 'function') {\r\n // Attaching noop handler just in case developer wasn't expecting\r\n // promises\r\n this.promise.catch(() => { });\r\n // Some of our callbacks don't expect a value and our own tests\r\n // assert that the parameter length is 1\r\n if (callback.length === 1) {\r\n callback(error);\r\n }\r\n else {\r\n callback(error, value);\r\n }\r\n }\r\n };\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction createMockUserToken(token, projectId) {\r\n if (token.uid) {\r\n throw new Error('The \"uid\" field is no longer supported by mockUserToken. Please use \"sub\" instead for Firebase Auth User ID.');\r\n }\r\n // Unsecured JWTs use \"none\" as the algorithm.\r\n const header = {\r\n alg: 'none',\r\n type: 'JWT'\r\n };\r\n const project = projectId || 'demo-project';\r\n const iat = token.iat || 0;\r\n const sub = token.sub || token.user_id;\r\n if (!sub) {\r\n throw new Error(\"mockUserToken must contain 'sub' or 'user_id' field!\");\r\n }\r\n const payload = Object.assign({ \r\n // Set all required fields to decent defaults\r\n iss: `https://securetoken.google.com/${project}`, aud: project, iat, exp: iat + 3600, auth_time: iat, sub, user_id: sub, firebase: {\r\n sign_in_provider: 'custom',\r\n identities: {}\r\n } }, token);\r\n // Unsecured JWTs use the empty string as a signature.\r\n const signature = '';\r\n return [\r\n base64urlEncodeWithoutPadding(JSON.stringify(header)),\r\n base64urlEncodeWithoutPadding(JSON.stringify(payload)),\r\n signature\r\n ].join('.');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns navigator.userAgent string or '' if it's not defined.\r\n * @return user agent string\r\n */\r\nfunction getUA() {\r\n if (typeof navigator !== 'undefined' &&\r\n typeof navigator['userAgent'] === 'string') {\r\n return navigator['userAgent'];\r\n }\r\n else {\r\n return '';\r\n }\r\n}\r\n/**\r\n * Detect Cordova / PhoneGap / Ionic frameworks on a mobile device.\r\n *\r\n * Deliberately does not rely on checking `file://` URLs (as this fails PhoneGap\r\n * in the Ripple emulator) nor Cordova `onDeviceReady`, which would normally\r\n * wait for a callback.\r\n */\r\nfunction isMobileCordova() {\r\n return (typeof window !== 'undefined' &&\r\n // @ts-ignore Setting up an broadly applicable index signature for Window\r\n // just to deal with this case would probably be a bad idea.\r\n !!(window['cordova'] || window['phonegap'] || window['PhoneGap']) &&\r\n /ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(getUA()));\r\n}\r\n/**\r\n * Detect Node.js.\r\n *\r\n * @return true if Node.js environment is detected.\r\n */\r\n// Node detection logic from: https://github.com/iliakan/detect-node/\r\nfunction isNode() {\r\n try {\r\n return (Object.prototype.toString.call(global.process) === '[object process]');\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n}\r\n/**\r\n * Detect Browser Environment\r\n */\r\nfunction isBrowser() {\r\n return typeof self === 'object' && self.self === self;\r\n}\r\nfunction isBrowserExtension() {\r\n const runtime = typeof chrome === 'object'\r\n ? chrome.runtime\r\n : typeof browser === 'object'\r\n ? browser.runtime\r\n : undefined;\r\n return typeof runtime === 'object' && runtime.id !== undefined;\r\n}\r\n/**\r\n * Detect React Native.\r\n *\r\n * @return true if ReactNative environment is detected.\r\n */\r\nfunction isReactNative() {\r\n return (typeof navigator === 'object' && navigator['product'] === 'ReactNative');\r\n}\r\n/** Detects Electron apps. */\r\nfunction isElectron() {\r\n return getUA().indexOf('Electron/') >= 0;\r\n}\r\n/** Detects Internet Explorer. */\r\nfunction isIE() {\r\n const ua = getUA();\r\n return ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\r\n}\r\n/** Detects Universal Windows Platform apps. */\r\nfunction isUWP() {\r\n return getUA().indexOf('MSAppHost/') >= 0;\r\n}\r\n/**\r\n * Detect whether the current SDK build is the Node version.\r\n *\r\n * @return true if it's the Node SDK build.\r\n */\r\nfunction isNodeSdk() {\r\n return CONSTANTS.NODE_CLIENT === true || CONSTANTS.NODE_ADMIN === true;\r\n}\r\n/** Returns true if we are running in Safari. */\r\nfunction isSafari() {\r\n return (!isNode() &&\r\n navigator.userAgent.includes('Safari') &&\r\n !navigator.userAgent.includes('Chrome'));\r\n}\r\n/**\r\n * This method checks if indexedDB is supported by current browser/service worker context\r\n * @return true if indexedDB is supported by current browser/service worker context\r\n */\r\nfunction isIndexedDBAvailable() {\r\n return typeof indexedDB === 'object';\r\n}\r\n/**\r\n * This method validates browser/sw context for indexedDB by opening a dummy indexedDB database and reject\r\n * if errors occur during the database open operation.\r\n *\r\n * @throws exception if current browser/sw context can't run idb.open (ex: Safari iframe, Firefox\r\n * private browsing)\r\n */\r\nfunction validateIndexedDBOpenable() {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n let preExist = true;\r\n const DB_CHECK_NAME = 'validate-browser-context-for-indexeddb-analytics-module';\r\n const request = self.indexedDB.open(DB_CHECK_NAME);\r\n request.onsuccess = () => {\r\n request.result.close();\r\n // delete database only when it doesn't pre-exist\r\n if (!preExist) {\r\n self.indexedDB.deleteDatabase(DB_CHECK_NAME);\r\n }\r\n resolve(true);\r\n };\r\n request.onupgradeneeded = () => {\r\n preExist = false;\r\n };\r\n request.onerror = () => {\r\n var _a;\r\n reject(((_a = request.error) === null || _a === void 0 ? void 0 : _a.message) || '');\r\n };\r\n }\r\n catch (error) {\r\n reject(error);\r\n }\r\n });\r\n}\r\n/**\r\n *\r\n * This method checks whether cookie is enabled within current browser\r\n * @return true if cookie is enabled within current browser\r\n */\r\nfunction areCookiesEnabled() {\r\n if (typeof navigator === 'undefined' || !navigator.cookieEnabled) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n/**\r\n * Polyfill for `globalThis` object.\r\n * @returns the `globalThis` object for the given environment.\r\n */\r\nfunction getGlobal() {\r\n if (typeof self !== 'undefined') {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined') {\r\n return window;\r\n }\r\n if (typeof global !== 'undefined') {\r\n return global;\r\n }\r\n throw new Error('Unable to locate global object.');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview Standardized Firebase Error.\r\n *\r\n * Usage:\r\n *\r\n * // Typescript string literals for type-safe codes\r\n * type Err =\r\n * 'unknown' |\r\n * 'object-not-found'\r\n * ;\r\n *\r\n * // Closure enum for type-safe error codes\r\n * // at-enum {string}\r\n * var Err = {\r\n * UNKNOWN: 'unknown',\r\n * OBJECT_NOT_FOUND: 'object-not-found',\r\n * }\r\n *\r\n * let errors: Map = {\r\n * 'generic-error': \"Unknown error\",\r\n * 'file-not-found': \"Could not find file: {$file}\",\r\n * };\r\n *\r\n * // Type-safe function - must pass a valid error code as param.\r\n * let error = new ErrorFactory('service', 'Service', errors);\r\n *\r\n * ...\r\n * throw error.create(Err.GENERIC);\r\n * ...\r\n * throw error.create(Err.FILE_NOT_FOUND, {'file': fileName});\r\n * ...\r\n * // Service: Could not file file: foo.txt (service/file-not-found).\r\n *\r\n * catch (e) {\r\n * assert(e.message === \"Could not find file: foo.txt.\");\r\n * if (e.code === 'service/file-not-found') {\r\n * console.log(\"Could not read file: \" + e['file']);\r\n * }\r\n * }\r\n */\r\nconst ERROR_NAME = 'FirebaseError';\r\n// Based on code from:\r\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Custom_Error_Types\r\nclass FirebaseError extends Error {\r\n constructor(\r\n /** The error code for this error. */\r\n code, message, \r\n /** Custom data for this error. */\r\n customData) {\r\n super(message);\r\n this.code = code;\r\n this.customData = customData;\r\n /** The custom name for all FirebaseErrors. */\r\n this.name = ERROR_NAME;\r\n // Fix For ES5\r\n // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\r\n Object.setPrototypeOf(this, FirebaseError.prototype);\r\n // Maintains proper stack trace for where our error was thrown.\r\n // Only available on V8.\r\n if (Error.captureStackTrace) {\r\n Error.captureStackTrace(this, ErrorFactory.prototype.create);\r\n }\r\n }\r\n}\r\nclass ErrorFactory {\r\n constructor(service, serviceName, errors) {\r\n this.service = service;\r\n this.serviceName = serviceName;\r\n this.errors = errors;\r\n }\r\n create(code, ...data) {\r\n const customData = data[0] || {};\r\n const fullCode = `${this.service}/${code}`;\r\n const template = this.errors[code];\r\n const message = template ? replaceTemplate(template, customData) : 'Error';\r\n // Service Name: Error message (service/code).\r\n const fullMessage = `${this.serviceName}: ${message} (${fullCode}).`;\r\n const error = new FirebaseError(fullCode, fullMessage, customData);\r\n return error;\r\n }\r\n}\r\nfunction replaceTemplate(template, data) {\r\n return template.replace(PATTERN, (_, key) => {\r\n const value = data[key];\r\n return value != null ? String(value) : `<${key}?>`;\r\n });\r\n}\r\nconst PATTERN = /\\{\\$([^}]+)}/g;\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Evaluates a JSON string into a javascript object.\r\n *\r\n * @param {string} str A string containing JSON.\r\n * @return {*} The javascript object representing the specified JSON.\r\n */\r\nfunction jsonEval(str) {\r\n return JSON.parse(str);\r\n}\r\n/**\r\n * Returns JSON representing a javascript object.\r\n * @param {*} data Javascript object to be stringified.\r\n * @return {string} The JSON contents of the object.\r\n */\r\nfunction stringify(data) {\r\n return JSON.stringify(data);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Decodes a Firebase auth. token into constituent parts.\r\n *\r\n * Notes:\r\n * - May return with invalid / incomplete claims if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst decode = function (token) {\r\n let header = {}, claims = {}, data = {}, signature = '';\r\n try {\r\n const parts = token.split('.');\r\n header = jsonEval(base64Decode(parts[0]) || '');\r\n claims = jsonEval(base64Decode(parts[1]) || '');\r\n signature = parts[2];\r\n data = claims['d'] || {};\r\n delete claims['d'];\r\n }\r\n catch (e) { }\r\n return {\r\n header,\r\n claims,\r\n data,\r\n signature\r\n };\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and checks the validity of its time-based claims. Will return true if the\r\n * token is within the time window authorized by the 'nbf' (not-before) and 'iat' (issued-at) claims.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst isValidTimestamp = function (token) {\r\n const claims = decode(token).claims;\r\n const now = Math.floor(new Date().getTime() / 1000);\r\n let validSince = 0, validUntil = 0;\r\n if (typeof claims === 'object') {\r\n if (claims.hasOwnProperty('nbf')) {\r\n validSince = claims['nbf'];\r\n }\r\n else if (claims.hasOwnProperty('iat')) {\r\n validSince = claims['iat'];\r\n }\r\n if (claims.hasOwnProperty('exp')) {\r\n validUntil = claims['exp'];\r\n }\r\n else {\r\n // token will expire after 24h by default\r\n validUntil = validSince + 86400;\r\n }\r\n }\r\n return (!!now &&\r\n !!validSince &&\r\n !!validUntil &&\r\n now >= validSince &&\r\n now <= validUntil);\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and returns its issued at time if valid, null otherwise.\r\n *\r\n * Notes:\r\n * - May return null if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst issuedAtTime = function (token) {\r\n const claims = decode(token).claims;\r\n if (typeof claims === 'object' && claims.hasOwnProperty('iat')) {\r\n return claims['iat'];\r\n }\r\n return null;\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and checks the validity of its format. Expects a valid issued-at time.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst isValidFormat = function (token) {\r\n const decoded = decode(token), claims = decoded.claims;\r\n return !!claims && typeof claims === 'object' && claims.hasOwnProperty('iat');\r\n};\r\n/**\r\n * Attempts to peer into an auth token and determine if it's an admin auth token by looking at the claims portion.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst isAdmin = function (token) {\r\n const claims = decode(token).claims;\r\n return typeof claims === 'object' && claims['admin'] === true;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction contains(obj, key) {\r\n return Object.prototype.hasOwnProperty.call(obj, key);\r\n}\r\nfunction safeGet(obj, key) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n return obj[key];\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\nfunction isEmpty(obj) {\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction map(obj, fn, contextObj) {\r\n const res = {};\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n res[key] = fn.call(contextObj, obj[key], key, obj);\r\n }\r\n }\r\n return res;\r\n}\r\n/**\r\n * Deep equal two objects. Support Arrays and Objects.\r\n */\r\nfunction deepEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n const aKeys = Object.keys(a);\r\n const bKeys = Object.keys(b);\r\n for (const k of aKeys) {\r\n if (!bKeys.includes(k)) {\r\n return false;\r\n }\r\n const aProp = a[k];\r\n const bProp = b[k];\r\n if (isObject(aProp) && isObject(bProp)) {\r\n if (!deepEqual(aProp, bProp)) {\r\n return false;\r\n }\r\n }\r\n else if (aProp !== bProp) {\r\n return false;\r\n }\r\n }\r\n for (const k of bKeys) {\r\n if (!aKeys.includes(k)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction isObject(thing) {\r\n return thing !== null && typeof thing === 'object';\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns a querystring-formatted string (e.g. &arg=val&arg2=val2) from a\r\n * params object (e.g. {arg: 'val', arg2: 'val2'})\r\n * Note: You must prepend it with ? when adding it to a URL.\r\n */\r\nfunction querystring(querystringParams) {\r\n const params = [];\r\n for (const [key, value] of Object.entries(querystringParams)) {\r\n if (Array.isArray(value)) {\r\n value.forEach(arrayVal => {\r\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(arrayVal));\r\n });\r\n }\r\n else {\r\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\r\n }\r\n }\r\n return params.length ? '&' + params.join('&') : '';\r\n}\r\n/**\r\n * Decodes a querystring (e.g. ?arg=val&arg2=val2) into a params object\r\n * (e.g. {arg: 'val', arg2: 'val2'})\r\n */\r\nfunction querystringDecode(querystring) {\r\n const obj = {};\r\n const tokens = querystring.replace(/^\\?/, '').split('&');\r\n tokens.forEach(token => {\r\n if (token) {\r\n const [key, value] = token.split('=');\r\n obj[decodeURIComponent(key)] = decodeURIComponent(value);\r\n }\r\n });\r\n return obj;\r\n}\r\n/**\r\n * Extract the query string part of a URL, including the leading question mark (if present).\r\n */\r\nfunction extractQuerystring(url) {\r\n const queryStart = url.indexOf('?');\r\n if (!queryStart) {\r\n return '';\r\n }\r\n const fragmentStart = url.indexOf('#', queryStart);\r\n return url.substring(queryStart, fragmentStart > 0 ? fragmentStart : undefined);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview SHA-1 cryptographic hash.\r\n * Variable names follow the notation in FIPS PUB 180-3:\r\n * http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf.\r\n *\r\n * Usage:\r\n * var sha1 = new sha1();\r\n * sha1.update(bytes);\r\n * var hash = sha1.digest();\r\n *\r\n * Performance:\r\n * Chrome 23: ~400 Mbit/s\r\n * Firefox 16: ~250 Mbit/s\r\n *\r\n */\r\n/**\r\n * SHA-1 cryptographic hash constructor.\r\n *\r\n * The properties declared here are discussed in the above algorithm document.\r\n * @constructor\r\n * @final\r\n * @struct\r\n */\r\nclass Sha1 {\r\n constructor() {\r\n /**\r\n * Holds the previous values of accumulated variables a-e in the compress_\r\n * function.\r\n * @private\r\n */\r\n this.chain_ = [];\r\n /**\r\n * A buffer holding the partially computed hash result.\r\n * @private\r\n */\r\n this.buf_ = [];\r\n /**\r\n * An array of 80 bytes, each a part of the message to be hashed. Referred to\r\n * as the message schedule in the docs.\r\n * @private\r\n */\r\n this.W_ = [];\r\n /**\r\n * Contains data needed to pad messages less than 64 bytes.\r\n * @private\r\n */\r\n this.pad_ = [];\r\n /**\r\n * @private {number}\r\n */\r\n this.inbuf_ = 0;\r\n /**\r\n * @private {number}\r\n */\r\n this.total_ = 0;\r\n this.blockSize = 512 / 8;\r\n this.pad_[0] = 128;\r\n for (let i = 1; i < this.blockSize; ++i) {\r\n this.pad_[i] = 0;\r\n }\r\n this.reset();\r\n }\r\n reset() {\r\n this.chain_[0] = 0x67452301;\r\n this.chain_[1] = 0xefcdab89;\r\n this.chain_[2] = 0x98badcfe;\r\n this.chain_[3] = 0x10325476;\r\n this.chain_[4] = 0xc3d2e1f0;\r\n this.inbuf_ = 0;\r\n this.total_ = 0;\r\n }\r\n /**\r\n * Internal compress helper function.\r\n * @param buf Block to compress.\r\n * @param offset Offset of the block in the buffer.\r\n * @private\r\n */\r\n compress_(buf, offset) {\r\n if (!offset) {\r\n offset = 0;\r\n }\r\n const W = this.W_;\r\n // get 16 big endian words\r\n if (typeof buf === 'string') {\r\n for (let i = 0; i < 16; i++) {\r\n // TODO(user): [bug 8140122] Recent versions of Safari for Mac OS and iOS\r\n // have a bug that turns the post-increment ++ operator into pre-increment\r\n // during JIT compilation. We have code that depends heavily on SHA-1 for\r\n // correctness and which is affected by this bug, so I've removed all uses\r\n // of post-increment ++ in which the result value is used. We can revert\r\n // this change once the Safari bug\r\n // (https://bugs.webkit.org/show_bug.cgi?id=109036) has been fixed and\r\n // most clients have been updated.\r\n W[i] =\r\n (buf.charCodeAt(offset) << 24) |\r\n (buf.charCodeAt(offset + 1) << 16) |\r\n (buf.charCodeAt(offset + 2) << 8) |\r\n buf.charCodeAt(offset + 3);\r\n offset += 4;\r\n }\r\n }\r\n else {\r\n for (let i = 0; i < 16; i++) {\r\n W[i] =\r\n (buf[offset] << 24) |\r\n (buf[offset + 1] << 16) |\r\n (buf[offset + 2] << 8) |\r\n buf[offset + 3];\r\n offset += 4;\r\n }\r\n }\r\n // expand to 80 words\r\n for (let i = 16; i < 80; i++) {\r\n const t = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\r\n W[i] = ((t << 1) | (t >>> 31)) & 0xffffffff;\r\n }\r\n let a = this.chain_[0];\r\n let b = this.chain_[1];\r\n let c = this.chain_[2];\r\n let d = this.chain_[3];\r\n let e = this.chain_[4];\r\n let f, k;\r\n // TODO(user): Try to unroll this loop to speed up the computation.\r\n for (let i = 0; i < 80; i++) {\r\n if (i < 40) {\r\n if (i < 20) {\r\n f = d ^ (b & (c ^ d));\r\n k = 0x5a827999;\r\n }\r\n else {\r\n f = b ^ c ^ d;\r\n k = 0x6ed9eba1;\r\n }\r\n }\r\n else {\r\n if (i < 60) {\r\n f = (b & c) | (d & (b | c));\r\n k = 0x8f1bbcdc;\r\n }\r\n else {\r\n f = b ^ c ^ d;\r\n k = 0xca62c1d6;\r\n }\r\n }\r\n const t = (((a << 5) | (a >>> 27)) + f + e + k + W[i]) & 0xffffffff;\r\n e = d;\r\n d = c;\r\n c = ((b << 30) | (b >>> 2)) & 0xffffffff;\r\n b = a;\r\n a = t;\r\n }\r\n this.chain_[0] = (this.chain_[0] + a) & 0xffffffff;\r\n this.chain_[1] = (this.chain_[1] + b) & 0xffffffff;\r\n this.chain_[2] = (this.chain_[2] + c) & 0xffffffff;\r\n this.chain_[3] = (this.chain_[3] + d) & 0xffffffff;\r\n this.chain_[4] = (this.chain_[4] + e) & 0xffffffff;\r\n }\r\n update(bytes, length) {\r\n // TODO(johnlenz): tighten the function signature and remove this check\r\n if (bytes == null) {\r\n return;\r\n }\r\n if (length === undefined) {\r\n length = bytes.length;\r\n }\r\n const lengthMinusBlock = length - this.blockSize;\r\n let n = 0;\r\n // Using local instead of member variables gives ~5% speedup on Firefox 16.\r\n const buf = this.buf_;\r\n let inbuf = this.inbuf_;\r\n // The outer while loop should execute at most twice.\r\n while (n < length) {\r\n // When we have no data in the block to top up, we can directly process the\r\n // input buffer (assuming it contains sufficient data). This gives ~25%\r\n // speedup on Chrome 23 and ~15% speedup on Firefox 16, but requires that\r\n // the data is provided in large chunks (or in multiples of 64 bytes).\r\n if (inbuf === 0) {\r\n while (n <= lengthMinusBlock) {\r\n this.compress_(bytes, n);\r\n n += this.blockSize;\r\n }\r\n }\r\n if (typeof bytes === 'string') {\r\n while (n < length) {\r\n buf[inbuf] = bytes.charCodeAt(n);\r\n ++inbuf;\r\n ++n;\r\n if (inbuf === this.blockSize) {\r\n this.compress_(buf);\r\n inbuf = 0;\r\n // Jump to the outer loop so we use the full-block optimization.\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n while (n < length) {\r\n buf[inbuf] = bytes[n];\r\n ++inbuf;\r\n ++n;\r\n if (inbuf === this.blockSize) {\r\n this.compress_(buf);\r\n inbuf = 0;\r\n // Jump to the outer loop so we use the full-block optimization.\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n this.inbuf_ = inbuf;\r\n this.total_ += length;\r\n }\r\n /** @override */\r\n digest() {\r\n const digest = [];\r\n let totalBits = this.total_ * 8;\r\n // Add pad 0x80 0x00*.\r\n if (this.inbuf_ < 56) {\r\n this.update(this.pad_, 56 - this.inbuf_);\r\n }\r\n else {\r\n this.update(this.pad_, this.blockSize - (this.inbuf_ - 56));\r\n }\r\n // Add # bits.\r\n for (let i = this.blockSize - 1; i >= 56; i--) {\r\n this.buf_[i] = totalBits & 255;\r\n totalBits /= 256; // Don't use bit-shifting here!\r\n }\r\n this.compress_(this.buf_);\r\n let n = 0;\r\n for (let i = 0; i < 5; i++) {\r\n for (let j = 24; j >= 0; j -= 8) {\r\n digest[n] = (this.chain_[i] >> j) & 255;\r\n ++n;\r\n }\r\n }\r\n return digest;\r\n }\r\n}\n\n/**\r\n * Helper to make a Subscribe function (just like Promise helps make a\r\n * Thenable).\r\n *\r\n * @param executor Function which can make calls to a single Observer\r\n * as a proxy.\r\n * @param onNoObservers Callback when count of Observers goes to zero.\r\n */\r\nfunction createSubscribe(executor, onNoObservers) {\r\n const proxy = new ObserverProxy(executor, onNoObservers);\r\n return proxy.subscribe.bind(proxy);\r\n}\r\n/**\r\n * Implement fan-out for any number of Observers attached via a subscribe\r\n * function.\r\n */\r\nclass ObserverProxy {\r\n /**\r\n * @param executor Function which can make calls to a single Observer\r\n * as a proxy.\r\n * @param onNoObservers Callback when count of Observers goes to zero.\r\n */\r\n constructor(executor, onNoObservers) {\r\n this.observers = [];\r\n this.unsubscribes = [];\r\n this.observerCount = 0;\r\n // Micro-task scheduling by calling task.then().\r\n this.task = Promise.resolve();\r\n this.finalized = false;\r\n this.onNoObservers = onNoObservers;\r\n // Call the executor asynchronously so subscribers that are called\r\n // synchronously after the creation of the subscribe function\r\n // can still receive the very first value generated in the executor.\r\n this.task\r\n .then(() => {\r\n executor(this);\r\n })\r\n .catch(e => {\r\n this.error(e);\r\n });\r\n }\r\n next(value) {\r\n this.forEachObserver((observer) => {\r\n observer.next(value);\r\n });\r\n }\r\n error(error) {\r\n this.forEachObserver((observer) => {\r\n observer.error(error);\r\n });\r\n this.close(error);\r\n }\r\n complete() {\r\n this.forEachObserver((observer) => {\r\n observer.complete();\r\n });\r\n this.close();\r\n }\r\n /**\r\n * Subscribe function that can be used to add an Observer to the fan-out list.\r\n *\r\n * - We require that no event is sent to a subscriber sychronously to their\r\n * call to subscribe().\r\n */\r\n subscribe(nextOrObserver, error, complete) {\r\n let observer;\r\n if (nextOrObserver === undefined &&\r\n error === undefined &&\r\n complete === undefined) {\r\n throw new Error('Missing Observer.');\r\n }\r\n // Assemble an Observer object when passed as callback functions.\r\n if (implementsAnyMethods(nextOrObserver, [\r\n 'next',\r\n 'error',\r\n 'complete'\r\n ])) {\r\n observer = nextOrObserver;\r\n }\r\n else {\r\n observer = {\r\n next: nextOrObserver,\r\n error,\r\n complete\r\n };\r\n }\r\n if (observer.next === undefined) {\r\n observer.next = noop;\r\n }\r\n if (observer.error === undefined) {\r\n observer.error = noop;\r\n }\r\n if (observer.complete === undefined) {\r\n observer.complete = noop;\r\n }\r\n const unsub = this.unsubscribeOne.bind(this, this.observers.length);\r\n // Attempt to subscribe to a terminated Observable - we\r\n // just respond to the Observer with the final error or complete\r\n // event.\r\n if (this.finalized) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.task.then(() => {\r\n try {\r\n if (this.finalError) {\r\n observer.error(this.finalError);\r\n }\r\n else {\r\n observer.complete();\r\n }\r\n }\r\n catch (e) {\r\n // nothing\r\n }\r\n return;\r\n });\r\n }\r\n this.observers.push(observer);\r\n return unsub;\r\n }\r\n // Unsubscribe is synchronous - we guarantee that no events are sent to\r\n // any unsubscribed Observer.\r\n unsubscribeOne(i) {\r\n if (this.observers === undefined || this.observers[i] === undefined) {\r\n return;\r\n }\r\n delete this.observers[i];\r\n this.observerCount -= 1;\r\n if (this.observerCount === 0 && this.onNoObservers !== undefined) {\r\n this.onNoObservers(this);\r\n }\r\n }\r\n forEachObserver(fn) {\r\n if (this.finalized) {\r\n // Already closed by previous event....just eat the additional values.\r\n return;\r\n }\r\n // Since sendOne calls asynchronously - there is no chance that\r\n // this.observers will become undefined.\r\n for (let i = 0; i < this.observers.length; i++) {\r\n this.sendOne(i, fn);\r\n }\r\n }\r\n // Call the Observer via one of it's callback function. We are careful to\r\n // confirm that the observe has not been unsubscribed since this asynchronous\r\n // function had been queued.\r\n sendOne(i, fn) {\r\n // Execute the callback asynchronously\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.task.then(() => {\r\n if (this.observers !== undefined && this.observers[i] !== undefined) {\r\n try {\r\n fn(this.observers[i]);\r\n }\r\n catch (e) {\r\n // Ignore exceptions raised in Observers or missing methods of an\r\n // Observer.\r\n // Log error to console. b/31404806\r\n if (typeof console !== 'undefined' && console.error) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n close(err) {\r\n if (this.finalized) {\r\n return;\r\n }\r\n this.finalized = true;\r\n if (err !== undefined) {\r\n this.finalError = err;\r\n }\r\n // Proxy is no longer needed - garbage collect references\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.task.then(() => {\r\n this.observers = undefined;\r\n this.onNoObservers = undefined;\r\n });\r\n }\r\n}\r\n/** Turn synchronous function into one called asynchronously. */\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nfunction async(fn, onError) {\r\n return (...args) => {\r\n Promise.resolve(true)\r\n .then(() => {\r\n fn(...args);\r\n })\r\n .catch((error) => {\r\n if (onError) {\r\n onError(error);\r\n }\r\n });\r\n };\r\n}\r\n/**\r\n * Return true if the object passed in implements any of the named methods.\r\n */\r\nfunction implementsAnyMethods(obj, methods) {\r\n if (typeof obj !== 'object' || obj === null) {\r\n return false;\r\n }\r\n for (const method of methods) {\r\n if (method in obj && typeof obj[method] === 'function') {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction noop() {\r\n // do nothing\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Check to make sure the appropriate number of arguments are provided for a public function.\r\n * Throws an error if it fails.\r\n *\r\n * @param fnName The function name\r\n * @param minCount The minimum number of arguments to allow for the function call\r\n * @param maxCount The maximum number of argument to allow for the function call\r\n * @param argCount The actual number of arguments provided.\r\n */\r\nconst validateArgCount = function (fnName, minCount, maxCount, argCount) {\r\n let argError;\r\n if (argCount < minCount) {\r\n argError = 'at least ' + minCount;\r\n }\r\n else if (argCount > maxCount) {\r\n argError = maxCount === 0 ? 'none' : 'no more than ' + maxCount;\r\n }\r\n if (argError) {\r\n const error = fnName +\r\n ' failed: Was called with ' +\r\n argCount +\r\n (argCount === 1 ? ' argument.' : ' arguments.') +\r\n ' Expects ' +\r\n argError +\r\n '.';\r\n throw new Error(error);\r\n }\r\n};\r\n/**\r\n * Generates a string to prefix an error message about failed argument validation\r\n *\r\n * @param fnName The function name\r\n * @param argName The name of the argument\r\n * @return The prefix to add to the error thrown for validation.\r\n */\r\nfunction errorPrefix(fnName, argName) {\r\n return `${fnName} failed: ${argName} argument `;\r\n}\r\n/**\r\n * @param fnName\r\n * @param argumentNumber\r\n * @param namespace\r\n * @param optional\r\n */\r\nfunction validateNamespace(fnName, namespace, optional) {\r\n if (optional && !namespace) {\r\n return;\r\n }\r\n if (typeof namespace !== 'string') {\r\n //TODO: I should do more validation here. We only allow certain chars in namespaces.\r\n throw new Error(errorPrefix(fnName, 'namespace') + 'must be a valid firebase namespace.');\r\n }\r\n}\r\nfunction validateCallback(fnName, argumentName, \r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\ncallback, optional) {\r\n if (optional && !callback) {\r\n return;\r\n }\r\n if (typeof callback !== 'function') {\r\n throw new Error(errorPrefix(fnName, argumentName) + 'must be a valid function.');\r\n }\r\n}\r\nfunction validateContextObject(fnName, argumentName, context, optional) {\r\n if (optional && !context) {\r\n return;\r\n }\r\n if (typeof context !== 'object' || context === null) {\r\n throw new Error(errorPrefix(fnName, argumentName) + 'must be a valid context object.');\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Code originally came from goog.crypt.stringToUtf8ByteArray, but for some reason they\r\n// automatically replaced '\\r\\n' with '\\n', and they didn't handle surrogate pairs,\r\n// so it's been modified.\r\n// Note that not all Unicode characters appear as single characters in JavaScript strings.\r\n// fromCharCode returns the UTF-16 encoding of a character - so some Unicode characters\r\n// use 2 characters in Javascript. All 4-byte UTF-8 characters begin with a first\r\n// character in the range 0xD800 - 0xDBFF (the first character of a so-called surrogate\r\n// pair).\r\n// See http://www.ecma-international.org/ecma-262/5.1/#sec-15.1.3\r\n/**\r\n * @param {string} str\r\n * @return {Array}\r\n */\r\nconst stringToByteArray = function (str) {\r\n const out = [];\r\n let p = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n let c = str.charCodeAt(i);\r\n // Is this the lead surrogate in a surrogate pair?\r\n if (c >= 0xd800 && c <= 0xdbff) {\r\n const high = c - 0xd800; // the high 10 bits.\r\n i++;\r\n assert(i < str.length, 'Surrogate pair missing trail surrogate.');\r\n const low = str.charCodeAt(i) - 0xdc00; // the low 10 bits.\r\n c = 0x10000 + (high << 10) + low;\r\n }\r\n if (c < 128) {\r\n out[p++] = c;\r\n }\r\n else if (c < 2048) {\r\n out[p++] = (c >> 6) | 192;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else if (c < 65536) {\r\n out[p++] = (c >> 12) | 224;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else {\r\n out[p++] = (c >> 18) | 240;\r\n out[p++] = ((c >> 12) & 63) | 128;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n }\r\n return out;\r\n};\r\n/**\r\n * Calculate length without actually converting; useful for doing cheaper validation.\r\n * @param {string} str\r\n * @return {number}\r\n */\r\nconst stringLength = function (str) {\r\n let p = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n const c = str.charCodeAt(i);\r\n if (c < 128) {\r\n p++;\r\n }\r\n else if (c < 2048) {\r\n p += 2;\r\n }\r\n else if (c >= 0xd800 && c <= 0xdbff) {\r\n // Lead surrogate of a surrogate pair. The pair together will take 4 bytes to represent.\r\n p += 4;\r\n i++; // skip trail surrogate.\r\n }\r\n else {\r\n p += 3;\r\n }\r\n }\r\n return p;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * The amount of milliseconds to exponentially increase.\r\n */\r\nconst DEFAULT_INTERVAL_MILLIS = 1000;\r\n/**\r\n * The factor to backoff by.\r\n * Should be a number greater than 1.\r\n */\r\nconst DEFAULT_BACKOFF_FACTOR = 2;\r\n/**\r\n * The maximum milliseconds to increase to.\r\n *\r\n *
Visible for testing\r\n */\r\nconst MAX_VALUE_MILLIS = 4 * 60 * 60 * 1000; // Four hours, like iOS and Android.\r\n/**\r\n * The percentage of backoff time to randomize by.\r\n * See\r\n * http://go/safe-client-behavior#step-1-determine-the-appropriate-retry-interval-to-handle-spike-traffic\r\n * for context.\r\n *\r\n *
Visible for testing\r\n */\r\nconst RANDOM_FACTOR = 0.5;\r\n/**\r\n * Based on the backoff method from\r\n * https://github.com/google/closure-library/blob/master/closure/goog/math/exponentialbackoff.js.\r\n * Extracted here so we don't need to pass metadata and a stateful ExponentialBackoff object around.\r\n */\r\nfunction calculateBackoffMillis(backoffCount, intervalMillis = DEFAULT_INTERVAL_MILLIS, backoffFactor = DEFAULT_BACKOFF_FACTOR) {\r\n // Calculates an exponentially increasing value.\r\n // Deviation: calculates value from count and a constant interval, so we only need to save value\r\n // and count to restore state.\r\n const currBaseValue = intervalMillis * Math.pow(backoffFactor, backoffCount);\r\n // A random \"fuzz\" to avoid waves of retries.\r\n // Deviation: randomFactor is required.\r\n const randomWait = Math.round(\r\n // A fraction of the backoff value to add/subtract.\r\n // Deviation: changes multiplication order to improve readability.\r\n RANDOM_FACTOR *\r\n currBaseValue *\r\n // A random float (rounded to int by Math.round above) in the range [-1, 1]. Determines\r\n // if we add or subtract.\r\n (Math.random() - 0.5) *\r\n 2);\r\n // Limits backoff to max to avoid effectively permanent backoff.\r\n return Math.min(MAX_VALUE_MILLIS, currBaseValue + randomWait);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Provide English ordinal letters after a number\r\n */\r\nfunction ordinal(i) {\r\n if (!Number.isFinite(i)) {\r\n return `${i}`;\r\n }\r\n return i + indicator(i);\r\n}\r\nfunction indicator(i) {\r\n i = Math.abs(i);\r\n const cent = i % 100;\r\n if (cent >= 10 && cent <= 20) {\r\n return 'th';\r\n }\r\n const dec = i % 10;\r\n if (dec === 1) {\r\n return 'st';\r\n }\r\n if (dec === 2) {\r\n return 'nd';\r\n }\r\n if (dec === 3) {\r\n return 'rd';\r\n }\r\n return 'th';\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getModularInstance(service) {\r\n if (service && service._delegate) {\r\n return service._delegate;\r\n }\r\n else {\r\n return service;\r\n }\r\n}\n\nexport { CONSTANTS, Deferred, ErrorFactory, FirebaseError, MAX_VALUE_MILLIS, RANDOM_FACTOR, Sha1, areCookiesEnabled, assert, assertionError, async, base64, base64Decode, base64Encode, base64urlEncodeWithoutPadding, calculateBackoffMillis, contains, createMockUserToken, createSubscribe, decode, deepCopy, deepEqual, deepExtend, errorPrefix, extractQuerystring, getGlobal, getModularInstance, getUA, isAdmin, isBrowser, isBrowserExtension, isElectron, isEmpty, isIE, isIndexedDBAvailable, isMobileCordova, isNode, isNodeSdk, isReactNative, isSafari, isUWP, isValidFormat, isValidTimestamp, issuedAtTime, jsonEval, map, ordinal, querystring, querystringDecode, safeGet, stringLength, stringToByteArray, stringify, validateArgCount, validateCallback, validateContextObject, validateIndexedDBOpenable, validateNamespace };\n//# sourceMappingURL=index.esm2017.js.map\n","import { PACKAGE_VERSION } from './version.js';\n\n// Name of this application, used in the User-Agent.\nexport const APP_NAME = 'TinodeWeb/' + (PACKAGE_VERSION || '0.17');\n\n// API key. Use https://github.com/tinode/chat/tree/master/keygen to generate your own\nexport const API_KEY = 'AQEAAAABAAD_rAp4DJh05a1HAwFT3A6K';\n\n// The array of possible hosts to connect to.\nexport const KNOWN_HOSTS = {hosted: 'web.tinode.co', local: 'localhost:6060'};\n\n// Default host name and port to connect to.\nexport const DEFAULT_HOST = KNOWN_HOSTS.hosted;\n\n// Enable console logging.\nexport const LOGGING_ENABLED = true;\n\n// Minimum time between two keypress notifications, milliseconds.\nexport const KEYPRESS_DELAY = 3_000;\n// Delay before sending a {note} for reciving a message, milliseconds.\nexport const RECEIVED_DELAY = 500;\n// Delay before sending a read notification, milliseconds.\nexport const READ_DELAY = 1000;\n\n// The default shortest allowed tag length. Matches the value on the server.\nexport const MIN_TAG_LENGTH = 2;\n// The default greatest allowed tag length. Matches the value on the server.\nexport const MAX_TAG_LENGTH = 96;\n// The default maximum number of tags allowed. Matches the value on the server.\nexport const MAX_TAG_COUNT = 16;\n\n// Access mode for P2P subscriptions initiated by the current user.\nexport const DEFAULT_P2P_ACCESS_MODE = 'JRWPS';\n// Access mode for new group topics created by the current user.\nexport const NEW_GRP_ACCESS_MODE = 'JRWPSAO';\n// Access mode for a channel.\nexport const CHANNEL_ACCESS_MODE = 'JR';\n\n// Access mode for no access.\nexport const NO_ACCESS_MODE = 'N';\n\n// Mediaquery breakpoint between desktop and mobile, in px. Should match the value\n// in @media (max-size: 640px) in base.css\nexport const MEDIA_BREAKPOINT = 640;\n// Size of css 'rem' unit in pixels. Default 1rem = 10pt = 13px.\nexport const REM_SIZE = 13;\n\n// Size of the avatar image: when image dimensions are greater or the image is not square, it's resized to\n// a square of this size or less.\nexport const AVATAR_SIZE = 384;\n\n// Maximum size of an avatar in bytes for sending in-band. Bigger avatars will be sent out of band (as uploads).\nexport const MAX_AVATAR_BYTES = 4096;\n\n// Size of the broken_image shown in MessagesView\nexport const BROKEN_IMAGE_SIZE = 32;\n\n// Number of chat messages to fetch in one call.\nexport const MESSAGES_PAGE = 24;\n\n// Default maximum in-band (included directly into the message) attachment size which fits into\n// a message of 256K in size. Used when the server-provided value is unavailable. The actual\n// binary size of the attachment should be smaller due to base64 encoding expansion and some overhead,\n// for instance 1024 bytes.\n// Increase this limit to a greater value in production, if desired. Also increase\n// max_message_size in the server config.\nexport const MAX_INBAND_ATTACHMENT_SIZE = 262_144;\n\n// Default absolute maximum attachment size to be used with the server = 8MB.\n// Used when the server-provided value is unavailable. Increase to something like 100MB in production.\nexport const MAX_EXTERN_ATTACHMENT_SIZE = 1 << 23;\n\n// Maximum allowed linear dimension (pixels) of an image sent inline. Larger images will be shrunk\n// to make the larger dimension fit under this size. You may want to adjust it to 1600 or\n// 2400 for production.\nexport const MAX_IMAGE_DIM = 1024;\n\n// Linear dimensions of image preview: shrink image under this size for previews.\nexport const IMAGE_PREVIEW_DIM = 64;\n\n// Linear dimensions of image thumbnail: shrink image under this size for thumbnails in reply quote previews.\nexport const IMAGE_THUMBNAIL_DIM = 36;\n\n// Maximum number of online users to be shown in a topic title bar. Others will be\n// hidden under \"+X more\"\nexport const MAX_ONLINE_IN_TOPIC = 4;\n\n// Maximum length of user name, topic title, and private comment.\nexport const MAX_TITLE_LENGTH = 60;\n// Maximum length of topic description.\nexport const MAX_TOPIC_DESCRIPTION_LENGTH = 360;\n\n// Length of message previews in chat list, in characters.\nexport const MESSAGE_PREVIEW_LENGTH = 80;\n\n// Length of a quote in quoted reply (for outgoing messages).\nexport const QUOTED_REPLY_LENGTH = 30;\n// Length of a preview of a forwarded message.\nexport const FORWARDED_PREVIEW_LENGTH = 84;\n\n// Minimum duration of an audio recording in milliseconds (2 sec).\nexport const MIN_DURATION = 2_000;\n// Maximum duration of an audio recording in milliseconds (10 min).\nexport const MAX_DURATION = 600_000;\n\n// Link for \"Contact Us\".\nexport const LINK_CONTACT_US = 'mailto:support@tinode.co';\n\n// Link to Privacy Policy.\nexport const LINK_PRIVACY_POLICY = 'https://tinode.co/privacy.html';\n\n// Link to Terms of Service.\nexport const LINK_TERMS_OF_SERVICE = 'https://tinode.co/terms.html';\n\n// Video calls/WebRTC configuration.\nexport const CALL_WEBRTC_CONFIG = {\n iceServers: [\n { urls: [ \"stun:bn-turn1.xirsys.com\" ] },\n {\n username: \"0kYXFmQL9xojOrUy4VFemlTnNPVFZpp7jfPjpB3AjxahuRe4QWrCs6Ll1vDc7TTjAAAAAGAG2whXZWJUdXRzUGx1cw==\",\n credential: \"285ff060-5a58-11eb-b269-0242ac140004\",\n urls: [\n \"turn:bn-turn1.xirsys.com:80?transport=udp\",\n \"turn:bn-turn1.xirsys.com:3478?transport=udp\",\n \"turn:bn-turn1.xirsys.com:80?transport=tcp\",\n \"turn:bn-turn1.xirsys.com:3478?transport=tcp\",\n \"turns:bn-turn1.xirsys.com:443?transport=tcp\",\n \"turns:bn-turn1.xirsys.com:5349?transport=tcp\"\n ]\n }\n ]};\n","// Video call states.\nexport const CALL_STATE_NONE = 0;\nexport const CALL_STATE_OUTGOING_INITATED = 1;\nexport const CALL_STATE_INCOMING_RECEIVED = 2;\nexport const CALL_STATE_IN_PROGRESS = 3;\n\n// Mime type used for video call messages.\nexport const CALL_MESSAGE_MIME_TYPE = 'application/x-tinode-webrtc';\n","// File and image helper functions.\n\n// Supported image MIME types and corresponding file extensions.\nexport const SUPPORTED_IMAGE_FORMATS = ['image/jpeg', 'image/gif', 'image/png', 'image/svg', 'image/svg+xml'];\nexport const MIME_EXTENSIONS = ['jpg', 'gif', 'png', 'svg', 'svg'];\n\n// Get an URL from a theCard photo: either create a data: URL or return reference URL.\nexport function makeImageUrl(photo) {\n if (photo && typeof photo == 'object') {\n if (photo.ref) {\n return photo.ref\n }\n if (photo.data && photo.type) {\n const mime = photo.type.startsWith('image/') ? photo.type : ('image/' + photo.type);\n return 'data:' + mime + ';base64,' + photo.data;\n }\n }\n return null;\n}\n\n// Calculate linear dimensions for scaling image down to fit under a certain size.\n// Returns an object which contains destination sizes, source sizes, and offsets\n// into source (when making square images).\nexport function fitImageSize(width, height, maxWidth, maxHeight, forceSquare) {\n // Sanitize input\n width = width | 0;\n height = height | 0;\n maxWidth = maxWidth | 0;\n maxHeight = maxHeight | 0;\n\n if (width <= 0 || height <= 0 || maxWidth <= 0 || maxHeight <= 0) {\n return null;\n }\n\n if (forceSquare) {\n maxWidth = maxHeight = Math.min(maxWidth, maxHeight);\n }\n\n const scale = Math.min(\n Math.min(width, maxWidth) / width,\n Math.min(height, maxHeight) / height\n );\n\n const size = {\n dstWidth: (width * scale) | 0,\n dstHeight: (height * scale) | 0,\n };\n\n if (forceSquare) {\n // Also calculate parameters for making the image square.\n size.dstWidth = size.dstHeight = Math.min(size.dstWidth, size.dstHeight);\n size.srcWidth = size.srcHeight = Math.min(width, height);\n size.xoffset = ((width - size.srcWidth) / 2) | 0;\n size.yoffset = ((height - size.srcWidth) / 2) | 0;\n } else {\n size.xoffset = size.yoffset = 0;\n size.srcWidth = width;\n size.srcHeight = height;\n }\n return size;\n}\n\n// Ensure file's extension matches mime content type\nexport function fileNameForMime(fname, mime) {\n const idx = SUPPORTED_IMAGE_FORMATS.indexOf(mime);\n if (idx < 0 || !fname) {\n // Unknown mime or empty name.\n return fname;\n }\n const ext = MIME_EXTENSIONS[idx];\n\n const at = fname.lastIndexOf('.');\n if (at >= 0) {\n fname = fname.substring(0, at);\n }\n return fname + '.' + ext;\n}\n\n// Scale uploaded image to fit under certain dimensions and byte size, optionally constraining to a square.\n// Returns a promise which is resolven on success or rejected on failure.\nexport function imageScaled(fileOrBlob, maxWidth, maxHeight, maxSize, forceSquare) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.crossOrigin = 'Anonymous';\n img.onerror = function(err) {\n reject(new Error(\"Image format unrecognized\"));\n }\n img.onload = async function() {\n // Once the image is loaded, the URL is no longer needed.\n URL.revokeObjectURL(img.src);\n\n // Calculate the desired image dimensions.\n const dim = fitImageSize(img.width, img.height, maxWidth, maxHeight, forceSquare);\n if (!dim) {\n reject(new Error(\"Invalid image\"));\n return;\n }\n let canvas = document.createElement('canvas');\n canvas.width = dim.dstWidth;\n canvas.height = dim.dstHeight;\n let ctx = canvas.getContext('2d');\n ctx.imageSmoothingEnabled = true;\n ctx.drawImage(img, dim.xoffset, dim.yoffset, dim.srcWidth, dim.srcHeight,\n 0, 0, dim.dstWidth, dim.dstHeight);\n\n const mime = SUPPORTED_IMAGE_FORMATS.includes(fileOrBlob.type) ? fileOrBlob.type : 'image/jpeg';\n // Generate blob to check size of the image.\n let blob = await new Promise(resolve => canvas.toBlob(resolve, mime));\n if (!blob) {\n reject(new Error(\"Unsupported image format\"));\n return;\n }\n // Ensure the image is not too large. Shrink the image keeping the aspect ratio.\n // Do nothing if maxsize is <= 0.\n while (maxSize > 0 && blob.length > maxSize) {\n dim.dstWidth = (dim.dstWidth * 0.70710678118) | 0;\n dim.dstHeight = (dim.dstHeight * 0.70710678118) | 0;\n canvas.width = dim.dstWidth;\n canvas.height = dim.dstHeight;\n ctx = canvas.getContext('2d');\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.drawImage(img, dim.xoffset, dim.yoffset, dim.srcWidth, dim.srcHeight,\n 0, 0, dim.dstWidth, dim.dstHeight);\n blob = await new Promise(resolve => canvas.toBlob(resolve, mime));\n }\n\n canvas = null;\n resolve({mime: mime, blob: blob, width: dim.dstWidth, height: dim.dstHeight, name: fileNameForMime(fileOrBlob.name, mime)});\n };\n img.src = URL.createObjectURL(fileOrBlob);\n });\n}\n\n// Scale and crop image according to specified dimensions.\n// The coordinates are in unscaled image pixels, i.e. cut the rectangle first then scale it.\n// returns a promise.\nexport function imageCrop(mime, objURL, left, top, width, height, scale) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.crossOrigin = 'Anonymous';\n img.onerror = (err) => {\n reject(new Error(\"Image format unrecognized\"));\n };\n img.onload = () => {\n // Once the image is loaded, the URL is no longer needed.\n URL.revokeObjectURL(img.src);\n\n let canvas = document.createElement('canvas');\n canvas.width = width * scale;\n canvas.height = height * scale;\n let ctx = canvas.getContext('2d');\n ctx.imageSmoothingEnabled = true;\n ctx.drawImage(img, left, top, width, height, 0, 0, canvas.width, canvas.height);\n\n mime = SUPPORTED_IMAGE_FORMATS.includes(mime) ? mime : 'image/jpeg';\n // Generate blob to check size of the image.\n canvas.toBlob((blob) => {\n // Allow GC.\n canvas = null;\n if (blob) {\n resolve({mime: mime, blob: blob, width: width, height: height});\n } else {\n reject(new Error(\"Unsupported image format\"));\n }\n }, mime);\n };\n img.src = objURL;\n });\n}\n\n// Convert file to base64 string.\nexport function fileToBase64(file) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onerror = (evt) => {\n reject(reader.error);\n };\n reader.onload = () => {\n resolve({mime: file.type, bits: reader.result.split(',')[1], name: file.name});\n };\n reader.readAsDataURL(file);\n });\n}\n\n// Convert Blob to base64 string. Returns a promise resolved with the base64 string and mime.\nexport function blobToBase64(blob) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onerror = _ => {\n reject(reader.error);\n };\n reader.onload = () => {\n resolve({mime: blob.type, bits: reader.result.split(',')[1]});\n };\n reader.readAsDataURL(blob);\n });\n}\n\n// File pasted from the clipboard. It's either an inline image or a file attachment.\nexport function filePasted(event, onImageSuccess, onAttachmentSuccess, onError) {\n const items = (event.clipboardData || event.originalEvent.clipboardData || {}).items;\n if (!items || !items.length) {\n return false;\n }\n\n for (let i in items) {\n const item = items[i];\n if (item.kind === 'file') {\n const file = item.getAsFile();\n if (!file) {\n console.error(\"Failed to get file object from pasted file item\", item.kind, item.type);\n onError(\"Failed to get file object from pasted file item\");\n continue;\n }\n if (file.type && file.type.split('/')[0] == 'image') {\n onImageSuccess(file);\n } else {\n onAttachmentSuccess(file);\n }\n // Indicate that the pasted data contains a file.\n return true;\n }\n }\n // No file found.\n return false;\n}\n\n// Get mime type from data URL header.\nexport function getMimeType(header) {\n var mime = /^data:(image\\/[-+a-z0-9.]+);base64/.exec(header);\n return (mime && mime.length > 1) ? mime[1] : null;\n}\n\n// Given length of a binary object in bytes, calculate the length after\n// base64 encoding.\nexport function base64EncodedLen(n) {\n return Math.floor((n + 2) / 3) * 4;\n}\n\n// Given length of a base64-encoded object, calculate decoded size of the\n// pbject in bytes.\nexport function base64DecodedLen(n) {\n return Math.floor(n / 4) * 3;\n}\n\n// Re-encode string to standard base64 encoding with padding.\n// The string may be base64-URL encoded without the padding.\nexport function base64ReEncode(str) {\n if (str) {\n str = str.replace(/-/g, '+').replace(/_/g, '/');\n try {\n str = btoa(atob(str));\n } catch(err) {\n console.error(\"Failed to base64 re-encode string.\", err);\n str = null;\n }\n }\n return str;\n}\n\n// Convert a base64 encoded string with the provided mime type into a Blob.\nexport function base64ToBlob(str, mime) {\n if (!str) {\n return null;\n }\n\n try {\n // Make blob.\n const bin = atob(str);\n const length = bin.length;\n const buf = new ArrayBuffer(length);\n const arr = new Uint8Array(buf);\n for (let i = 0; i < length; i++) {\n arr[i] = bin.charCodeAt(i);\n }\n\n return new Blob([buf], { type: mime });\n } catch(err) {\n console.error(\"Failed to convert base64 to blob: \", err);\n }\n\n return null;\n}\n\nexport function intArrayToBase64(arr) {\n if (!Array.isArray(arr)) {\n return null;\n }\n try {\n let bin = '';\n new Uint8Array(arr).forEach(b => bin += String.fromCharCode(b));\n return window.btoa(bin);\n } catch (err) {}\n return null;\n}\n\nexport function base64ToIntArray(b64) {\n const arr = [];\n try {\n const bin = window.atob(b64);\n [...bin].forEach(c => {\n arr.push(c.charCodeAt(0));\n });\n return arr;\n } catch (err) {}\n return null;\n}\n","import React from 'react';\nimport { defineMessages } from 'react-intl';\n\nimport { Drafty } from 'tinode-sdk';\n\nimport AudioPlayer from '../widgets/audio-player.jsx'\nimport LazyImage from '../widgets/lazy-image.jsx'\nimport UploadingImage from '../widgets/uploading-image.jsx'\n\nimport { IMAGE_THUMBNAIL_DIM, BROKEN_IMAGE_SIZE, REM_SIZE } from '../config.js';\nimport { base64ToBlob, blobToBase64, fitImageSize, imageScaled } from './blob-helpers.js';\nimport { idToColorClass, secondsToTime, shortenFileName } from './strformat.js';\nimport { cancelablePromise, sanitizeUrlForMime } from './utils.js';\n\nconst messages = defineMessages({\n drafty_form: {\n id: 'drafty_form',\n defaultMessage: 'Form: ',\n description: 'Comment for form in drafty'\n },\n drafty_attachment: {\n id: 'drafty_attachment',\n defaultMessage: 'Attachment',\n description: 'Comment for attachment in drafty'\n },\n drafty_image: {\n id: 'drafty_image',\n defaultMessage: 'Picture',\n description: 'Comment for embedded images in drafty'\n },\n drafty_unknown: {\n id: 'drafty_unknown',\n defaultMessage: 'Unsupported',\n description: 'Unsupported entity in drafty'\n }\n});\n\n// Additional processing of image data.\nfunction handleImageData(el, data, attr) {\n if (!data) {\n attr.src = 'img/broken_image.png';\n attr.style = {\n width: IMAGE_THUMBNAIL_DIM + 'px',\n height: IMAGE_THUMBNAIL_DIM + 'px',\n };\n return el;\n }\n\n attr.className = 'inline-image';\n const dim = fitImageSize(data.width, data.height,\n this.viewportWidth > 0 ? Math.min(this.viewportWidth - REM_SIZE * 6.5, REM_SIZE * 34.5) :\n REM_SIZE * 34.5, REM_SIZE * 24, false) ||\n {dstWidth: BROKEN_IMAGE_SIZE, dstHeight: BROKEN_IMAGE_SIZE};\n attr.style = {\n width: dim.dstWidth + 'px',\n height: dim.dstHeight + 'px',\n // Looks like a Chrome bug: broken image does not respect 'width' and 'height'.\n minWidth: dim.dstWidth + 'px',\n minHeight: dim.dstHeight + 'px'\n };\n if (!Drafty.isProcessing(data)) {\n attr.src = this.authorizeURL(sanitizeUrlForMime(attr.src, 'image'));\n attr.alt = data.name;\n if (attr.src) {\n if (Math.max(data.width || 0, data.height || 0) > IMAGE_THUMBNAIL_DIM) {\n // Allow previews for large enough images.\n attr.onClick = this.onImagePreview;\n attr.className += ' image-clickable';\n }\n attr.loading = 'lazy';\n } else {\n attr.src = 'img/broken_image.png';\n }\n } else {\n // Use custom element instead of .\n el = UploadingImage;\n }\n\n return el;\n}\n\n// The main Drafty formatter: converts Drafty elements into React classes. 'this' is set by the caller.\n// 'this' must contain:\n// viewportWidth: this.props.viewportWidth;\n// authorizeURL: this.props.tinode.authorizeURL\n// onImagePreview: this.handleImagePreview\n// onFormButtonClick: this.handleFormButtonClick\n// onQuoteClick: this.handleQuoteClick (optional)\nexport function fullFormatter(style, data, values, key, stack) {\n if (stack.includes('QQ')) {\n return quoteFormatter.call(this, style, data, values, key);\n }\n\n if (!style) {\n // Unformatted.\n return values;\n }\n\n let el = Drafty.tagName(style);\n let attr = Drafty.attrValue(style, data) || {};\n attr.key = key;\n switch (style) {\n case 'AU':\n // Show audio player.\n if (attr.src) {\n attr.src = this.authorizeURL(sanitizeUrlForMime(attr.src, 'audio'));\n attr.duration = data.duration > 0 ? (data.duration | 0) : undefined;\n attr.preview = data.preview;\n attr.loading = 'lazy';\n }\n el = AudioPlayer;\n // Audio element cannot have content.\n values = null;\n break;\n case 'BR':\n values = null;\n break;\n case 'EX':\n // Ignore.\n break;\n case 'HL':\n // Highlighted text. Assign class name.\n attr.className = 'highlight';\n break;\n case 'HD':\n el = null;\n values = null;\n break;\n case 'IM':\n // Additional processing for images\n el = handleImageData.call(this, el, data, attr);\n // Image element cannot have content.\n values = null;\n break;\n case 'BN':\n // Button\n attr.onClick = this.onFormButtonClick;\n let inner = React.Children.map(values, (child) => {\n return typeof child == 'string' ? child : undefined;\n });\n if (!inner || inner.length == 0) {\n inner = [attr.name]\n }\n // Get text which will be sent back when the button is clicked.\n attr['data-title'] = inner.join('');\n break;\n case 'MN':\n // Mention\n attr.className = 'mention'\n if (data) {\n attr.className += ' ' + idToColorClass(data.val, false, true);\n }\n break;\n case 'FM':\n // Form\n attr.className = 'bot-form';\n break;\n case 'RW':\n // Form element formatting is dependent on element content.\n break;\n case 'QQ':\n // Quote/citation.\n attr.className = 'reply-quote'\n attr.onClick = this.onQuoteClick;\n break;\n default:\n if (!el) {\n // Unknown element.\n el = React.Fragment;\n attr = {key: key};\n // Generate comment for unknown element.\n let body = values;\n if (!Array.isArray(values) || !values.join('').trim()) {\n body = [{this.formatMessage(messages.drafty_unknown)}];\n }\n values = [extension, ' '].concat(body);\n }\n break;\n }\n if (!el) {\n return values;\n }\n return React.createElement(el, attr, values);\n}\n\n// Converts Drafty object into a one-line preview. 'this' is set by the caller.\n// 'this' must contain:\n// formatMessage: this.props.intl.formatMessage\n// messages: formatjs messages defined with defineMessages.\nexport function previewFormatter(style, data, values, key) {\n if (!style) {\n // Unformatted.\n return values;\n }\n\n let el = Drafty.tagName(style);\n const attr = { key: key };\n switch (style) {\n case 'AU':\n // Voicemail as '[mic] 0:00'.\n el = React.Fragment;\n values = [mic, ' ', secondsToTime(data.duration/1000)];\n break;\n case 'BR':\n // Replace new line with a space.\n el = React.Fragment;\n values = [' '];\n break;\n case 'HL':\n // Make highlight less prominent in preview.\n attr.className = 'highlight preview';\n break;\n case 'LN':\n case 'MN':\n // Disable links in previews.\n el = 'span';\n break;\n case 'IM':\n // Replace image with '[icon] Image'.\n el = React.Fragment;\n values = [photo, ' ', this.formatMessage(messages.drafty_image)];\n break;\n case 'BN':\n el = 'span';\n attr.className = 'flat-button faux';\n break;\n case 'FM':\n el = React.Fragment;\n values = [dashboard,\n this.formatMessage(messages.drafty_form)].concat(' ', values || []);\n break;\n case 'RW':\n el = React.Fragment;\n break;\n case 'EX':\n if (data) {\n if (data.mime == 'application/json') {\n // Ignore JSON attachments: they are form response payloads.\n return null;\n }\n // Clear payload.\n delete data.val;\n delete data.ref;\n }\n el = React.Fragment;\n values = [attachment, ' ', this.formatMessage(messages.drafty_attachment)];\n break;\n case 'QQ':\n case 'HD':\n el = null;\n values = null;\n break;\n default:\n if (!el) {\n // Unknown element.\n el = React.Fragment;\n values = [extension, ' ', this.formatMessage(messages.drafty_unknown)];\n }\n break;\n }\n if (!el) {\n return values;\n }\n return React.createElement(el, attr, values);\n};\n\n// Converts Drafty object into a quoted reply. 'this' is set by the caller.\nfunction inlineImageAttr(attr, data) {\n attr.style = {\n width: IMAGE_THUMBNAIL_DIM + 'px',\n height: IMAGE_THUMBNAIL_DIM + 'px',\n maxWidth: IMAGE_THUMBNAIL_DIM + 'px',\n maxHeight: IMAGE_THUMBNAIL_DIM + 'px',\n }\n attr.className = 'inline-image';\n attr.alt = this.formatMessage(messages.drafty_image);\n if (!data) {\n attr.src = 'img/broken_image.png';\n }\n attr.title = attr.alt;\n return attr;\n}\n\n// Displays a portion of Drafty within 'QQ' quotes. 'this' is set by the caller.\n// 'this' must contain:\n// formatMessage: this.props.intl.formatMessage\n// messages: formatjs messages defined with defineMessages.\n// authorizeURL: this.props.tinode.authorizeURL\n// onQuoteClick: this.handleQuoteClick (optional)\nfunction quoteFormatter(style, data, values, key) {\n if (['BR', 'EX', 'IM', 'MN'].includes(style)) {\n let el = Drafty.tagName(style);\n let attr = Drafty.attrValue(style, data) || {};\n attr.key = key;\n switch(style) {\n case 'BR':\n values = null;\n break;\n case 'IM':\n attr = inlineImageAttr.call(this, attr, data);\n values = [React.createElement('img', attr, null), ' ', attr.alt];\n el = React.Fragment;\n // Fragment attributes.\n attr = {key: key};\n break;\n case 'MN':\n el = 'span';\n attr.className = 'mention'\n if (data) {\n attr.className += ' ' + idToColorClass(data.val, false, true);\n }\n break;\n case 'EX':\n let fname;\n if (data) {\n if (data.mime == 'application/json') {\n // Ignore JSON attachments: they are form response payloads.\n return null;\n }\n fname = data.name;\n // Clear payload.\n delete data.val;\n delete data.ref;\n }\n el = React.Fragment;\n values = [attachment,\n shortenFileName(fname, 16) || this.formatMessage(messages.drafty_attachment)];\n break;\n }\n return React.createElement(el, attr, values);\n }\n return previewFormatter.call(this, style, data, values, key);\n}\n\n// Create image thumbnail suitable for inclusion in a quote.\nfunction quoteImage(data) {\n let promise;\n // Get the blob from the image data.\n if (data.val) {\n const blob = base64ToBlob(data.val, data.mime);\n if (!blob) {\n throw new Error(\"Invalid image\");\n }\n promise = Promise.resolve(blob);\n } else if (data.ref) {\n promise = fetch(this.authorizeURL(sanitizeUrlForMime(data.ref, 'image')))\n .then(evt => {\n if (evt.ok) {\n return evt.blob();\n } else {\n throw new Error(`Image fetch unsuccessful: ${evt.status} ${evt.statusText}`);\n }\n });\n } else {\n throw new Error(\"Missing image data\");\n }\n\n // Scale the blob.\n return promise\n .then(blob => {\n // Cut the square from the center of the image and shrink it.\n return imageScaled(blob, IMAGE_THUMBNAIL_DIM, IMAGE_THUMBNAIL_DIM, -1, true)\n }).then(scaled => {\n data.mime = scaled.mime;\n data.size = scaled.blob.size;\n data.width = scaled.width;\n data.height = scaled.height;\n delete data.ref;\n // Keeping the original file name, if provided: ex.data.name;\n\n data.src = URL.createObjectURL(scaled.blob);\n return blobToBase64(scaled.blob);\n }).then(b64 => {\n data.val = b64.bits;\n return data;\n }).catch(err => {\n delete data.val;\n delete data.src;\n data.width = IMAGE_THUMBNAIL_DIM;\n data.height = IMAGE_THUMBNAIL_DIM;\n // Rethrow.\n throw err;\n });\n}\n\n// Create a preview of a reply.\nexport function replyFormatter(style, data, values, key, stack) {\n if (style == 'IM') {\n const attr = inlineImageAttr.call(this, {key: key}, data);\n let loadedPromise;\n try {\n loadedPromise = cancelablePromise(quoteImage.call(this, data));\n } catch (error) {\n loadedPromise = cancelablePromise(error);\n }\n attr.whenDone = loadedPromise;\n values = [React.createElement(LazyImage, attr, null), ' ', attr.alt];\n return React.createElement(React.Fragment, {key: key}, values);\n } else if (style == 'QQ') {\n if (stack.includes('QQ')) {\n // Quote inside quote when forwarding a message.\n return React.createElement('span', {key: key},\n [format_quote, ' ']);\n }\n\n const attr = Drafty.attrValue('QQ', data) || {};\n attr.key = key;\n attr.className = 'reply-quote'\n return React.createElement(Drafty.tagName('QQ'), attr, values);\n }\n return quoteFormatter.call(this, style, data, values, key);\n}\n","import { KNOWN_HOSTS, DEFAULT_HOST } from '../config.js';\n\n// Detect server address from the URL\nexport function detectServerAddress() {\n let host = DEFAULT_HOST;\n if (typeof window.location == 'object') {\n if (window.location.protocol == 'file:' || window.location.hostname == 'localhost') {\n host = KNOWN_HOSTS.local;\n } else if (window.location.hostname) {\n host = window.location.hostname + (window.location.port ? ':' + window.location.port : '');\n }\n }\n return host;\n}\n\n// Detect if the page is served over HTTPS.\nexport function isSecureConnection() {\n if (typeof window.location == 'object') {\n return window.location.protocol == 'https:';\n }\n return false;\n}\n\nexport function isLocalHost() {\n if (typeof window.location == 'object') {\n return window.location.hostname == 'localhost';\n }\n return false;\n}\n","// Helper functions for storing values in localStorage.\n// By default localStorage can store only strings, not objects or other types.\n\nexport default class LocalStorageUtil {\n // Replace old object with the new one.\n static setObject(key, value) {\n localStorage.setItem(key, JSON.stringify(value));\n }\n\n // Get stored object.\n static getObject(key) {\n const value = localStorage.getItem(key);\n return value && JSON.parse(value);\n }\n\n // Partially or wholly update stored object.\n static updateObject(key, value) {\n const oldVal = this.getObject(key);\n this.setObject(key, Object.assign(oldVal || {}, value));\n }\n\n // Just a wrapper.\n static removeItem(key) {\n localStorage.removeItem(key);\n }\n}\n","// Utility class for hash navigation.\n\n// Parse hash as in http://www.example.com/path#hash as if it were\n// path and arguments.\nexport default class HashNavigation {\n static parseUrlHash(hash) {\n // Split path from args, path -> parts[0], args->path[1]\n const parts = hash.split('?', 2);\n const params = {};\n let path = [];\n if (parts[0]) {\n path = parts[0].replace('#', '').split('/');\n }\n if (parts[1]) {\n parts[1].split('&').forEach(function(part) {\n const item = part.split('=');\n if (item[0]) {\n params[decodeURIComponent(item[0])] = decodeURIComponent(item[1]);\n }\n });\n }\n return {path: path, params: params};\n }\n\n static navigateTo(url) {\n window.location.hash = url;\n }\n\n static composeUrlHash(path, params) {\n let url = path.join('/');\n const args = [];\n for (const key in params) {\n if (params.hasOwnProperty(key)) {\n args.push(key + '=' + params[key]);\n }\n }\n if (args.length > 0) {\n url += '?' + args.join('&');\n }\n return url;\n }\n\n static addUrlParam(hash, key, value) {\n const parsed = this.parseUrlHash(hash);\n parsed.params[key] = value;\n return this.composeUrlHash(parsed.path, parsed.params);\n }\n\n static removeUrlParam(hash, key) {\n const parsed = this.parseUrlHash(hash);\n delete parsed.params[key];\n return this.composeUrlHash(parsed.path, parsed.params);\n }\n\n static setUrlSidePanel(hash, sidepanel) {\n const parsed = this.parseUrlHash(hash);\n parsed.path[0] = sidepanel;\n return this.composeUrlHash(parsed.path, parsed.params);\n }\n\n static setUrlInfoPanel(hash, infopanel) {\n const parsed = this.parseUrlHash(hash);\n if (infopanel) {\n parsed.params.info = infopanel;\n } else {\n delete parsed.params.info;\n }\n return this.composeUrlHash(parsed.path, parsed.params);\n }\n\n static setUrlTopic(hash, topic) {\n const parsed = this.parseUrlHash(hash);\n parsed.path[1] = topic;\n // Close InfoView on topic change.\n delete parsed.params.info;\n return this.composeUrlHash(parsed.path, parsed.params);\n }\n}\n","// Short representation of time in the past.\nexport function shortDateFormat(then, locale) {\n locale = locale || window.navigator.userLanguage || window.navigator.language;\n const now = new Date();\n if (then.getFullYear() == now.getFullYear()) {\n // Same year.\n if (then.getMonth() == now.getMonth() && then.getDate() == now.getDate()) {\n // Same month and day, show time only.\n return then.toLocaleTimeString(locale, {hour12: false, hour: '2-digit', minute: '2-digit'});\n }\n // Different month and/or day, show month day, time.\n return then.toLocaleDateString(locale,\n {hour12: false, month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit'});\n }\n // Different year: just show the date.\n return then.toLocaleDateString(locale, {year: 'numeric', month: 'short', day: 'numeric'});\n}\n\n// Convert seconds to [hours:]minutes:seconds, i.e. 156 sec -> 2:36, 3756 sec -> 1:02:36.\n// If fixedMins is true, then minutes are represented by at least two digits.\nexport function secondsToTime(seconds, fixedMin) {\n let min = Math.floor(seconds / 60) | 0;\n let hours = Math.floor(min / 60) | 0;\n\n if (fixedMin || hours > 0) {\n min = min < 10 ? `0${min}` : min;\n }\n let sec = (seconds % 60) | 0;\n sec = sec < 10 ? `0${sec}` : sec;\n if (hours == 0) {\n return `${min}:${sec}`;\n }\n return `${hours}:${min}:${sec}`;\n}\n\n// Convert a number of bytes to human-readable format.\nexport function bytesToHumanSize(bytes) {\n if (!bytes || bytes == 0) {\n return '0 Bytes';\n }\n\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB'];\n const bucket = Math.min(Math.floor(Math.log2(bytes) / 10) | 0, sizes.length-1);\n const count = bytes / Math.pow(1024, bucket);\n const round = bucket > 0 ? (count < 3 ? 2 : (count < 30 ? 1 : 0)) : 0;\n return count.toFixed(round) + ' ' + sizes[bucket];\n}\n\n// Shorten a file name to be under maxLength by clipping out the middle.\nexport function shortenFileName(filename, maxLength) {\n if (typeof filename != 'string') {\n return filename;\n }\n return filename.length > maxLength ?\n filename.slice(0, maxLength/2 - 1) + '…' + filename.slice(1 - maxLength/2) : filename;\n}\n\n// Get 32 bit integer hash value for a string. Ideally it should produce the same value\n// as Java's String#hash().\nfunction stringToColorHash(value) {\n let hash = 0;\n value = '' + value;\n for (let i = 0; i < value.length; i++) {\n hash = ((hash << 5) - hash) + value.charCodeAt(i);\n hash = hash & hash; // Convert to 32bit integer\n }\n return hash;\n}\n\n// User avatar letter color id.\nexport function letterTileColorId(userId) {\n return Math.abs(stringToColorHash(userId)) % 16;\n}\n\n// Converts user or topic ID to a CSS color class. Ideally it should produce the same color value as Java version.\n// params:\n// - {string} id: user or topic ID\n// - {boolean} light: light or dark version of the color.\n// - {boolean} fg: foreground (text) or background color.\nexport function idToColorClass(id, light, fg) {\n return (light ? 'lt-' : 'dk-') + (fg ? 'fg-' : 'bg-') + letterTileColorId(id);\n}\n","// Odds and ends\n\nimport { Tinode } from 'tinode-sdk';\n\nimport { CALL_MESSAGE_MIME_TYPE } from '../constants.js'\n\n// Make shortcut icon appear with a green dot + show unread count in title.\nexport function updateFavicon(count) {\n const oldIcon = document.getElementById('shortcut-icon');\n const head = document.head || document.getElementsByTagName('head')[0];\n const newIcon = document.createElement('link');\n newIcon.type = 'image/png';\n newIcon.id = 'shortcut-icon';\n newIcon.rel = 'shortcut icon';\n newIcon.href = 'img/logo32x32' + (count > 0 ? 'a' : '') + '.png';\n if (oldIcon) {\n head.removeChild(oldIcon);\n }\n head.appendChild(newIcon);\n\n document.title = (count > 0 ? '('+count+') ' : '') + 'Tinode';\n}\n\n// Create theCard which represents user's or topic's \"public\" info.\nexport function theCard(fn, imageUrl, imageMimeType, note) {\n let card = null;\n fn = fn && fn.trim();\n note = note && note.trim();\n\n if (fn) {\n card = {\n fn: fn\n };\n }\n\n if (typeof note == 'string') {\n card = card || {};\n card.note = note ? note : Tinode.DEL_CHAR;\n }\n\n if (imageUrl) {\n card = card || {};\n let mimeType = imageMimeType;\n // Is this a data URL \"data:[][;base64],\"?\n const matches = /^data:(image\\/[-a-z0-9+.]+)?(;base64)?,/i.exec(imageUrl);\n if (matches) {\n mimeType = matches[1];\n card.photo = {\n data: imageUrl.substring(imageUrl.indexOf(',') + 1),\n ref: Tinode.DEL_CHAR\n };\n } else {\n card.photo = {\n data: Tinode.DEL_CHAR,\n ref: imageUrl\n };\n }\n card.photo.type = (mimeType || 'image/jpeg').substring('image/'.length);\n }\n\n return card;\n}\n\n// Deep-shallow compare two arrays: shallow compare each element.\nexport function arrayEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (!Array.isArray(a) || !Array.isArray(b)) {\n return false;\n }\n\n // Compare lengths first.\n if (a.length != b.length) {\n return false;\n }\n // Order of elements is ignored.\n a.sort();\n b.sort();\n for (let i = 0, l = a.length; i < l; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\n\n// Checks (loosely) if the given string is a phone. If so, returns the phone number in a format\n// as close to E.164 as possible.\nexport function asPhone(val) {\n val = val.trim();\n if (/^(?:\\+?(\\d{1,3}))?[- (.]*(\\d{3})[- ).]*(\\d{3})[- .]*(\\d{2})[- .]*(\\d{2})?$/.test(val)) {\n return val.replace(/[- ().]*/, '');\n }\n return null;\n}\n\n// Checks (loosely) if the given string is an email. If so returns the email.\nexport function asEmail(val) {\n val = val.trim();\n if (/^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$/.test(val)) {\n return val;\n }\n return null;\n}\n\n// Checks if URL is a relative url, i.e. has no 'scheme://', including the case of missing scheme '//'.\n// The scheme is expected to be RFC-compliant, e.g. [a-z][a-z0-9+.-]*\n// example.html - ok\n// https:example.com - not ok.\n// http:/example.com - not ok.\n// ' ↲ https://example.com' - not ok. (↲ means carriage return)\nexport function isUrlRelative(url) {\n return url && !/^\\s*([a-z][a-z0-9+.-]*:|\\/\\/)/im.test(url);\n}\n\n// Ensure URL does not present an XSS risk. Optional allowedSchemes may contain an array of\n// strings with permitted URL schemes, such as ['ftp', 'ftps']; otherwise accept http and https only.\nexport function sanitizeUrl(url, allowedSchemes) {\n if (typeof url != 'string') {\n return url;\n }\n\n // Strip control characters and whitespace. They are not valid URL characters anyway.\n url = url.replace(/[^\\x20-\\x7E]/gmi, '').trim();\n\n // Relative URLs are safe.\n // Relative URL does not start with ':', abcd123: or '//'.\n if (!/^([a-z][a-z0-9+.-]*:|\\/\\/)/i.test(url)) {\n return url;\n }\n\n // Blob URLs are safe.\n if (/^blob:http/.test(url)) {\n return url;\n }\n\n // Absolute URL. Accept only safe schemes, or no scheme.\n const schemes = Array.isArray(allowedSchemes) ? allowedSchemes.join('|') : 'http|https';\n const re = new RegExp('^((' + schemes + '):|//)', 'i');\n if (!re.test(url)) {\n return null;\n }\n\n return url;\n}\n\n// Ensure URL is suitable as a source like field: the URL must be a relative URL or\n// have http:, https:, blob: or data: scheme.\n// In case of data: scheme, the URL must must be of the right MIME type such as 'data:{mimeMajor}/XXXX;base64,'.\nexport function sanitizeUrlForMime(url, mimeMajor) {\n if (!url) {\n return null;\n }\n\n const sanitizedUrl = sanitizeUrl(url);\n if (sanitizedUrl) {\n return sanitizedUrl;\n }\n\n // Is this a data: URL of the appropriate mime type?\n const re = new RegExp(`data:${mimeMajor}\\/[a-z0-9.-]+;base64,`, 'i');\n if (re.test(url.trim())) {\n return url;\n }\n\n return null;\n}\n\n// Given message's received status, return name and color of a delivery indicator icon.\nexport function deliveryMarker(received) {\n switch (received) {\n case Tinode.MESSAGE_STATUS_SENDING:\n return { name: 'access_time' }; // watch face\n case Tinode.MESSAGE_STATUS_FAILED:\n return { name: 'warning', color: 'danger-color' }; // yellow icon /!\\\n case Tinode.MESSAGE_STATUS_SENT:\n return { name: 'done' }; // checkmark\n case Tinode.MESSAGE_STATUS_RECEIVED:\n return { name: 'done_all' }; // double checkmark\n case Tinode.MESSAGE_STATUS_READ:\n return { name: 'done_all', color: 'blue' }; // blue double checkmark\n }\n return null;\n}\n\n// Wraps a promise to make it cancelable.\n// The parameter can be either a promise or an error. If it's an error, the wrapped promise is\n// created in a rejected state.\nexport function cancelablePromise(promise) {\n let hasCanceled = false;\n\n const wrappedPromise = promise instanceof Error ?\n Promise.reject(promise) :\n new Promise((resolve, reject) => {\n promise.then(\n result => hasCanceled ? reject({isCanceled: true}) : resolve(result),\n error => hasCanceled ? reject({isCanceled: true}) : reject(error)\n );\n });\n\n return {\n promise: wrappedPromise,\n cancel() {\n hasCanceled = true;\n },\n };\n};\n\n// Returns true if specified mime type represents a Tinode video call.\nexport function isVideoCall(mime) {\n return mime == CALL_MESSAGE_MIME_TYPE;\n}\n\n// Clips string to the specified length.\nexport function clipStr(str, length) {\n return str && str.substring(0, length);\n}\n","// This is a generated file. Don't edit.\n\nexport const PACKAGE_VERSION = \"0.20.0-alpha1\";\n","// Edit account parameters.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport CheckBox from '../widgets/checkbox.jsx';\n\nexport default class EditAccountView extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.handleCheckboxClick = this.handleCheckboxClick.bind(this);\n }\n\n handleCheckboxClick(what, checked) {\n if (what == 'sound') {\n this.props.onToggleMessageSounds(checked);\n } else if (what == 'alert') {\n this.props.onTogglePushNotifications(checked);\n } else if (what == 'incognito') {\n this.props.onToggleIncognitoMode(checked);\n }\n }\n\n render() {\n return (\n
\n
\n \n \n
\n
\n \n \n
\n
\n \n \n
\n
\n );\n }\n};\n","// Edit account parameters.\nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\n\nimport InPlaceEdit from '../widgets/in-place-edit.jsx';\nimport PermissionsEditor from '../widgets/permissions-editor.jsx';\n\nconst messages = defineMessages({\n delete_account: {\n id: 'delete_account',\n defaultMessage: 'Delete account',\n description: 'Title for delete account warning'\n },\n delete_account_warning: {\n id: 'delete_account_warning',\n defaultMessage: 'Are you sure you want to delete your account? It cannot be undone.',\n description: 'Warning message when deleting an account'\n }\n});\n\nclass AccSecurityView extends React.Component {\n constructor(props) {\n super(props);\n\n const me = this.props.tinode.getMeTopic();\n let blockedCount = 0;\n me.contacts((c) => {\n if (c.acs && !c.acs.isJoiner()) {\n blockedCount ++;\n }\n });\n const defacs = me.getDefaultAccess();\n this.state = {\n auth: defacs ? defacs.auth : null,\n anon: defacs ? defacs.anon : null,\n showPermissionEditorFor: undefined,\n blockedCount: blockedCount,\n };\n\n this.handlePasswordUpdate = this.handlePasswordUpdate.bind(this);\n this.handleLaunchPermissionsEditor = this.handleLaunchPermissionsEditor.bind(this);\n this.handleHidePermissionsEditor = this.handleHidePermissionsEditor.bind(this);\n this.handlePermissionsChanged = this.handlePermissionsChanged.bind(this);\n this.handleDeleteAccount = this.handleDeleteAccount.bind(this);\n }\n\n handlePasswordUpdate(pwd) {\n this.setState({password: pwd});\n this.props.onUpdatePassword(pwd);\n }\n\n handleLaunchPermissionsEditor(which) {\n this.setState({\n showPermissionEditorFor: which,\n editedPermissions: this.state[which]\n });\n }\n\n handleHidePermissionsEditor() {\n this.setState({showPermissionEditorFor: undefined});\n }\n\n handlePermissionsChanged(perm) {\n let defacs = {};\n defacs[this.state.showPermissionEditorFor] = perm;\n this.props.onUpdateAccountDesc('me', undefined, undefined, defacs);\n\n let newState = {showPermissionEditorFor: undefined};\n newState[this.state.showPermissionEditorFor] = perm;\n this.setState(newState);\n }\n\n handleDeleteAccount(e) {\n e.preventDefault();\n const {formatMessage} = this.props.intl;\n this.props.onShowAlert(\n formatMessage(messages.delete_account), // title\n formatMessage(messages.delete_account_warning), // content\n (() => { this.props.onDeleteAccount(); }), // onConfirm\n null, // use default text \"OK\"\n true, // Show Reject button\n null // use default text \"Cancel\"\n );\n }\n\n render() {\n return (\n <>{this.state.showPermissionEditorFor ?\n \n :\n
\n );\n }\n};\n","import React from 'react';\n\nimport LetterTile from './letter-tile.jsx';\nimport LoadSpinner from './load-spinner.jsx';\n\nimport { sanitizeUrlForMime } from '../lib/utils.js';\n\nimport { AVATAR_SIZE } from '../config.js';\n\nexport default class AvatarUpload extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n source: props.avatar\n };\n\n this.handleFileReceived = this.handleFileReceived.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.avatar != prevProps.avatar) {\n this.setState({source: this.props.avatar});\n }\n }\n\n handleFileReceived(e) {\n const image = e.target.files[0];\n this.props.onImageUpdated(image.type, URL.createObjectURL(image), image.name);\n // Clear the value so the same file can be uploaded again.\n e.target.value = '';\n }\n\n render() {\n // Randomize id value in case more than one AvatarUpload is shown\n // at the same time.\n const randId = 'file-input-avatar-' + ('' + Math.random()).substring(0, 4);\n const className = 'avatar-upload' + (this.props.readOnly ? ' read-only' : '');\n return (\n
\n );\n }\n};\n","// A panel included into a list of contacts with an action text.\nimport React from 'react';\nimport { injectIntl } from 'react-intl';\n\nclass ContactAction extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.handleClick = this.handleClick.bind(this);\n }\n\n handleClick(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.onAction(this.props.action);\n }\n\n render() {\n const {formatMessage} = this.props.intl;\n return (\n
\n );\n }\n};\n\nexport default injectIntl(Contact);\n","// Context Menu: popup/dropdown menu.\nimport React from 'react';\nimport { injectIntl, defineMessages } from 'react-intl';\n\nimport { REM_SIZE } from '../config.js';\n\nconst messages = defineMessages({\n info: {\n id: 'menu_item_info',\n defaultMessage: 'Info',\n description: 'Show extended topic information'\n },\n clear_messages: {\n id: 'menu_item_clear_messages',\n defaultMessage: 'Clear messages',\n description: 'Delete all messages'\n },\n clear_for_all: {\n id: 'menu_item_clear_messages_for_all',\n defaultMessage: 'Clear for All',\n description: 'Delete all message(s) for all members'\n },\n delete: {\n id: 'menu_item_delete',\n defaultMessage: 'Delete',\n description: 'Delete selected messages'\n },\n delete_for_all: {\n id: 'menu_item_delete_for_all',\n defaultMessage: 'Delete for All',\n description: 'Delete selected message(s) for all members'\n },\n send_retry: {\n id: 'menu_item_send_retry',\n defaultMessage: 'Retry',\n description: 'Retry sending message'\n },\n mute: {\n id: 'menu_item_mute',\n defaultMessage: 'Mute',\n description: 'Turn off notifications'\n },\n unmute: {\n id: 'menu_item_unmute',\n defaultMessage: 'Unmute',\n description: 'Turn notifications on'\n },\n reply: {\n id: 'menu_item_reply',\n defaultMessage: 'Reply',\n description: 'Reply to message'\n },\n forward: {\n id: 'menu_item_forward',\n defaultMessage: 'Forward',\n description: 'Forward message'\n },\n topic_delete: {\n id: 'menu_item_delete_topic',\n defaultMessage: 'Delete',\n description: 'Delete entire topic'\n },\n topic_delete_warning: {\n id: 'topic_delete_warning',\n defaultMessage: 'Are you sure you want to delete this conversation? It cannot be undone.',\n description: 'Alert warning when deleting entire topic'\n },\n delete_messages_warning: {\n id: 'delete_messages_warning',\n defaultMessage: 'Are you sure you want to delete all messages for everyone? It cannot be undone.',\n description: 'Alert dialog warning when hard-deleting all messages.'\n },\n unblock: {\n id: 'menu_item_unblock',\n defaultMessage: 'Unblock',\n description: 'Unblock topic or user'\n },\n // Generic string suitable for either topic or user.\n block: {\n id: 'menu_item_block',\n defaultMessage: 'Block',\n description: 'Block topic or user'\n },\n topic_block_warning: {\n id: 'topic_block_warning',\n defaultMessage: 'Are you sure you want to block this conversation?',\n description: 'Alert warning when blocking a topic.'\n },\n member_delete: {\n id: 'menu_item_member_delete',\n defaultMessage: 'Remove',\n description: 'Remove user from topic'\n },\n archive: {\n id: 'menu_item_archive_topic',\n defaultMessage: 'Archive',\n description: 'Move topic from the list of active chats to archive'\n },\n unarchive: {\n id: 'menu_item_restore_topic',\n defaultMessage: 'Restore',\n description: 'Restore topic from archive'\n },\n edit_permissions: {\n id: 'menu_item_edit_permissions',\n defaultMessage: 'Edit permissions',\n description: 'Menu item [Edit permissions]'\n },\n clear_messages_warning: {\n id: 'clear_messages_warning',\n defaultMessage: 'Are you sure you want to clear all messages? It cannot be undone.',\n description: 'Alert dialog warning when deleting all messages.'\n },\n});\n\nclass ContextMenu extends React.Component {\n constructor(props) {\n super(props);\n\n this.selfRef = React.createRef();\n\n const {formatMessage} = props.intl;\n\n this.handlePageClick = this.handlePageClick.bind(this);\n this.handleEscapeKey = this.handleEscapeKey.bind(this);\n this.handleClick = this.handleClick.bind(this);\n\n // Preconfigured menu items.\n this.MenuItems = {\n 'topic_info': {\n id: 'topic_info',\n title: formatMessage(messages.info),\n handler: null\n },\n 'messages_clear': {\n id: 'messages_clear',\n title: formatMessage(messages.clear_messages),\n handler: (params, errorHandler) => {\n return props.onShowAlert(\n formatMessage(messages.clear_messages), // title\n formatMessage(messages.clear_messages_warning), // content\n (() => { this.deleteMessages(true, false, params, errorHandler); }), // onConfirm\n null, // \"OK\"\n true, // Show Reject button\n null // \"Cancel\"\n );\n }\n },\n 'messages_clear_hard': {\n id: 'messages_clear_hard',\n title: formatMessage(messages.clear_for_all),\n handler: (params, errorHandler) => {\n return props.onShowAlert(\n formatMessage(messages.clear_for_all), // title\n formatMessage(message.delete_messages_warning), // content\n (() => { return this.deleteMessages(true, true, params, errorHandler); }),\n null, // \"OK\"\n true, // Show Reject button\n null // \"Cancel\"\n );\n }\n },\n 'message_delete': {\n id: 'message_delete',\n title: formatMessage(messages.delete),\n handler: (params, errorHandler) => {\n return this.deleteMessages(false, false, params, errorHandler);\n }\n },\n 'message_delete_hard': {\n id: 'message_delete_hard',\n title: formatMessage(messages.delete_for_all),\n handler: (params, errorHandler) => {\n return this.deleteMessages(false, true, params, errorHandler);\n }\n },\n 'menu_item_send_retry': {\n id: 'menu_item_send_retry',\n title: formatMessage(messages.send_retry),\n handler: (params, errorHandler) => {\n return this.retryMessage(params, errorHandler);\n }\n },\n 'menu_item_reply': {\n id: 'menu_item_reply',\n title: formatMessage(messages.reply),\n handler: (params, errorHandler) => {\n return this.replyToMessage(params, errorHandler);\n }\n },\n 'menu_item_forward': {\n id: 'menu_item_forward',\n title: formatMessage(messages.forward),\n handler: () => {} /* the action is taken directly in tinode-web */\n },\n 'topic_unmute': {\n id: 'topic_unmute',\n title: formatMessage(messages.unmute),\n handler: this.topicPermissionSetter.bind(this, '+P')\n },\n 'topic_mute': {\n id: 'topic_mute',\n title: formatMessage(messages.mute),\n handler: this.topicPermissionSetter.bind(this, '-P')\n },\n 'topic_unblock': {\n id: 'topic_unblock',\n title: formatMessage(messages.unblock),\n handler: this.topicPermissionSetter.bind(this, '+JP')\n },\n 'topic_block': {\n id: 'topic_block',\n title: formatMessage(messages.block),\n handler: (params, errorHandler) => {\n return props.onShowAlert(\n formatMessage(messages.block), // title\n formatMessage(messages.topic_block_warning), // content\n (() => {\n return this.topicPermissionSetter('-JP', params, errorHandler).then((ctrl) => {\n this.props.onTopicRemoved(params.topicName);\n return ctrl;\n });\n }),\n null, // \"OK\"\n true, // Show Reject button\n null // \"Cancel\"\n );\n }\n },\n 'topic_delete': {\n id: 'topic_delete',\n title: formatMessage(messages.topic_delete),\n handler: (params, errorHandler) => {\n return props.onShowAlert(\n formatMessage(messages.topic_delete), // title\n formatMessage(messages.topic_delete_warning), // content\n (() => {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic) {\n console.warn(\"Topic not found: \", params.topicName);\n return;\n }\n return topic.delTopic(true).catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }),\n null, // \"OK\"\n true, // Show Reject button\n null // \"Cancel\"\n );\n }\n },\n 'topic_archive': {\n id: 'topic_archive',\n title: formatMessage(messages.archive),\n handler: (params, errorHandler) => {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic) {\n console.warn(\"Topic not found: \", params.topicName);\n return;\n }\n return topic.archive(true).catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }\n },\n 'topic_restore': {\n id: 'topic_restore',\n title: formatMessage(messages.unarchive),\n handler: (params, errorHandler) => {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic) {\n console.warn(\"Topic not found: \", params.topicName);\n return;\n }\n return topic.archive(false).catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }\n },\n // menu_item_edit_permissions is defined elsewhere.\n 'permissions': {\n id: 'permissions',\n title: formatMessage(messages.edit_permissions),\n handler: null\n },\n 'member_delete': {\n id: 'member_delete',\n title: formatMessage(messages.member_delete),\n handler: (params, errorHandler) => {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic || !params.user) {\n console.warn(\"Topic or user not found: '\" + params.topicName + \"', '\" + params.user + \"'\");\n return;\n }\n return topic.delSubscription(params.user).catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }\n },\n 'member_mute': {\n id: 'member_mute',\n title: formatMessage(messages.mute),\n handler: this.topicPermissionSetter.bind(this, '-P')\n },\n 'member_unmute': {\n id: 'member_unmute',\n title: formatMessage(messages.unmute),\n handler: this.topicPermissionSetter.bind(this, '+P')\n },\n 'member_block': {\n id: 'member_block',\n title: formatMessage(messages.block),\n handler: this.topicPermissionSetter.bind(this, '-JP')\n },\n 'member_unblock': {\n id: 'member_unblock',\n title: formatMessage(messages.unblock),\n handler: this.topicPermissionSetter.bind(this, '+JP')\n },\n };\n }\n\n componentDidMount() {\n document.addEventListener('mousedown', this.handlePageClick, false);\n document.addEventListener('keyup', this.handleEscapeKey, false);\n }\n\n componentWillUnmount() {\n document.removeEventListener('mousedown', this.handlePageClick, false);\n document.removeEventListener('keyup', this.handleEscapeKey, false);\n }\n\n handlePageClick(e) {\n if (this.selfRef.current.contains(e.target)) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n this.props.hide();\n }\n\n handleEscapeKey(e) {\n if (e.keyCode === 27) {\n this.props.hide();\n }\n }\n\n handleClick(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.hide();\n let item = this.props.items[e.currentTarget.dataset.id];\n if (typeof item == 'string') {\n item = this.MenuItems[item];\n }\n\n if (!item) {\n console.error(\"Invalid menu item ID\", e.currentTarget.dataset.id);\n } else {\n this.props.onAction(\n item.id,\n item.handler(this.props.params, this.props.onError),\n this.props.params);\n }\n }\n\n // Menu Actions\n\n deleteMessages(all, hard, params, errorHandler) {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic) {\n console.warn(\"Topic not found: \", params.topicName);\n return;\n }\n\n // We don't know if the message is still pending (e.g. attachment is being uploaded),\n // so try cancelling first. No harm if we can't cancel.\n // The message can be cancelled if transmission to the server has not\n // started yet or if the message send has failed.\n if (!all && topic.cancelSend(params.seq)) {\n return;\n }\n // Can't cancel. Delete instead.\n const promise = all ?\n topic.delMessagesAll(hard) :\n topic.delMessagesList([params.seq], hard);\n\n return promise.catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }\n\n // Retries sending failed message.\n retryMessage(params, errorHandler) {\n const topic = this.props.tinode.getTopic(params.topicName);\n // Remove the existing message entry.\n if (!topic || !topic.flushMessage(params.seq)) {\n return;\n }\n const msg = topic.createMessage(params.content, false);\n return topic.publishDraft(msg).catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }\n\n // Function is used by context menu to set permissions.\n topicPermissionSetter(mode, params, errorHandler) {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic) {\n console.warn(\"Topic not found\", params.topicName);\n return;\n }\n\n let result = topic.updateMode(params.user, mode);\n if (errorHandler) {\n result = result.catch((err) => {\n errorHandler(err.message, 'err');\n });\n }\n return result;\n }\n\n replyToMessage(params, errorHandler) {\n params.pickReply(params.seq, params.content, params.userFrom, params.userName, errorHandler);\n }\n\n render() {\n const menu = [];\n let count = 0;\n this.props.items.map((item) => {\n if (typeof item == 'string') {\n item = this.MenuItems[item];\n }\n if (item && item.title) {\n menu.push(\n item.title == '-' ?\n \n :\n
{item.title}
\n );\n }\n count++;\n });\n\n // Ensure that menu is inside the app-container.\n const hSize = 12 * REM_SIZE;\n const vSize = REM_SIZE * (0.7 + menu.length * 2.5);\n const left = (this.props.bounds.right - this.props.clickAt.x < hSize) ?\n (this.props.clickAt.x - this.props.bounds.left - hSize) :\n (this.props.clickAt.x - this.props.bounds.left);\n const top = (this.props.bounds.bottom - this.props.clickAt.y < vSize) ?\n (this.props.clickAt.y - this.props.bounds.top - vSize) :\n (this.props.clickAt.y - this.props.bounds.top);\n\n const position = {\n left: left + 'px',\n top: top + 'px'\n };\n\n return (\n
\n {menu}\n
\n );\n }\n}\n\nexport default injectIntl(ContextMenu);\n","// Image zoom and crop widget.\n\nimport React from 'react';\n\nconst DEFAULT_MAX_ZOOM = 2.5;\n\nexport default class Cropper extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n // Coordinates of the top left corner of the image in container coordinates.\n panX: 0,\n panY: 0,\n // Origin of the zoom in image coordinates.\n originX: 0,\n originY: 0,\n // Zoom scale.\n zoom: 1,\n // Zoom min and max.\n minZoom: 0,\n maxZoom: DEFAULT_MAX_ZOOM,\n };\n\n // References to DOM elements for hooking up events and getting screen dimensions.\n // The transparent element which captures mouse moves (moves with the image).\n this.overlay = React.createRef();\n // The image cutout window or view port (static).\n this.cutout = React.createRef();\n // Scaled and translated image preview.\n this.preview = React.createRef();\n // The main container (static).\n this.boundingBox = React.createRef();\n\n // The original image width and height before any scaling.\n this.imageWidth = 0;\n this.imageHeight = 0;\n\n // Mouse position when dragging.\n this.mouseX = 0\n this.mouseY = 0;\n // Length of the previous mouse move when dragging.\n this.prevDistance = 0;\n\n // Bounding rectangles of static elements.\n this.cutoutRect = {};\n this.bBoxRect = {};\n // Center of the bounding box.\n this.originX = 0;\n this.originY = 0;\n\n this.initScaling = this.initScaling.bind(this);\n this.onZoom = this.onZoom.bind(this);\n this.handleZoom = this.handleZoom.bind(this);\n this.mouseDown = this.mouseDown.bind(this);\n this.mouseUp = this.mouseUp.bind(this);\n this.mouseMove = this.mouseMove.bind(this);\n this.mouseTouch = this.mouseTouch.bind(this);\n this.positionAll = this.positionAll.bind(this);\n this.translate = this.translate.bind(this);\n }\n\n componentDidMount() {\n this.overlay.current.addEventListener('mousedown', this.mouseDown, { passive: true });\n this.overlay.current.addEventListener('touchstart', this.mouseDown, { passive: true });\n\n // The rectangle position is in viewport coordinates.\n this.bBoxRect = this.boundingBox.current.getBoundingClientRect();\n // Center of the bounding box in container coordinates.\n this.originX = this.bBoxRect.width / 2;\n this.originY = this.bBoxRect.height / 2;\n\n // The rectangle position is in viewport coordinates.\n this.cutoutRect = this.cutout.current.getBoundingClientRect();\n }\n\n componentWillUnmount() {\n this.overlay.current.removeEventListener('mousedown', this.mouseDown);\n this.overlay.current.removeEventListener('touchstart', this.mouseDown);\n }\n\n // Position all elements.\n positionAll(panX, panY, zoom) {\n // Zoom origin in image preview coordinates.\n this.setState({\n panX: panX,\n panY: panY,\n zoom: zoom,\n originX: this.originX - panX,\n originY: this.originY - panY,\n });\n\n // Pass cut out coordinates to caller.\n const left = (this.originX - panX) * zoom - this.originX;\n const top = (this.originY - panY) * zoom - this.originY;\n this.props.onChange(\n (left + this.cutoutRect.left - this.bBoxRect.left) / zoom,\n (top + this.cutoutRect.top - this.bBoxRect.top) / zoom,\n this.cutoutRect.width / zoom,\n this.cutoutRect.height / zoom,\n zoom);\n }\n\n // Check if new location is within the limits.\n static checkBound(currPan, img, cutout, delta) {\n let nextDiff = Math.min(0, cutout[0] - img[0] - delta, img[1] - cutout[1] + delta);\n if (nextDiff == 0) {\n // Cutout is completely within the image.\n currPan += delta;\n } else if (Math.min(0, cutout[0] - img[0], img[1] - cutout[1]) < nextDiff) {\n // Cutout is outside of the range but closer to the bound.\n currPan += delta;\n }\n return currPan;\n }\n\n initScaling() {\n // Initialize components.\n const imgRect = this.preview.current.getBoundingClientRect();\n\n this.imageWidth = imgRect.width;\n this.imageHeight = imgRect.height;\n\n // Set zoom slider's min and max values. Make sure the scaled image cannot be smaller than the cutout.\n const minZoom = Math.max(this.cutoutRect.width / imgRect.width, this.cutoutRect.height / imgRect.height);\n this.setState({\n minZoom: minZoom,\n maxZoom: Math.max(DEFAULT_MAX_ZOOM, minZoom + 1)\n });\n\n // Initial zoom level fills the bounding box at the smallest image dimension and overflows the largest, i.e. \"fill\" not \"fit\".\n const zoom = Math.max(this.bBoxRect.width / imgRect.width, this.bBoxRect.height / imgRect.height);\n // Converting from viewport coordinates to container, then panning.\n const panX = this.cutoutRect.left - this.bBoxRect.left -\n (imgRect.width - this.cutoutRect.width) / 2;\n const panY = this.cutoutRect.top - this.bBoxRect.top -\n (imgRect.height - this.cutoutRect.height) / 2;\n\n this.positionAll(panX, panY, zoom);\n }\n\n onZoom(e) {\n this.handleZoom(e.target.value);\n }\n\n handleZoom(zoom) {\n let panX = this.state.panX;\n let panY = this.state.panY;\n\n // Ensure that the image at the new zoom is not outside of the cutout boundaries.\n // Calculate image coordinates at the new zoom.\n const imgLeft = this.originX - (this.originX - panX) * zoom;\n const imgRight = imgLeft + this.imageWidth * zoom;\n // Cutout in the same coordinates as the image.\n const coLeft = this.cutoutRect.left - this.bBoxRect.left;\n const coRight = coLeft + this.cutoutRect.width;\n if (coLeft < imgLeft) {\n panX -= imgLeft - coLeft;\n } else if (coRight > imgRight) {\n panX += coRight - imgRight;\n }\n const imgTop = this.originY - (this.originY - panY) * zoom;\n const imgBottom = imgTop + this.imageHeight * zoom;\n const coTop = this.cutoutRect.top - this.bBoxRect.top;\n const coBottom = coTop + this.cutoutRect.height;\n if (coTop < imgTop) {\n panY -= imgTop - coTop;\n } else if (coBottom > imgBottom) {\n panY += coBottom - imgBottom;\n }\n\n this.positionAll(panX, panY, zoom);\n }\n\n mouseDown(e) {\n if (e.touches) {\n this.mouseX = e.touches[0].pageX;\n this.mouseY = e.touches[0].pageY;\n } else {\n this.mouseX = e.pageX;\n this.mouseY = e.pageY;\n }\n\n window.addEventListener('mousemove', this.mouseMove, { passive: false });\n window.addEventListener('touchmove', this.mouseTouch, { passive: false });\n window.addEventListener('mouseup', this.mouseUp, { passive: true });\n window.addEventListener('touchend', this.mouseUp, { passive: true });\n // Disable text selection in the entire document.\n document.body.style['userSelect'] = 'none';\n }\n\n // Perform image panning.\n translate(pageX, pageY) {\n const dX = pageX - this.mouseX;\n const dY = pageY - this.mouseY;\n\n this.mouseX = pageX;\n this.mouseY = pageY;\n\n // Make sure the image is within the cutout window.\n const imgRect = this.preview.current.getBoundingClientRect();\n\n // Check if the new position is within the boundaries, and if not if it's closer to them.\n let panX = Cropper.checkBound(this.state.panX, [imgRect.left, imgRect.right],\n [this.cutoutRect.left, this.cutoutRect.right], dX);\n let panY = Cropper.checkBound(this.state.panY, [imgRect.top, imgRect.bottom],\n [this.cutoutRect.top, this.cutoutRect.bottom], dY);\n\n this.positionAll(panX, panY, this.state.zoom);\n }\n\n // Image panning.\n mouseMove(e) {\n e.preventDefault();\n this.translate(e.pageX, e.pageY);\n }\n\n mouseTouch(e) {\n e.preventDefault();\n\n if (e.touches.length == 1) {\n this.translate(e.touches[0].pageX, e.touches[0].pageY);\n return;\n }\n\n // Image zooming by pinching.\n const [touch0, touch1] = e.touches;\n const distance = Math.sqrt((touch0.pageX - touch1.pageX) * (touch0.pageX - touch1.pageX) +\n (touch0.pageY - touch1.pageY) * (touch0.pageY - touch1.pageY));\n\n if (!this.prevDistance) {\n this.prevDistance = distance / this.state.zoom;\n }\n\n let scale = (distance / this.prevDistance);\n this.handleZoom(Math.max(this.minZoom, Math.min(this.maxZoom, scale)));\n }\n\n mouseUp(e) {\n window.removeEventListener('mousemove', this.mouseMove);\n window.removeEventListener('touchmove', this.mouseTouch);\n window.removeEventListener('mouseup', this.mouseUp);\n window.removeEventListener('touchend', this.mouseUp);\n // Re-enable text selection.\n document.body.style['userSelect'] = '';\n\n this.positionAll(this.state.panX, this.state.panY, this.state.zoom);\n }\n\n render() {\n // transform3d: position and scale.\n const t3d = `translate3d(${this.state.panX}px, ${this.state.panY}px, 0) scale(${this.state.zoom})`;\n // transformOrigin: zoom origin.\n const orig = `${this.state.originX}px ${this.state.originY}px`;\n\n // Overlay position and size are exactly equal to the position and size of the transformed image\n // except it uses different coordinates.\n const overlay = {\n top: `${this.originY - this.state.originY * this.state.zoom}px`,\n left: `${this.originX - this.state.originX * this.state.zoom}px`,\n width: `${this.imageWidth * this.state.zoom}px`,\n height: `${this.imageHeight * this.state.zoom}px`\n };\n return (\n
\n
\n \n \n \n
\n
\n \n
\n
\n );\n }\n}\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport SendMessage from '../widgets/send-message.jsx';\n\nimport { bytesToHumanSize, shortenFileName } from '../lib/strformat.js';\n\n// Get material icon name from mime type.\nfunction iconFromMime(mime) {\n // If more icons become available in material icons, add them to this mime-to-icon mapping.\n const mimeToIcon = {default: 'insert_drive_file', image: 'image', text: 'description', video: 'theaters'};\n\n return mimeToIcon[mime] || mimeToIcon[(mime || '').split('/')[0]] || mimeToIcon['default'];\n}\n\nexport default class DocPreview extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.handleSendDoc = this.handleSendDoc.bind(this);\n }\n\n handleSendDoc(caption) {\n this.props.onClose();\n this.props.onSendMessage(this.props.content.file);\n }\n\n render() {\n if (!this.props.content) {\n return null;\n }\n return (\n
\n );\n }\n}\n","// GroupMembers: control for managing a list of group members.\nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\n\nimport ChipInput from './chip-input.jsx';\nimport ContactList from './contact-list.jsx';\n\nconst messages = defineMessages({\n no_contacts: {\n id: 'no_contacts',\n defaultMessage: 'You have no contacts :-(',\n description: 'Shown in ContactsView when the user has no contacts'\n },\n contacts_not_found_short: {\n id: 'contacts_not_found_short',\n defaultMessage: \"No contacts match ''{query}''\",\n description: 'Shown in ContactsView when search returned no results'\n }\n});\n\nclass GroupManager extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n // Array of topic members\n members: props.members,\n index: GroupManager.indexMembers(props.members),\n staticMembers: GroupManager.staticMembers(props.members, props.keepInitialMembers, props.requiredMember),\n contactFilter: '',\n noContactsMessage: props.intl.formatMessage(messages.no_contacts),\n selectedContacts: GroupManager.selectedContacts(props.members)\n };\n\n this.handleContactSelected = this.handleContactSelected.bind(this);\n this.handleMemberRemoved = this.handleMemberRemoved.bind(this);\n this.handleContactFilter = this.handleContactFilter.bind(this);\n this.handleSubmit = this.handleSubmit.bind(this);\n this.handleCancel = this.handleCancel.bind(this);\n }\n\n static indexMembers(members) {\n let index = {};\n members.map((m) => {\n index[m.user] = {delta: 0, present: true}; // Delta: 0 unchanged, +1 added, -1 removed\n });\n return index;\n }\n\n static staticMembers(members, keepInitial, requiredMember) {\n let stat = [];\n members.map((m) => {\n if (keepInitial || m.user == requiredMember) {\n stat.push(m.user);\n }\n });\n return stat;\n }\n\n static selectedContacts(members) {\n let sel = [];\n members.map((m) => {\n sel.push(m.user);\n });\n return sel;\n }\n\n handleContactSelected(userId, index) {\n let status = this.state.index[userId];\n if (status) {\n if (status.present) {\n // Prevent duplicate members\n return;\n }\n status.delta += 1;\n status.present = true;\n } else {\n status = {delta: 1, present: true};\n }\n\n let m = this.state.members.slice();\n m.push(this.props.contacts[index]);\n\n const sel = GroupManager.selectedContacts(m);\n\n const i = this.state.index;\n i[userId] = status;\n\n this.setState({members: m, index: i, selectedContacts: sel});\n }\n\n handleMemberRemoved(userId, index) {\n const status = this.state.index[userId];\n if (!status || !status.present) {\n return;\n }\n status.present = false;\n status.delta -= 1;\n\n let m = this.state.members.slice();\n m.splice(index, 1);\n\n const sel = GroupManager.selectedContacts(m);\n\n const i = this.state.index;\n i[userId] = status;\n\n this.setState({members: m, index: i, selectedContacts: sel});\n }\n\n handleContactFilter(val) {\n const {formatMessage} = this.props.intl;\n const msg = !val ?\n formatMessage(messages.no_contacts) :\n formatMessage(messages.contacts_not_found_short, {query: val});\n\n this.setState({contactFilter: val, noContactsMessage: msg});\n }\n\n static doContactFiltering(filter, values) {\n if (filter) {\n for (let i=0; i= 0) {\n return true;\n }\n }\n return false;\n }\n return true;\n }\n\n handleSubmit() {\n var instance = this;\n var members = [];\n var added = [];\n var removed = [];\n\n var keys = Object.keys(this.state.index);\n keys.map(function(k) {\n if (instance.state.index[k].present) {\n members.push(k);\n }\n\n if (instance.state.index[k].delta > 0) {\n added.push(k);\n } else if (instance.state.index[k].delta < 0) {\n removed.push(k);\n }\n });\n this.props.onSubmit(members, added, removed);\n }\n\n handleCancel() {\n this.props.onCancel();\n }\n\n render() {\n const {formatMessage} = this.props.intl;\n return (\n
\n
\n \n
\n
\n \n
\n
\n \n
\n \n
\n \n \n
\n
\n );\n }\n};\n\nexport default injectIntl(GroupManager);\n","// GroupSubs: a list of group subscribers currently online.\n// Show in the topic title bar\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport { MAX_ONLINE_IN_TOPIC } from '../config.js'\n\nimport LetterTile from './letter-tile.jsx';\nimport { makeImageUrl } from '../lib/blob-helpers.js';\n\nexport default class GroupSubs extends React.Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n const usersOnline = [];\n const totalCount = (this.props.subscribers || []).length;\n const countToShow = Math.min(MAX_ONLINE_IN_TOPIC, totalCount);\n\n (this.props.subscribers || []).some((sub) => {\n usersOnline.push(\n
: null);\n }\n}\n","// The X menu to be displayed in title bars.\nimport React from 'react';\n\nexport default class MenuCancel extends React.PureComponent {\n render() {\n return (\n {e.preventDefault(); this.props.onCancel();}}>\n close\n \n );\n }\n}\n","import React from 'react';\n\nexport default class MenuContacts extends React.PureComponent {\n render() {\n return (\n
\n );\n }\n};\n","// Message bubble with non-payload content, such as an indicator of deleted content or a date stamp.\n\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nexport default class MetaMessage extends React.PureComponent {\n constructor(props) {\n super(props);\n }\n\n render() {\n let content = null;\n let bubbleClass = 'bubble';\n if (this.props.deleted) {\n // Message represents a range of deleted messages.\n content = <>block\n \n >\n bubbleClass += ' deleted';\n } else if (this.props.date) {\n // A date badge.\n content = <>{this.props.date}>\n bubbleClass += ' date';\n }\n\n if (!content) {\n return <>{null}>\n }\n\n return (\n
\n );\n }\n}\n","// Image view with progress bar and a cancel button.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport FileProgress from './file-progress.jsx';\n\nexport default class UploadingImage extends React.PureComponent {\n constructor(props) {\n super(props);\n }\n\n render() {\n return (\n
\n {React.createElement('img', this.props)}\n
\n \n
\n
\n );\n }\n};\n","import React from 'react';\nimport { defineMessages } from 'react-intl';\n\nimport { Drafty } from 'tinode-sdk';\n\nimport AudioPlayer from '../widgets/audio-player.jsx'\nimport LazyImage from '../widgets/lazy-image.jsx'\nimport UploadingImage from '../widgets/uploading-image.jsx'\n\nimport { IMAGE_THUMBNAIL_DIM, BROKEN_IMAGE_SIZE, REM_SIZE } from '../config.js';\nimport { base64ToBlob, blobToBase64, fitImageSize, imageScaled } from './blob-helpers.js';\nimport { idToColorClass, secondsToTime, shortenFileName } from './strformat.js';\nimport { cancelablePromise, sanitizeUrlForMime } from './utils.js';\n\nconst messages = defineMessages({\n drafty_form: {\n id: 'drafty_form',\n defaultMessage: 'Form: ',\n description: 'Comment for form in drafty'\n },\n drafty_attachment: {\n id: 'drafty_attachment',\n defaultMessage: 'Attachment',\n description: 'Comment for attachment in drafty'\n },\n drafty_image: {\n id: 'drafty_image',\n defaultMessage: 'Picture',\n description: 'Comment for embedded images in drafty'\n },\n drafty_unknown: {\n id: 'drafty_unknown',\n defaultMessage: 'Unsupported',\n description: 'Unsupported entity in drafty'\n }\n});\n\n// Additional processing of image data.\nfunction handleImageData(el, data, attr) {\n if (!data) {\n attr.src = 'img/broken_image.png';\n attr.style = {\n width: IMAGE_THUMBNAIL_DIM + 'px',\n height: IMAGE_THUMBNAIL_DIM + 'px',\n };\n return el;\n }\n\n attr.className = 'inline-image';\n const dim = fitImageSize(data.width, data.height,\n this.viewportWidth > 0 ? Math.min(this.viewportWidth - REM_SIZE * 6.5, REM_SIZE * 34.5) :\n REM_SIZE * 34.5, REM_SIZE * 24, false) ||\n {dstWidth: BROKEN_IMAGE_SIZE, dstHeight: BROKEN_IMAGE_SIZE};\n attr.style = {\n width: dim.dstWidth + 'px',\n height: dim.dstHeight + 'px',\n // Looks like a Chrome bug: broken image does not respect 'width' and 'height'.\n minWidth: dim.dstWidth + 'px',\n minHeight: dim.dstHeight + 'px'\n };\n if (!Drafty.isProcessing(data)) {\n attr.src = this.authorizeURL(sanitizeUrlForMime(attr.src, 'image'));\n attr.alt = data.name;\n if (attr.src) {\n if (Math.max(data.width || 0, data.height || 0) > IMAGE_THUMBNAIL_DIM) {\n // Allow previews for large enough images.\n attr.onClick = this.onImagePreview;\n attr.className += ' image-clickable';\n }\n attr.loading = 'lazy';\n } else {\n attr.src = 'img/broken_image.png';\n }\n } else {\n // Use custom element instead of .\n el = UploadingImage;\n }\n\n return el;\n}\n\n// The main Drafty formatter: converts Drafty elements into React classes. 'this' is set by the caller.\n// 'this' must contain:\n// viewportWidth: this.props.viewportWidth;\n// authorizeURL: this.props.tinode.authorizeURL\n// onImagePreview: this.handleImagePreview\n// onFormButtonClick: this.handleFormButtonClick\n// onQuoteClick: this.handleQuoteClick (optional)\nexport function fullFormatter(style, data, values, key, stack) {\n if (stack.includes('QQ')) {\n return quoteFormatter.call(this, style, data, values, key);\n }\n\n if (!style) {\n // Unformatted.\n return values;\n }\n\n let el = Drafty.tagName(style);\n let attr = Drafty.attrValue(style, data) || {};\n attr.key = key;\n switch (style) {\n case 'AU':\n // Show audio player.\n if (attr.src) {\n attr.src = this.authorizeURL(sanitizeUrlForMime(attr.src, 'audio'));\n attr.duration = data.duration > 0 ? (data.duration | 0) : undefined;\n attr.preview = data.preview;\n attr.loading = 'lazy';\n }\n el = AudioPlayer;\n // Audio element cannot have content.\n values = null;\n break;\n case 'BR':\n values = null;\n break;\n case 'EX':\n // Ignore.\n break;\n case 'HL':\n // Highlighted text. Assign class name.\n attr.className = 'highlight';\n break;\n case 'HD':\n el = null;\n values = null;\n break;\n case 'IM':\n // Additional processing for images\n el = handleImageData.call(this, el, data, attr);\n // Image element cannot have content.\n values = null;\n break;\n case 'BN':\n // Button\n attr.onClick = this.onFormButtonClick;\n let inner = React.Children.map(values, (child) => {\n return typeof child == 'string' ? child : undefined;\n });\n if (!inner || inner.length == 0) {\n inner = [attr.name]\n }\n // Get text which will be sent back when the button is clicked.\n attr['data-title'] = inner.join('');\n break;\n case 'MN':\n // Mention\n attr.className = 'mention'\n if (data) {\n attr.className += ' ' + idToColorClass(data.val, false, true);\n }\n break;\n case 'FM':\n // Form\n attr.className = 'bot-form';\n break;\n case 'RW':\n // Form element formatting is dependent on element content.\n break;\n case 'QQ':\n // Quote/citation.\n attr.className = 'reply-quote'\n attr.onClick = this.onQuoteClick;\n break;\n default:\n if (!el) {\n // Unknown element.\n el = React.Fragment;\n attr = {key: key};\n // Generate comment for unknown element.\n let body = values;\n if (!Array.isArray(values) || !values.join('').trim()) {\n body = [{this.formatMessage(messages.drafty_unknown)}];\n }\n values = [extension, ' '].concat(body);\n }\n break;\n }\n if (!el) {\n return values;\n }\n return React.createElement(el, attr, values);\n}\n\n// Converts Drafty object into a one-line preview. 'this' is set by the caller.\n// 'this' must contain:\n// formatMessage: this.props.intl.formatMessage\n// messages: formatjs messages defined with defineMessages.\nexport function previewFormatter(style, data, values, key) {\n if (!style) {\n // Unformatted.\n return values;\n }\n\n let el = Drafty.tagName(style);\n const attr = { key: key };\n switch (style) {\n case 'AU':\n // Voicemail as '[mic] 0:00'.\n el = React.Fragment;\n values = [mic, ' ', secondsToTime(data.duration/1000)];\n break;\n case 'BR':\n // Replace new line with a space.\n el = React.Fragment;\n values = [' '];\n break;\n case 'HL':\n // Make highlight less prominent in preview.\n attr.className = 'highlight preview';\n break;\n case 'LN':\n case 'MN':\n // Disable links in previews.\n el = 'span';\n break;\n case 'IM':\n // Replace image with '[icon] Image'.\n el = React.Fragment;\n values = [photo, ' ', this.formatMessage(messages.drafty_image)];\n break;\n case 'BN':\n el = 'span';\n attr.className = 'flat-button faux';\n break;\n case 'FM':\n el = React.Fragment;\n values = [dashboard,\n this.formatMessage(messages.drafty_form)].concat(' ', values || []);\n break;\n case 'RW':\n el = React.Fragment;\n break;\n case 'EX':\n if (data) {\n if (data.mime == 'application/json') {\n // Ignore JSON attachments: they are form response payloads.\n return null;\n }\n // Clear payload.\n delete data.val;\n delete data.ref;\n }\n el = React.Fragment;\n values = [attachment, ' ', this.formatMessage(messages.drafty_attachment)];\n break;\n case 'QQ':\n case 'HD':\n el = null;\n values = null;\n break;\n default:\n if (!el) {\n // Unknown element.\n el = React.Fragment;\n values = [extension, ' ', this.formatMessage(messages.drafty_unknown)];\n }\n break;\n }\n if (!el) {\n return values;\n }\n return React.createElement(el, attr, values);\n};\n\n// Converts Drafty object into a quoted reply. 'this' is set by the caller.\nfunction inlineImageAttr(attr, data) {\n attr.style = {\n width: IMAGE_THUMBNAIL_DIM + 'px',\n height: IMAGE_THUMBNAIL_DIM + 'px',\n maxWidth: IMAGE_THUMBNAIL_DIM + 'px',\n maxHeight: IMAGE_THUMBNAIL_DIM + 'px',\n }\n attr.className = 'inline-image';\n attr.alt = this.formatMessage(messages.drafty_image);\n if (!data) {\n attr.src = 'img/broken_image.png';\n }\n attr.title = attr.alt;\n return attr;\n}\n\n// Displays a portion of Drafty within 'QQ' quotes. 'this' is set by the caller.\n// 'this' must contain:\n// formatMessage: this.props.intl.formatMessage\n// messages: formatjs messages defined with defineMessages.\n// authorizeURL: this.props.tinode.authorizeURL\n// onQuoteClick: this.handleQuoteClick (optional)\nfunction quoteFormatter(style, data, values, key) {\n if (['BR', 'EX', 'IM', 'MN'].includes(style)) {\n let el = Drafty.tagName(style);\n let attr = Drafty.attrValue(style, data) || {};\n attr.key = key;\n switch(style) {\n case 'BR':\n values = null;\n break;\n case 'IM':\n attr = inlineImageAttr.call(this, attr, data);\n values = [React.createElement('img', attr, null), ' ', attr.alt];\n el = React.Fragment;\n // Fragment attributes.\n attr = {key: key};\n break;\n case 'MN':\n el = 'span';\n attr.className = 'mention'\n if (data) {\n attr.className += ' ' + idToColorClass(data.val, false, true);\n }\n break;\n case 'EX':\n let fname;\n if (data) {\n if (data.mime == 'application/json') {\n // Ignore JSON attachments: they are form response payloads.\n return null;\n }\n fname = data.name;\n // Clear payload.\n delete data.val;\n delete data.ref;\n }\n el = React.Fragment;\n values = [attachment,\n shortenFileName(fname, 16) || this.formatMessage(messages.drafty_attachment)];\n break;\n }\n return React.createElement(el, attr, values);\n }\n return previewFormatter.call(this, style, data, values, key);\n}\n\n// Create image thumbnail suitable for inclusion in a quote.\nfunction quoteImage(data) {\n let promise;\n // Get the blob from the image data.\n if (data.val) {\n const blob = base64ToBlob(data.val, data.mime);\n if (!blob) {\n throw new Error(\"Invalid image\");\n }\n promise = Promise.resolve(blob);\n } else if (data.ref) {\n promise = fetch(this.authorizeURL(sanitizeUrlForMime(data.ref, 'image')))\n .then(evt => {\n if (evt.ok) {\n return evt.blob();\n } else {\n throw new Error(`Image fetch unsuccessful: ${evt.status} ${evt.statusText}`);\n }\n });\n } else {\n throw new Error(\"Missing image data\");\n }\n\n // Scale the blob.\n return promise\n .then(blob => {\n // Cut the square from the center of the image and shrink it.\n return imageScaled(blob, IMAGE_THUMBNAIL_DIM, IMAGE_THUMBNAIL_DIM, -1, true)\n }).then(scaled => {\n data.mime = scaled.mime;\n data.size = scaled.blob.size;\n data.width = scaled.width;\n data.height = scaled.height;\n delete data.ref;\n // Keeping the original file name, if provided: ex.data.name;\n\n data.src = URL.createObjectURL(scaled.blob);\n return blobToBase64(scaled.blob);\n }).then(b64 => {\n data.val = b64.bits;\n return data;\n }).catch(err => {\n delete data.val;\n delete data.src;\n data.width = IMAGE_THUMBNAIL_DIM;\n data.height = IMAGE_THUMBNAIL_DIM;\n // Rethrow.\n throw err;\n });\n}\n\n// Create a preview of a reply.\nexport function replyFormatter(style, data, values, key, stack) {\n if (style == 'IM') {\n const attr = inlineImageAttr.call(this, {key: key}, data);\n let loadedPromise;\n try {\n loadedPromise = cancelablePromise(quoteImage.call(this, data));\n } catch (error) {\n loadedPromise = cancelablePromise(error);\n }\n attr.whenDone = loadedPromise;\n values = [React.createElement(LazyImage, attr, null), ' ', attr.alt];\n return React.createElement(React.Fragment, {key: key}, values);\n } else if (style == 'QQ') {\n if (stack.includes('QQ')) {\n // Quote inside quote when forwarding a message.\n return React.createElement('span', {key: key},\n [format_quote, ' ']);\n }\n\n const attr = Drafty.attrValue('QQ', data) || {};\n attr.key = key;\n attr.className = 'reply-quote'\n return React.createElement(Drafty.tagName('QQ'), attr, values);\n }\n return quoteFormatter.call(this, style, data, values, key);\n}\n","// A single topic or user.\nimport React from 'react';\nimport { FormattedMessage, injectIntl } from 'react-intl';\n\nimport ContactBadges from './contact-badges.jsx';\nimport LetterTile from './letter-tile.jsx';\nimport UnreadBadge from './unread-badge.jsx';\n\nimport { Drafty } from 'tinode-sdk';\n\nimport { previewFormatter } from '../lib/formatters.js';\nimport { deliveryMarker } from '../lib/utils.js';\n\nclass Contact extends React.Component {\n constructor(props) {\n super(props);\n\n this.handleClick = this.handleClick.bind(this);\n this.handleContextClick = this.handleContextClick.bind(this);\n }\n\n handleClick(e) {\n e.preventDefault();\n e.stopPropagation();\n if (this.props.onSelected) {\n // Index this.props.index is used by GroupManager.\n this.props.onSelected(this.props.item, this.props.index);\n }\n }\n\n handleContextClick(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.showContextMenu({ topicName: this.props.item, y: e.pageY, x: e.pageX });\n }\n\n render() {\n let title = this.props.title;\n if (!title) {\n title = ;\n } else if (title.length > 30) {\n // FIXME: this is probably wrong for RTL languages.\n title = title.substring(0, 28) + '…';\n }\n const online = this.props.now ? 'online' : 'offline';\n const avatar = this.props.avatar ? this.props.avatar : true;\n const badges = this.props.badges ? this.props.badges.slice() : [];\n const icon_badges = [];\n if (this.props.isVerified) {\n icon_badges.push({icon: 'verified', color: 'verified-color'});\n }\n if (this.props.isStaff) {\n icon_badges.push({icon: 'staff', color: 'staff-color'});\n }\n if (this.props.isDangerous) {\n icon_badges.push({icon: 'dangerous', color: 'danger-color'});\n }\n if (this.props.acs) {\n if (this.props.showMode) {\n badges.push({name: this.props.acs.getMode(), key: 'mode'});\n }\n if (this.props.acs.isMuted()) {\n icon_badges.push({icon: 'muted'});\n }\n if (!this.props.acs.isJoiner()) {\n icon_badges.push({icon: 'banned'});\n }\n }\n\n // The this.props.preview contains alreay shortened Drafty or string.\n let preview;\n if (this.props.previewIsVideoCall) {\n preview = <>{this.props.previewIsResponse ? 'call_received' : 'call_made'}\n video_call>;\n } else if (typeof this.props.preview == 'string') {\n preview = this.props.preview;\n } else if (Drafty.isValid(this.props.preview)) {\n preview = React.createElement(React.Fragment, null, Drafty.format(this.props.preview, previewFormatter,\n {formatMessage: this.props.intl.formatMessage}));\n } else if (this.props.preview) {\n preview =\n <>warning_amber\n \n >;\n }\n\n const icon = deliveryMarker(this.props.received);\n const marker = icon ? {icon.name} : null;\n const titleClass = 'contact-title' + (this.props.deleted ? ' deleted' : '');\n\n return (\n
\n );\n }\n};\n\nexport default injectIntl(Contact);\n","// A panel included into a list of contacts with an action text.\nimport React from 'react';\nimport { injectIntl } from 'react-intl';\n\nclass ContactAction extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.handleClick = this.handleClick.bind(this);\n }\n\n handleClick(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.onAction(this.props.action);\n }\n\n render() {\n const {formatMessage} = this.props.intl;\n return (\n
: null);\n }\n}\n","import React from 'react';\n\nimport LetterTile from './letter-tile.jsx';\nimport LoadSpinner from './load-spinner.jsx';\n\nimport { sanitizeUrlForMime } from '../lib/utils.js';\n\nimport { AVATAR_SIZE } from '../config.js';\n\nexport default class AvatarUpload extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n source: props.avatar\n };\n\n this.handleFileReceived = this.handleFileReceived.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.avatar != prevProps.avatar) {\n this.setState({source: this.props.avatar});\n }\n }\n\n handleFileReceived(e) {\n const image = e.target.files[0];\n this.props.onImageUpdated(image.type, URL.createObjectURL(image), image.name);\n // Clear the value so the same file can be uploaded again.\n e.target.value = '';\n }\n\n render() {\n // Randomize id value in case more than one AvatarUpload is shown\n // at the same time.\n const randId = 'file-input-avatar-' + ('' + Math.random()).substring(0, 4);\n const className = 'avatar-upload' + (this.props.readOnly ? ' read-only' : '');\n return (\n
\n );\n }\n};\n\nexport default injectIntl(SendMessage);\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport SendMessage from '../widgets/send-message.jsx';\n\nimport { bytesToHumanSize, shortenFileName } from '../lib/strformat.js';\n\n// Get material icon name from mime type.\nfunction iconFromMime(mime) {\n // If more icons become available in material icons, add them to this mime-to-icon mapping.\n const mimeToIcon = {default: 'insert_drive_file', image: 'image', text: 'description', video: 'theaters'};\n\n return mimeToIcon[mime] || mimeToIcon[(mime || '').split('/')[0]] || mimeToIcon['default'];\n}\n\nexport default class DocPreview extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.handleSendDoc = this.handleSendDoc.bind(this);\n }\n\n handleSendDoc(caption) {\n this.props.onClose();\n this.props.onSendMessage(this.props.content.file);\n }\n\n render() {\n if (!this.props.content) {\n return null;\n }\n return (\n
\n );\n }\n};\n","// GroupSubs: a list of group subscribers currently online.\n// Show in the topic title bar\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport { MAX_ONLINE_IN_TOPIC } from '../config.js'\n\nimport LetterTile from './letter-tile.jsx';\nimport { makeImageUrl } from '../lib/blob-helpers.js';\n\nexport default class GroupSubs extends React.Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n const usersOnline = [];\n const totalCount = (this.props.subscribers || []).length;\n const countToShow = Math.min(MAX_ONLINE_IN_TOPIC, totalCount);\n\n (this.props.subscribers || []).some((sub) => {\n usersOnline.push(\n
\n );\n }\n};\n","// A single topic or user.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nexport default class Invitation extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.handleButtonAction = this.handleButtonAction.bind(this);\n }\n\n handleButtonAction(evt, data) {\n evt.preventDefault();\n this.props.onAction(data);\n }\n\n render() {\n return (\n
\n
\n \n
\n
\n \n \n \n
\n
\n );\n }\n};\n","/* This is just a static page to display when no conversation is selected. */\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport { Tinode } from 'tinode-sdk';\n\nimport { APP_NAME } from '../config.js';\n\nexport default class LogoView extends React.PureComponent {\n render() {\n const version = APP_NAME + ' (' + Tinode.getLibrary() + ')';\n return (\n
\n );\n }\n};\n","// Message bubble with non-payload content, such as an indicator of deleted content or a date stamp.\n\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nexport default class MetaMessage extends React.PureComponent {\n constructor(props) {\n super(props);\n }\n\n render() {\n let content = null;\n let bubbleClass = 'bubble';\n if (this.props.deleted) {\n // Message represents a range of deleted messages.\n content = <>block\n \n >\n bubbleClass += ' deleted';\n } else if (this.props.date) {\n // A date badge.\n content = <>{this.props.date}>\n bubbleClass += ' date';\n }\n\n if (!content) {\n return <>{null}>\n }\n\n return (\n
\n
\n
\n {content}\n
\n
\n
\n );\n }\n};\n","// Utility class for hash navigation.\n\n// Parse hash as in http://www.example.com/path#hash as if it were\n// path and arguments.\nexport default class HashNavigation {\n static parseUrlHash(hash) {\n // Split path from args, path -> parts[0], args->path[1]\n const parts = hash.split('?', 2);\n const params = {};\n let path = [];\n if (parts[0]) {\n path = parts[0].replace('#', '').split('/');\n }\n if (parts[1]) {\n parts[1].split('&').forEach(function(part) {\n const item = part.split('=');\n if (item[0]) {\n params[decodeURIComponent(item[0])] = decodeURIComponent(item[1]);\n }\n });\n }\n return {path: path, params: params};\n }\n\n static navigateTo(url) {\n window.location.hash = url;\n }\n\n static composeUrlHash(path, params) {\n let url = path.join('/');\n const args = [];\n for (const key in params) {\n if (params.hasOwnProperty(key)) {\n args.push(key + '=' + params[key]);\n }\n }\n if (args.length > 0) {\n url += '?' + args.join('&');\n }\n return url;\n }\n\n static addUrlParam(hash, key, value) {\n const parsed = this.parseUrlHash(hash);\n parsed.params[key] = value;\n return this.composeUrlHash(parsed.path, parsed.params);\n }\n\n static removeUrlParam(hash, key) {\n const parsed = this.parseUrlHash(hash);\n delete parsed.params[key];\n return this.composeUrlHash(parsed.path, parsed.params);\n }\n\n static setUrlSidePanel(hash, sidepanel) {\n const parsed = this.parseUrlHash(hash);\n parsed.path[0] = sidepanel;\n return this.composeUrlHash(parsed.path, parsed.params);\n }\n\n static setUrlInfoPanel(hash, infopanel) {\n const parsed = this.parseUrlHash(hash);\n if (infopanel) {\n parsed.params.info = infopanel;\n } else {\n delete parsed.params.info;\n }\n return this.composeUrlHash(parsed.path, parsed.params);\n }\n\n static setUrlTopic(hash, topic) {\n const parsed = this.parseUrlHash(hash);\n parsed.path[1] = topic;\n // Close InfoView on topic change.\n delete parsed.params.info;\n return this.composeUrlHash(parsed.path, parsed.params);\n }\n}\n","// Panel with a chat.\n\nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\n\nimport { Drafty, Tinode } from 'tinode-sdk';\n\nimport CallPanel from '../widgets/call-panel.jsx';\nimport ChatMessage from '../widgets/chat-message.jsx';\nimport ContactBadges from '../widgets/contact-badges.jsx';\nimport DocPreview from '../widgets/doc-preview.jsx';\nimport ErrorPanel from '../widgets/error-panel.jsx';\nimport GroupSubs from '../widgets/group-subs.jsx';\nimport ImagePreview from '../widgets/image-preview.jsx';\nimport Invitation from '../widgets/invitation.jsx';\nimport LetterTile from '../widgets/letter-tile.jsx';\nimport LoadSpinner from '../widgets/load-spinner.jsx';\nimport LogoView from './logo-view.jsx';\nimport MetaMessage from '../widgets/meta-message.jsx';\nimport SendMessage from '../widgets/send-message.jsx';\n\nimport { DEFAULT_P2P_ACCESS_MODE, IMAGE_PREVIEW_DIM, KEYPRESS_DELAY,\n MESSAGES_PAGE, MAX_EXTERN_ATTACHMENT_SIZE, MAX_IMAGE_DIM, MAX_INBAND_ATTACHMENT_SIZE,\n READ_DELAY, QUOTED_REPLY_LENGTH } from '../config.js';\nimport { CALL_STATE_OUTGOING_INITATED, CALL_STATE_IN_PROGRESS } from '../constants.js';\nimport { blobToBase64, fileToBase64, imageScaled, makeImageUrl } from '../lib/blob-helpers.js';\nimport HashNavigation from '../lib/navigation.js';\nimport { bytesToHumanSize, shortDateFormat } from '../lib/strformat.js';\nimport { isVideoCall } from '../lib/utils.js';\n\n// Run timer with this frequency (ms) for checking notification queue.\nconst NOTIFICATION_EXEC_INTERVAL = 300;\n// Scroll distance before [go to latest message] button is shown.\nconst SHOW_GO_TO_LAST_DIST = 100;\n\nconst messages = defineMessages({\n online_now: {\n id: 'online_now',\n defaultMessage: 'online now',\n description: 'Indicator that the user or topic is currently online',\n },\n last_seen: {\n id: 'last_seen_timestamp',\n defaultMessage: 'Last seen',\n description: 'Label for the timestamp of when the user or topic was last online'\n },\n not_found: {\n id: 'title_not_found',\n defaultMessage: 'Not found',\n description: 'Title shown when topic is not found'\n },\n channel: {\n id: 'channel',\n defaultMessage: 'channel',\n description: 'Subtitle shown for channels in MessagesView instead of last seen'\n },\n file_attachment_too_large: {\n id: 'file_attachment_too_large',\n defaultMessage: 'The file size {size} exceeds the {limit} limit.',\n description: 'Error message when attachment is too large'\n },\n invalid_content: {\n id: 'invalid_content',\n defaultMessage: 'invalid content',\n description: 'Shown when the message is unreadable'\n },\n});\n\n// Checks if the access permissions are granted but not yet accepted.\nfunction isUnconfirmed(acs) {\n if (acs) {\n const ex = acs.getExcessive() || '';\n return acs.isJoiner('given') && (ex.includes('R') || ex.includes('W'));\n }\n return false;\n}\n\nfunction isPeerRestricted(acs) {\n if (acs) {\n const ms = acs.getMissing() || '';\n return acs.isJoiner('want') && (ms.includes('R') || ms.includes('W'));\n }\n return false;\n}\n\nfunction shouldPresentCallPanel(callState) {\n // Show call panel if either:\n // - call is outgoing (and the client is waiting for the other side to pick up) or,\n // - call is already in progress.\n return callState == CALL_STATE_OUTGOING_INITATED || callState == CALL_STATE_IN_PROGRESS;\n}\n\nclass MessagesView extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = MessagesView.getDerivedStateFromProps(props, {});\n\n this.leave = this.leave.bind(this);\n this.sendMessage = this.sendMessage.bind(this);\n this.retrySend = this.retrySend.bind(this);\n this.sendImageAttachment = this.sendImageAttachment.bind(this);\n this.sendFileAttachment = this.sendFileAttachment.bind(this);\n this.sendAudioAttachment = this.sendAudioAttachment.bind(this);\n this.sendKeyPress = this.sendKeyPress.bind(this);\n this.subscribe = this.subscribe.bind(this);\n this.handleScrollReference = this.handleScrollReference.bind(this);\n this.handleScrollEvent = this.handleScrollEvent.bind(this);\n this.handleDescChange = this.handleDescChange.bind(this);\n this.handleSubsUpdated = this.handleSubsUpdated.bind(this);\n this.handleMessageUpdate = this.handleMessageUpdate.bind(this);\n this.handleAllMessagesReceived = this.handleAllMessagesReceived.bind(this);\n this.handleInfoReceipt = this.handleInfoReceipt.bind(this);\n this.handleImagePostview = this.handleImagePostview.bind(this);\n this.handleClosePreview = this.handleClosePreview.bind(this);\n this.handleFormResponse = this.handleFormResponse.bind(this);\n this.handleContextClick = this.handleContextClick.bind(this);\n this.handleShowMessageContextMenu = this.handleShowMessageContextMenu.bind(this);\n this.handleNewChatAcceptance = this.handleNewChatAcceptance.bind(this);\n this.handleEnablePeer = this.handleEnablePeer.bind(this);\n this.handleAttachFile = this.handleAttachFile.bind(this);\n this.handleAttachImage = this.handleAttachImage.bind(this);\n this.handleCancelUpload = this.handleCancelUpload.bind(this);\n this.postReadNotification = this.postReadNotification.bind(this);\n this.clearNotificationQueue = this.clearNotificationQueue.bind(this);\n this.goToLatestMessage = this.goToLatestMessage.bind(this);\n\n this.handlePickReply = this.handlePickReply.bind(this);\n this.handleCancelReply = this.handleCancelReply.bind(this);\n this.handleQuoteClick = this.handleQuoteClick.bind(this);\n this.handleCallHangup = this.handleCallHangup.bind(this);\n\n this.chatMessageRefs = {};\n this.getOrCreateMessageRef = this.getOrCreateMessageRef.bind(this);\n\n this.readNotificationQueue = [];\n this.readNotificationTimer = null;\n }\n\n getOrCreateMessageRef(seqId) {\n if (this.chatMessageRefs.hasOwnProperty(seqId)) {\n return this.chatMessageRefs[seqId];\n }\n const ref = React.createRef();\n this.chatMessageRefs[seqId] = ref;\n return ref;\n }\n\n componentDidMount() {\n if (this.messagesScroller) {\n this.messagesScroller.addEventListener('scroll', this.handleScrollEvent);\n }\n }\n\n componentWillUnmount() {\n if (this.messagesScroller) {\n this.messagesScroller.removeEventListener('scroll', this.handleScrollEvent);\n }\n\n // Flush all notifications.\n this.clearNotificationQueue();\n }\n\n // Scroll last message into view on component update e.g. on message received\n // or vertical shrinking.\n componentDidUpdate(prevProps, prevState) {\n if (this.messagesScroller &&\n (prevState.topic != this.state.topic || prevState.messageCount != this.state.messageCount)) {\n // New message.\n if (this.state.scrollPosition < SHOW_GO_TO_LAST_DIST) {\n this.messagesScroller.scrollTop = this.messagesScroller.scrollHeight -\n this.state.scrollPosition -\n this.messagesScroller.offsetHeight;\n }\n }\n\n const topic = this.props.tinode ? this.props.tinode.getTopic(this.state.topic) : undefined;\n if (this.state.topic != prevState.topic) {\n if (prevState.topic && !Tinode.isNewGroupTopicName(prevState.topic)) {\n this.leave(prevState.topic);\n if (prevState.rtcPanel) {\n this.handleCallHangup(prevState.topic, prevProps.callSeq);\n }\n }\n\n if (topic) {\n topic.onData = this.handleMessageUpdate;\n topic.onAllMessagesReceived = this.handleAllMessagesReceived;\n topic.onInfo = this.handleInfoReceipt;\n topic.onMetaDesc = this.handleDescChange;\n topic.onSubsUpdated = this.handleSubsUpdated;\n topic.onPres = this.handleSubsUpdated;\n }\n }\n\n if (!this.props.applicationVisible) {\n // If application is not visible, flush all unsent 'read' notifications.\n this.clearNotificationQueue();\n } else {\n // Otherwise assume there are unread messages.\n this.postReadNotification(0);\n }\n\n if (topic && ((this.state.topic != prevState.topic) || !prevProps.ready)) {\n // Don't immediately subscribe to a new p2p topic, wait for the first message.\n if (topic._new && topic.isP2PType()) {\n topic.getMeta(topic.startMetaQuery().withDesc().build());\n } else {\n this.subscribe(topic);\n }\n }\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n let nextState = {};\n if (!nextProps.topic) {\n // Default state: no topic.\n nextState = {\n messageCount: 0,\n latestClearId: -1,\n onlineSubs: [],\n topic: null,\n title: '',\n avatar: null,\n isVerified: false,\n isStaff: false,\n isDangerous: false,\n deleted: false,\n docPreview: null,\n imagePreview: null,\n imagePostview: null,\n rtcPanel: null,\n typingIndicator: false,\n scrollPosition: 0,\n fetchingMessages: false,\n peerMessagingDisabled: false,\n channel: false,\n reply: null,\n showGoToLastButton: false\n };\n } else if (nextProps.topic != prevState.topic) {\n const topic = nextProps.tinode.getTopic(nextProps.topic);\n\n let reply = null;\n if (nextProps.forwardMessage) {\n // We are forwarding a message. Show preview.\n const preview = nextProps.forwardMessage.preview;\n reply = {\n content: preview,\n seq: null\n };\n }\n\n nextState = {\n topic: nextProps.topic,\n docPreview: null,\n imagePreview: null,\n imagePostview: null,\n rtcPanel: null,\n typingIndicator: false,\n scrollPosition: 0,\n fetchingMessages: false,\n reply: reply,\n showGoToLastButton: false,\n deleted: topic._deleted\n };\n\n if (topic) {\n // Topic exists.\n const subs = [];\n\n if (nextProps.connected) {\n topic.subscribers((sub) => {\n if (sub.online && sub.user != nextProps.myUserId) {\n subs.push(sub);\n }\n });\n }\n\n Object.assign(nextState, {\n onlineSubs: subs\n });\n\n if (topic.public) {\n Object.assign(nextState, {\n title: topic.public.fn,\n avatar: makeImageUrl(topic.public.photo)\n });\n } else {\n Object.assign(nextState, {\n title: '',\n avatar: null\n });\n }\n\n const peer = topic.p2pPeerDesc();\n if (peer) {\n Object.assign(nextState, {\n peerMessagingDisabled: isPeerRestricted(peer.acs)\n });\n } else if (prevState.peerMessagingDisabled) {\n Object.assign(nextState, {\n peerMessagingDisabled: false\n });\n }\n Object.assign(nextState, {\n messageCount: topic.messageCount(),\n latestClearId: topic.maxClearId(),\n channel: topic.isChannelType()\n });\n\n if (nextProps.callTopic == topic.name && shouldPresentCallPanel(nextProps.callState)) {\n nextState.rtcPanel = nextProps.callTopic;\n }\n } else {\n // Invalid topic.\n Object.assign(nextState, {\n messageCount: 0,\n latestClearId: -1,\n onlineSubs: [],\n title: '',\n avatar: null,\n peerMessagingDisabled: false,\n channel: false\n });\n }\n } else {\n // We are still in same topic. Show the call panel if necessary.\n if (nextProps.callTopic == prevState.topic && !prevState.rtcPanel &&\n shouldPresentCallPanel(nextProps.callState)) {\n nextState.rtcPanel = nextProps.callTopic;\n }\n }\n\n if (nextProps.acs) {\n if (nextProps.acs.isWriter() != prevState.isWriter) {\n nextState.isWriter = !prevState.isWriter;\n }\n if (nextProps.acs.isReader() != prevState.isReader) {\n nextState.isReader = !prevState.isReader;\n }\n if (!nextProps.acs.isReader('given') != prevState.readingBlocked) {\n nextState.readingBlocked = !prevState.readingBlocked;\n }\n if (nextProps.acs.isSharer() != prevState.isSharer) {\n nextState.isSharer = !prevState.isSharer;\n }\n } else {\n if (prevState.isWriter) {\n nextState.isWriter = false;\n }\n if (prevState.isReader) {\n nextState.isReader = false;\n }\n if (!prevState.readingBlocked) {\n prevState.readingBlocked = true;\n }\n if (prevState.isSharer) {\n nextState.isSharer = false;\n }\n }\n\n if (isUnconfirmed(nextProps.acs) == !prevState.unconformed) {\n nextState.unconfirmed = !prevState.unconformed;\n }\n\n // Clear subscribers online when there is no connection.\n if (!nextProps.connected && prevState.onlineSubs && prevState.onlineSubs.length > 0) {\n nextState.onlineSubs = [];\n }\n\n return nextState;\n }\n\n subscribe(topic) {\n if (topic.isSubscribed() || !this.props.ready) {\n return;\n }\n\n // Is this a new topic?\n const newTopic = (this.props.newTopicParams && this.props.newTopicParams._topicName == this.props.topic);\n\n // Don't request the tags. They are useless unless the user\n // is the owner and is editing the topic.\n let getQuery = topic.startMetaQuery().withLaterDesc().withLaterSub();\n if (this.state.isReader || newTopic) {\n // Reading is either permitted or we don't know because it's a new topic. Ask for messages.\n getQuery = getQuery.withLaterData(MESSAGES_PAGE);\n if (this.state.isReader) {\n getQuery = getQuery.withLaterDel();\n }\n // And show \"loading\" spinner.\n this.setState({ fetchingMessages: true });\n }\n\n const setQuery = newTopic ? this.props.newTopicParams : undefined;\n topic.subscribe(getQuery.build(), setQuery)\n .then((ctrl) => {\n if (ctrl.code == 303) {\n // Redirect to another topic requested.\n HashNavigation.navigateTo(HashNavigation.setUrlTopic('', ctrl.params.topic));\n return;\n }\n if (this.state.topic != ctrl.topic) {\n this.setState({topic: ctrl.topic});\n }\n this.props.onNewTopicCreated(this.props.topic, ctrl.topic);\n // If there are unsent messages, try sending them now.\n topic.queuedMessages((pub) => {\n if (pub._sending) {\n return;\n }\n if (topic.isSubscribed()) {\n this.retrySend(pub);\n }\n });\n })\n .catch((err) => {\n console.error(\"Failed subscription to\", this.state.topic, err);\n this.props.onError(err.message, 'err');\n const blankState = MessagesView.getDerivedStateFromProps({}, {});\n blankState.title = this.props.intl.formatMessage(messages.not_found);\n this.setState(blankState);\n });\n }\n\n leave(oldTopicName) {\n if (!oldTopicName || !this.props.tinode.isTopicCached(oldTopicName)) {\n return;\n }\n\n const oldTopic = this.props.tinode.getTopic(oldTopicName);\n if (oldTopic && oldTopic.isSubscribed()) {\n oldTopic.leave(false)\n .catch(() => { /* do nothing here */ })\n .finally(() => {\n // We don't care if the request succeeded or failed.\n // The topic is dead regardless.\n this.setState({fetchingMessages: false});\n oldTopic.onData = undefined;\n oldTopic.onAllMessagesReceived = undefined;\n oldTopic.onInfo = undefined;\n oldTopic.onMetaDesc = undefined;\n oldTopic.onSubsUpdated = undefined;\n oldTopic.onPres = undefined;\n });\n }\n }\n\n // Don't use React.createRef as the ref.current is not available in componentDidMount in this component.\n handleScrollReference(node) {\n if (node) {\n node.addEventListener('scroll', this.handleScrollEvent);\n this.messagesScroller = node;\n this.messagesScroller.scrollTop = this.messagesScroller.scrollHeight - this.state.scrollPosition;\n }\n }\n\n // Get older messages and show/hide [go to latest message] button.\n handleScrollEvent(event) {\n const pos = event.target.scrollHeight - event.target.scrollTop - event.target.offsetHeight;\n this.setState({\n scrollPosition: pos,\n showGoToLastButton: pos > SHOW_GO_TO_LAST_DIST,\n });\n\n if (this.state.fetchingMessages) {\n return;\n }\n\n if (event.target.scrollTop <= 0) {\n const topic = this.props.tinode.getTopic(this.state.topic);\n if (topic && topic.isSubscribed() && topic.msgHasMoreMessages()) {\n this.setState({fetchingMessages: true}, () => {\n topic.getMessagesPage(MESSAGES_PAGE)\n .catch((err) => this.props.onError(err.message, 'err'))\n .finally(() => this.setState({fetchingMessages: false}));\n });\n }\n }\n }\n\n goToLatestMessage() {\n this.setState({scrollPosition: 0});\n if (this.messagesScroller) {\n this.messagesScroller.scrollTop = this.messagesScroller.scrollHeight;\n }\n }\n\n handleDescChange(desc) {\n if (desc.public) {\n this.setState({\n title: desc.public.fn,\n avatar: makeImageUrl(desc.public.photo)\n });\n } else {\n this.setState({\n title: '',\n avatar: null\n });\n }\n\n if (desc.acs) {\n this.setState({\n isWriter: desc.acs.isWriter(),\n isReader: desc.acs.isReader(),\n readingBlocked: !desc.acs.isReader('given'),\n unconfirmed: isUnconfirmed(desc.acs),\n });\n }\n }\n\n postReadNotification(seq) {\n // Ignore notifications if the app is invisible.\n if (!this.props.applicationVisible) {\n return;\n }\n\n // Set up the timer if it's not running already.\n if (!this.readNotificationTimer) {\n this.readNotificationTimer = setInterval(() => {\n if (this.readNotificationQueue.length == 0) {\n // Shut down the timer if the queue is empty.\n clearInterval(this.readNotificationTimer);\n this.readNotificationTimer = null;\n return;\n }\n\n let seq = -1;\n while (this.readNotificationQueue.length > 0) {\n const n = this.readNotificationQueue[0];\n if (n.topicName != this.state.topic) {\n // Topic has changed. Drop the notification.\n this.readNotificationQueue.shift();\n continue;\n }\n\n const now = new Date();\n if (n.sendAt <= now) {\n // Remove expired notification from queue.\n this.readNotificationQueue.shift();\n seq = Math.max(seq, n.seq);\n } else {\n break;\n }\n }\n\n // Send only one notification for the whole batch of messages.\n if (seq >= 0) {\n const topic = this.props.tinode.getTopic(this.state.topic);\n if (topic) {\n topic.noteRead(seq);\n }\n }\n }, NOTIFICATION_EXEC_INTERVAL);\n }\n\n const now = new Date();\n this.readNotificationQueue.push({\n topicName: this.state.topic,\n seq: seq,\n sendAt: now.setMilliseconds(now.getMilliseconds() + READ_DELAY)\n });\n }\n\n // Clear notification queue and timer.\n clearNotificationQueue() {\n this.readNotificationQueue = [];\n if (this.readNotificationTimer) {\n clearInterval(this.readNotificationTimer);\n this.readNotificationTimer = null;\n }\n }\n\n handleSubsUpdated() {\n if (this.state.topic) {\n const subs = [];\n const topic = this.props.tinode.getTopic(this.state.topic);\n topic.subscribers((sub) => {\n if (sub.online && sub.user != this.props.myUserId) {\n subs.push(sub);\n }\n });\n const newState = {onlineSubs: subs};\n const peer = topic.p2pPeerDesc();\n if (peer) {\n Object.assign(newState, {\n peerMessagingDisabled: isPeerRestricted(peer.acs)\n });\n } else if (this.state.peerMessagingDisabled) {\n Object.assign(newState, {\n peerMessagingDisabled: false\n });\n }\n this.setState(newState);\n }\n }\n\n // The 'msg' could be false-ish if some message ranges were deleted.\n handleMessageUpdate(msg) {\n const topic = this.props.tinode.getTopic(this.state.topic);\n if (!msg) {\n // msg could be null if one or more messages were deleted.\n // Updating state to force redraw.\n this.setState({latestClearId: topic.maxClearId()});\n return;\n }\n\n clearTimeout(this.keyPressTimer)\n this.setState({messageCount: topic.messageCount(), typingIndicator: false});\n\n // Scroll to the bottom if the message is added to the end of the message list.\n // TODO: This should be replaced by showing a \"scroll to bottom\" button.\n if (topic.isNewMessage(msg.seq)) {\n if (this.state.scrollPosition > SHOW_GO_TO_LAST_DIST) {\n this.setState({showGoToLastButton: true});\n } else {\n this.setState({scrollPosition: 0});\n }\n }\n\n // Aknowledge messages except own messages. They are\n // automatically assumed to be read and recived.\n const status = topic.msgStatus(msg, true);\n if (status >= Tinode.MESSAGE_STATUS_SENT && msg.from != this.props.myUserId) {\n this.postReadNotification(msg.seq);\n }\n // This will send \"received\" notifications right away.\n this.props.onData(msg);\n }\n\n handleAllMessagesReceived(count) {\n this.setState({fetchingMessages: false});\n if (count > 0) {\n // 0 means \"latest\".\n this.postReadNotification(0);\n }\n }\n\n handleInfoReceipt(info) {\n switch (info.what) {\n case 'kp': {\n clearTimeout(this.keyPressTimer);\n this.keyPressTimer = setTimeout(() => {\n this.setState({typingIndicator: false});\n }, KEYPRESS_DELAY + 1000);\n if (!this.state.typingIndicator) {\n this.setState({typingIndicator: true});\n }\n break;\n }\n case 'read':\n case 'recv':\n // Redraw due to changed recv/read status.\n this.forceUpdate();\n break;\n default:\n console.info(\"Other change in topic: \", info.what);\n }\n }\n\n handleImagePostview(content) {\n this.setState({ imagePostview: content });\n }\n\n handleClosePreview() {\n if (this.state.imagePreview && this.state.imagePreview.url) {\n URL.revokeObjectURL(this.state.imagePreview.url);\n }\n this.setState({ imagePostview: null, imagePreview: null, docPreview: null });\n }\n\n handleFormResponse(action, text, data) {\n if (action == 'pub') {\n this.sendMessage(Drafty.attachJSON(Drafty.parse(text), data));\n } else if (action == 'url') {\n const url = new URL(data.ref);\n const params = url.searchParams;\n for (let key in data.resp) {\n if (data.resp.hasOwnProperty(key)) {\n params.set(key, data.resp[key]);\n }\n }\n ['name', 'seq'].map((key) => {\n if (data[key]) {\n params.set(key, data[key]);\n }\n });\n params.set('uid', this.props.myUserId);\n params.set('topic', this.state.topic);\n url.search = params;\n window.open(url, '_blank');\n } else {\n console.info(\"Unknown action in form\", action);\n }\n }\n\n handleContextClick(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.showContextMenu({ topicName: this.state.topic, y: e.pageY, x: e.pageX });\n }\n\n handleShowMessageContextMenu(params, messageSpecificMenuItems) {\n if (params.userFrom == 'chan') {\n params.userFrom = this.state.topic;\n params.userName = this.state.title;\n }\n params.topicName = this.state.topic;\n const menuItems = messageSpecificMenuItems || [];\n const topic = this.props.tinode.getTopic(params.topicName);\n if (topic) {\n if (!topic.isChannelType()) {\n menuItems.push('message_delete');\n }\n const acs = topic.getAccessMode();\n if (acs && acs.isDeleter()) {\n menuItems.push('message_delete_hard');\n }\n }\n this.props.showContextMenu(params, menuItems);\n }\n\n handleNewChatAcceptance(action) {\n this.props.onNewChat(this.state.topic, action);\n }\n\n handleEnablePeer(e) {\n e.preventDefault();\n this.props.onChangePermissions(this.state.topic, DEFAULT_P2P_ACCESS_MODE, this.state.topic);\n }\n\n sendKeyPress() {\n const topic = this.props.tinode.getTopic(this.state.topic);\n if (topic.isSubscribed()) {\n topic.noteKeyPress();\n }\n }\n\n // sendMessage sends the message with an optional subscription to topic first.\n sendMessage(msg, uploadCompletionPromise, uploader) {\n let head;\n if (this.props.forwardMessage) {\n // We are forwarding a message.\n msg = this.props.forwardMessage.msg;\n head = this.props.forwardMessage.head;\n this.handleCancelReply();\n } else if (this.state.reply && this.state.reply.content) {\n // We are replying to a message in this topic.\n head = {reply: '' + this.state.reply.seq};\n // Turn it into Drafty so we can make a quoted Drafty object later.\n if (typeof msg == 'string') {\n msg = Drafty.parse(msg);\n }\n msg = Drafty.append(Drafty.sanitizeEntities(this.state.reply.content), msg);\n this.handleCancelReply();\n }\n this.props.sendMessage(msg, uploadCompletionPromise, uploader, head);\n }\n\n // Retry sending a message.\n retrySend(pub) {\n this.props.sendMessage(pub.content, undefined, undefined, pub.head);\n }\n\n // Send attachment as Drafty message:\n // - if file is too large, upload it and send a s link.\n // - if file is small enough, just send it in-band.\n sendFileAttachment(file) {\n // Server-provided limit reduced for base64 encoding and overhead.\n const maxInbandAttachmentSize = (this.props.tinode.getServerLimit('maxMessageSize',\n MAX_INBAND_ATTACHMENT_SIZE) * 0.75 - 1024) | 0;\n\n if (file.size > maxInbandAttachmentSize) {\n // Too large to send inband - uploading out of band and sending as a link.\n const uploader = this.props.tinode.getLargeFileHelper();\n if (!uploader) {\n this.props.onError(this.props.intl.formatMessage(messages.cannot_initiate_upload));\n return;\n }\n const uploadCompletionPromise = uploader.upload(file);\n const msg = Drafty.attachFile(null, {\n mime: file.type,\n filename: file.name,\n size: file.size,\n urlPromise: uploadCompletionPromise\n });\n // Pass data and the uploader to the TinodeWeb.\n this.sendMessage(msg, uploadCompletionPromise, uploader);\n } else {\n // Small enough to send inband.\n fileToBase64(file)\n .then(b64 => this.sendMessage(Drafty.attachFile(null, {mime: b64.mime, data: b64.bits, filename: b64.name})))\n .catch(err => this.props.onError(err));\n }\n }\n\n // handleAttachFile method is called when [Attach file] button is clicked: launch attachment preview.\n handleAttachFile(file) {\n const maxExternAttachmentSize = this.props.tinode.getServerLimit('maxFileUploadSize', MAX_EXTERN_ATTACHMENT_SIZE);\n\n if (file.size > maxExternAttachmentSize) {\n // Too large.\n this.props.onError(this.props.intl.formatMessage(messages.file_attachment_too_large,\n {size: bytesToHumanSize(file.size), limit: bytesToHumanSize(maxExternAttachmentSize)}), 'err');\n } else {\n this.setState({\n docPreview: {\n file: file,\n name: file.name,\n size: file.size,\n type: file.type\n }\n });\n }\n }\n\n handleCallHangup(topic, seq) {\n this.props.onVideoCallClosed();\n this.setState({\n rtcPanel: null\n });\n this.props.onCallHangup(topic, seq);\n }\n\n // sendImageAttachment sends the image bits inband as Drafty message.\n sendImageAttachment(caption, blob) {\n const mime = this.state.imagePreview.mime;\n const width = this.state.imagePreview.width;\n const height = this.state.imagePreview.height;\n const fname = this.state.imagePreview.name;\n\n // Server-provided limit reduced for base64 encoding and overhead.\n const maxInbandAttachmentSize = (this.props.tinode.getServerLimit('maxMessageSize',\n MAX_INBAND_ATTACHMENT_SIZE) * 0.75 - 1024) | 0;\n\n if (blob.size > maxInbandAttachmentSize) {\n // Too large to send inband - uploading out of band and sending as a link.\n const uploader = this.props.tinode.getLargeFileHelper();\n if (!uploader) {\n this.props.onError(this.props.intl.formatMessage(messages.cannot_initiate_upload));\n return;\n }\n const uploadCompletionPromise = uploader.upload(blob);\n\n // Make small preview to show while uploading.\n imageScaled(blob, IMAGE_PREVIEW_DIM, IMAGE_PREVIEW_DIM, -1, false)\n // Convert tiny image into base64 for serialization and previewing.\n .then(scaled => blobToBase64(scaled.blob))\n .then(b64 => {\n let msg = Drafty.insertImage(null, 0, {\n mime: mime,\n _tempPreview: b64.bits, // This preview will not be serialized.\n width: width,\n height: height,\n filename: fname,\n size: blob.size,\n urlPromise: uploadCompletionPromise\n });\n if (caption) {\n msg = Drafty.appendLineBreak(msg);\n msg = Drafty.append(msg, Drafty.parse(caption));\n }\n // Pass data and the uploader to the TinodeWeb.\n this.sendMessage(msg, uploadCompletionPromise, uploader);\n }).catch((err) => {\n this.props.onError(err, 'err');\n });\n return;\n }\n\n // Upload the image if it's too big to be send inband.\n blobToBase64(blob)\n .then(b64 => {\n let msg = Drafty.insertImage(null, 0, {\n mime: b64.mime,\n preview: b64.bits, // Serializable preview\n width: width,\n height: height,\n filename: fname,\n size: blob.size\n });\n if (caption) {\n msg = Drafty.appendLineBreak(msg);\n msg = Drafty.append(msg, Drafty.parse(caption));\n }\n this.sendMessage(msg);\n });\n }\n\n // handleAttachImage method is called when [Attach image] button is clicked: launch image preview.\n handleAttachImage(file) {\n const maxExternAttachmentSize = this.props.tinode.getServerLimit('maxFileUploadSize', MAX_EXTERN_ATTACHMENT_SIZE);\n\n // Get image dimensions and size, optionally scale it down.\n imageScaled(file, MAX_IMAGE_DIM, MAX_IMAGE_DIM, maxExternAttachmentSize, false)\n .then(scaled => {\n this.setState({imagePreview: {\n url: URL.createObjectURL(scaled.blob),\n blob: scaled.blob,\n name: scaled.name,\n width: scaled.width,\n height: scaled.height,\n size: scaled.blob.size,\n mime: scaled.mime\n }});\n }).catch(err => {\n this.props.onError(err, 'err');\n });\n }\n\n // sendAudioAttachment sends audio bits inband as Drafty message (no preview).\n sendAudioAttachment(url, preview, duration) {\n fetch(url)\n .then(result => result.blob())\n .then(blob => {\n // Server-provided limit reduced for base64 encoding and overhead.\n const maxInbandAttachmentSize = this.props.tinode.getServerLimit('maxMessageSize', MAX_INBAND_ATTACHMENT_SIZE) * 0.75 - 1024;\n if (blob.size > maxInbandAttachmentSize) {\n // Too large to send inband - uploading out of band and sending as a link.\n const uploader = this.props.tinode.getLargeFileHelper();\n if (!uploader) {\n this.props.onError(this.props.intl.formatMessage(messages.cannot_initiate_upload));\n return;\n }\n const uploadCompletionPromise = uploader.upload(blob);\n const msg = Drafty.appendAudio(null, {\n mime: blob.type,\n size: blob.size,\n duration: duration,\n preview: preview,\n urlPromise: uploadCompletionPromise\n });\n // Pass data and the uploader to the TinodeWeb.\n this.sendMessage(msg, uploadCompletionPromise, uploader);\n } else {\n // Small enough to send inband.\n blobToBase64(blob)\n .then(b64 => {\n this.sendMessage(Drafty.appendAudio(null, {\n mime: b64.mime,\n size: blob.size,\n data: b64.bits,\n duration: duration,\n preview: preview,\n }))\n })\n }\n })\n .catch(err => {this.props.onError(err)});;\n }\n\n handleCancelUpload(seq, uploader) {\n const topic = this.props.tinode.getTopic(this.state.topic);\n const found = topic.findMessage(seq);\n if (found) {\n found._cancelled = true;\n }\n uploader.cancel();\n }\n\n // seq: seq ID of the source message\n // context: message content.\n // forwarded: true if the source message is also a forwarded message.\n // senderId: UID of the sender of the source message.\n // senderName: full name of the sender of the original message.\n handlePickReply(seq, content, senderId, senderName) {\n this.setState({reply: null});\n\n if (!seq || !content) {\n return;\n }\n\n content = typeof content == 'string' ? Drafty.init(content) : content;\n if (Drafty.isValid(content)) {\n content = Drafty.replyContent(content, QUOTED_REPLY_LENGTH);\n } else {\n // /!\\ invalid content.\n content = Drafty.append(Drafty.init('\\u26A0 '),\n Drafty.wrapInto(this.props.intl.formatMessage(messages.invalid_content), 'EM'));\n }\n\n this.setState({\n reply: {\n content: Drafty.quote(senderName, senderId, content),\n seq: seq\n }\n });\n this.props.onCancelForwardMessage();\n }\n\n handleCancelReply() {\n this.setState({reply: null});\n this.props.onCancelForwardMessage();\n }\n\n handleQuoteClick(replyToSeq) {\n const ref = this.getOrCreateMessageRef(replyToSeq);\n if (ref && ref.current) {\n ref.current.scrollIntoView({block: \"center\", behavior: \"smooth\"});\n ref.current.classList.add('flash');\n setTimeout(() => { ref.current.classList.remove('flash') } , 1000);\n } else {\n console.error(\"Unresolved message ref\", replyToSeq);\n }\n }\n\n render() {\n const {formatMessage} = this.props.intl;\n\n let component;\n if (this.props.hideSelf) {\n component = null;\n } else if (!this.state.topic) {\n component = (\n \n );\n } else {\n let component2;\n if (this.state.imagePreview) {\n // Preview image before sending.\n component2 = (\n \n );\n } else if (this.state.imagePostview) {\n // Expand received image.\n component2 = (\n \n );\n } else if (this.state.docPreview) {\n // Preview attachment before sending.\n component2 = (\n \n );\n } else if (this.state.rtcPanel) {\n const topic = this.props.tinode.getTopic(this.state.topic);\n component2 = (\n \n );\n } else {\n const topic = this.props.tinode.getTopic(this.state.topic);\n const isChannel = topic.isChannelType();\n const groupTopic = topic.isGroupType() && !isChannel;\n const icon_badges = [];\n if (topic.trusted) {\n if (topic.trusted.verified) {\n icon_badges.push({icon: 'verified', color: 'badge-inv'});\n }\n if (topic.trusted.staff) {\n icon_badges.push({icon: 'staff', color: 'badge-inv'});\n }\n if (topic.trusted.danger) {\n icon_badges.push({icon: 'dangerous', color: 'badge-inv'});\n }\n }\n\n const messageNodes = [];\n let previousFrom = null;\n let prevDate = null;\n let chatBoxClass = null;\n const dateFmt = new Intl.DateTimeFormat(this.props.intl.locale);\n topic.messages((msg, prev, next, i) => {\n let nextFrom = next ? (next.from || 'chan') : null;\n\n let sequence = 'single';\n let thisFrom = msg.from || 'chan';\n if (thisFrom == previousFrom) {\n if (thisFrom == nextFrom) {\n sequence = 'middle';\n } else {\n sequence = 'last';\n }\n } else if (thisFrom == nextFrom) {\n sequence = 'first';\n }\n previousFrom = thisFrom;\n\n const isReply = !(thisFrom == this.props.myUserId);\n const deliveryStatus = topic.msgStatus(msg, true);\n\n let userFrom = thisFrom, userName, userAvatar;\n const user = topic.userDesc(thisFrom);\n if (user && user.public) {\n userName = user.public.fn;\n userAvatar = makeImageUrl(user.public.photo);\n }\n chatBoxClass = groupTopic ? 'chat-box group' : 'chat-box';\n\n // Ref for this chat message.\n const ref = this.getOrCreateMessageRef(msg.seq);\n let replyToSeq = msg.head ? parseInt(msg.head.reply) : null;\n if (!replyToSeq || isNaN(replyToSeq)) {\n replyToSeq = null;\n }\n\n if (msg.hi) {\n // Deleted message.\n messageNodes.push(\n \n );\n } else {\n const thisDate = new Date(msg.ts);\n // This message was sent on a different date than the previous.\n if (!prevDate || prevDate.toDateString() != thisDate.toDateString()) {\n messageNodes.push(\n \n );\n prevDate = thisDate;\n }\n let duration;\n if (msg.head && isVideoCall(msg.head.mime)) {\n topic.messageVersions(msg, (cur, before) => {\n if (cur.content == 'finished' && before.content == 'accepted') {\n duration = msg.ts - before.ts;\n }\n });\n }\n messageNodes.push(\n \n );\n }\n });\n\n let lastSeen = null;\n if (isChannel) {\n lastSeen = formatMessage(messages.channel);\n } else {\n const cont = this.props.tinode.getMeTopic().getContact(this.state.topic);\n if (cont && Tinode.isP2PTopicName(cont.topic)) {\n if (cont.online) {\n lastSeen = formatMessage(messages.online_now);\n } else if (cont.seen) {\n lastSeen = formatMessage(messages.last_seen) + \": \" +\n shortDateFormat(cont.seen.when, this.props.intl.locale);\n // TODO: also handle user agent in c.seen.ua\n }\n }\n }\n const avatar = this.state.avatar || true;\n const online = this.state.deleted ? null :\n this.props.online ? 'online' + (this.state.typingIndicator ? ' typing' : '') : 'offline';\n\n const titleClass = 'panel-title' + (this.state.deleted ? ' deleted' : '');\n\n component2 = (\n <>\n
\n );\n }\n};\n\nexport default injectIntl(TinodeWeb);\n","// Put all packages together.\n// Used to generate umd/index.prod.js\n\nimport React from 'react';\nimport ReactDOM from 'react-dom';\n\nimport { IntlProvider } from 'react-intl';\n\nimport allMessages from './messages.json';\nimport TinodeWeb from './views/tinode-web.jsx';\nimport HashNavigation from './lib/navigation.js';\n\n// Detect human language to use in the UI:\n// Check parameters from URL hash #?hl=ru, then browser, then use 'en' as a fallback.\nconst { params } = HashNavigation.parseUrlHash(window.location.hash);\nconst language = (params && params.hl) ||\n (navigator.languages && navigator.languages[0]) ||\n navigator.language ||\n navigator.userLanguage ||\n 'en';\n\n// Get the base language 'en' from a more specific 'en_GB' or 'en-US' as a partial fallback.\nconst baseLanguage = language.toLowerCase().split(/[-_]/)[0];\n\n// Try the full locale first, then the locale without the region code, fallback to 'en'.\nconst htmlLang = allMessages[language] ? language : allMessages[baseLanguage] ? baseLanguage : 'en';\nconst messages = allMessages[htmlLang];\n\n// Set lang attribute of the HTML element: \ndocument.getElementsByTagName('html')[0].setAttribute('lang', htmlLang);\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById('mountPoint')\n);\n"],"names":["sections","name","type","doInherit","newClass","baseClass","prototype","Object","create","constructor","WebmBase","this","WebmUint","call","padHex","hex","length","WebmFloat","WebmContainer","WebmFile","source","setSource","fixWebmDuration","blob","duration","callback","options","undefined","Promise","resolve","reader","FileReader","onloadend","file","Uint8Array","result","fixDuration","toBlob","ex","readAsArrayBuffer","updateBySource","updateByData","setData","data","i","toString","substr","parseInt","getValue","setValue","value","getFloatArrayType","Float32Array","Float64Array","byteArray","reverse","floatArray","buffer","readByte","offset","readUint","firstByte","bytes","end","id","len","Math","min","slice","info","ctr","section","push","idHex","writeUint","x","draft","flag","c","writeSections","content","contentLength","set","getSectionById","logger","message","console","log","segmentSection","infoSection","timeScaleSection","durationSection","mimeType","Blob","default","__webpack_module_cache__","__webpack_require__","moduleId","cachedModule","exports","module","__webpack_modules__","n","getter","__esModule","d","a","definition","key","o","defineProperty","enumerable","get","g","globalThis","Function","e","window","obj","prop","hasOwnProperty","React","ReactDOM","ReactIntl","stringToByteArray$1","str","out","p","charCodeAt","base64","byteToCharMap_","charToByteMap_","byteToCharMapWebSafe_","charToByteMapWebSafe_","ENCODED_VALS_BASE","ENCODED_VALS","ENCODED_VALS_WEBSAFE","HAS_NATIVE_SUPPORT","atob","encodeByteArray","input","webSafe","Array","isArray","Error","init_","byteToCharMap","output","byte1","haveByte2","byte2","haveByte3","byte3","outByte1","outByte2","outByte3","outByte4","join","encodeString","btoa","decodeString","pos","c1","String","fromCharCode","c2","u","c3","byteArrayToString","decodeStringToByteArray","charToByteMap","charAt","byte4","base64urlEncodeWithoutPadding","utf8Bytes","base64Encode","replace","Deferred","reject","promise","wrapCallback","error","catch","isIndexedDBAvailable","indexedDB","validateIndexedDBOpenable","preExist","DB_CHECK_NAME","request","self","open","onsuccess","close","deleteDatabase","onupgradeneeded","onerror","_a","FirebaseError","code","customData","super","setPrototypeOf","captureStackTrace","ErrorFactory","service","serviceName","errors","fullCode","template","PATTERN","_","replaceTemplate","fullMessage","deepEqual","b","aKeys","keys","bKeys","k","includes","aProp","bProp","isObject","thing","getModularInstance","_delegate","promisifyRequest","errorMessage","event","target","DBWrapper","_db","objectStoreNames","transaction","storeNames","mode","TransactionWrapper","createObjectStore","storeName","ObjectStoreWrapper","_transaction","complete","oncomplete","onabort","objectStore","_store","index","IndexWrapper","createIndex","keypath","put","delete","clear","_index","openDB","dbName","dbVersion","upgradeCallback","oldVersion","newVersion","async","deleteDB","Component","instanceFactory","multipleInstances","serviceProps","instantiationMode","onInstanceCreated","setInstantiationMode","setMultipleInstances","setServiceProps","props","setInstanceCreatedCallback","DEFAULT_ENTRY_NAME","Provider","container","component","instances","Map","instancesDeferred","instancesOptions","onInitCallbacks","identifier","normalizedIdentifier","normalizeInstanceIdentifier","has","deferred","isInitialized","shouldAutoInitialize","instance","getOrInitializeService","instanceIdentifier","getImmediate","optional","getComponent","setComponent","isComponentEager","instanceDeferred","entries","clearInstance","services","from","values","all","filter","map","INTERNAL","_delete","isComponentSet","getOptions","initialize","opts","onInit","existingCallbacks","Set","add","existingInstance","invokeOnInitCallbacks","callbacks","ComponentContainer","providers","addComponent","provider","getProvider","addOrOverwriteComponent","getProviders","LogLevel","levelStringToEnum","DEBUG","VERBOSE","INFO","WARN","ERROR","SILENT","defaultLogLevel","ConsoleMethod","defaultLogHandler","logType","args","logLevel","now","Date","toISOString","method","PlatformLoggerServiceImpl","getPlatformInfoString","isVersionServiceProvider","library","version","logString","name$o","version$1","_logLevel","_logHandler","_userLogHandler","val","TypeError","setLogLevel","logHandler","userLogHandler","debug","warn","PLATFORM_LOG_STRING","_apps","_components","_addComponent","app","_registerComponent","componentName","heartbeatController","triggerHeartbeat","ERROR_FACTORY","FirebaseAppImpl","config","_isDeleted","_options","assign","_config","_name","_automaticDataCollectionEnabled","automaticDataCollectionEnabled","_container","checkDestroyed","isDeleted","appName","initializeApp","rawConfig","existingApp","newApp","registerVersion","libraryKeyOrName","variant","libraryMismatch","match","versionMismatch","warning","STORE_NAME","dbPromise","getDbPromise","db","originalErrorMessage","writeHeartbeatsToIndexedDB","heartbeatObject","tx","computeKey","appId","HeartbeatServiceImpl","_heartbeatsCache","_storage","HeartbeatStorageImpl","_heartbeatsCachePromise","read","then","agent","date","getUTCDateString","lastSentHeartbeatDate","heartbeats","some","singleDateHeartbeat","hbTimestamp","valueOf","overwrite","heartbeatsToSend","unsentEntries","heartbeatsCache","maxSize","heartbeatEntry","find","hb","dates","countBytes","pop","extractHeartbeatsForHeader","headerString","JSON","stringify","substring","_canUseIndexedDBPromise","runIndexedDBEnvironmentCheck","readHeartbeatsFromIndexedDB","heartbeatsObject","existingHeartbeatsObject","PENDING_TIMEOUT_MS","PACKAGE_VERSION","INTERNAL_AUTH_VERSION","TOKEN_EXPIRATION_BUFFER","isServerError","getInstallationsEndpoint","projectId","extractAuthTokenInfoFromResponse","response","token","requestStatus","expiresIn","responseExpiresIn","Number","creationTime","getErrorFromResponse","requestName","errorData","json","serverCode","serverMessage","serverStatus","status","getHeaders","apiKey","Headers","Accept","getHeadersWithAuth","appConfig","refreshToken","headers","append","getAuthorizationHeader","retryIfServerError","fn","sleep","ms","setTimeout","VALID_FID_PATTERN","generateFid","fidByteArray","crypto","msCrypto","getRandomValues","fid","array","encode","test","getKey","fidChangeCallbacks","fidChanged","callFidChangeCallbacks","channel","getBroadcastChannel","postMessage","closeBroadcastChannel","broadcastFidChange","broadcastChannel","BroadcastChannel","onmessage","size","OBJECT_STORE_NAME","oldValue","remove","update","updateFn","store","newValue","getInstallationEntry","installations","registrationPromise","installationEntry","oldEntry","clearTimedOutRequest","registrationStatus","updateOrCreateInstallationEntry","entryWithPromise","navigator","onLine","inProgressEntry","registrationTime","registeredInstallationEntry","heartbeatServiceProvider","endpoint","heartbeatService","heartbeatsHeader","getHeartbeatsHeader","body","authVersion","sdkVersion","fetch","ok","responseValue","authToken","createInstallationRequest","registerInstallation","waitUntilFidRegistration","triggerRegistrationIfNecessary","entry","updateInstallationRequest","generateAuthTokenRequest","getGenerateAuthTokenEndpoint","installation","refreshAuthToken","forceRefresh","tokenPromise","isEntryRegistered","oldAuthToken","isAuthTokenExpired","isAuthTokenValid","updateAuthTokenRequest","waitUntilAuthTokenRequest","inProgressAuthToken","requestTime","makeAuthTokenRequestInProgressEntry","updatedInstallationEntry","fetchAuthTokenFromServer","getToken","installationsImpl","completeInstallationRegistration","getMissingValueError","valueName","INSTALLATIONS_NAME","internalFactory","getId","configKeys","keyName","extractAppConfig","DEFAULT_VAPID_KEY","CONSOLE_CAMPAIGN_ID","MessageType$1","MessageType","arrayToBase64","uint8Array","base64ToArray","base64String","repeat","rawData","outputArray","OLD_DB_NAME","OLD_OBJECT_STORE_NAME","upgradeDb","dbGet","firebaseDependencies","tokenDetails","oldTokenDetails","senderId","dbNames","databases","upgradeTransaction","contains","oldDetails","auth","p256dh","fcmToken","createTime","subscriptionOptions","swScope","vapidKey","checkTokenDetails","migrateOldDatabase","dbSet","requestDeleteToken","unsubscribeOptions","getEndpoint","responseData","errorInfo","err","getBody","web","applicationPubKey","getTokenInternal","messaging","pushSubscription","swRegistration","subscription","pushManager","getSubscription","subscribe","userVisibleOnly","applicationServerKey","getPushSubscription","scope","dbOptions","currentOptions","isVapidKeyEqual","isEndpointEqual","isAuthEqual","isP256dhEqual","isTokenValid","updatedToken","updateOptions","requestUpdateToken","updatedTokenDetails","deleteTokenInternal","updateToken","getNewToken","dbRemove","unsubscribe","subscribeOptions","requestGetToken","externalizePayload","internalPayload","payload","collapseKey","collapse_key","messageId","fcmMessageId","messagePayloadInternal","notification","title","image","propagateNotificationPayload","propagateDataPayload","fcmOptions","link","analyticsLabel","analytics_label","propagateFcmOptions","_mergeStrings","s1","s2","resultArray","MessagingService","analyticsProvider","deliveryMetricsExportedToBigQueryEnabled","onBackgroundMessageHandler","onMessageHandler","logEvents","isLogServiceStarted","messagingSenderId","registerDefaultSw","serviceWorker","register","browserErrorMessage","getToken$1","Notification","permission","requestPermission","updateVapidKey","ServiceWorkerRegistration","updateSwReg","serviceWorkerRegistration","logToScion","messageType","eventType","NOTIFICATION_CLICKED","PUSH_RECEIVED","getEventType","logEvent","message_id","message_name","message_time","message_device_time","floor","messageEventListener","isFirebaseMessaging","next","dataPayload","WindowMessagingInternalFactory","isWindowSupported","cookieEnabled","PushSubscription","getMessagingInWindow","isSupported","deleteToken","deleteToken$1","onMessage","nextOrObserver","onMessage$1","addEventListener","Tinode","Alert","render","visible","className","onReject","onClick","FormattedMessage","defaultMessage","onConfirm","confirm","APP_NAME","KNOWN_HOSTS","hosted","local","DEFAULT_HOST","KEYPRESS_DELAY","DEFAULT_P2P_ACCESS_MODE","REM_SIZE","AVATAR_SIZE","MAX_INBAND_ATTACHMENT_SIZE","MAX_EXTERN_ATTACHMENT_SIZE","IMAGE_THUMBNAIL_DIM","MAX_TITLE_LENGTH","MAX_TOPIC_DESCRIPTION_LENGTH","CALL_WEBRTC_CONFIG","iceServers","urls","username","credential","messages","defineMessages","clear_messages","clear_for_all","delete_for_all","send_retry","mute","unmute","reply","forward","topic_delete","topic_delete_warning","delete_messages_warning","unblock","block","topic_block_warning","member_delete","archive","unarchive","edit_permissions","clear_messages_warning","ContextMenu","selfRef","formatMessage","intl","handlePageClick","bind","handleEscapeKey","handleClick","MenuItems","handler","params","errorHandler","onShowAlert","deleteMessages","retryMessage","replyToMessage","topicPermissionSetter","ctrl","onTopicRemoved","topicName","topic","tinode","getTopic","delTopic","user","delSubscription","componentDidMount","document","componentWillUnmount","removeEventListener","current","preventDefault","stopPropagation","hide","keyCode","item","items","currentTarget","dataset","onAction","onError","hard","cancelSend","seq","delMessagesAll","delMessagesList","flushMessage","msg","createMessage","publishDraft","updateMode","pickReply","userFrom","userName","menu","count","vSize","position","left","bounds","right","clickAt","top","bottom","y","style","ref","injectIntl","icon_mapping","ContactBadges","badges","color","icon","secondsToTime","seconds","fixedMin","sec","bytesToHumanSize","sizes","bucket","log2","pow","round","toFixed","shortenFileName","filename","maxLength","idToColorClass","light","fg","userId","abs","hash","stringToColorHash","CALL_MESSAGE_MIME_TYPE","updateFavicon","oldIcon","getElementById","head","getElementsByTagName","newIcon","createElement","rel","href","removeChild","appendChild","theCard","imageUrl","imageMimeType","note","card","trim","matches","exec","photo","indexOf","arrayEqual","sort","l","sanitizeUrl","url","allowedSchemes","schemes","RegExp","sanitizeUrlForMime","mimeMajor","sanitizedUrl","deliveryMarker","received","cancelablePromise","hasCanceled","isCanceled","cancel","isVideoCall","mime","clipStr","LetterTile","avatar","isGroup","iconColor","letter","deleted","authorizeURL","alt","src","UnreadBadge","SUPPORTED_IMAGE_FORMATS","MIME_EXTENSIONS","makeImageUrl","startsWith","fitImageSize","width","height","maxWidth","maxHeight","forceSquare","scale","dstWidth","dstHeight","srcWidth","srcHeight","xoffset","yoffset","fileNameForMime","fname","idx","ext","at","lastIndexOf","imageScaled","fileOrBlob","img","Image","crossOrigin","onload","URL","revokeObjectURL","dim","canvas","ctx","getContext","imageSmoothingEnabled","drawImage","clearRect","createObjectURL","blobToBase64","bits","split","readAsDataURL","intArrayToBase64","arr","bin","forEach","base64ToIntArray","b64","BAR_COLOR_DARK","AudioPlayer","preview","state","canPlay","playing","currentTime","longMin","initAudio","initCanvas","resampleBars","visualize","handlePlay","handleSeek","handleError","audioPlayer","viewBuffer","canvasRef","oncanplay","ontimeupdate","onended","pause","componentDidUpdate","prevProps","setState","Audio","offsetWidth","offsetHeight","canvasContext","lineCap","effectiveWidth","lineWidth","drawFrame","requestAnimationFrame","thumbAt","max","LINE_WIDTH","beginPath","strokeStyle","stroke","moveTo","lineTo","arc","PI","fillStyle","fill","original","barCount","factor","amps","lo","hi","amp","j","play","rect","getBoundingClientRect","clientX","playClass","short","LazyImage","padding","whenDone","FileProgress","progress","onCancel","UploadingImage","onCancelUpload","drafty_form","drafty_attachment","drafty_image","drafty_unknown","handleImageData","el","attr","viewportWidth","minWidth","minHeight","Drafty","onImagePreview","loading","fullFormatter","stack","quoteFormatter","onFormButtonClick","inner","child","onQuoteClick","concat","previewFormatter","inlineImageAttr","quoteImage","buf","ArrayBuffer","base64ToBlob","evt","statusText","scaled","replyFormatter","loadedPromise","Contact","handleContextClick","onSelected","showContextMenu","pageY","pageX","online","icon_badges","isVerified","isStaff","isDangerous","acs","showMode","getMode","isMuted","isJoiner","previewIsVideoCall","previewIsResponse","marker","titleClass","showCheckmark","selected","showOnline","isChannel","unread","small","comment","ContactAction","action","badge_you","badge_owner","ContactList","topicSelected","contactNodes","contactsCount","contacts","filterFunc","filterOn","private","toLowerCase","public","myUserId","isOwner","forwarded","deliveryStatus","latestMessage","_status","msgStatus","showUnread","connected","onTopicSelected","trusted","verified","staff","danger","_deleted","noScroll","dangerouslySetInnerHTML","__html","emptyListMessage","SearchContacts","edited","search","handleSearchChange","handleSearch","handleClear","handleKeyDown","onSearchContacts","query","placeholder","onChange","onKeyDown","required","autoFocus","ForwardDialog","handleClose","handleSearchContacts","handleContactSelected","onInitFind","uid","searchResults","isWriter","desription","search_placeholder","not_found_placeholder","LoadSpinner","large","centered","show","AvatarUpload","handleFileReceived","files","onImageUpdated","randId","random","readOnly","accept","htmlFor","uploading","badge_verified","badge_staff","badge_danger","BadgeList","trustedBadges","CheckBox","handleChange","checked","MenuCancel","ErrorPanel","level","onClearError","text","whiteSpace","actionText","Chip","handleCancel","invalid","noAvatar","ChipInput","deriveStateFromProps","focused","handleTextInput","removeChipAt","handleChipCancel","handleFocusGained","handleFocusLost","chips","prompt","sortedChips","sortChips","staticMembers","chipIndex","indexChips","prevState","keep","normal","removed","onChipRemoved","onFocusLost","onEnter","avatarDisabled","tabIndex","onFocus","onBlur","no_contacts","contacts_not_found_short","GroupManager","members","indexMembers","keepInitialMembers","requiredMember","contactFilter","noContactsMessage","selectedContacts","handleMemberRemoved","handleContactFilter","handleSubmit","m","delta","present","keepInitial","stat","sel","splice","added","onSubmit","doContactFiltering","joiner","writer","preser","approver","sharer","deleter","owner","PermissionsEditor","names","skip","compare","userTitle","userAvatar","modeTitle","compareTitle","Cropper","panX","panY","originX","originY","zoom","minZoom","maxZoom","overlay","cutout","boundingBox","imageWidth","imageHeight","mouseX","mouseY","prevDistance","cutoutRect","bBoxRect","initScaling","onZoom","handleZoom","mouseDown","mouseUp","mouseMove","mouseTouch","positionAll","translate","passive","currPan","nextDiff","imgRect","imgLeft","imgRight","coLeft","coRight","imgTop","imgBottom","coTop","coBottom","touches","dX","dY","checkBound","touch0","touch1","distance","sqrt","t3d","orig","transform","transformOrigin","onLoad","step","AvatarCrop","objURL","VisiblePassword","handleVisibility","handeTextChange","handleEditingFinished","onFinished","activeElement","autoComplete","InPlaceEdit","active","initialValue","handleStartEditing","handlePasswordFinished","focus","checkValidity","spanText","spanClass","multiline","element","rows","TagManager","tags","tagInput","activated","handleTagInput","handleAddTag","handleRemoveTag","nextProps","last","tag","maxTagCount","getServerLimit","onTagsChanged","minTagLength","maxTagLength","add_tags_prompt","TopicDescEdit","getAccessMode","isMe","fullName","description","newAvatar","newAvatarMime","previousOnTags","tnNewTags","handleFullNameUpdate","handleImageUpdated","handleAvatarCropped","handlePrivateUpdate","handleDescriptionUpdate","uploadAvatar","handleAvatarCropCancel","handleTagsUpdated","onTagsUpdated","onUpdateTopicDesc","desc","readyToUpload","uploader","getLargeFileHelper","upload","finally","du","onUpdateTags","editable","full_name_placeholder","group_name_placeholder","private_placeholder","title_tag_manager","TopicCommon","credentials","getCredentials","addCredActive","addCredInvalid","newCred","previousTagsUpdated","tnCredsUpdated","handleCredChange","handleCredKeyDown","handleCredEntered","onCredsUpdated","getType","creds","asPhone","asEmail","onCredAdd","onTopicTagsUpdateRequest","cred","meth","done","onCredConfirm","onCredDelete","delete_messages","leave_chat","leave_chat_warning","block_contact","block_contact_warning","report_chat","report_chat_warning","other_user","TopicSecurity","handleDeleteTopic","handleDeleteMessages","handleLeave","handleBlock","handleReport","onDeleteTopic","onDeleteMessages","onLeaveTopic","onBlockTopic","onReportTopic","groupTopic","onLaunchPermissionsEditor","access","anon","modeGiven2","general","security","crop","perm_want","perm_given","perm_auth","perm_anon","perm_user","InfoView","admin","muted","address","selectedContact","modeGiven","modeWant","modeWant2","contactList","previousMetaDesc","previousSubsUpdated","resetSubs","resetDesc","resetTags","onMetaDesc","onSubsUpdated","handleImageChanged","handleMuted","handleUnarchive","handlePermissionsChanged","handleLaunchPermissionsEditor","handleShowAddMembers","handleMemberUpdateRequest","handleMemberSelected","handleContextMenu","handleBackNavigate","newState","user2","subscriber","getGiven","getWant","subscribers","sub","defacs","getDefaultAccess","isAdmin","isSharer","isDeleter","archived","isArchived","isGroupType","isChannelType","chan","getMeta","startMetaQuery","withTags","build","subs","onTopicDescUpdate","ignored","onChangePermissions","ignored2","onTopicUnArchive","which","perm","onTopicDescUpdateRequest","userPermissionsEdited","toEdit","toCompare","toSkip","titleEdit","titleCompare","userPermissionsTitle","userPermissionsAvatar","editedPermissions","immutablePermissions","editedPermissionsTitle","immutablePermissionsTitle","editedPermissionsSkipped","onNavigate","onMemberUpdateRequest","panel","menuItems","view","shift","panelTitle","displayMobile","errorLevel","errorText","searchableContacts","no_members","RING_SOUND","IncomingCallView","handleRejectCall","handleAcceptCall","ringTimer","callState","setInterval","onRinging","clearInterval","onAcceptCall","onClose","CallPanel","localStream","pc","previousOnInfo","localStreamConstraints","audio","video","localRef","remoteRef","onInfo","start","createPeerConnection","handleNegotiationNeededEvent","handleICECandidateEvent","handleNewICECandidateMsg","handleICEConnectionStateChangeEvent","handleSignalingStateChangeEvent","handleICEGatheringStateChangeEvent","handleTrackEvent","handleVideoOfferMsg","handleVideoAnswerMsg","reportError","handleGetUserMediaError","stop","stopTracks","handleCloseClick","handleToggleCameraClick","handleToggleMicClick","toggleMedia","handleRemoteHangup","handleVideoCallAccepted","stream","getTracks","track","addTrack","what","onInvite","mediaDevices","getUserMedia","srcObject","RTCPeerConnection","onicecandidate","oniceconnectionstatechange","onicegatheringstatechange","onsignalingstatechange","onnegotiationneeded","ontrack","RTCSessionDescription","setRemoteDescription","createOffer","offer","setLocalDescription","onSendOffer","localDescription","toJSON","candidate","onIceCandidate","RTCIceCandidate","addIceCandidate","iceConnectionState","signalingState","streams","forceUpdate","createAnswer","answer","onSendAnswer","tracks","enabled","onremovetrack","onremovestream","onHangup","kind","remoteActive","audioIcon","getAudioTracks","videoIcon","getVideoTracks","onHideMessagesView","autoPlay","playsInline","extendStatics","__proto__","__extends","__","__assign","t","s","arguments","apply","__spreadArray","to","pack","ar","ErrorKind","TYPE","SKELETON_TYPE","isLiteralElement","literal","isArgumentElement","argument","isNumberElement","number","isDateElement","isTimeElement","time","isSelectElement","select","isPluralElement","plural","isPoundElement","pound","isTagElement","isNumberSkeleton","isDateTimeSkeleton","dateTime","SPACE_SEPARATOR_REGEX","DATE_TIME_REGEX","parseDateTimeSkeleton","skeleton","era","year","RangeError","month","day","weekday","hour12","hourCycle","hour","minute","second","timeZoneName","FRACTION_PRECISION_REGEX","SIGNIFICANT_PRECISION_REGEX","INTEGER_WIDTH_REGEX","CONCISE_INTEGER_WIDTH_REGEX","parseSignificantPrecision","roundingPriority","g1","g2","minimumSignificantDigits","maximumSignificantDigits","parseSign","signDisplay","currencySign","parseConciseScientificAndEngineeringStem","stem","notation","minimumIntegerDigits","parseNotationOptions","opt","signOpts","parseNumberSkeleton","tokens","_i","tokens_1","currency","useGrouping","maximumFractionDigits","unit","compactDisplay","reduce","currencyDisplay","unitDisplay","parseFloat","g3","g4","g5","minimumFractionDigits","trailingZeroDisplay","conciseScientificAndEngineeringOpts","SPACE_SEPARATOR_START_REGEX","SPACE_SEPARATOR_END_REGEX","createLocation","hasNativeStartsWith","hasNativeFromCodePoint","fromCodePoint","hasNativeFromEntries","fromEntries","hasNativeCodePointAt","codePointAt","hasTrimStart","trimStart","hasTrimEnd","trimEnd","isSafeInteger","isFinite","REGEX_SUPPORTS_U_AND_Y","RE","matchIdentifierAtIndex","codePoints","elements","entries_1","v","first","IDENTIFIER_PREFIX_RE_1","lastIndex","_isWhiteSpace","_isPatternSyntax","Parser","line","column","ignoreTag","requiresOtherClause","shouldParseSkeletons","parse","parseMessage","nestingLevel","parentArgType","expectingCloseTag","isEOF","char","parseArgument","peek","UNMATCHED_CLOSING_TAG","clonePosition","_isAlpha","parseTag","parseLiteral","bump","location","startPosition","tagName","parseTagName","bumpSpace","bumpIf","childrenResult","children","endTagStartPosition","INVALID_TAG","closingTagNameStartPosition","UNCLOSED_TAG","startOffset","parseQuoteResult","tryParseQuote","parseUnquotedResult","tryParseUnquoted","parseLeftAngleResult","tryParseLeftAngleBracket","codepoint","ch","openingBracePosition","EXPECT_ARGUMENT_CLOSING_BRACE","EMPTY_ARGUMENT","parseIdentifierIfPossible","MALFORMED_ARGUMENT","parseArgumentOptions","startingPosition","endOffset","bumpTo","typeStartPosition","argType","typeEndPosition","EXPECT_ARGUMENT_TYPE","styleAndLocation","styleStartPosition","parseSimpleArgStyleIfPossible","EXPECT_ARGUMENT_STYLE","styleLocation","argCloseResult","tryParseArgumentClose","location_1","parseNumberSkeletonFromString","EXPECT_DATE_TIME_SKELETON","pattern","parsedOptions","typeEndPosition_1","EXPECT_SELECT_ARGUMENT_OPTIONS","identifierAndLocation","pluralOffset","EXPECT_PLURAL_ARGUMENT_OFFSET_VALUE","tryParseDecimalInteger","INVALID_PLURAL_ARGUMENT_OFFSET_VALUE","optionsResult","tryParsePluralOrSelectOptions","location_2","pluralType","INVALID_ARGUMENT_TYPE","nestedBraces","apostrophePosition","bumpUntil","UNCLOSED_QUOTE_IN_ARGUMENT_STYLE","stringTokens_1","stemAndOptions","options_1","INVALID_NUMBER_SKELETON","expectCloseTag","parsedFirstIdentifier","hasOtherClause","parsedSelectors","selector","selectorLocation","EXPECT_PLURAL_ARGUMENT_SELECTOR","INVALID_PLURAL_ARGUMENT_SELECTOR","DUPLICATE_SELECT_ARGUMENT_SELECTOR","DUPLICATE_PLURAL_ARGUMENT_SELECTOR","EXPECT_SELECT_ARGUMENT_SELECTOR_FRAGMENT","EXPECT_PLURAL_ARGUMENT_SELECTOR_FRAGMENT","fragmentResult","EXPECT_SELECT_ARGUMENT_SELECTOR","MISSING_OTHER_CLAUSE","expectNumberError","invalidNumberError","sign","hasDigits","decimal","prefix","currentOffset","targetOffset","nextCode","pruneLocation","els","SyntaxError","originalMessage","captureLocation","memoize","cache","cacheDefault","serializer","serializerDefault","strategy","strategyDefault","monadic","arg","cacheKey","computedValue","variadic","assemble","context","serialize","ObjectWithoutPrototypeCache","ErrorCode","strategies","PART_TYPE","FormatError","_super","_this","InvalidValueError","variableId","INVALID_VALUE","InvalidValueTypeError","MissingValueError","MISSING_VALUE","isFormatXMLElementFn","formatToParts","locales","formatters","formats","currentPluralValue","els_1","getNumberFormat","format","varName","object","getDateTimeFormat","medium","value_1","formatFn","chunks","other","Intl","PluralRules","MISSING_INTL_API","rule","getPluralRules","parts","part","lastPart","mergeLiteral","mergeConfigs","defaultConfig","configs","createFastMemoizeCache","IntlMessageFormat","overrideFormats","defaultLocale","formatterCache","pluralRules","ast","resolvedOptions","locale","NumberFormat","supportedLocalesOf","getAst","__parse","DateTimeFormat","memoizedDefaultLocale","configurable","integer","percent","long","full","_defineProperty","writable","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","getOwnPropertySymbols","sourceSymbolKeys","propertyIsEnumerable","INITIAL_ZERO","leftTrim","previousEmpty","DurationUnitFormat","defaultOptions","styles","LONG","isTimer","TIMER","formatUnits","formatDuration","shouldRound","units","DAY","HOUR","MINUTE","SECOND","CUSTOM","SHORT","NARROW","minutes","hours","days","buckets","valueUnit","SECONDS_IN","lowestUnit","remainder","splitSecondsInBuckets","_formatToken","_trimOutput","_formatDurationToParts","_formatValue","SPLIT_POINTS","Boolean","padStart","trimmed","trimFirstPaddedValue","minUnit","durationUnitFormat_cjs","TIMER_FORMAT","_ref","_formatUnits","textComponent","valueComponent","otherProps","actualFormat","actualSytle","Text","Value","Attachment","downloader","downloadFile","mimetype","download","loaded","helperFunc","isUrlRelative","downloadUrl","downloadWidget","message_sending","message_sending_failed","ReceivedMarker","timestamp","toLocaleTimeString","timeStyle","BaseChatMessage","onProgress","handleProgress","handleImagePreview","handleFormButtonClick","handleCancelUpload","handleQuoteClick","formatterContext","resp","act","onFormResponse","userIsWriter","ratio","replyToSeq","sideClass","sequence","bubbleClass","fullDisplay","attachments","att","tree","direction","isCallDropped","innerRef","IntlChatMessage","MILLIS_PER_BAR","AUDIO_MIME_TYPE","AudioRecorder","audioRecord","recording","paused","blobUrl","initMediaRecording","getRecording","cleanUp","handleResume","handlePause","handleDelete","handleDone","durationMillis","startedOn","mediaRecorder","audioContext","audioInput","analyser","audioChunks","pcmData","frequencyBinCount","canvasWidth","canvasHeight","viewLength","viewDuration","prevBarCount","volume","countPerBar","getByteTimeDomainData","amplitude","dx","requestData","resume","MediaRecorder","AudioContext","createMediaStreamSource","createAnalyser","fftSize","connect","onstop","onDeleted","ondataavailable","fixedBlob","arrayBuffer","arrayBuff","decodeAudioData","decoded","createPreview","getChannelData","totalSPB","samplingRate","disconnect","resumeClass","messaging_disabled","type_new_message","add_image_caption","file_attachment_too_large","cannot_initiate_upload","SendMessage","quote","audioRec","audioAvailable","keypressTimestamp","getTime","handlePasteEvent","handleAttachImage","handleAttachFile","handleAttachAudio","handleSend","handleKeyPress","handleMessageTyping","formatReply","messageEditArea","disabled","onImageSuccess","onAttachmentSuccess","clipboardData","originalEvent","getAsFile","filePasted","onAttachImage","onAttachFile","onAttachAudio","acceptBlank","noInput","onSendMessage","shiftKey","onKeyPress","messagePrompt","onCancelReply","audioEnabled","attachImage","click","attachFile","display","DocPreview","handleSendDoc","caption","mimeToIcon","iconFromMime","GroupSubs","usersOnline","totalCount","countToShow","overflow","ImagePreview","handleSendImage","assignWidth","node","maxlength","Invitation","handleButtonAction","LogoView","serverVersion","serverAddress","MetaMessage","HashNavigation","path","decodeURIComponent","parsed","parseUrlHash","composeUrlHash","sidepanel","infopanel","online_now","last_seen","not_found","invalid_content","isUnconfirmed","getExcessive","isPeerRestricted","getMissing","shouldPresentCallPanel","MessagesView","getDerivedStateFromProps","leave","sendMessage","retrySend","sendImageAttachment","sendFileAttachment","sendAudioAttachment","sendKeyPress","handleScrollReference","handleScrollEvent","handleDescChange","handleSubsUpdated","handleMessageUpdate","handleAllMessagesReceived","handleInfoReceipt","handleImagePostview","handleClosePreview","handleFormResponse","handleShowMessageContextMenu","handleNewChatAcceptance","handleEnablePeer","postReadNotification","clearNotificationQueue","goToLatestMessage","handlePickReply","handleCancelReply","handleCallHangup","chatMessageRefs","getOrCreateMessageRef","readNotificationQueue","readNotificationTimer","seqId","messagesScroller","messageCount","scrollPosition","scrollTop","scrollHeight","rtcPanel","callSeq","onData","onAllMessagesReceived","onPres","applicationVisible","ready","_new","isP2PType","withDesc","nextState","forwardMessage","docPreview","imagePreview","imagePostview","typingIndicator","fetchingMessages","showGoToLastButton","onlineSubs","peer","p2pPeerDesc","peerMessagingDisabled","latestClearId","maxClearId","callTopic","isReader","readingBlocked","unconformed","unconfirmed","isSubscribed","newTopic","newTopicParams","_topicName","getQuery","withLaterDesc","withLaterSub","withLaterData","withLaterDel","setQuery","onNewTopicCreated","queuedMessages","pub","_sending","navigateTo","setUrlTopic","blankState","oldTopicName","isTopicCached","oldTopic","msgHasMoreMessages","getMessagesPage","sendAt","noteRead","setMilliseconds","getMilliseconds","clearTimeout","keyPressTimer","isNewMessage","searchParams","messageSpecificMenuItems","onNewChat","noteKeyPress","uploadCompletionPromise","maxInbandAttachmentSize","urlPromise","fileToBase64","maxExternAttachmentSize","limit","onVideoCallClosed","onCallHangup","_tempPreview","found","findMessage","_cancelled","senderName","onCancelForwardMessage","scrollIntoView","behavior","classList","hideSelf","component2","onCallInvite","onCallSendOffer","onCallIceCandidate","onCallSendAnswer","messageNodes","previousFrom","prevDate","chatBoxClass","dateFmt","prev","nextFrom","thisFrom","isReply","userDesc","isNaN","thisDate","ts","toDateString","messageVersions","cur","before","isChan","_uploader","lastSeen","cont","getMeTopic","getContact","seen","userLanguage","language","getFullYear","getMonth","getDate","toLocaleDateString","shortDateFormat","when","ButtonBack","onBack","MenuContacts","onNewTopic","onSettings","MenuStart","onSignUp","SideNavbar","_clip","AccountSettingsView","me","archived_contacts_title","ContactsView","handleAction","unreadThreads","archivedCount","chatList","blocked","arch","touched","action_ignored","onShowArchive","LocalStorageUtil","localStorage","setItem","getItem","oldVal","getObject","setObject","removeItem","CreateAccountView","login","password","email","imageDataUrl","errorCleared","saveToken","handleLoginChange","handlePasswordChange","handleEmailChange","handleFnChange","handleToggleSaveToken","onCreateAccount","submitClasses","login_prompt","password_prompt","onImageChanged","full_name_prompt","email_prompt","stay_logged_in","EditAccountView","handleCheckboxClick","onToggleMessageSounds","onTogglePushNotifications","onToggleIncognitoMode","messageSounds","desktopAlertsEnabled","desktopAlerts","incognitoMode","delete_account","delete_account_warning","AccSecurityView","blockedCount","showPermissionEditorFor","handlePasswordUpdate","handleHidePermissionsEditor","handleDeleteAccount","pwd","onUpdatePassword","onUpdateAccountDesc","onDeleteAccount","password_unchanged","onLogout","onShowBlocked","AccSupportView","LoginView","hostName","persist","onPersistenceChange","onLogin","autoCorrect","autoCapitalize","invalid_id","NewTopicById","groupId","NewTopicGroup","handleFieldEdit","handleTagsChanged","handleChannelToggle","search_for_contacts","search_no_results","NewTopicView","tabSelected","searchQuery","handleTabClick","handleSearchResultSelected","handleNewGroupSubmit","handleGroupByID","addUrlParam","removeUrlParam","onCreateTopic","dataUrl","priv","no_contacts_placeholder","PasswordResetView","sent","scheme","onReset","onRequest","HostSelector","changed","handleHostNameChange","onServerAddressChange","hostOptions","list","SettingsView","transport","handleTransportSelected","handleServerAddressChange","onUpdate","def","ws","lp","transportOptions","phone","ValidationView","credCode","credMethod","numbers_only","settings","edit","notif","support","newtpk","reset","SidepanelView","handleNewTopic","errorAction","errorActionText","loadSpinnerVisible","loginDisabled","onLoginRequest","onGlobalSettings","onUpdateAccountTags","onValidateCredentials","onPasswordResetRequest","onResetPassword","detectServerAddress","host","protocol","hostname","port","isSecureConnection","POP_SOUND","reconnect_countdown","reconnect_now","push_init_failed","invalid_security_token","no_connection","code_doesnot_match","menu_item_info","menu_item_video_call","TinodeWeb","getBlankState","handleResize","handleHashRoute","handleOnline","checkForAppUpdate","handleVisibilityEvent","handleLoginRequest","handlePersistenceChange","handleConnected","handleAutoreconnectIteration","doLogin","handleCredentialsRequest","handleLoginSuccessful","handleDisconnect","tnMeMetaDesc","tnMeContactUpdate","tnMeSubsUpdated","resetContactList","tnData","tnInitFind","tnFndSubsUpdated","handleTopicSelected","handleHideMessagesView","handleSendMessage","handleNewChatInvitation","handleNewAccount","handleNewAccountRequest","handleUpdatePasswordRequest","handleUpdateAccountTagsRequest","handleToggleIncognitoMode","handleSettings","handleGlobalSettings","handleShowArchive","handleShowBlocked","handleToggleMessageSounds","handleCredAdd","handleCredDelete","handleCredConfirm","initFCMessaging","toggleFCMToken","handlePushMessage","handleSidepanelCancel","handleStartTopicRequest","handleNewTopicCreated","handleTopicUpdateRequest","handleChangePermissions","handleTagsUpdateRequest","handleLogout","handleDeleteTopicRequest","handleDeleteMessagesRequest","handleLeaveUnsubRequest","handleBlockTopicRequest","handleReportTopic","handleShowContextMenu","defaultTopicContextMenu","handleHideContextMenu","handleShowAlert","handleShowInfoView","handleValidateCredentialsRequest","handlePasswordResetRequest","handleResetPassword","handleContextMenuAction","handleShowForwardDialog","handleHideForwardDialog","handleStartVideoCall","handleInfoMessage","handleCallClose","handleCallInvite","handleCallRinging","handleCallSendOffer","handleCallIceCandidate","handleCallSendAnswer","handleCallAcceptCall","sendMessageToTopic","autoLogin","messageSoundsOff","FIREBASE_INIT","firebaseToken","hidden","sidePanelSelected","sidePanelTitle","sidePanelAvatar","myTrustedBadges","liveConnection","topicSelectedOnline","topicSelectedAcs","innerWidth","infoPanel","mobilePanel","callShouldStart","contextMenuVisible","contextMenuBounds","contextMenuClickAt","contextMenuParams","contextMenuItems","forwardDialogVisible","alertVisible","alertParams","requestedTopic","documentElement","clientWidth","viewportHeight","clientHeight","tnSetup","onConnect","onDisconnect","onAutoreconnectIteration","onInfoMessage","setDeviceToken","parsedNav","expires","setAuthToken","readTimer","readTimerCallback","persistentCache","onSetupCompleted","secure","setHumanLanguage","enableLogging","oobNotification","updateObject","fcm","firebaseGetMessaging","firebaseInitApp","reg","requestFCMToken","firebaseOnMessage","sw","firebaseGetToken","messagingVapidKey","mobile","onupdatefound","installingWorker","installing","onstatechange","controller","getTopicAccessMode","newTopicTabSelected","tab","reconnectCountdown","reconnect","isConnected","initStorage","clearStorage","getServerInfo","ver","prom","timeLeft","isAuthenticated","getAuthToken","loginBasic","loginToken","goToTopic","onContactUpdate","getCurrentUserID","withCred","urlHash","setUrlSidePanel","isPresencer","unused","foundContacts","merged","updated","past","prepareSearchableContacts","receivedTimer","noteRecv","fnd","getFndTopic","withSub","setMeta","isTopicOnline","completion","subscribePromise","publishMessage","am","updateWant","login_","password_","public_","cred_","tags_","createAccountBasic","on","firebaseDelToken","delCredential","basicNavigator","infoNavigator","setUrlInfoPanel","newGroupTopicName","oldName","newName","updateAccountBasic","getCurrentLogin","updateGiven","cleared","Promose","delCurrentUser","report","header","msgPreview","self_blocked","subscribed","keepForwardedMessage","confirmText","rejectText","invite","requestResetAuthSecret","newPassword","base64ReEncode","videoCall","sdp","callTimeout","myUserName","onAddMember","handleManageGroupMembers","hl","languages","baseLanguage","htmlLang","allMessages","setAttribute","IntlProvider"],"sourceRoot":""}
\ No newline at end of file
+{"version":3,"file":"index.prod.js","mappings":"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","sources":["webpack://tinode-webapp/./node_modules/fix-webm-duration/fix-webm-duration.js","webpack://tinode-webapp/webpack/bootstrap","webpack://tinode-webapp/webpack/runtime/compat get default export","webpack://tinode-webapp/webpack/runtime/define property getters","webpack://tinode-webapp/webpack/runtime/global","webpack://tinode-webapp/webpack/runtime/hasOwnProperty shorthand","webpack://tinode-webapp/external var \"React\"","webpack://tinode-webapp/external var \"ReactDOM\"","webpack://tinode-webapp/external var \"ReactIntl\"","webpack://tinode-webapp/./node_modules/@firebase/util/dist/index.esm2017.js","webpack://tinode-webapp/./node_modules/@firebase/component/dist/esm/index.esm2017.js","webpack://tinode-webapp/./node_modules/@firebase/logger/dist/esm/index.esm2017.js","webpack://tinode-webapp/./node_modules/idb/build/wrap-idb-value.js","webpack://tinode-webapp/./node_modules/idb/build/index.js","webpack://tinode-webapp/./node_modules/@firebase/app/dist/esm/index.esm2017.js","webpack://tinode-webapp/./node_modules/firebase/app/dist/index.esm.js","webpack://tinode-webapp/./node_modules/@firebase/installations/dist/esm/index.esm2017.js","webpack://tinode-webapp/./node_modules/@firebase/messaging/dist/esm/index.esm2017.js","webpack://tinode-webapp/external var \"Tinode\"","webpack://tinode-webapp/./src/widgets/alert.jsx","webpack://tinode-webapp/./src/version.js","webpack://tinode-webapp/./src/config.js","webpack://tinode-webapp/./src/widgets/context-menu.jsx","webpack://tinode-webapp/./src/widgets/contact-badges.jsx","webpack://tinode-webapp/./src/lib/strformat.js","webpack://tinode-webapp/./src/constants.js","webpack://tinode-webapp/./src/lib/utils.js","webpack://tinode-webapp/./src/widgets/letter-tile.jsx","webpack://tinode-webapp/./src/widgets/unread-badge.jsx","webpack://tinode-webapp/./src/lib/blob-helpers.js","webpack://tinode-webapp/./src/widgets/audio-player.jsx","webpack://tinode-webapp/./src/widgets/lazy-image.jsx","webpack://tinode-webapp/./src/widgets/file-progress.jsx","webpack://tinode-webapp/./src/widgets/uploading-image.jsx","webpack://tinode-webapp/./src/lib/formatters.js","webpack://tinode-webapp/./src/widgets/contact.jsx","webpack://tinode-webapp/./src/widgets/contact-action.jsx","webpack://tinode-webapp/./src/widgets/contact-list.jsx","webpack://tinode-webapp/./src/widgets/search-contacts.jsx","webpack://tinode-webapp/./src/widgets/forward-dialog.jsx","webpack://tinode-webapp/./src/widgets/load-spinner.jsx","webpack://tinode-webapp/./src/widgets/avatar-upload.jsx","webpack://tinode-webapp/./src/widgets/badge-list.jsx","webpack://tinode-webapp/./src/widgets/checkbox.jsx","webpack://tinode-webapp/./src/widgets/menu-cancel.jsx","webpack://tinode-webapp/./src/widgets/error-panel.jsx","webpack://tinode-webapp/./src/widgets/chip.jsx","webpack://tinode-webapp/./src/widgets/chip-input.jsx","webpack://tinode-webapp/./src/widgets/group-manager.jsx","webpack://tinode-webapp/./src/widgets/permissions-editor.jsx","webpack://tinode-webapp/./src/widgets/cropper.jsx","webpack://tinode-webapp/./src/widgets/avatar-crop.jsx","webpack://tinode-webapp/./src/widgets/visible-password.jsx","webpack://tinode-webapp/./src/widgets/in-place-edit.jsx","webpack://tinode-webapp/./src/widgets/tag-manager.jsx","webpack://tinode-webapp/./src/widgets/topic-desc-edit.jsx","webpack://tinode-webapp/./src/widgets/topic-common.jsx","webpack://tinode-webapp/./src/widgets/topic-security.jsx","webpack://tinode-webapp/./src/views/info-view.jsx","webpack://tinode-webapp/./src/views/incoming-call-view.jsx","webpack://tinode-webapp/./src/widgets/call-panel.jsx","webpack://tinode-webapp/./src/widgets/attachment.jsx","webpack://tinode-webapp/./src/widgets/received-marker.jsx","webpack://tinode-webapp/./src/widgets/chat-message.jsx","webpack://tinode-webapp/./src/widgets/audio-recorder.jsx","webpack://tinode-webapp/./src/widgets/send-message.jsx","webpack://tinode-webapp/./src/widgets/doc-preview.jsx","webpack://tinode-webapp/./src/widgets/group-subs.jsx","webpack://tinode-webapp/./src/widgets/image-preview.jsx","webpack://tinode-webapp/./src/widgets/invitation.jsx","webpack://tinode-webapp/./src/views/logo-view.jsx","webpack://tinode-webapp/./src/widgets/meta-message.jsx","webpack://tinode-webapp/./src/lib/navigation.js","webpack://tinode-webapp/./src/views/messages-view.jsx","webpack://tinode-webapp/./src/widgets/button-back.jsx","webpack://tinode-webapp/./src/widgets/menu-contacts.jsx","webpack://tinode-webapp/./src/widgets/menu-start.jsx","webpack://tinode-webapp/./src/widgets/side-navbar.jsx","webpack://tinode-webapp/./src/views/account-settings-view.jsx","webpack://tinode-webapp/./src/views/contacts-view.jsx","webpack://tinode-webapp/./src/lib/local-storage.js","webpack://tinode-webapp/./src/views/create-account-view.jsx","webpack://tinode-webapp/./src/views/acc-notifications-view.jsx","webpack://tinode-webapp/./src/views/acc-security-view.jsx","webpack://tinode-webapp/./src/views/acc-support-view.jsx","webpack://tinode-webapp/./src/views/login-view.jsx","webpack://tinode-webapp/./src/widgets/new-topic-by-id.jsx","webpack://tinode-webapp/./src/widgets/new-topic-group.jsx","webpack://tinode-webapp/./src/views/new-topic-view.jsx","webpack://tinode-webapp/./src/views/password-reset-view.jsx","webpack://tinode-webapp/./src/widgets/host-selector.jsx","webpack://tinode-webapp/./src/views/settings-view.jsx","webpack://tinode-webapp/./src/views/validation-view.jsx","webpack://tinode-webapp/./src/views/sidepanel-view.jsx","webpack://tinode-webapp/./src/lib/host-name.js","webpack://tinode-webapp/./src/views/tinode-web.jsx","webpack://tinode-webapp/./src/index.js"],"sourcesContent":["(function (name, definition) {\r\n if (typeof define === 'function' && define.amd) { // RequireJS / AMD\r\n define(definition);\r\n } else if (typeof module !== 'undefined' && module.exports) { // CommonJS / Node.js\r\n module.exports = definition();\r\n } else { // Direct include\r\n window.ysFixWebmDuration = definition();\r\n }\r\n})('fix-webm-duration', function () {\r\n /*\r\n * This is the list of possible WEBM file sections by their IDs.\r\n * Possible types: Container, Binary, Uint, Int, String, Float, Date\r\n */\r\n var sections = {\r\n 0xa45dfa3: { name: 'EBML', type: 'Container' },\r\n 0x286: { name: 'EBMLVersion', type: 'Uint' },\r\n 0x2f7: { name: 'EBMLReadVersion', type: 'Uint' },\r\n 0x2f2: { name: 'EBMLMaxIDLength', type: 'Uint' },\r\n 0x2f3: { name: 'EBMLMaxSizeLength', type: 'Uint' },\r\n 0x282: { name: 'DocType', type: 'String' },\r\n 0x287: { name: 'DocTypeVersion', type: 'Uint' },\r\n 0x285: { name: 'DocTypeReadVersion', type: 'Uint' },\r\n 0x6c: { name: 'Void', type: 'Binary' },\r\n 0x3f: { name: 'CRC-32', type: 'Binary' },\r\n 0xb538667: { name: 'SignatureSlot', type: 'Container' },\r\n 0x3e8a: { name: 'SignatureAlgo', type: 'Uint' },\r\n 0x3e9a: { name: 'SignatureHash', type: 'Uint' },\r\n 0x3ea5: { name: 'SignaturePublicKey', type: 'Binary' },\r\n 0x3eb5: { name: 'Signature', type: 'Binary' },\r\n 0x3e5b: { name: 'SignatureElements', type: 'Container' },\r\n 0x3e7b: { name: 'SignatureElementList', type: 'Container' },\r\n 0x2532: { name: 'SignedElement', type: 'Binary' },\r\n 0x8538067: { name: 'Segment', type: 'Container' },\r\n 0x14d9b74: { name: 'SeekHead', type: 'Container' },\r\n 0xdbb: { name: 'Seek', type: 'Container' },\r\n 0x13ab: { name: 'SeekID', type: 'Binary' },\r\n 0x13ac: { name: 'SeekPosition', type: 'Uint' },\r\n 0x549a966: { name: 'Info', type: 'Container' },\r\n 0x33a4: { name: 'SegmentUID', type: 'Binary' },\r\n 0x3384: { name: 'SegmentFilename', type: 'String' },\r\n 0x1cb923: { name: 'PrevUID', type: 'Binary' },\r\n 0x1c83ab: { name: 'PrevFilename', type: 'String' },\r\n 0x1eb923: { name: 'NextUID', type: 'Binary' },\r\n 0x1e83bb: { name: 'NextFilename', type: 'String' },\r\n 0x444: { name: 'SegmentFamily', type: 'Binary' },\r\n 0x2924: { name: 'ChapterTranslate', type: 'Container' },\r\n 0x29fc: { name: 'ChapterTranslateEditionUID', type: 'Uint' },\r\n 0x29bf: { name: 'ChapterTranslateCodec', type: 'Uint' },\r\n 0x29a5: { name: 'ChapterTranslateID', type: 'Binary' },\r\n 0xad7b1: { name: 'TimecodeScale', type: 'Uint' },\r\n 0x489: { name: 'Duration', type: 'Float' },\r\n 0x461: { name: 'DateUTC', type: 'Date' },\r\n 0x3ba9: { name: 'Title', type: 'String' },\r\n 0xd80: { name: 'MuxingApp', type: 'String' },\r\n 0x1741: { name: 'WritingApp', type: 'String' },\r\n // 0xf43b675: { name: 'Cluster', type: 'Container' },\r\n 0x67: { name: 'Timecode', type: 'Uint' },\r\n 0x1854: { name: 'SilentTracks', type: 'Container' },\r\n 0x18d7: { name: 'SilentTrackNumber', type: 'Uint' },\r\n 0x27: { name: 'Position', type: 'Uint' },\r\n 0x2b: { name: 'PrevSize', type: 'Uint' },\r\n 0x23: { name: 'SimpleBlock', type: 'Binary' },\r\n 0x20: { name: 'BlockGroup', type: 'Container' },\r\n 0x21: { name: 'Block', type: 'Binary' },\r\n 0x22: { name: 'BlockVirtual', type: 'Binary' },\r\n 0x35a1: { name: 'BlockAdditions', type: 'Container' },\r\n 0x26: { name: 'BlockMore', type: 'Container' },\r\n 0x6e: { name: 'BlockAddID', type: 'Uint' },\r\n 0x25: { name: 'BlockAdditional', type: 'Binary' },\r\n 0x1b: { name: 'BlockDuration', type: 'Uint' },\r\n 0x7a: { name: 'ReferencePriority', type: 'Uint' },\r\n 0x7b: { name: 'ReferenceBlock', type: 'Int' },\r\n 0x7d: { name: 'ReferenceVirtual', type: 'Int' },\r\n 0x24: { name: 'CodecState', type: 'Binary' },\r\n 0x35a2: { name: 'DiscardPadding', type: 'Int' },\r\n 0xe: { name: 'Slices', type: 'Container' },\r\n 0x68: { name: 'TimeSlice', type: 'Container' },\r\n 0x4c: { name: 'LaceNumber', type: 'Uint' },\r\n 0x4d: { name: 'FrameNumber', type: 'Uint' },\r\n 0x4b: { name: 'BlockAdditionID', type: 'Uint' },\r\n 0x4e: { name: 'Delay', type: 'Uint' },\r\n 0x4f: { name: 'SliceDuration', type: 'Uint' },\r\n 0x48: { name: 'ReferenceFrame', type: 'Container' },\r\n 0x49: { name: 'ReferenceOffset', type: 'Uint' },\r\n 0x4a: { name: 'ReferenceTimeCode', type: 'Uint' },\r\n 0x2f: { name: 'EncryptedBlock', type: 'Binary' },\r\n 0x654ae6b: { name: 'Tracks', type: 'Container' },\r\n 0x2e: { name: 'TrackEntry', type: 'Container' },\r\n 0x57: { name: 'TrackNumber', type: 'Uint' },\r\n 0x33c5: { name: 'TrackUID', type: 'Uint' },\r\n 0x3: { name: 'TrackType', type: 'Uint' },\r\n 0x39: { name: 'FlagEnabled', type: 'Uint' },\r\n 0x8: { name: 'FlagDefault', type: 'Uint' },\r\n 0x15aa: { name: 'FlagForced', type: 'Uint' },\r\n 0x1c: { name: 'FlagLacing', type: 'Uint' },\r\n 0x2de7: { name: 'MinCache', type: 'Uint' },\r\n 0x2df8: { name: 'MaxCache', type: 'Uint' },\r\n 0x3e383: { name: 'DefaultDuration', type: 'Uint' },\r\n 0x34e7a: { name: 'DefaultDecodedFieldDuration', type: 'Uint' },\r\n 0x3314f: { name: 'TrackTimecodeScale', type: 'Float' },\r\n 0x137f: { name: 'TrackOffset', type: 'Int' },\r\n 0x15ee: { name: 'MaxBlockAdditionID', type: 'Uint' },\r\n 0x136e: { name: 'Name', type: 'String' },\r\n 0x2b59c: { name: 'Language', type: 'String' },\r\n 0x6: { name: 'CodecID', type: 'String' },\r\n 0x23a2: { name: 'CodecPrivate', type: 'Binary' },\r\n 0x58688: { name: 'CodecName', type: 'String' },\r\n 0x3446: { name: 'AttachmentLink', type: 'Uint' },\r\n 0x1a9697: { name: 'CodecSettings', type: 'String' },\r\n 0x1b4040: { name: 'CodecInfoURL', type: 'String' },\r\n 0x6b240: { name: 'CodecDownloadURL', type: 'String' },\r\n 0x2a: { name: 'CodecDecodeAll', type: 'Uint' },\r\n 0x2fab: { name: 'TrackOverlay', type: 'Uint' },\r\n 0x16aa: { name: 'CodecDelay', type: 'Uint' },\r\n 0x16bb: { name: 'SeekPreRoll', type: 'Uint' },\r\n 0x2624: { name: 'TrackTranslate', type: 'Container' },\r\n 0x26fc: { name: 'TrackTranslateEditionUID', type: 'Uint' },\r\n 0x26bf: { name: 'TrackTranslateCodec', type: 'Uint' },\r\n 0x26a5: { name: 'TrackTranslateTrackID', type: 'Binary' },\r\n 0x60: { name: 'Video', type: 'Container' },\r\n 0x1a: { name: 'FlagInterlaced', type: 'Uint' },\r\n 0x13b8: { name: 'StereoMode', type: 'Uint' },\r\n 0x13c0: { name: 'AlphaMode', type: 'Uint' },\r\n 0x13b9: { name: 'OldStereoMode', type: 'Uint' },\r\n 0x30: { name: 'PixelWidth', type: 'Uint' },\r\n 0x3a: { name: 'PixelHeight', type: 'Uint' },\r\n 0x14aa: { name: 'PixelCropBottom', type: 'Uint' },\r\n 0x14bb: { name: 'PixelCropTop', type: 'Uint' },\r\n 0x14cc: { name: 'PixelCropLeft', type: 'Uint' },\r\n 0x14dd: { name: 'PixelCropRight', type: 'Uint' },\r\n 0x14b0: { name: 'DisplayWidth', type: 'Uint' },\r\n 0x14ba: { name: 'DisplayHeight', type: 'Uint' },\r\n 0x14b2: { name: 'DisplayUnit', type: 'Uint' },\r\n 0x14b3: { name: 'AspectRatioType', type: 'Uint' },\r\n 0xeb524: { name: 'ColourSpace', type: 'Binary' },\r\n 0xfb523: { name: 'GammaValue', type: 'Float' },\r\n 0x383e3: { name: 'FrameRate', type: 'Float' },\r\n 0x61: { name: 'Audio', type: 'Container' },\r\n 0x35: { name: 'SamplingFrequency', type: 'Float' },\r\n 0x38b5: { name: 'OutputSamplingFrequency', type: 'Float' },\r\n 0x1f: { name: 'Channels', type: 'Uint' },\r\n 0x3d7b: { name: 'ChannelPositions', type: 'Binary' },\r\n 0x2264: { name: 'BitDepth', type: 'Uint' },\r\n 0x62: { name: 'TrackOperation', type: 'Container' },\r\n 0x63: { name: 'TrackCombinePlanes', type: 'Container' },\r\n 0x64: { name: 'TrackPlane', type: 'Container' },\r\n 0x65: { name: 'TrackPlaneUID', type: 'Uint' },\r\n 0x66: { name: 'TrackPlaneType', type: 'Uint' },\r\n 0x69: { name: 'TrackJoinBlocks', type: 'Container' },\r\n 0x6d: { name: 'TrackJoinUID', type: 'Uint' },\r\n 0x40: { name: 'TrickTrackUID', type: 'Uint' },\r\n 0x41: { name: 'TrickTrackSegmentUID', type: 'Binary' },\r\n 0x46: { name: 'TrickTrackFlag', type: 'Uint' },\r\n 0x47: { name: 'TrickMasterTrackUID', type: 'Uint' },\r\n 0x44: { name: 'TrickMasterTrackSegmentUID', type: 'Binary' },\r\n 0x2d80: { name: 'ContentEncodings', type: 'Container' },\r\n 0x2240: { name: 'ContentEncoding', type: 'Container' },\r\n 0x1031: { name: 'ContentEncodingOrder', type: 'Uint' },\r\n 0x1032: { name: 'ContentEncodingScope', type: 'Uint' },\r\n 0x1033: { name: 'ContentEncodingType', type: 'Uint' },\r\n 0x1034: { name: 'ContentCompression', type: 'Container' },\r\n 0x254: { name: 'ContentCompAlgo', type: 'Uint' },\r\n 0x255: { name: 'ContentCompSettings', type: 'Binary' },\r\n 0x1035: { name: 'ContentEncryption', type: 'Container' },\r\n 0x7e1: { name: 'ContentEncAlgo', type: 'Uint' },\r\n 0x7e2: { name: 'ContentEncKeyID', type: 'Binary' },\r\n 0x7e3: { name: 'ContentSignature', type: 'Binary' },\r\n 0x7e4: { name: 'ContentSigKeyID', type: 'Binary' },\r\n 0x7e5: { name: 'ContentSigAlgo', type: 'Uint' },\r\n 0x7e6: { name: 'ContentSigHashAlgo', type: 'Uint' },\r\n 0xc53bb6b: { name: 'Cues', type: 'Container' },\r\n 0x3b: { name: 'CuePoint', type: 'Container' },\r\n 0x33: { name: 'CueTime', type: 'Uint' },\r\n 0x37: { name: 'CueTrackPositions', type: 'Container' },\r\n 0x77: { name: 'CueTrack', type: 'Uint' },\r\n 0x71: { name: 'CueClusterPosition', type: 'Uint' },\r\n 0x70: { name: 'CueRelativePosition', type: 'Uint' },\r\n 0x32: { name: 'CueDuration', type: 'Uint' },\r\n 0x1378: { name: 'CueBlockNumber', type: 'Uint' },\r\n 0x6a: { name: 'CueCodecState', type: 'Uint' },\r\n 0x5b: { name: 'CueReference', type: 'Container' },\r\n 0x16: { name: 'CueRefTime', type: 'Uint' },\r\n 0x17: { name: 'CueRefCluster', type: 'Uint' },\r\n 0x135f: { name: 'CueRefNumber', type: 'Uint' },\r\n 0x6b: { name: 'CueRefCodecState', type: 'Uint' },\r\n 0x941a469: { name: 'Attachments', type: 'Container' },\r\n 0x21a7: { name: 'AttachedFile', type: 'Container' },\r\n 0x67e: { name: 'FileDescription', type: 'String' },\r\n 0x66e: { name: 'FileName', type: 'String' },\r\n 0x660: { name: 'FileMimeType', type: 'String' },\r\n 0x65c: { name: 'FileData', type: 'Binary' },\r\n 0x6ae: { name: 'FileUID', type: 'Uint' },\r\n 0x675: { name: 'FileReferral', type: 'Binary' },\r\n 0x661: { name: 'FileUsedStartTime', type: 'Uint' },\r\n 0x662: { name: 'FileUsedEndTime', type: 'Uint' },\r\n 0x43a770: { name: 'Chapters', type: 'Container' },\r\n 0x5b9: { name: 'EditionEntry', type: 'Container' },\r\n 0x5bc: { name: 'EditionUID', type: 'Uint' },\r\n 0x5bd: { name: 'EditionFlagHidden', type: 'Uint' },\r\n 0x5db: { name: 'EditionFlagDefault', type: 'Uint' },\r\n 0x5dd: { name: 'EditionFlagOrdered', type: 'Uint' },\r\n 0x36: { name: 'ChapterAtom', type: 'Container' },\r\n 0x33c4: { name: 'ChapterUID', type: 'Uint' },\r\n 0x1654: { name: 'ChapterStringUID', type: 'String' },\r\n 0x11: { name: 'ChapterTimeStart', type: 'Uint' },\r\n 0x12: { name: 'ChapterTimeEnd', type: 'Uint' },\r\n 0x18: { name: 'ChapterFlagHidden', type: 'Uint' },\r\n 0x598: { name: 'ChapterFlagEnabled', type: 'Uint' },\r\n 0x2e67: { name: 'ChapterSegmentUID', type: 'Binary' },\r\n 0x2ebc: { name: 'ChapterSegmentEditionUID', type: 'Uint' },\r\n 0x23c3: { name: 'ChapterPhysicalEquiv', type: 'Uint' },\r\n 0xf: { name: 'ChapterTrack', type: 'Container' },\r\n 0x9: { name: 'ChapterTrackNumber', type: 'Uint' },\r\n 0x0: { name: 'ChapterDisplay', type: 'Container' },\r\n 0x5: { name: 'ChapString', type: 'String' },\r\n 0x37c: { name: 'ChapLanguage', type: 'String' },\r\n 0x37e: { name: 'ChapCountry', type: 'String' },\r\n 0x2944: { name: 'ChapProcess', type: 'Container' },\r\n 0x2955: { name: 'ChapProcessCodecID', type: 'Uint' },\r\n 0x50d: { name: 'ChapProcessPrivate', type: 'Binary' },\r\n 0x2911: { name: 'ChapProcessCommand', type: 'Container' },\r\n 0x2922: { name: 'ChapProcessTime', type: 'Uint' },\r\n 0x2933: { name: 'ChapProcessData', type: 'Binary' },\r\n 0x254c367: { name: 'Tags', type: 'Container' },\r\n 0x3373: { name: 'Tag', type: 'Container' },\r\n 0x23c0: { name: 'Targets', type: 'Container' },\r\n 0x28ca: { name: 'TargetTypeValue', type: 'Uint' },\r\n 0x23ca: { name: 'TargetType', type: 'String' },\r\n 0x23c5: { name: 'TagTrackUID', type: 'Uint' },\r\n 0x23c9: { name: 'TagEditionUID', type: 'Uint' },\r\n 0x23c4: { name: 'TagChapterUID', type: 'Uint' },\r\n 0x23c6: { name: 'TagAttachmentUID', type: 'Uint' },\r\n 0x27c8: { name: 'SimpleTag', type: 'Container' },\r\n 0x5a3: { name: 'TagName', type: 'String' },\r\n 0x47a: { name: 'TagLanguage', type: 'String' },\r\n 0x484: { name: 'TagDefault', type: 'Uint' },\r\n 0x487: { name: 'TagString', type: 'String' },\r\n 0x485: { name: 'TagBinary', type: 'Binary' }\r\n };\r\n\r\n function doInherit(newClass, baseClass) {\r\n newClass.prototype = Object.create(baseClass.prototype);\r\n newClass.prototype.constructor = newClass;\r\n }\r\n\r\n function WebmBase(name, type) {\r\n this.name = name || 'Unknown';\r\n this.type = type || 'Unknown';\r\n }\r\n WebmBase.prototype.updateBySource = function() { };\r\n WebmBase.prototype.setSource = function(source) {\r\n this.source = source;\r\n this.updateBySource();\r\n };\r\n WebmBase.prototype.updateByData = function() { };\r\n WebmBase.prototype.setData = function(data) {\r\n this.data = data;\r\n this.updateByData();\r\n };\r\n\r\n function WebmUint(name, type) {\r\n WebmBase.call(this, name, type || 'Uint');\r\n }\r\n doInherit(WebmUint, WebmBase);\r\n function padHex(hex) {\r\n return hex.length % 2 === 1 ? '0' + hex : hex;\r\n }\r\n WebmUint.prototype.updateBySource = function() {\r\n // use hex representation of a number instead of number value\r\n this.data = '';\r\n for (var i = 0; i < this.source.length; i++) {\r\n var hex = this.source[i].toString(16);\r\n this.data += padHex(hex);\r\n }\r\n };\r\n WebmUint.prototype.updateByData = function() {\r\n var length = this.data.length / 2;\r\n this.source = new Uint8Array(length);\r\n for (var i = 0; i < length; i++) {\r\n var hex = this.data.substr(i * 2, 2);\r\n this.source[i] = parseInt(hex, 16);\r\n }\r\n };\r\n WebmUint.prototype.getValue = function() {\r\n return parseInt(this.data, 16);\r\n };\r\n WebmUint.prototype.setValue = function(value) {\r\n this.setData(padHex(value.toString(16)));\r\n };\r\n\r\n function WebmFloat(name, type) {\r\n WebmBase.call(this, name, type || 'Float');\r\n }\r\n doInherit(WebmFloat, WebmBase);\r\n WebmFloat.prototype.getFloatArrayType = function() {\r\n return this.source && this.source.length === 4 ? Float32Array : Float64Array;\r\n };\r\n WebmFloat.prototype.updateBySource = function() {\r\n var byteArray = this.source.reverse();\r\n var floatArrayType = this.getFloatArrayType();\r\n var floatArray = new floatArrayType(byteArray.buffer);\r\n this.data = floatArray[0];\r\n };\r\n WebmFloat.prototype.updateByData = function() {\r\n var floatArrayType = this.getFloatArrayType();\r\n var floatArray = new floatArrayType([ this.data ]);\r\n var byteArray = new Uint8Array(floatArray.buffer);\r\n this.source = byteArray.reverse();\r\n };\r\n WebmFloat.prototype.getValue = function() {\r\n return this.data;\r\n };\r\n WebmFloat.prototype.setValue = function(value) {\r\n this.setData(value);\r\n };\r\n\r\n function WebmContainer(name, type) {\r\n WebmBase.call(this, name, type || 'Container');\r\n }\r\n doInherit(WebmContainer, WebmBase);\r\n WebmContainer.prototype.readByte = function() {\r\n return this.source[this.offset++];\r\n };\r\n WebmContainer.prototype.readUint = function() {\r\n var firstByte = this.readByte();\r\n var bytes = 8 - firstByte.toString(2).length;\r\n var value = firstByte - (1 << (7 - bytes));\r\n for (var i = 0; i < bytes; i++) {\r\n // don't use bit operators to support x86\r\n value *= 256;\r\n value += this.readByte();\r\n }\r\n return value;\r\n };\r\n WebmContainer.prototype.updateBySource = function() {\r\n this.data = [];\r\n for (this.offset = 0; this.offset < this.source.length; this.offset = end) {\r\n var id = this.readUint();\r\n var len = this.readUint();\r\n var end = Math.min(this.offset + len, this.source.length);\r\n var data = this.source.slice(this.offset, end);\r\n\r\n var info = sections[id] || { name: 'Unknown', type: 'Unknown' };\r\n var ctr = WebmBase;\r\n switch (info.type) {\r\n case 'Container':\r\n ctr = WebmContainer;\r\n break;\r\n case 'Uint':\r\n ctr = WebmUint;\r\n break;\r\n case 'Float':\r\n ctr = WebmFloat;\r\n break;\r\n }\r\n var section = new ctr(info.name, info.type);\r\n section.setSource(data);\r\n this.data.push({\r\n id: id,\r\n idHex: id.toString(16),\r\n data: section\r\n });\r\n }\r\n };\r\n WebmContainer.prototype.writeUint = function(x, draft) {\r\n for (var bytes = 1, flag = 0x80; x >= flag && bytes < 8; bytes++, flag *= 0x80) { }\r\n\r\n if (!draft) {\r\n var value = flag + x;\r\n for (var i = bytes - 1; i >= 0; i--) {\r\n // don't use bit operators to support x86\r\n var c = value % 256;\r\n this.source[this.offset + i] = c;\r\n value = (value - c) / 256;\r\n }\r\n }\r\n\r\n this.offset += bytes;\r\n };\r\n WebmContainer.prototype.writeSections = function(draft) {\r\n this.offset = 0;\r\n for (var i = 0; i < this.data.length; i++) {\r\n var section = this.data[i],\r\n content = section.data.source,\r\n contentLength = content.length;\r\n this.writeUint(section.id, draft);\r\n this.writeUint(contentLength, draft);\r\n if (!draft) {\r\n this.source.set(content, this.offset);\r\n }\r\n this.offset += contentLength;\r\n }\r\n return this.offset;\r\n };\r\n WebmContainer.prototype.updateByData = function() {\r\n // run without accessing this.source to determine total length - need to know it to create Uint8Array\r\n var length = this.writeSections('draft');\r\n this.source = new Uint8Array(length);\r\n // now really write data\r\n this.writeSections();\r\n };\r\n WebmContainer.prototype.getSectionById = function(id) {\r\n for (var i = 0; i < this.data.length; i++) {\r\n var section = this.data[i];\r\n if (section.id === id) {\r\n return section.data;\r\n }\r\n }\r\n return null;\r\n };\r\n\r\n function WebmFile(source) {\r\n WebmContainer.call(this, 'File', 'File');\r\n this.setSource(source);\r\n }\r\n doInherit(WebmFile, WebmContainer);\r\n WebmFile.prototype.fixDuration = function(duration, options) {\r\n var logger = options && options.logger;\r\n if (logger === undefined) {\r\n logger = function(message) {\r\n console.log(message);\r\n };\r\n } else if (!logger) {\r\n logger = function() { };\r\n }\r\n\r\n var segmentSection = this.getSectionById(0x8538067);\r\n if (!segmentSection) {\r\n logger('[fix-webm-duration] Segment section is missing');\r\n return false;\r\n }\r\n\r\n var infoSection = segmentSection.getSectionById(0x549a966);\r\n if (!infoSection) {\r\n logger('[fix-webm-duration] Info section is missing');\r\n return false;\r\n }\r\n\r\n var timeScaleSection = infoSection.getSectionById(0xad7b1);\r\n if (!timeScaleSection) {\r\n logger('[fix-webm-duration] TimecodeScale section is missing');\r\n return false;\r\n }\r\n\r\n var durationSection = infoSection.getSectionById(0x489);\r\n if (durationSection) {\r\n if (durationSection.getValue() <= 0) {\r\n logger('[fix-webm-duration] Duration section is present, but the value is empty');\r\n durationSection.setValue(duration);\r\n } else {\r\n logger('[fix-webm-duration] Duration section is present');\r\n return false;\r\n }\r\n } else {\r\n logger('[fix-webm-duration] Duration section is missing');\r\n // append Duration section\r\n durationSection = new WebmFloat('Duration', 'Float');\r\n durationSection.setValue(duration);\r\n infoSection.data.push({\r\n id: 0x489,\r\n data: durationSection\r\n });\r\n }\r\n\r\n // set default time scale to 1 millisecond (1000000 nanoseconds)\r\n timeScaleSection.setValue(1000000);\r\n infoSection.updateByData();\r\n segmentSection.updateByData();\r\n this.updateByData();\r\n\r\n return true;\r\n };\r\n WebmFile.prototype.toBlob = function(mimeType) {\r\n return new Blob([ this.source.buffer ], { type: mimeType || 'video/webm' });\r\n };\r\n\r\n function fixWebmDuration(blob, duration, callback, options) {\r\n // The callback may be omitted - then the third argument is options\r\n if (typeof callback === \"object\") {\r\n options = callback;\r\n callback = undefined;\r\n }\r\n\r\n if (!callback) {\r\n return new Promise(function(resolve) {\r\n fixWebmDuration(blob, duration, resolve, options);\r\n });\r\n }\r\n\r\n try {\r\n var reader = new FileReader();\r\n reader.onloadend = function() {\r\n try {\r\n var file = new WebmFile(new Uint8Array(reader.result));\r\n if (file.fixDuration(duration, options)) {\r\n blob = file.toBlob(blob.type);\r\n }\r\n } catch (ex) {\r\n // ignore\r\n }\r\n callback(blob);\r\n };\r\n reader.readAsArrayBuffer(blob);\r\n } catch (ex) {\r\n callback(blob);\r\n }\r\n }\r\n\r\n // Support AMD import default\r\n fixWebmDuration.default = fixWebmDuration;\r\n\r\n return fixWebmDuration;\r\n});\r\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId](module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = (module) => {\n\tvar getter = module && module.__esModule ?\n\t\t() => (module['default']) :\n\t\t() => (module);\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","// define getter functions for harmony exports\n__webpack_require__.d = (exports, definition) => {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = (obj, prop) => (Object.prototype.hasOwnProperty.call(obj, prop))","const __WEBPACK_NAMESPACE_OBJECT__ = React;","const __WEBPACK_NAMESPACE_OBJECT__ = ReactDOM;","const __WEBPACK_NAMESPACE_OBJECT__ = ReactIntl;","/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview Firebase constants. Some of these (@defines) can be overridden at compile-time.\r\n */\r\nconst CONSTANTS = {\r\n /**\r\n * @define {boolean} Whether this is the client Node.js SDK.\r\n */\r\n NODE_CLIENT: false,\r\n /**\r\n * @define {boolean} Whether this is the Admin Node.js SDK.\r\n */\r\n NODE_ADMIN: false,\r\n /**\r\n * Firebase SDK Version\r\n */\r\n SDK_VERSION: '${JSCORE_VERSION}'\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Throws an error if the provided assertion is falsy\r\n */\r\nconst assert = function (assertion, message) {\r\n if (!assertion) {\r\n throw assertionError(message);\r\n }\r\n};\r\n/**\r\n * Returns an Error object suitable for throwing.\r\n */\r\nconst assertionError = function (message) {\r\n return new Error('Firebase Database (' +\r\n CONSTANTS.SDK_VERSION +\r\n ') INTERNAL ASSERT FAILED: ' +\r\n message);\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst stringToByteArray$1 = function (str) {\r\n // TODO(user): Use native implementations if/when available\r\n const out = [];\r\n let p = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n let c = str.charCodeAt(i);\r\n if (c < 128) {\r\n out[p++] = c;\r\n }\r\n else if (c < 2048) {\r\n out[p++] = (c >> 6) | 192;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else if ((c & 0xfc00) === 0xd800 &&\r\n i + 1 < str.length &&\r\n (str.charCodeAt(i + 1) & 0xfc00) === 0xdc00) {\r\n // Surrogate Pair\r\n c = 0x10000 + ((c & 0x03ff) << 10) + (str.charCodeAt(++i) & 0x03ff);\r\n out[p++] = (c >> 18) | 240;\r\n out[p++] = ((c >> 12) & 63) | 128;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else {\r\n out[p++] = (c >> 12) | 224;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n }\r\n return out;\r\n};\r\n/**\r\n * Turns an array of numbers into the string given by the concatenation of the\r\n * characters to which the numbers correspond.\r\n * @param bytes Array of numbers representing characters.\r\n * @return Stringification of the array.\r\n */\r\nconst byteArrayToString = function (bytes) {\r\n // TODO(user): Use native implementations if/when available\r\n const out = [];\r\n let pos = 0, c = 0;\r\n while (pos < bytes.length) {\r\n const c1 = bytes[pos++];\r\n if (c1 < 128) {\r\n out[c++] = String.fromCharCode(c1);\r\n }\r\n else if (c1 > 191 && c1 < 224) {\r\n const c2 = bytes[pos++];\r\n out[c++] = String.fromCharCode(((c1 & 31) << 6) | (c2 & 63));\r\n }\r\n else if (c1 > 239 && c1 < 365) {\r\n // Surrogate Pair\r\n const c2 = bytes[pos++];\r\n const c3 = bytes[pos++];\r\n const c4 = bytes[pos++];\r\n const u = (((c1 & 7) << 18) | ((c2 & 63) << 12) | ((c3 & 63) << 6) | (c4 & 63)) -\r\n 0x10000;\r\n out[c++] = String.fromCharCode(0xd800 + (u >> 10));\r\n out[c++] = String.fromCharCode(0xdc00 + (u & 1023));\r\n }\r\n else {\r\n const c2 = bytes[pos++];\r\n const c3 = bytes[pos++];\r\n out[c++] = String.fromCharCode(((c1 & 15) << 12) | ((c2 & 63) << 6) | (c3 & 63));\r\n }\r\n }\r\n return out.join('');\r\n};\r\n// We define it as an object literal instead of a class because a class compiled down to es5 can't\r\n// be treeshaked. https://github.com/rollup/rollup/issues/1691\r\n// Static lookup maps, lazily populated by init_()\r\nconst base64 = {\r\n /**\r\n * Maps bytes to characters.\r\n */\r\n byteToCharMap_: null,\r\n /**\r\n * Maps characters to bytes.\r\n */\r\n charToByteMap_: null,\r\n /**\r\n * Maps bytes to websafe characters.\r\n * @private\r\n */\r\n byteToCharMapWebSafe_: null,\r\n /**\r\n * Maps websafe characters to bytes.\r\n * @private\r\n */\r\n charToByteMapWebSafe_: null,\r\n /**\r\n * Our default alphabet, shared between\r\n * ENCODED_VALS and ENCODED_VALS_WEBSAFE\r\n */\r\n ENCODED_VALS_BASE: 'ABCDEFGHIJKLMNOPQRSTUVWXYZ' + 'abcdefghijklmnopqrstuvwxyz' + '0123456789',\r\n /**\r\n * Our default alphabet. Value 64 (=) is special; it means \"nothing.\"\r\n */\r\n get ENCODED_VALS() {\r\n return this.ENCODED_VALS_BASE + '+/=';\r\n },\r\n /**\r\n * Our websafe alphabet.\r\n */\r\n get ENCODED_VALS_WEBSAFE() {\r\n return this.ENCODED_VALS_BASE + '-_.';\r\n },\r\n /**\r\n * Whether this browser supports the atob and btoa functions. This extension\r\n * started at Mozilla but is now implemented by many browsers. We use the\r\n * ASSUME_* variables to avoid pulling in the full useragent detection library\r\n * but still allowing the standard per-browser compilations.\r\n *\r\n */\r\n HAS_NATIVE_SUPPORT: typeof atob === 'function',\r\n /**\r\n * Base64-encode an array of bytes.\r\n *\r\n * @param input An array of bytes (numbers with\r\n * value in [0, 255]) to encode.\r\n * @param webSafe Boolean indicating we should use the\r\n * alternative alphabet.\r\n * @return The base64 encoded string.\r\n */\r\n encodeByteArray(input, webSafe) {\r\n if (!Array.isArray(input)) {\r\n throw Error('encodeByteArray takes an array as a parameter');\r\n }\r\n this.init_();\r\n const byteToCharMap = webSafe\r\n ? this.byteToCharMapWebSafe_\r\n : this.byteToCharMap_;\r\n const output = [];\r\n for (let i = 0; i < input.length; i += 3) {\r\n const byte1 = input[i];\r\n const haveByte2 = i + 1 < input.length;\r\n const byte2 = haveByte2 ? input[i + 1] : 0;\r\n const haveByte3 = i + 2 < input.length;\r\n const byte3 = haveByte3 ? input[i + 2] : 0;\r\n const outByte1 = byte1 >> 2;\r\n const outByte2 = ((byte1 & 0x03) << 4) | (byte2 >> 4);\r\n let outByte3 = ((byte2 & 0x0f) << 2) | (byte3 >> 6);\r\n let outByte4 = byte3 & 0x3f;\r\n if (!haveByte3) {\r\n outByte4 = 64;\r\n if (!haveByte2) {\r\n outByte3 = 64;\r\n }\r\n }\r\n output.push(byteToCharMap[outByte1], byteToCharMap[outByte2], byteToCharMap[outByte3], byteToCharMap[outByte4]);\r\n }\r\n return output.join('');\r\n },\r\n /**\r\n * Base64-encode a string.\r\n *\r\n * @param input A string to encode.\r\n * @param webSafe If true, we should use the\r\n * alternative alphabet.\r\n * @return The base64 encoded string.\r\n */\r\n encodeString(input, webSafe) {\r\n // Shortcut for Mozilla browsers that implement\r\n // a native base64 encoder in the form of \"btoa/atob\"\r\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\r\n return btoa(input);\r\n }\r\n return this.encodeByteArray(stringToByteArray$1(input), webSafe);\r\n },\r\n /**\r\n * Base64-decode a string.\r\n *\r\n * @param input to decode.\r\n * @param webSafe True if we should use the\r\n * alternative alphabet.\r\n * @return string representing the decoded value.\r\n */\r\n decodeString(input, webSafe) {\r\n // Shortcut for Mozilla browsers that implement\r\n // a native base64 encoder in the form of \"btoa/atob\"\r\n if (this.HAS_NATIVE_SUPPORT && !webSafe) {\r\n return atob(input);\r\n }\r\n return byteArrayToString(this.decodeStringToByteArray(input, webSafe));\r\n },\r\n /**\r\n * Base64-decode a string.\r\n *\r\n * In base-64 decoding, groups of four characters are converted into three\r\n * bytes. If the encoder did not apply padding, the input length may not\r\n * be a multiple of 4.\r\n *\r\n * In this case, the last group will have fewer than 4 characters, and\r\n * padding will be inferred. If the group has one or two characters, it decodes\r\n * to one byte. If the group has three characters, it decodes to two bytes.\r\n *\r\n * @param input Input to decode.\r\n * @param webSafe True if we should use the web-safe alphabet.\r\n * @return bytes representing the decoded value.\r\n */\r\n decodeStringToByteArray(input, webSafe) {\r\n this.init_();\r\n const charToByteMap = webSafe\r\n ? this.charToByteMapWebSafe_\r\n : this.charToByteMap_;\r\n const output = [];\r\n for (let i = 0; i < input.length;) {\r\n const byte1 = charToByteMap[input.charAt(i++)];\r\n const haveByte2 = i < input.length;\r\n const byte2 = haveByte2 ? charToByteMap[input.charAt(i)] : 0;\r\n ++i;\r\n const haveByte3 = i < input.length;\r\n const byte3 = haveByte3 ? charToByteMap[input.charAt(i)] : 64;\r\n ++i;\r\n const haveByte4 = i < input.length;\r\n const byte4 = haveByte4 ? charToByteMap[input.charAt(i)] : 64;\r\n ++i;\r\n if (byte1 == null || byte2 == null || byte3 == null || byte4 == null) {\r\n throw Error();\r\n }\r\n const outByte1 = (byte1 << 2) | (byte2 >> 4);\r\n output.push(outByte1);\r\n if (byte3 !== 64) {\r\n const outByte2 = ((byte2 << 4) & 0xf0) | (byte3 >> 2);\r\n output.push(outByte2);\r\n if (byte4 !== 64) {\r\n const outByte3 = ((byte3 << 6) & 0xc0) | byte4;\r\n output.push(outByte3);\r\n }\r\n }\r\n }\r\n return output;\r\n },\r\n /**\r\n * Lazy static initialization function. Called before\r\n * accessing any of the static map variables.\r\n * @private\r\n */\r\n init_() {\r\n if (!this.byteToCharMap_) {\r\n this.byteToCharMap_ = {};\r\n this.charToByteMap_ = {};\r\n this.byteToCharMapWebSafe_ = {};\r\n this.charToByteMapWebSafe_ = {};\r\n // We want quick mappings back and forth, so we precompute two maps.\r\n for (let i = 0; i < this.ENCODED_VALS.length; i++) {\r\n this.byteToCharMap_[i] = this.ENCODED_VALS.charAt(i);\r\n this.charToByteMap_[this.byteToCharMap_[i]] = i;\r\n this.byteToCharMapWebSafe_[i] = this.ENCODED_VALS_WEBSAFE.charAt(i);\r\n this.charToByteMapWebSafe_[this.byteToCharMapWebSafe_[i]] = i;\r\n // Be forgiving when decoding and correctly decode both encodings.\r\n if (i >= this.ENCODED_VALS_BASE.length) {\r\n this.charToByteMap_[this.ENCODED_VALS_WEBSAFE.charAt(i)] = i;\r\n this.charToByteMapWebSafe_[this.ENCODED_VALS.charAt(i)] = i;\r\n }\r\n }\r\n }\r\n }\r\n};\r\n/**\r\n * URL-safe base64 encoding\r\n */\r\nconst base64Encode = function (str) {\r\n const utf8Bytes = stringToByteArray$1(str);\r\n return base64.encodeByteArray(utf8Bytes, true);\r\n};\r\n/**\r\n * URL-safe base64 encoding (without \".\" padding in the end).\r\n * e.g. Used in JSON Web Token (JWT) parts.\r\n */\r\nconst base64urlEncodeWithoutPadding = function (str) {\r\n // Use base64url encoding and remove padding in the end (dot characters).\r\n return base64Encode(str).replace(/\\./g, '');\r\n};\r\n/**\r\n * URL-safe base64 decoding\r\n *\r\n * NOTE: DO NOT use the global atob() function - it does NOT support the\r\n * base64Url variant encoding.\r\n *\r\n * @param str To be decoded\r\n * @return Decoded result, if possible\r\n */\r\nconst base64Decode = function (str) {\r\n try {\r\n return base64.decodeString(str, true);\r\n }\r\n catch (e) {\r\n console.error('base64Decode failed: ', e);\r\n }\r\n return null;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Do a deep-copy of basic JavaScript Objects or Arrays.\r\n */\r\nfunction deepCopy(value) {\r\n return deepExtend(undefined, value);\r\n}\r\n/**\r\n * Copy properties from source to target (recursively allows extension\r\n * of Objects and Arrays). Scalar values in the target are over-written.\r\n * If target is undefined, an object of the appropriate type will be created\r\n * (and returned).\r\n *\r\n * We recursively copy all child properties of plain Objects in the source- so\r\n * that namespace- like dictionaries are merged.\r\n *\r\n * Note that the target can be a function, in which case the properties in\r\n * the source Object are copied onto it as static properties of the Function.\r\n *\r\n * Note: we don't merge __proto__ to prevent prototype pollution\r\n */\r\nfunction deepExtend(target, source) {\r\n if (!(source instanceof Object)) {\r\n return source;\r\n }\r\n switch (source.constructor) {\r\n case Date:\r\n // Treat Dates like scalars; if the target date object had any child\r\n // properties - they will be lost!\r\n const dateValue = source;\r\n return new Date(dateValue.getTime());\r\n case Object:\r\n if (target === undefined) {\r\n target = {};\r\n }\r\n break;\r\n case Array:\r\n // Always copy the array source and overwrite the target.\r\n target = [];\r\n break;\r\n default:\r\n // Not a plain Object - treat it as a scalar.\r\n return source;\r\n }\r\n for (const prop in source) {\r\n // use isValidKey to guard against prototype pollution. See https://snyk.io/vuln/SNYK-JS-LODASH-450202\r\n if (!source.hasOwnProperty(prop) || !isValidKey(prop)) {\r\n continue;\r\n }\r\n target[prop] = deepExtend(target[prop], source[prop]);\r\n }\r\n return target;\r\n}\r\nfunction isValidKey(key) {\r\n return key !== '__proto__';\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass Deferred {\r\n constructor() {\r\n this.reject = () => { };\r\n this.resolve = () => { };\r\n this.promise = new Promise((resolve, reject) => {\r\n this.resolve = resolve;\r\n this.reject = reject;\r\n });\r\n }\r\n /**\r\n * Our API internals are not promiseified and cannot because our callback APIs have subtle expectations around\r\n * invoking promises inline, which Promises are forbidden to do. This method accepts an optional node-style callback\r\n * and returns a node-style callback which will resolve or reject the Deferred's promise.\r\n */\r\n wrapCallback(callback) {\r\n return (error, value) => {\r\n if (error) {\r\n this.reject(error);\r\n }\r\n else {\r\n this.resolve(value);\r\n }\r\n if (typeof callback === 'function') {\r\n // Attaching noop handler just in case developer wasn't expecting\r\n // promises\r\n this.promise.catch(() => { });\r\n // Some of our callbacks don't expect a value and our own tests\r\n // assert that the parameter length is 1\r\n if (callback.length === 1) {\r\n callback(error);\r\n }\r\n else {\r\n callback(error, value);\r\n }\r\n }\r\n };\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction createMockUserToken(token, projectId) {\r\n if (token.uid) {\r\n throw new Error('The \"uid\" field is no longer supported by mockUserToken. Please use \"sub\" instead for Firebase Auth User ID.');\r\n }\r\n // Unsecured JWTs use \"none\" as the algorithm.\r\n const header = {\r\n alg: 'none',\r\n type: 'JWT'\r\n };\r\n const project = projectId || 'demo-project';\r\n const iat = token.iat || 0;\r\n const sub = token.sub || token.user_id;\r\n if (!sub) {\r\n throw new Error(\"mockUserToken must contain 'sub' or 'user_id' field!\");\r\n }\r\n const payload = Object.assign({ \r\n // Set all required fields to decent defaults\r\n iss: `https://securetoken.google.com/${project}`, aud: project, iat, exp: iat + 3600, auth_time: iat, sub, user_id: sub, firebase: {\r\n sign_in_provider: 'custom',\r\n identities: {}\r\n } }, token);\r\n // Unsecured JWTs use the empty string as a signature.\r\n const signature = '';\r\n return [\r\n base64urlEncodeWithoutPadding(JSON.stringify(header)),\r\n base64urlEncodeWithoutPadding(JSON.stringify(payload)),\r\n signature\r\n ].join('.');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns navigator.userAgent string or '' if it's not defined.\r\n * @return user agent string\r\n */\r\nfunction getUA() {\r\n if (typeof navigator !== 'undefined' &&\r\n typeof navigator['userAgent'] === 'string') {\r\n return navigator['userAgent'];\r\n }\r\n else {\r\n return '';\r\n }\r\n}\r\n/**\r\n * Detect Cordova / PhoneGap / Ionic frameworks on a mobile device.\r\n *\r\n * Deliberately does not rely on checking `file://` URLs (as this fails PhoneGap\r\n * in the Ripple emulator) nor Cordova `onDeviceReady`, which would normally\r\n * wait for a callback.\r\n */\r\nfunction isMobileCordova() {\r\n return (typeof window !== 'undefined' &&\r\n // @ts-ignore Setting up an broadly applicable index signature for Window\r\n // just to deal with this case would probably be a bad idea.\r\n !!(window['cordova'] || window['phonegap'] || window['PhoneGap']) &&\r\n /ios|iphone|ipod|ipad|android|blackberry|iemobile/i.test(getUA()));\r\n}\r\n/**\r\n * Detect Node.js.\r\n *\r\n * @return true if Node.js environment is detected.\r\n */\r\n// Node detection logic from: https://github.com/iliakan/detect-node/\r\nfunction isNode() {\r\n try {\r\n return (Object.prototype.toString.call(global.process) === '[object process]');\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n}\r\n/**\r\n * Detect Browser Environment\r\n */\r\nfunction isBrowser() {\r\n return typeof self === 'object' && self.self === self;\r\n}\r\nfunction isBrowserExtension() {\r\n const runtime = typeof chrome === 'object'\r\n ? chrome.runtime\r\n : typeof browser === 'object'\r\n ? browser.runtime\r\n : undefined;\r\n return typeof runtime === 'object' && runtime.id !== undefined;\r\n}\r\n/**\r\n * Detect React Native.\r\n *\r\n * @return true if ReactNative environment is detected.\r\n */\r\nfunction isReactNative() {\r\n return (typeof navigator === 'object' && navigator['product'] === 'ReactNative');\r\n}\r\n/** Detects Electron apps. */\r\nfunction isElectron() {\r\n return getUA().indexOf('Electron/') >= 0;\r\n}\r\n/** Detects Internet Explorer. */\r\nfunction isIE() {\r\n const ua = getUA();\r\n return ua.indexOf('MSIE ') >= 0 || ua.indexOf('Trident/') >= 0;\r\n}\r\n/** Detects Universal Windows Platform apps. */\r\nfunction isUWP() {\r\n return getUA().indexOf('MSAppHost/') >= 0;\r\n}\r\n/**\r\n * Detect whether the current SDK build is the Node version.\r\n *\r\n * @return true if it's the Node SDK build.\r\n */\r\nfunction isNodeSdk() {\r\n return CONSTANTS.NODE_CLIENT === true || CONSTANTS.NODE_ADMIN === true;\r\n}\r\n/** Returns true if we are running in Safari. */\r\nfunction isSafari() {\r\n return (!isNode() &&\r\n navigator.userAgent.includes('Safari') &&\r\n !navigator.userAgent.includes('Chrome'));\r\n}\r\n/**\r\n * This method checks if indexedDB is supported by current browser/service worker context\r\n * @return true if indexedDB is supported by current browser/service worker context\r\n */\r\nfunction isIndexedDBAvailable() {\r\n return typeof indexedDB === 'object';\r\n}\r\n/**\r\n * This method validates browser/sw context for indexedDB by opening a dummy indexedDB database and reject\r\n * if errors occur during the database open operation.\r\n *\r\n * @throws exception if current browser/sw context can't run idb.open (ex: Safari iframe, Firefox\r\n * private browsing)\r\n */\r\nfunction validateIndexedDBOpenable() {\r\n return new Promise((resolve, reject) => {\r\n try {\r\n let preExist = true;\r\n const DB_CHECK_NAME = 'validate-browser-context-for-indexeddb-analytics-module';\r\n const request = self.indexedDB.open(DB_CHECK_NAME);\r\n request.onsuccess = () => {\r\n request.result.close();\r\n // delete database only when it doesn't pre-exist\r\n if (!preExist) {\r\n self.indexedDB.deleteDatabase(DB_CHECK_NAME);\r\n }\r\n resolve(true);\r\n };\r\n request.onupgradeneeded = () => {\r\n preExist = false;\r\n };\r\n request.onerror = () => {\r\n var _a;\r\n reject(((_a = request.error) === null || _a === void 0 ? void 0 : _a.message) || '');\r\n };\r\n }\r\n catch (error) {\r\n reject(error);\r\n }\r\n });\r\n}\r\n/**\r\n *\r\n * This method checks whether cookie is enabled within current browser\r\n * @return true if cookie is enabled within current browser\r\n */\r\nfunction areCookiesEnabled() {\r\n if (typeof navigator === 'undefined' || !navigator.cookieEnabled) {\r\n return false;\r\n }\r\n return true;\r\n}\r\n/**\r\n * Polyfill for `globalThis` object.\r\n * @returns the `globalThis` object for the given environment.\r\n */\r\nfunction getGlobal() {\r\n if (typeof self !== 'undefined') {\r\n return self;\r\n }\r\n if (typeof window !== 'undefined') {\r\n return window;\r\n }\r\n if (typeof global !== 'undefined') {\r\n return global;\r\n }\r\n throw new Error('Unable to locate global object.');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview Standardized Firebase Error.\r\n *\r\n * Usage:\r\n *\r\n * // Typescript string literals for type-safe codes\r\n * type Err =\r\n * 'unknown' |\r\n * 'object-not-found'\r\n * ;\r\n *\r\n * // Closure enum for type-safe error codes\r\n * // at-enum {string}\r\n * var Err = {\r\n * UNKNOWN: 'unknown',\r\n * OBJECT_NOT_FOUND: 'object-not-found',\r\n * }\r\n *\r\n * let errors: Map = {\r\n * 'generic-error': \"Unknown error\",\r\n * 'file-not-found': \"Could not find file: {$file}\",\r\n * };\r\n *\r\n * // Type-safe function - must pass a valid error code as param.\r\n * let error = new ErrorFactory('service', 'Service', errors);\r\n *\r\n * ...\r\n * throw error.create(Err.GENERIC);\r\n * ...\r\n * throw error.create(Err.FILE_NOT_FOUND, {'file': fileName});\r\n * ...\r\n * // Service: Could not file file: foo.txt (service/file-not-found).\r\n *\r\n * catch (e) {\r\n * assert(e.message === \"Could not find file: foo.txt.\");\r\n * if (e.code === 'service/file-not-found') {\r\n * console.log(\"Could not read file: \" + e['file']);\r\n * }\r\n * }\r\n */\r\nconst ERROR_NAME = 'FirebaseError';\r\n// Based on code from:\r\n// https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Error#Custom_Error_Types\r\nclass FirebaseError extends Error {\r\n constructor(\r\n /** The error code for this error. */\r\n code, message, \r\n /** Custom data for this error. */\r\n customData) {\r\n super(message);\r\n this.code = code;\r\n this.customData = customData;\r\n /** The custom name for all FirebaseErrors. */\r\n this.name = ERROR_NAME;\r\n // Fix For ES5\r\n // https://github.com/Microsoft/TypeScript-wiki/blob/master/Breaking-Changes.md#extending-built-ins-like-error-array-and-map-may-no-longer-work\r\n Object.setPrototypeOf(this, FirebaseError.prototype);\r\n // Maintains proper stack trace for where our error was thrown.\r\n // Only available on V8.\r\n if (Error.captureStackTrace) {\r\n Error.captureStackTrace(this, ErrorFactory.prototype.create);\r\n }\r\n }\r\n}\r\nclass ErrorFactory {\r\n constructor(service, serviceName, errors) {\r\n this.service = service;\r\n this.serviceName = serviceName;\r\n this.errors = errors;\r\n }\r\n create(code, ...data) {\r\n const customData = data[0] || {};\r\n const fullCode = `${this.service}/${code}`;\r\n const template = this.errors[code];\r\n const message = template ? replaceTemplate(template, customData) : 'Error';\r\n // Service Name: Error message (service/code).\r\n const fullMessage = `${this.serviceName}: ${message} (${fullCode}).`;\r\n const error = new FirebaseError(fullCode, fullMessage, customData);\r\n return error;\r\n }\r\n}\r\nfunction replaceTemplate(template, data) {\r\n return template.replace(PATTERN, (_, key) => {\r\n const value = data[key];\r\n return value != null ? String(value) : `<${key}?>`;\r\n });\r\n}\r\nconst PATTERN = /\\{\\$([^}]+)}/g;\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Evaluates a JSON string into a javascript object.\r\n *\r\n * @param {string} str A string containing JSON.\r\n * @return {*} The javascript object representing the specified JSON.\r\n */\r\nfunction jsonEval(str) {\r\n return JSON.parse(str);\r\n}\r\n/**\r\n * Returns JSON representing a javascript object.\r\n * @param {*} data Javascript object to be stringified.\r\n * @return {string} The JSON contents of the object.\r\n */\r\nfunction stringify(data) {\r\n return JSON.stringify(data);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Decodes a Firebase auth. token into constituent parts.\r\n *\r\n * Notes:\r\n * - May return with invalid / incomplete claims if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst decode = function (token) {\r\n let header = {}, claims = {}, data = {}, signature = '';\r\n try {\r\n const parts = token.split('.');\r\n header = jsonEval(base64Decode(parts[0]) || '');\r\n claims = jsonEval(base64Decode(parts[1]) || '');\r\n signature = parts[2];\r\n data = claims['d'] || {};\r\n delete claims['d'];\r\n }\r\n catch (e) { }\r\n return {\r\n header,\r\n claims,\r\n data,\r\n signature\r\n };\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and checks the validity of its time-based claims. Will return true if the\r\n * token is within the time window authorized by the 'nbf' (not-before) and 'iat' (issued-at) claims.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst isValidTimestamp = function (token) {\r\n const claims = decode(token).claims;\r\n const now = Math.floor(new Date().getTime() / 1000);\r\n let validSince = 0, validUntil = 0;\r\n if (typeof claims === 'object') {\r\n if (claims.hasOwnProperty('nbf')) {\r\n validSince = claims['nbf'];\r\n }\r\n else if (claims.hasOwnProperty('iat')) {\r\n validSince = claims['iat'];\r\n }\r\n if (claims.hasOwnProperty('exp')) {\r\n validUntil = claims['exp'];\r\n }\r\n else {\r\n // token will expire after 24h by default\r\n validUntil = validSince + 86400;\r\n }\r\n }\r\n return (!!now &&\r\n !!validSince &&\r\n !!validUntil &&\r\n now >= validSince &&\r\n now <= validUntil);\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and returns its issued at time if valid, null otherwise.\r\n *\r\n * Notes:\r\n * - May return null if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst issuedAtTime = function (token) {\r\n const claims = decode(token).claims;\r\n if (typeof claims === 'object' && claims.hasOwnProperty('iat')) {\r\n return claims['iat'];\r\n }\r\n return null;\r\n};\r\n/**\r\n * Decodes a Firebase auth. token and checks the validity of its format. Expects a valid issued-at time.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst isValidFormat = function (token) {\r\n const decoded = decode(token), claims = decoded.claims;\r\n return !!claims && typeof claims === 'object' && claims.hasOwnProperty('iat');\r\n};\r\n/**\r\n * Attempts to peer into an auth token and determine if it's an admin auth token by looking at the claims portion.\r\n *\r\n * Notes:\r\n * - May return a false negative if there's no native base64 decoding support.\r\n * - Doesn't check if the token is actually valid.\r\n */\r\nconst isAdmin = function (token) {\r\n const claims = decode(token).claims;\r\n return typeof claims === 'object' && claims['admin'] === true;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction contains(obj, key) {\r\n return Object.prototype.hasOwnProperty.call(obj, key);\r\n}\r\nfunction safeGet(obj, key) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n return obj[key];\r\n }\r\n else {\r\n return undefined;\r\n }\r\n}\r\nfunction isEmpty(obj) {\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction map(obj, fn, contextObj) {\r\n const res = {};\r\n for (const key in obj) {\r\n if (Object.prototype.hasOwnProperty.call(obj, key)) {\r\n res[key] = fn.call(contextObj, obj[key], key, obj);\r\n }\r\n }\r\n return res;\r\n}\r\n/**\r\n * Deep equal two objects. Support Arrays and Objects.\r\n */\r\nfunction deepEqual(a, b) {\r\n if (a === b) {\r\n return true;\r\n }\r\n const aKeys = Object.keys(a);\r\n const bKeys = Object.keys(b);\r\n for (const k of aKeys) {\r\n if (!bKeys.includes(k)) {\r\n return false;\r\n }\r\n const aProp = a[k];\r\n const bProp = b[k];\r\n if (isObject(aProp) && isObject(bProp)) {\r\n if (!deepEqual(aProp, bProp)) {\r\n return false;\r\n }\r\n }\r\n else if (aProp !== bProp) {\r\n return false;\r\n }\r\n }\r\n for (const k of bKeys) {\r\n if (!aKeys.includes(k)) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nfunction isObject(thing) {\r\n return thing !== null && typeof thing === 'object';\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns a querystring-formatted string (e.g. &arg=val&arg2=val2) from a\r\n * params object (e.g. {arg: 'val', arg2: 'val2'})\r\n * Note: You must prepend it with ? when adding it to a URL.\r\n */\r\nfunction querystring(querystringParams) {\r\n const params = [];\r\n for (const [key, value] of Object.entries(querystringParams)) {\r\n if (Array.isArray(value)) {\r\n value.forEach(arrayVal => {\r\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(arrayVal));\r\n });\r\n }\r\n else {\r\n params.push(encodeURIComponent(key) + '=' + encodeURIComponent(value));\r\n }\r\n }\r\n return params.length ? '&' + params.join('&') : '';\r\n}\r\n/**\r\n * Decodes a querystring (e.g. ?arg=val&arg2=val2) into a params object\r\n * (e.g. {arg: 'val', arg2: 'val2'})\r\n */\r\nfunction querystringDecode(querystring) {\r\n const obj = {};\r\n const tokens = querystring.replace(/^\\?/, '').split('&');\r\n tokens.forEach(token => {\r\n if (token) {\r\n const [key, value] = token.split('=');\r\n obj[decodeURIComponent(key)] = decodeURIComponent(value);\r\n }\r\n });\r\n return obj;\r\n}\r\n/**\r\n * Extract the query string part of a URL, including the leading question mark (if present).\r\n */\r\nfunction extractQuerystring(url) {\r\n const queryStart = url.indexOf('?');\r\n if (!queryStart) {\r\n return '';\r\n }\r\n const fragmentStart = url.indexOf('#', queryStart);\r\n return url.substring(queryStart, fragmentStart > 0 ? fragmentStart : undefined);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @fileoverview SHA-1 cryptographic hash.\r\n * Variable names follow the notation in FIPS PUB 180-3:\r\n * http://csrc.nist.gov/publications/fips/fips180-3/fips180-3_final.pdf.\r\n *\r\n * Usage:\r\n * var sha1 = new sha1();\r\n * sha1.update(bytes);\r\n * var hash = sha1.digest();\r\n *\r\n * Performance:\r\n * Chrome 23: ~400 Mbit/s\r\n * Firefox 16: ~250 Mbit/s\r\n *\r\n */\r\n/**\r\n * SHA-1 cryptographic hash constructor.\r\n *\r\n * The properties declared here are discussed in the above algorithm document.\r\n * @constructor\r\n * @final\r\n * @struct\r\n */\r\nclass Sha1 {\r\n constructor() {\r\n /**\r\n * Holds the previous values of accumulated variables a-e in the compress_\r\n * function.\r\n * @private\r\n */\r\n this.chain_ = [];\r\n /**\r\n * A buffer holding the partially computed hash result.\r\n * @private\r\n */\r\n this.buf_ = [];\r\n /**\r\n * An array of 80 bytes, each a part of the message to be hashed. Referred to\r\n * as the message schedule in the docs.\r\n * @private\r\n */\r\n this.W_ = [];\r\n /**\r\n * Contains data needed to pad messages less than 64 bytes.\r\n * @private\r\n */\r\n this.pad_ = [];\r\n /**\r\n * @private {number}\r\n */\r\n this.inbuf_ = 0;\r\n /**\r\n * @private {number}\r\n */\r\n this.total_ = 0;\r\n this.blockSize = 512 / 8;\r\n this.pad_[0] = 128;\r\n for (let i = 1; i < this.blockSize; ++i) {\r\n this.pad_[i] = 0;\r\n }\r\n this.reset();\r\n }\r\n reset() {\r\n this.chain_[0] = 0x67452301;\r\n this.chain_[1] = 0xefcdab89;\r\n this.chain_[2] = 0x98badcfe;\r\n this.chain_[3] = 0x10325476;\r\n this.chain_[4] = 0xc3d2e1f0;\r\n this.inbuf_ = 0;\r\n this.total_ = 0;\r\n }\r\n /**\r\n * Internal compress helper function.\r\n * @param buf Block to compress.\r\n * @param offset Offset of the block in the buffer.\r\n * @private\r\n */\r\n compress_(buf, offset) {\r\n if (!offset) {\r\n offset = 0;\r\n }\r\n const W = this.W_;\r\n // get 16 big endian words\r\n if (typeof buf === 'string') {\r\n for (let i = 0; i < 16; i++) {\r\n // TODO(user): [bug 8140122] Recent versions of Safari for Mac OS and iOS\r\n // have a bug that turns the post-increment ++ operator into pre-increment\r\n // during JIT compilation. We have code that depends heavily on SHA-1 for\r\n // correctness and which is affected by this bug, so I've removed all uses\r\n // of post-increment ++ in which the result value is used. We can revert\r\n // this change once the Safari bug\r\n // (https://bugs.webkit.org/show_bug.cgi?id=109036) has been fixed and\r\n // most clients have been updated.\r\n W[i] =\r\n (buf.charCodeAt(offset) << 24) |\r\n (buf.charCodeAt(offset + 1) << 16) |\r\n (buf.charCodeAt(offset + 2) << 8) |\r\n buf.charCodeAt(offset + 3);\r\n offset += 4;\r\n }\r\n }\r\n else {\r\n for (let i = 0; i < 16; i++) {\r\n W[i] =\r\n (buf[offset] << 24) |\r\n (buf[offset + 1] << 16) |\r\n (buf[offset + 2] << 8) |\r\n buf[offset + 3];\r\n offset += 4;\r\n }\r\n }\r\n // expand to 80 words\r\n for (let i = 16; i < 80; i++) {\r\n const t = W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16];\r\n W[i] = ((t << 1) | (t >>> 31)) & 0xffffffff;\r\n }\r\n let a = this.chain_[0];\r\n let b = this.chain_[1];\r\n let c = this.chain_[2];\r\n let d = this.chain_[3];\r\n let e = this.chain_[4];\r\n let f, k;\r\n // TODO(user): Try to unroll this loop to speed up the computation.\r\n for (let i = 0; i < 80; i++) {\r\n if (i < 40) {\r\n if (i < 20) {\r\n f = d ^ (b & (c ^ d));\r\n k = 0x5a827999;\r\n }\r\n else {\r\n f = b ^ c ^ d;\r\n k = 0x6ed9eba1;\r\n }\r\n }\r\n else {\r\n if (i < 60) {\r\n f = (b & c) | (d & (b | c));\r\n k = 0x8f1bbcdc;\r\n }\r\n else {\r\n f = b ^ c ^ d;\r\n k = 0xca62c1d6;\r\n }\r\n }\r\n const t = (((a << 5) | (a >>> 27)) + f + e + k + W[i]) & 0xffffffff;\r\n e = d;\r\n d = c;\r\n c = ((b << 30) | (b >>> 2)) & 0xffffffff;\r\n b = a;\r\n a = t;\r\n }\r\n this.chain_[0] = (this.chain_[0] + a) & 0xffffffff;\r\n this.chain_[1] = (this.chain_[1] + b) & 0xffffffff;\r\n this.chain_[2] = (this.chain_[2] + c) & 0xffffffff;\r\n this.chain_[3] = (this.chain_[3] + d) & 0xffffffff;\r\n this.chain_[4] = (this.chain_[4] + e) & 0xffffffff;\r\n }\r\n update(bytes, length) {\r\n // TODO(johnlenz): tighten the function signature and remove this check\r\n if (bytes == null) {\r\n return;\r\n }\r\n if (length === undefined) {\r\n length = bytes.length;\r\n }\r\n const lengthMinusBlock = length - this.blockSize;\r\n let n = 0;\r\n // Using local instead of member variables gives ~5% speedup on Firefox 16.\r\n const buf = this.buf_;\r\n let inbuf = this.inbuf_;\r\n // The outer while loop should execute at most twice.\r\n while (n < length) {\r\n // When we have no data in the block to top up, we can directly process the\r\n // input buffer (assuming it contains sufficient data). This gives ~25%\r\n // speedup on Chrome 23 and ~15% speedup on Firefox 16, but requires that\r\n // the data is provided in large chunks (or in multiples of 64 bytes).\r\n if (inbuf === 0) {\r\n while (n <= lengthMinusBlock) {\r\n this.compress_(bytes, n);\r\n n += this.blockSize;\r\n }\r\n }\r\n if (typeof bytes === 'string') {\r\n while (n < length) {\r\n buf[inbuf] = bytes.charCodeAt(n);\r\n ++inbuf;\r\n ++n;\r\n if (inbuf === this.blockSize) {\r\n this.compress_(buf);\r\n inbuf = 0;\r\n // Jump to the outer loop so we use the full-block optimization.\r\n break;\r\n }\r\n }\r\n }\r\n else {\r\n while (n < length) {\r\n buf[inbuf] = bytes[n];\r\n ++inbuf;\r\n ++n;\r\n if (inbuf === this.blockSize) {\r\n this.compress_(buf);\r\n inbuf = 0;\r\n // Jump to the outer loop so we use the full-block optimization.\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n this.inbuf_ = inbuf;\r\n this.total_ += length;\r\n }\r\n /** @override */\r\n digest() {\r\n const digest = [];\r\n let totalBits = this.total_ * 8;\r\n // Add pad 0x80 0x00*.\r\n if (this.inbuf_ < 56) {\r\n this.update(this.pad_, 56 - this.inbuf_);\r\n }\r\n else {\r\n this.update(this.pad_, this.blockSize - (this.inbuf_ - 56));\r\n }\r\n // Add # bits.\r\n for (let i = this.blockSize - 1; i >= 56; i--) {\r\n this.buf_[i] = totalBits & 255;\r\n totalBits /= 256; // Don't use bit-shifting here!\r\n }\r\n this.compress_(this.buf_);\r\n let n = 0;\r\n for (let i = 0; i < 5; i++) {\r\n for (let j = 24; j >= 0; j -= 8) {\r\n digest[n] = (this.chain_[i] >> j) & 255;\r\n ++n;\r\n }\r\n }\r\n return digest;\r\n }\r\n}\n\n/**\r\n * Helper to make a Subscribe function (just like Promise helps make a\r\n * Thenable).\r\n *\r\n * @param executor Function which can make calls to a single Observer\r\n * as a proxy.\r\n * @param onNoObservers Callback when count of Observers goes to zero.\r\n */\r\nfunction createSubscribe(executor, onNoObservers) {\r\n const proxy = new ObserverProxy(executor, onNoObservers);\r\n return proxy.subscribe.bind(proxy);\r\n}\r\n/**\r\n * Implement fan-out for any number of Observers attached via a subscribe\r\n * function.\r\n */\r\nclass ObserverProxy {\r\n /**\r\n * @param executor Function which can make calls to a single Observer\r\n * as a proxy.\r\n * @param onNoObservers Callback when count of Observers goes to zero.\r\n */\r\n constructor(executor, onNoObservers) {\r\n this.observers = [];\r\n this.unsubscribes = [];\r\n this.observerCount = 0;\r\n // Micro-task scheduling by calling task.then().\r\n this.task = Promise.resolve();\r\n this.finalized = false;\r\n this.onNoObservers = onNoObservers;\r\n // Call the executor asynchronously so subscribers that are called\r\n // synchronously after the creation of the subscribe function\r\n // can still receive the very first value generated in the executor.\r\n this.task\r\n .then(() => {\r\n executor(this);\r\n })\r\n .catch(e => {\r\n this.error(e);\r\n });\r\n }\r\n next(value) {\r\n this.forEachObserver((observer) => {\r\n observer.next(value);\r\n });\r\n }\r\n error(error) {\r\n this.forEachObserver((observer) => {\r\n observer.error(error);\r\n });\r\n this.close(error);\r\n }\r\n complete() {\r\n this.forEachObserver((observer) => {\r\n observer.complete();\r\n });\r\n this.close();\r\n }\r\n /**\r\n * Subscribe function that can be used to add an Observer to the fan-out list.\r\n *\r\n * - We require that no event is sent to a subscriber sychronously to their\r\n * call to subscribe().\r\n */\r\n subscribe(nextOrObserver, error, complete) {\r\n let observer;\r\n if (nextOrObserver === undefined &&\r\n error === undefined &&\r\n complete === undefined) {\r\n throw new Error('Missing Observer.');\r\n }\r\n // Assemble an Observer object when passed as callback functions.\r\n if (implementsAnyMethods(nextOrObserver, [\r\n 'next',\r\n 'error',\r\n 'complete'\r\n ])) {\r\n observer = nextOrObserver;\r\n }\r\n else {\r\n observer = {\r\n next: nextOrObserver,\r\n error,\r\n complete\r\n };\r\n }\r\n if (observer.next === undefined) {\r\n observer.next = noop;\r\n }\r\n if (observer.error === undefined) {\r\n observer.error = noop;\r\n }\r\n if (observer.complete === undefined) {\r\n observer.complete = noop;\r\n }\r\n const unsub = this.unsubscribeOne.bind(this, this.observers.length);\r\n // Attempt to subscribe to a terminated Observable - we\r\n // just respond to the Observer with the final error or complete\r\n // event.\r\n if (this.finalized) {\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.task.then(() => {\r\n try {\r\n if (this.finalError) {\r\n observer.error(this.finalError);\r\n }\r\n else {\r\n observer.complete();\r\n }\r\n }\r\n catch (e) {\r\n // nothing\r\n }\r\n return;\r\n });\r\n }\r\n this.observers.push(observer);\r\n return unsub;\r\n }\r\n // Unsubscribe is synchronous - we guarantee that no events are sent to\r\n // any unsubscribed Observer.\r\n unsubscribeOne(i) {\r\n if (this.observers === undefined || this.observers[i] === undefined) {\r\n return;\r\n }\r\n delete this.observers[i];\r\n this.observerCount -= 1;\r\n if (this.observerCount === 0 && this.onNoObservers !== undefined) {\r\n this.onNoObservers(this);\r\n }\r\n }\r\n forEachObserver(fn) {\r\n if (this.finalized) {\r\n // Already closed by previous event....just eat the additional values.\r\n return;\r\n }\r\n // Since sendOne calls asynchronously - there is no chance that\r\n // this.observers will become undefined.\r\n for (let i = 0; i < this.observers.length; i++) {\r\n this.sendOne(i, fn);\r\n }\r\n }\r\n // Call the Observer via one of it's callback function. We are careful to\r\n // confirm that the observe has not been unsubscribed since this asynchronous\r\n // function had been queued.\r\n sendOne(i, fn) {\r\n // Execute the callback asynchronously\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.task.then(() => {\r\n if (this.observers !== undefined && this.observers[i] !== undefined) {\r\n try {\r\n fn(this.observers[i]);\r\n }\r\n catch (e) {\r\n // Ignore exceptions raised in Observers or missing methods of an\r\n // Observer.\r\n // Log error to console. b/31404806\r\n if (typeof console !== 'undefined' && console.error) {\r\n console.error(e);\r\n }\r\n }\r\n }\r\n });\r\n }\r\n close(err) {\r\n if (this.finalized) {\r\n return;\r\n }\r\n this.finalized = true;\r\n if (err !== undefined) {\r\n this.finalError = err;\r\n }\r\n // Proxy is no longer needed - garbage collect references\r\n // eslint-disable-next-line @typescript-eslint/no-floating-promises\r\n this.task.then(() => {\r\n this.observers = undefined;\r\n this.onNoObservers = undefined;\r\n });\r\n }\r\n}\r\n/** Turn synchronous function into one called asynchronously. */\r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\nfunction async(fn, onError) {\r\n return (...args) => {\r\n Promise.resolve(true)\r\n .then(() => {\r\n fn(...args);\r\n })\r\n .catch((error) => {\r\n if (onError) {\r\n onError(error);\r\n }\r\n });\r\n };\r\n}\r\n/**\r\n * Return true if the object passed in implements any of the named methods.\r\n */\r\nfunction implementsAnyMethods(obj, methods) {\r\n if (typeof obj !== 'object' || obj === null) {\r\n return false;\r\n }\r\n for (const method of methods) {\r\n if (method in obj && typeof obj[method] === 'function') {\r\n return true;\r\n }\r\n }\r\n return false;\r\n}\r\nfunction noop() {\r\n // do nothing\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Check to make sure the appropriate number of arguments are provided for a public function.\r\n * Throws an error if it fails.\r\n *\r\n * @param fnName The function name\r\n * @param minCount The minimum number of arguments to allow for the function call\r\n * @param maxCount The maximum number of argument to allow for the function call\r\n * @param argCount The actual number of arguments provided.\r\n */\r\nconst validateArgCount = function (fnName, minCount, maxCount, argCount) {\r\n let argError;\r\n if (argCount < minCount) {\r\n argError = 'at least ' + minCount;\r\n }\r\n else if (argCount > maxCount) {\r\n argError = maxCount === 0 ? 'none' : 'no more than ' + maxCount;\r\n }\r\n if (argError) {\r\n const error = fnName +\r\n ' failed: Was called with ' +\r\n argCount +\r\n (argCount === 1 ? ' argument.' : ' arguments.') +\r\n ' Expects ' +\r\n argError +\r\n '.';\r\n throw new Error(error);\r\n }\r\n};\r\n/**\r\n * Generates a string to prefix an error message about failed argument validation\r\n *\r\n * @param fnName The function name\r\n * @param argName The name of the argument\r\n * @return The prefix to add to the error thrown for validation.\r\n */\r\nfunction errorPrefix(fnName, argName) {\r\n return `${fnName} failed: ${argName} argument `;\r\n}\r\n/**\r\n * @param fnName\r\n * @param argumentNumber\r\n * @param namespace\r\n * @param optional\r\n */\r\nfunction validateNamespace(fnName, namespace, optional) {\r\n if (optional && !namespace) {\r\n return;\r\n }\r\n if (typeof namespace !== 'string') {\r\n //TODO: I should do more validation here. We only allow certain chars in namespaces.\r\n throw new Error(errorPrefix(fnName, 'namespace') + 'must be a valid firebase namespace.');\r\n }\r\n}\r\nfunction validateCallback(fnName, argumentName, \r\n// eslint-disable-next-line @typescript-eslint/ban-types\r\ncallback, optional) {\r\n if (optional && !callback) {\r\n return;\r\n }\r\n if (typeof callback !== 'function') {\r\n throw new Error(errorPrefix(fnName, argumentName) + 'must be a valid function.');\r\n }\r\n}\r\nfunction validateContextObject(fnName, argumentName, context, optional) {\r\n if (optional && !context) {\r\n return;\r\n }\r\n if (typeof context !== 'object' || context === null) {\r\n throw new Error(errorPrefix(fnName, argumentName) + 'must be a valid context object.');\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Code originally came from goog.crypt.stringToUtf8ByteArray, but for some reason they\r\n// automatically replaced '\\r\\n' with '\\n', and they didn't handle surrogate pairs,\r\n// so it's been modified.\r\n// Note that not all Unicode characters appear as single characters in JavaScript strings.\r\n// fromCharCode returns the UTF-16 encoding of a character - so some Unicode characters\r\n// use 2 characters in Javascript. All 4-byte UTF-8 characters begin with a first\r\n// character in the range 0xD800 - 0xDBFF (the first character of a so-called surrogate\r\n// pair).\r\n// See http://www.ecma-international.org/ecma-262/5.1/#sec-15.1.3\r\n/**\r\n * @param {string} str\r\n * @return {Array}\r\n */\r\nconst stringToByteArray = function (str) {\r\n const out = [];\r\n let p = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n let c = str.charCodeAt(i);\r\n // Is this the lead surrogate in a surrogate pair?\r\n if (c >= 0xd800 && c <= 0xdbff) {\r\n const high = c - 0xd800; // the high 10 bits.\r\n i++;\r\n assert(i < str.length, 'Surrogate pair missing trail surrogate.');\r\n const low = str.charCodeAt(i) - 0xdc00; // the low 10 bits.\r\n c = 0x10000 + (high << 10) + low;\r\n }\r\n if (c < 128) {\r\n out[p++] = c;\r\n }\r\n else if (c < 2048) {\r\n out[p++] = (c >> 6) | 192;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else if (c < 65536) {\r\n out[p++] = (c >> 12) | 224;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n else {\r\n out[p++] = (c >> 18) | 240;\r\n out[p++] = ((c >> 12) & 63) | 128;\r\n out[p++] = ((c >> 6) & 63) | 128;\r\n out[p++] = (c & 63) | 128;\r\n }\r\n }\r\n return out;\r\n};\r\n/**\r\n * Calculate length without actually converting; useful for doing cheaper validation.\r\n * @param {string} str\r\n * @return {number}\r\n */\r\nconst stringLength = function (str) {\r\n let p = 0;\r\n for (let i = 0; i < str.length; i++) {\r\n const c = str.charCodeAt(i);\r\n if (c < 128) {\r\n p++;\r\n }\r\n else if (c < 2048) {\r\n p += 2;\r\n }\r\n else if (c >= 0xd800 && c <= 0xdbff) {\r\n // Lead surrogate of a surrogate pair. The pair together will take 4 bytes to represent.\r\n p += 4;\r\n i++; // skip trail surrogate.\r\n }\r\n else {\r\n p += 3;\r\n }\r\n }\r\n return p;\r\n};\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * The amount of milliseconds to exponentially increase.\r\n */\r\nconst DEFAULT_INTERVAL_MILLIS = 1000;\r\n/**\r\n * The factor to backoff by.\r\n * Should be a number greater than 1.\r\n */\r\nconst DEFAULT_BACKOFF_FACTOR = 2;\r\n/**\r\n * The maximum milliseconds to increase to.\r\n *\r\n *
Visible for testing\r\n */\r\nconst MAX_VALUE_MILLIS = 4 * 60 * 60 * 1000; // Four hours, like iOS and Android.\r\n/**\r\n * The percentage of backoff time to randomize by.\r\n * See\r\n * http://go/safe-client-behavior#step-1-determine-the-appropriate-retry-interval-to-handle-spike-traffic\r\n * for context.\r\n *\r\n *
Visible for testing\r\n */\r\nconst RANDOM_FACTOR = 0.5;\r\n/**\r\n * Based on the backoff method from\r\n * https://github.com/google/closure-library/blob/master/closure/goog/math/exponentialbackoff.js.\r\n * Extracted here so we don't need to pass metadata and a stateful ExponentialBackoff object around.\r\n */\r\nfunction calculateBackoffMillis(backoffCount, intervalMillis = DEFAULT_INTERVAL_MILLIS, backoffFactor = DEFAULT_BACKOFF_FACTOR) {\r\n // Calculates an exponentially increasing value.\r\n // Deviation: calculates value from count and a constant interval, so we only need to save value\r\n // and count to restore state.\r\n const currBaseValue = intervalMillis * Math.pow(backoffFactor, backoffCount);\r\n // A random \"fuzz\" to avoid waves of retries.\r\n // Deviation: randomFactor is required.\r\n const randomWait = Math.round(\r\n // A fraction of the backoff value to add/subtract.\r\n // Deviation: changes multiplication order to improve readability.\r\n RANDOM_FACTOR *\r\n currBaseValue *\r\n // A random float (rounded to int by Math.round above) in the range [-1, 1]. Determines\r\n // if we add or subtract.\r\n (Math.random() - 0.5) *\r\n 2);\r\n // Limits backoff to max to avoid effectively permanent backoff.\r\n return Math.min(MAX_VALUE_MILLIS, currBaseValue + randomWait);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Provide English ordinal letters after a number\r\n */\r\nfunction ordinal(i) {\r\n if (!Number.isFinite(i)) {\r\n return `${i}`;\r\n }\r\n return i + indicator(i);\r\n}\r\nfunction indicator(i) {\r\n i = Math.abs(i);\r\n const cent = i % 100;\r\n if (cent >= 10 && cent <= 20) {\r\n return 'th';\r\n }\r\n const dec = i % 10;\r\n if (dec === 1) {\r\n return 'st';\r\n }\r\n if (dec === 2) {\r\n return 'nd';\r\n }\r\n if (dec === 3) {\r\n return 'rd';\r\n }\r\n return 'th';\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getModularInstance(service) {\r\n if (service && service._delegate) {\r\n return service._delegate;\r\n }\r\n else {\r\n return service;\r\n }\r\n}\n\nexport { CONSTANTS, Deferred, ErrorFactory, FirebaseError, MAX_VALUE_MILLIS, RANDOM_FACTOR, Sha1, areCookiesEnabled, assert, assertionError, async, base64, base64Decode, base64Encode, base64urlEncodeWithoutPadding, calculateBackoffMillis, contains, createMockUserToken, createSubscribe, decode, deepCopy, deepEqual, deepExtend, errorPrefix, extractQuerystring, getGlobal, getModularInstance, getUA, isAdmin, isBrowser, isBrowserExtension, isElectron, isEmpty, isIE, isIndexedDBAvailable, isMobileCordova, isNode, isNodeSdk, isReactNative, isSafari, isUWP, isValidFormat, isValidTimestamp, issuedAtTime, jsonEval, map, ordinal, querystring, querystringDecode, safeGet, stringLength, stringToByteArray, stringify, validateArgCount, validateCallback, validateContextObject, validateIndexedDBOpenable, validateNamespace };\n//# sourceMappingURL=index.esm2017.js.map\n","import { Deferred } from '@firebase/util';\n\n/**\r\n * Component for service name T, e.g. `auth`, `auth-internal`\r\n */\r\nclass Component {\r\n /**\r\n *\r\n * @param name The public service name, e.g. app, auth, firestore, database\r\n * @param instanceFactory Service factory responsible for creating the public interface\r\n * @param type whether the service provided by the component is public or private\r\n */\r\n constructor(name, instanceFactory, type) {\r\n this.name = name;\r\n this.instanceFactory = instanceFactory;\r\n this.type = type;\r\n this.multipleInstances = false;\r\n /**\r\n * Properties to be added to the service namespace\r\n */\r\n this.serviceProps = {};\r\n this.instantiationMode = \"LAZY\" /* LAZY */;\r\n this.onInstanceCreated = null;\r\n }\r\n setInstantiationMode(mode) {\r\n this.instantiationMode = mode;\r\n return this;\r\n }\r\n setMultipleInstances(multipleInstances) {\r\n this.multipleInstances = multipleInstances;\r\n return this;\r\n }\r\n setServiceProps(props) {\r\n this.serviceProps = props;\r\n return this;\r\n }\r\n setInstanceCreatedCallback(callback) {\r\n this.onInstanceCreated = callback;\r\n return this;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst DEFAULT_ENTRY_NAME = '[DEFAULT]';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Provider for instance for service name T, e.g. 'auth', 'auth-internal'\r\n * NameServiceMapping[T] is an alias for the type of the instance\r\n */\r\nclass Provider {\r\n constructor(name, container) {\r\n this.name = name;\r\n this.container = container;\r\n this.component = null;\r\n this.instances = new Map();\r\n this.instancesDeferred = new Map();\r\n this.instancesOptions = new Map();\r\n this.onInitCallbacks = new Map();\r\n }\r\n /**\r\n * @param identifier A provider can provide mulitple instances of a service\r\n * if this.component.multipleInstances is true.\r\n */\r\n get(identifier) {\r\n // if multipleInstances is not supported, use the default name\r\n const normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\r\n if (!this.instancesDeferred.has(normalizedIdentifier)) {\r\n const deferred = new Deferred();\r\n this.instancesDeferred.set(normalizedIdentifier, deferred);\r\n if (this.isInitialized(normalizedIdentifier) ||\r\n this.shouldAutoInitialize()) {\r\n // initialize the service if it can be auto-initialized\r\n try {\r\n const instance = this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier\r\n });\r\n if (instance) {\r\n deferred.resolve(instance);\r\n }\r\n }\r\n catch (e) {\r\n // when the instance factory throws an exception during get(), it should not cause\r\n // a fatal error. We just return the unresolved promise in this case.\r\n }\r\n }\r\n }\r\n return this.instancesDeferred.get(normalizedIdentifier).promise;\r\n }\r\n getImmediate(options) {\r\n var _a;\r\n // if multipleInstances is not supported, use the default name\r\n const normalizedIdentifier = this.normalizeInstanceIdentifier(options === null || options === void 0 ? void 0 : options.identifier);\r\n const optional = (_a = options === null || options === void 0 ? void 0 : options.optional) !== null && _a !== void 0 ? _a : false;\r\n if (this.isInitialized(normalizedIdentifier) ||\r\n this.shouldAutoInitialize()) {\r\n try {\r\n return this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier\r\n });\r\n }\r\n catch (e) {\r\n if (optional) {\r\n return null;\r\n }\r\n else {\r\n throw e;\r\n }\r\n }\r\n }\r\n else {\r\n // In case a component is not initialized and should/can not be auto-initialized at the moment, return null if the optional flag is set, or throw\r\n if (optional) {\r\n return null;\r\n }\r\n else {\r\n throw Error(`Service ${this.name} is not available`);\r\n }\r\n }\r\n }\r\n getComponent() {\r\n return this.component;\r\n }\r\n setComponent(component) {\r\n if (component.name !== this.name) {\r\n throw Error(`Mismatching Component ${component.name} for Provider ${this.name}.`);\r\n }\r\n if (this.component) {\r\n throw Error(`Component for ${this.name} has already been provided`);\r\n }\r\n this.component = component;\r\n // return early without attempting to initialize the component if the component requires explicit initialization (calling `Provider.initialize()`)\r\n if (!this.shouldAutoInitialize()) {\r\n return;\r\n }\r\n // if the service is eager, initialize the default instance\r\n if (isComponentEager(component)) {\r\n try {\r\n this.getOrInitializeService({ instanceIdentifier: DEFAULT_ENTRY_NAME });\r\n }\r\n catch (e) {\r\n // when the instance factory for an eager Component throws an exception during the eager\r\n // initialization, it should not cause a fatal error.\r\n // TODO: Investigate if we need to make it configurable, because some component may want to cause\r\n // a fatal error in this case?\r\n }\r\n }\r\n // Create service instances for the pending promises and resolve them\r\n // NOTE: if this.multipleInstances is false, only the default instance will be created\r\n // and all promises with resolve with it regardless of the identifier.\r\n for (const [instanceIdentifier, instanceDeferred] of this.instancesDeferred.entries()) {\r\n const normalizedIdentifier = this.normalizeInstanceIdentifier(instanceIdentifier);\r\n try {\r\n // `getOrInitializeService()` should always return a valid instance since a component is guaranteed. use ! to make typescript happy.\r\n const instance = this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier\r\n });\r\n instanceDeferred.resolve(instance);\r\n }\r\n catch (e) {\r\n // when the instance factory throws an exception, it should not cause\r\n // a fatal error. We just leave the promise unresolved.\r\n }\r\n }\r\n }\r\n clearInstance(identifier = DEFAULT_ENTRY_NAME) {\r\n this.instancesDeferred.delete(identifier);\r\n this.instancesOptions.delete(identifier);\r\n this.instances.delete(identifier);\r\n }\r\n // app.delete() will call this method on every provider to delete the services\r\n // TODO: should we mark the provider as deleted?\r\n async delete() {\r\n const services = Array.from(this.instances.values());\r\n await Promise.all([\r\n ...services\r\n .filter(service => 'INTERNAL' in service) // legacy services\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .map(service => service.INTERNAL.delete()),\r\n ...services\r\n .filter(service => '_delete' in service) // modularized services\r\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\r\n .map(service => service._delete())\r\n ]);\r\n }\r\n isComponentSet() {\r\n return this.component != null;\r\n }\r\n isInitialized(identifier = DEFAULT_ENTRY_NAME) {\r\n return this.instances.has(identifier);\r\n }\r\n getOptions(identifier = DEFAULT_ENTRY_NAME) {\r\n return this.instancesOptions.get(identifier) || {};\r\n }\r\n initialize(opts = {}) {\r\n const { options = {} } = opts;\r\n const normalizedIdentifier = this.normalizeInstanceIdentifier(opts.instanceIdentifier);\r\n if (this.isInitialized(normalizedIdentifier)) {\r\n throw Error(`${this.name}(${normalizedIdentifier}) has already been initialized`);\r\n }\r\n if (!this.isComponentSet()) {\r\n throw Error(`Component ${this.name} has not been registered yet`);\r\n }\r\n const instance = this.getOrInitializeService({\r\n instanceIdentifier: normalizedIdentifier,\r\n options\r\n });\r\n // resolve any pending promise waiting for the service instance\r\n for (const [instanceIdentifier, instanceDeferred] of this.instancesDeferred.entries()) {\r\n const normalizedDeferredIdentifier = this.normalizeInstanceIdentifier(instanceIdentifier);\r\n if (normalizedIdentifier === normalizedDeferredIdentifier) {\r\n instanceDeferred.resolve(instance);\r\n }\r\n }\r\n return instance;\r\n }\r\n /**\r\n *\r\n * @param callback - a function that will be invoked after the provider has been initialized by calling provider.initialize().\r\n * The function is invoked SYNCHRONOUSLY, so it should not execute any longrunning tasks in order to not block the program.\r\n *\r\n * @param identifier An optional instance identifier\r\n * @returns a function to unregister the callback\r\n */\r\n onInit(callback, identifier) {\r\n var _a;\r\n const normalizedIdentifier = this.normalizeInstanceIdentifier(identifier);\r\n const existingCallbacks = (_a = this.onInitCallbacks.get(normalizedIdentifier)) !== null && _a !== void 0 ? _a : new Set();\r\n existingCallbacks.add(callback);\r\n this.onInitCallbacks.set(normalizedIdentifier, existingCallbacks);\r\n const existingInstance = this.instances.get(normalizedIdentifier);\r\n if (existingInstance) {\r\n callback(existingInstance, normalizedIdentifier);\r\n }\r\n return () => {\r\n existingCallbacks.delete(callback);\r\n };\r\n }\r\n /**\r\n * Invoke onInit callbacks synchronously\r\n * @param instance the service instance`\r\n */\r\n invokeOnInitCallbacks(instance, identifier) {\r\n const callbacks = this.onInitCallbacks.get(identifier);\r\n if (!callbacks) {\r\n return;\r\n }\r\n for (const callback of callbacks) {\r\n try {\r\n callback(instance, identifier);\r\n }\r\n catch (_a) {\r\n // ignore errors in the onInit callback\r\n }\r\n }\r\n }\r\n getOrInitializeService({ instanceIdentifier, options = {} }) {\r\n let instance = this.instances.get(instanceIdentifier);\r\n if (!instance && this.component) {\r\n instance = this.component.instanceFactory(this.container, {\r\n instanceIdentifier: normalizeIdentifierForFactory(instanceIdentifier),\r\n options\r\n });\r\n this.instances.set(instanceIdentifier, instance);\r\n this.instancesOptions.set(instanceIdentifier, options);\r\n /**\r\n * Invoke onInit listeners.\r\n * Note this.component.onInstanceCreated is different, which is used by the component creator,\r\n * while onInit listeners are registered by consumers of the provider.\r\n */\r\n this.invokeOnInitCallbacks(instance, instanceIdentifier);\r\n /**\r\n * Order is important\r\n * onInstanceCreated() should be called after this.instances.set(instanceIdentifier, instance); which\r\n * makes `isInitialized()` return true.\r\n */\r\n if (this.component.onInstanceCreated) {\r\n try {\r\n this.component.onInstanceCreated(this.container, instanceIdentifier, instance);\r\n }\r\n catch (_a) {\r\n // ignore errors in the onInstanceCreatedCallback\r\n }\r\n }\r\n }\r\n return instance || null;\r\n }\r\n normalizeInstanceIdentifier(identifier = DEFAULT_ENTRY_NAME) {\r\n if (this.component) {\r\n return this.component.multipleInstances ? identifier : DEFAULT_ENTRY_NAME;\r\n }\r\n else {\r\n return identifier; // assume multiple instances are supported before the component is provided.\r\n }\r\n }\r\n shouldAutoInitialize() {\r\n return (!!this.component &&\r\n this.component.instantiationMode !== \"EXPLICIT\" /* EXPLICIT */);\r\n }\r\n}\r\n// undefined should be passed to the service factory for the default instance\r\nfunction normalizeIdentifierForFactory(identifier) {\r\n return identifier === DEFAULT_ENTRY_NAME ? undefined : identifier;\r\n}\r\nfunction isComponentEager(component) {\r\n return component.instantiationMode === \"EAGER\" /* EAGER */;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * ComponentContainer that provides Providers for service name T, e.g. `auth`, `auth-internal`\r\n */\r\nclass ComponentContainer {\r\n constructor(name) {\r\n this.name = name;\r\n this.providers = new Map();\r\n }\r\n /**\r\n *\r\n * @param component Component being added\r\n * @param overwrite When a component with the same name has already been registered,\r\n * if overwrite is true: overwrite the existing component with the new component and create a new\r\n * provider with the new component. It can be useful in tests where you want to use different mocks\r\n * for different tests.\r\n * if overwrite is false: throw an exception\r\n */\r\n addComponent(component) {\r\n const provider = this.getProvider(component.name);\r\n if (provider.isComponentSet()) {\r\n throw new Error(`Component ${component.name} has already been registered with ${this.name}`);\r\n }\r\n provider.setComponent(component);\r\n }\r\n addOrOverwriteComponent(component) {\r\n const provider = this.getProvider(component.name);\r\n if (provider.isComponentSet()) {\r\n // delete the existing provider from the container, so we can register the new component\r\n this.providers.delete(component.name);\r\n }\r\n this.addComponent(component);\r\n }\r\n /**\r\n * getProvider provides a type safe interface where it can only be called with a field name\r\n * present in NameServiceMapping interface.\r\n *\r\n * Firebase SDKs providing services should extend NameServiceMapping interface to register\r\n * themselves.\r\n */\r\n getProvider(name) {\r\n if (this.providers.has(name)) {\r\n return this.providers.get(name);\r\n }\r\n // create a Provider for a service that hasn't registered with Firebase\r\n const provider = new Provider(name, this);\r\n this.providers.set(name, provider);\r\n return provider;\r\n }\r\n getProviders() {\r\n return Array.from(this.providers.values());\r\n }\r\n}\n\nexport { Component, ComponentContainer, Provider };\n//# sourceMappingURL=index.esm2017.js.map\n","/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * A container for all of the Logger instances\r\n */\r\nconst instances = [];\r\n/**\r\n * The JS SDK supports 5 log levels and also allows a user the ability to\r\n * silence the logs altogether.\r\n *\r\n * The order is a follows:\r\n * DEBUG < VERBOSE < INFO < WARN < ERROR\r\n *\r\n * All of the log types above the current log level will be captured (i.e. if\r\n * you set the log level to `INFO`, errors will still be logged, but `DEBUG` and\r\n * `VERBOSE` logs will not)\r\n */\r\nvar LogLevel;\r\n(function (LogLevel) {\r\n LogLevel[LogLevel[\"DEBUG\"] = 0] = \"DEBUG\";\r\n LogLevel[LogLevel[\"VERBOSE\"] = 1] = \"VERBOSE\";\r\n LogLevel[LogLevel[\"INFO\"] = 2] = \"INFO\";\r\n LogLevel[LogLevel[\"WARN\"] = 3] = \"WARN\";\r\n LogLevel[LogLevel[\"ERROR\"] = 4] = \"ERROR\";\r\n LogLevel[LogLevel[\"SILENT\"] = 5] = \"SILENT\";\r\n})(LogLevel || (LogLevel = {}));\r\nconst levelStringToEnum = {\r\n 'debug': LogLevel.DEBUG,\r\n 'verbose': LogLevel.VERBOSE,\r\n 'info': LogLevel.INFO,\r\n 'warn': LogLevel.WARN,\r\n 'error': LogLevel.ERROR,\r\n 'silent': LogLevel.SILENT\r\n};\r\n/**\r\n * The default log level\r\n */\r\nconst defaultLogLevel = LogLevel.INFO;\r\n/**\r\n * By default, `console.debug` is not displayed in the developer console (in\r\n * chrome). To avoid forcing users to have to opt-in to these logs twice\r\n * (i.e. once for firebase, and once in the console), we are sending `DEBUG`\r\n * logs to the `console.log` function.\r\n */\r\nconst ConsoleMethod = {\r\n [LogLevel.DEBUG]: 'log',\r\n [LogLevel.VERBOSE]: 'log',\r\n [LogLevel.INFO]: 'info',\r\n [LogLevel.WARN]: 'warn',\r\n [LogLevel.ERROR]: 'error'\r\n};\r\n/**\r\n * The default log handler will forward DEBUG, VERBOSE, INFO, WARN, and ERROR\r\n * messages on to their corresponding console counterparts (if the log method\r\n * is supported by the current log level)\r\n */\r\nconst defaultLogHandler = (instance, logType, ...args) => {\r\n if (logType < instance.logLevel) {\r\n return;\r\n }\r\n const now = new Date().toISOString();\r\n const method = ConsoleMethod[logType];\r\n if (method) {\r\n console[method](`[${now}] ${instance.name}:`, ...args);\r\n }\r\n else {\r\n throw new Error(`Attempted to log a message with an invalid logType (value: ${logType})`);\r\n }\r\n};\r\nclass Logger {\r\n /**\r\n * Gives you an instance of a Logger to capture messages according to\r\n * Firebase's logging scheme.\r\n *\r\n * @param name The name that the logs will be associated with\r\n */\r\n constructor(name) {\r\n this.name = name;\r\n /**\r\n * The log level of the given Logger instance.\r\n */\r\n this._logLevel = defaultLogLevel;\r\n /**\r\n * The main (internal) log handler for the Logger instance.\r\n * Can be set to a new function in internal package code but not by user.\r\n */\r\n this._logHandler = defaultLogHandler;\r\n /**\r\n * The optional, additional, user-defined log handler for the Logger instance.\r\n */\r\n this._userLogHandler = null;\r\n /**\r\n * Capture the current instance for later use\r\n */\r\n instances.push(this);\r\n }\r\n get logLevel() {\r\n return this._logLevel;\r\n }\r\n set logLevel(val) {\r\n if (!(val in LogLevel)) {\r\n throw new TypeError(`Invalid value \"${val}\" assigned to \\`logLevel\\``);\r\n }\r\n this._logLevel = val;\r\n }\r\n // Workaround for setter/getter having to be the same type.\r\n setLogLevel(val) {\r\n this._logLevel = typeof val === 'string' ? levelStringToEnum[val] : val;\r\n }\r\n get logHandler() {\r\n return this._logHandler;\r\n }\r\n set logHandler(val) {\r\n if (typeof val !== 'function') {\r\n throw new TypeError('Value assigned to `logHandler` must be a function');\r\n }\r\n this._logHandler = val;\r\n }\r\n get userLogHandler() {\r\n return this._userLogHandler;\r\n }\r\n set userLogHandler(val) {\r\n this._userLogHandler = val;\r\n }\r\n /**\r\n * The functions below are all based on the `console` interface\r\n */\r\n debug(...args) {\r\n this._userLogHandler && this._userLogHandler(this, LogLevel.DEBUG, ...args);\r\n this._logHandler(this, LogLevel.DEBUG, ...args);\r\n }\r\n log(...args) {\r\n this._userLogHandler &&\r\n this._userLogHandler(this, LogLevel.VERBOSE, ...args);\r\n this._logHandler(this, LogLevel.VERBOSE, ...args);\r\n }\r\n info(...args) {\r\n this._userLogHandler && this._userLogHandler(this, LogLevel.INFO, ...args);\r\n this._logHandler(this, LogLevel.INFO, ...args);\r\n }\r\n warn(...args) {\r\n this._userLogHandler && this._userLogHandler(this, LogLevel.WARN, ...args);\r\n this._logHandler(this, LogLevel.WARN, ...args);\r\n }\r\n error(...args) {\r\n this._userLogHandler && this._userLogHandler(this, LogLevel.ERROR, ...args);\r\n this._logHandler(this, LogLevel.ERROR, ...args);\r\n }\r\n}\r\nfunction setLogLevel(level) {\r\n instances.forEach(inst => {\r\n inst.setLogLevel(level);\r\n });\r\n}\r\nfunction setUserLogHandler(logCallback, options) {\r\n for (const instance of instances) {\r\n let customLogLevel = null;\r\n if (options && options.level) {\r\n customLogLevel = levelStringToEnum[options.level];\r\n }\r\n if (logCallback === null) {\r\n instance.userLogHandler = null;\r\n }\r\n else {\r\n instance.userLogHandler = (instance, level, ...args) => {\r\n const message = args\r\n .map(arg => {\r\n if (arg == null) {\r\n return null;\r\n }\r\n else if (typeof arg === 'string') {\r\n return arg;\r\n }\r\n else if (typeof arg === 'number' || typeof arg === 'boolean') {\r\n return arg.toString();\r\n }\r\n else if (arg instanceof Error) {\r\n return arg.message;\r\n }\r\n else {\r\n try {\r\n return JSON.stringify(arg);\r\n }\r\n catch (ignored) {\r\n return null;\r\n }\r\n }\r\n })\r\n .filter(arg => arg)\r\n .join(' ');\r\n if (level >= (customLogLevel !== null && customLogLevel !== void 0 ? customLogLevel : instance.logLevel)) {\r\n logCallback({\r\n level: LogLevel[level].toLowerCase(),\r\n message,\r\n args,\r\n type: instance.name\r\n });\r\n }\r\n };\r\n }\r\n }\r\n}\n\nexport { LogLevel, Logger, setLogLevel, setUserLogHandler };\n//# sourceMappingURL=index.esm2017.js.map\n","const instanceOfAny = (object, constructors) => constructors.some((c) => object instanceof c);\n\nlet idbProxyableTypes;\nlet cursorAdvanceMethods;\n// This is a function to prevent it throwing up in node environments.\nfunction getIdbProxyableTypes() {\n return (idbProxyableTypes ||\n (idbProxyableTypes = [\n IDBDatabase,\n IDBObjectStore,\n IDBIndex,\n IDBCursor,\n IDBTransaction,\n ]));\n}\n// This is a function to prevent it throwing up in node environments.\nfunction getCursorAdvanceMethods() {\n return (cursorAdvanceMethods ||\n (cursorAdvanceMethods = [\n IDBCursor.prototype.advance,\n IDBCursor.prototype.continue,\n IDBCursor.prototype.continuePrimaryKey,\n ]));\n}\nconst cursorRequestMap = new WeakMap();\nconst transactionDoneMap = new WeakMap();\nconst transactionStoreNamesMap = new WeakMap();\nconst transformCache = new WeakMap();\nconst reverseTransformCache = new WeakMap();\nfunction promisifyRequest(request) {\n const promise = new Promise((resolve, reject) => {\n const unlisten = () => {\n request.removeEventListener('success', success);\n request.removeEventListener('error', error);\n };\n const success = () => {\n resolve(wrap(request.result));\n unlisten();\n };\n const error = () => {\n reject(request.error);\n unlisten();\n };\n request.addEventListener('success', success);\n request.addEventListener('error', error);\n });\n promise\n .then((value) => {\n // Since cursoring reuses the IDBRequest (*sigh*), we cache it for later retrieval\n // (see wrapFunction).\n if (value instanceof IDBCursor) {\n cursorRequestMap.set(value, request);\n }\n // Catching to avoid \"Uncaught Promise exceptions\"\n })\n .catch(() => { });\n // This mapping exists in reverseTransformCache but doesn't doesn't exist in transformCache. This\n // is because we create many promises from a single IDBRequest.\n reverseTransformCache.set(promise, request);\n return promise;\n}\nfunction cacheDonePromiseForTransaction(tx) {\n // Early bail if we've already created a done promise for this transaction.\n if (transactionDoneMap.has(tx))\n return;\n const done = new Promise((resolve, reject) => {\n const unlisten = () => {\n tx.removeEventListener('complete', complete);\n tx.removeEventListener('error', error);\n tx.removeEventListener('abort', error);\n };\n const complete = () => {\n resolve();\n unlisten();\n };\n const error = () => {\n reject(tx.error || new DOMException('AbortError', 'AbortError'));\n unlisten();\n };\n tx.addEventListener('complete', complete);\n tx.addEventListener('error', error);\n tx.addEventListener('abort', error);\n });\n // Cache it for later retrieval.\n transactionDoneMap.set(tx, done);\n}\nlet idbProxyTraps = {\n get(target, prop, receiver) {\n if (target instanceof IDBTransaction) {\n // Special handling for transaction.done.\n if (prop === 'done')\n return transactionDoneMap.get(target);\n // Polyfill for objectStoreNames because of Edge.\n if (prop === 'objectStoreNames') {\n return target.objectStoreNames || transactionStoreNamesMap.get(target);\n }\n // Make tx.store return the only store in the transaction, or undefined if there are many.\n if (prop === 'store') {\n return receiver.objectStoreNames[1]\n ? undefined\n : receiver.objectStore(receiver.objectStoreNames[0]);\n }\n }\n // Else transform whatever we get back.\n return wrap(target[prop]);\n },\n set(target, prop, value) {\n target[prop] = value;\n return true;\n },\n has(target, prop) {\n if (target instanceof IDBTransaction &&\n (prop === 'done' || prop === 'store')) {\n return true;\n }\n return prop in target;\n },\n};\nfunction replaceTraps(callback) {\n idbProxyTraps = callback(idbProxyTraps);\n}\nfunction wrapFunction(func) {\n // Due to expected object equality (which is enforced by the caching in `wrap`), we\n // only create one new func per func.\n // Edge doesn't support objectStoreNames (booo), so we polyfill it here.\n if (func === IDBDatabase.prototype.transaction &&\n !('objectStoreNames' in IDBTransaction.prototype)) {\n return function (storeNames, ...args) {\n const tx = func.call(unwrap(this), storeNames, ...args);\n transactionStoreNamesMap.set(tx, storeNames.sort ? storeNames.sort() : [storeNames]);\n return wrap(tx);\n };\n }\n // Cursor methods are special, as the behaviour is a little more different to standard IDB. In\n // IDB, you advance the cursor and wait for a new 'success' on the IDBRequest that gave you the\n // cursor. It's kinda like a promise that can resolve with many values. That doesn't make sense\n // with real promises, so each advance methods returns a new promise for the cursor object, or\n // undefined if the end of the cursor has been reached.\n if (getCursorAdvanceMethods().includes(func)) {\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n func.apply(unwrap(this), args);\n return wrap(cursorRequestMap.get(this));\n };\n }\n return function (...args) {\n // Calling the original function with the proxy as 'this' causes ILLEGAL INVOCATION, so we use\n // the original object.\n return wrap(func.apply(unwrap(this), args));\n };\n}\nfunction transformCachableValue(value) {\n if (typeof value === 'function')\n return wrapFunction(value);\n // This doesn't return, it just creates a 'done' promise for the transaction,\n // which is later returned for transaction.done (see idbObjectHandler).\n if (value instanceof IDBTransaction)\n cacheDonePromiseForTransaction(value);\n if (instanceOfAny(value, getIdbProxyableTypes()))\n return new Proxy(value, idbProxyTraps);\n // Return the same value back if we're not going to transform it.\n return value;\n}\nfunction wrap(value) {\n // We sometimes generate multiple promises from a single IDBRequest (eg when cursoring), because\n // IDB is weird and a single IDBRequest can yield many responses, so these can't be cached.\n if (value instanceof IDBRequest)\n return promisifyRequest(value);\n // If we've already transformed this value before, reuse the transformed value.\n // This is faster, but it also provides object equality.\n if (transformCache.has(value))\n return transformCache.get(value);\n const newValue = transformCachableValue(value);\n // Not all types are transformed.\n // These may be primitive types, so they can't be WeakMap keys.\n if (newValue !== value) {\n transformCache.set(value, newValue);\n reverseTransformCache.set(newValue, value);\n }\n return newValue;\n}\nconst unwrap = (value) => reverseTransformCache.get(value);\n\nexport { reverseTransformCache as a, instanceOfAny as i, replaceTraps as r, unwrap as u, wrap as w };\n","import { w as wrap, r as replaceTraps } from './wrap-idb-value.js';\nexport { u as unwrap, w as wrap } from './wrap-idb-value.js';\n\n/**\n * Open a database.\n *\n * @param name Name of the database.\n * @param version Schema version.\n * @param callbacks Additional callbacks.\n */\nfunction openDB(name, version, { blocked, upgrade, blocking, terminated } = {}) {\n const request = indexedDB.open(name, version);\n const openPromise = wrap(request);\n if (upgrade) {\n request.addEventListener('upgradeneeded', (event) => {\n upgrade(wrap(request.result), event.oldVersion, event.newVersion, wrap(request.transaction));\n });\n }\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n openPromise\n .then((db) => {\n if (terminated)\n db.addEventListener('close', () => terminated());\n if (blocking)\n db.addEventListener('versionchange', () => blocking());\n })\n .catch(() => { });\n return openPromise;\n}\n/**\n * Delete a database.\n *\n * @param name Name of the database.\n */\nfunction deleteDB(name, { blocked } = {}) {\n const request = indexedDB.deleteDatabase(name);\n if (blocked)\n request.addEventListener('blocked', () => blocked());\n return wrap(request).then(() => undefined);\n}\n\nconst readMethods = ['get', 'getKey', 'getAll', 'getAllKeys', 'count'];\nconst writeMethods = ['put', 'add', 'delete', 'clear'];\nconst cachedMethods = new Map();\nfunction getMethod(target, prop) {\n if (!(target instanceof IDBDatabase &&\n !(prop in target) &&\n typeof prop === 'string')) {\n return;\n }\n if (cachedMethods.get(prop))\n return cachedMethods.get(prop);\n const targetFuncName = prop.replace(/FromIndex$/, '');\n const useIndex = prop !== targetFuncName;\n const isWrite = writeMethods.includes(targetFuncName);\n if (\n // Bail if the target doesn't exist on the target. Eg, getAll isn't in Edge.\n !(targetFuncName in (useIndex ? IDBIndex : IDBObjectStore).prototype) ||\n !(isWrite || readMethods.includes(targetFuncName))) {\n return;\n }\n const method = async function (storeName, ...args) {\n // isWrite ? 'readwrite' : undefined gzipps better, but fails in Edge :(\n const tx = this.transaction(storeName, isWrite ? 'readwrite' : 'readonly');\n let target = tx.store;\n if (useIndex)\n target = target.index(args.shift());\n // Must reject if op rejects.\n // If it's a write operation, must reject if tx.done rejects.\n // Must reject with op rejection first.\n // Must resolve with op value.\n // Must handle both promises (no unhandled rejections)\n return (await Promise.all([\n target[targetFuncName](...args),\n isWrite && tx.done,\n ]))[0];\n };\n cachedMethods.set(prop, method);\n return method;\n}\nreplaceTraps((oldTraps) => ({\n ...oldTraps,\n get: (target, prop, receiver) => getMethod(target, prop) || oldTraps.get(target, prop, receiver),\n has: (target, prop) => !!getMethod(target, prop) || oldTraps.has(target, prop),\n}));\n\nexport { deleteDB, openDB };\n","import { Component, ComponentContainer } from '@firebase/component';\nimport { Logger, setUserLogHandler, setLogLevel as setLogLevel$1 } from '@firebase/logger';\nimport { ErrorFactory, deepEqual, base64urlEncodeWithoutPadding, isIndexedDBAvailable, validateIndexedDBOpenable } from '@firebase/util';\nexport { FirebaseError } from '@firebase/util';\nimport { openDB } from 'idb';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass PlatformLoggerServiceImpl {\r\n constructor(container) {\r\n this.container = container;\r\n }\r\n // In initial implementation, this will be called by installations on\r\n // auth token refresh, and installations will send this string.\r\n getPlatformInfoString() {\r\n const providers = this.container.getProviders();\r\n // Loop through providers and get library/version pairs from any that are\r\n // version components.\r\n return providers\r\n .map(provider => {\r\n if (isVersionServiceProvider(provider)) {\r\n const service = provider.getImmediate();\r\n return `${service.library}/${service.version}`;\r\n }\r\n else {\r\n return null;\r\n }\r\n })\r\n .filter(logString => logString)\r\n .join(' ');\r\n }\r\n}\r\n/**\r\n *\r\n * @param provider check if this provider provides a VersionService\r\n *\r\n * NOTE: Using Provider<'app-version'> is a hack to indicate that the provider\r\n * provides VersionService. The provider is not necessarily a 'app-version'\r\n * provider.\r\n */\r\nfunction isVersionServiceProvider(provider) {\r\n const component = provider.getComponent();\r\n return (component === null || component === void 0 ? void 0 : component.type) === \"VERSION\" /* VERSION */;\r\n}\n\nconst name$o = \"@firebase/app\";\nconst version$1 = \"0.7.24\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst logger = new Logger('@firebase/app');\n\nconst name$n = \"@firebase/app-compat\";\n\nconst name$m = \"@firebase/analytics-compat\";\n\nconst name$l = \"@firebase/analytics\";\n\nconst name$k = \"@firebase/app-check-compat\";\n\nconst name$j = \"@firebase/app-check\";\n\nconst name$i = \"@firebase/auth\";\n\nconst name$h = \"@firebase/auth-compat\";\n\nconst name$g = \"@firebase/database\";\n\nconst name$f = \"@firebase/database-compat\";\n\nconst name$e = \"@firebase/functions\";\n\nconst name$d = \"@firebase/functions-compat\";\n\nconst name$c = \"@firebase/installations\";\n\nconst name$b = \"@firebase/installations-compat\";\n\nconst name$a = \"@firebase/messaging\";\n\nconst name$9 = \"@firebase/messaging-compat\";\n\nconst name$8 = \"@firebase/performance\";\n\nconst name$7 = \"@firebase/performance-compat\";\n\nconst name$6 = \"@firebase/remote-config\";\n\nconst name$5 = \"@firebase/remote-config-compat\";\n\nconst name$4 = \"@firebase/storage\";\n\nconst name$3 = \"@firebase/storage-compat\";\n\nconst name$2 = \"@firebase/firestore\";\n\nconst name$1 = \"@firebase/firestore-compat\";\n\nconst name = \"firebase\";\nconst version = \"9.8.1\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * The default app name\r\n *\r\n * @internal\r\n */\r\nconst DEFAULT_ENTRY_NAME = '[DEFAULT]';\r\nconst PLATFORM_LOG_STRING = {\r\n [name$o]: 'fire-core',\r\n [name$n]: 'fire-core-compat',\r\n [name$l]: 'fire-analytics',\r\n [name$m]: 'fire-analytics-compat',\r\n [name$j]: 'fire-app-check',\r\n [name$k]: 'fire-app-check-compat',\r\n [name$i]: 'fire-auth',\r\n [name$h]: 'fire-auth-compat',\r\n [name$g]: 'fire-rtdb',\r\n [name$f]: 'fire-rtdb-compat',\r\n [name$e]: 'fire-fn',\r\n [name$d]: 'fire-fn-compat',\r\n [name$c]: 'fire-iid',\r\n [name$b]: 'fire-iid-compat',\r\n [name$a]: 'fire-fcm',\r\n [name$9]: 'fire-fcm-compat',\r\n [name$8]: 'fire-perf',\r\n [name$7]: 'fire-perf-compat',\r\n [name$6]: 'fire-rc',\r\n [name$5]: 'fire-rc-compat',\r\n [name$4]: 'fire-gcs',\r\n [name$3]: 'fire-gcs-compat',\r\n [name$2]: 'fire-fst',\r\n [name$1]: 'fire-fst-compat',\r\n 'fire-js': 'fire-js',\r\n [name]: 'fire-js-all'\r\n};\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * @internal\r\n */\r\nconst _apps = new Map();\r\n/**\r\n * Registered components.\r\n *\r\n * @internal\r\n */\r\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\r\nconst _components = new Map();\r\n/**\r\n * @param component - the component being added to this app's container\r\n *\r\n * @internal\r\n */\r\nfunction _addComponent(app, component) {\r\n try {\r\n app.container.addComponent(component);\r\n }\r\n catch (e) {\r\n logger.debug(`Component ${component.name} failed to register with FirebaseApp ${app.name}`, e);\r\n }\r\n}\r\n/**\r\n *\r\n * @internal\r\n */\r\nfunction _addOrOverwriteComponent(app, component) {\r\n app.container.addOrOverwriteComponent(component);\r\n}\r\n/**\r\n *\r\n * @param component - the component to register\r\n * @returns whether or not the component is registered successfully\r\n *\r\n * @internal\r\n */\r\nfunction _registerComponent(component) {\r\n const componentName = component.name;\r\n if (_components.has(componentName)) {\r\n logger.debug(`There were multiple attempts to register component ${componentName}.`);\r\n return false;\r\n }\r\n _components.set(componentName, component);\r\n // add the component to existing app instances\r\n for (const app of _apps.values()) {\r\n _addComponent(app, component);\r\n }\r\n return true;\r\n}\r\n/**\r\n *\r\n * @param app - FirebaseApp instance\r\n * @param name - service name\r\n *\r\n * @returns the provider for the service with the matching name\r\n *\r\n * @internal\r\n */\r\nfunction _getProvider(app, name) {\r\n const heartbeatController = app.container\r\n .getProvider('heartbeat')\r\n .getImmediate({ optional: true });\r\n if (heartbeatController) {\r\n void heartbeatController.triggerHeartbeat();\r\n }\r\n return app.container.getProvider(name);\r\n}\r\n/**\r\n *\r\n * @param app - FirebaseApp instance\r\n * @param name - service name\r\n * @param instanceIdentifier - service instance identifier in case the service supports multiple instances\r\n *\r\n * @internal\r\n */\r\nfunction _removeServiceInstance(app, name, instanceIdentifier = DEFAULT_ENTRY_NAME) {\r\n _getProvider(app, name).clearInstance(instanceIdentifier);\r\n}\r\n/**\r\n * Test only\r\n *\r\n * @internal\r\n */\r\nfunction _clearComponents() {\r\n _components.clear();\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst ERRORS = {\r\n [\"no-app\" /* NO_APP */]: \"No Firebase App '{$appName}' has been created - \" +\r\n 'call Firebase App.initializeApp()',\r\n [\"bad-app-name\" /* BAD_APP_NAME */]: \"Illegal App name: '{$appName}\",\r\n [\"duplicate-app\" /* DUPLICATE_APP */]: \"Firebase App named '{$appName}' already exists with different options or config\",\r\n [\"app-deleted\" /* APP_DELETED */]: \"Firebase App named '{$appName}' already deleted\",\r\n [\"invalid-app-argument\" /* INVALID_APP_ARGUMENT */]: 'firebase.{$appName}() takes either no argument or a ' +\r\n 'Firebase App instance.',\r\n [\"invalid-log-argument\" /* INVALID_LOG_ARGUMENT */]: 'First argument to `onLog` must be null or a function.',\r\n [\"storage-open\" /* STORAGE_OPEN */]: 'Error thrown when opening storage. Original error: {$originalErrorMessage}.',\r\n [\"storage-get\" /* STORAGE_GET */]: 'Error thrown when reading from storage. Original error: {$originalErrorMessage}.',\r\n [\"storage-set\" /* STORAGE_WRITE */]: 'Error thrown when writing to storage. Original error: {$originalErrorMessage}.',\r\n [\"storage-delete\" /* STORAGE_DELETE */]: 'Error thrown when deleting from storage. Original error: {$originalErrorMessage}.'\r\n};\r\nconst ERROR_FACTORY = new ErrorFactory('app', 'Firebase', ERRORS);\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass FirebaseAppImpl {\r\n constructor(options, config, container) {\r\n this._isDeleted = false;\r\n this._options = Object.assign({}, options);\r\n this._config = Object.assign({}, config);\r\n this._name = config.name;\r\n this._automaticDataCollectionEnabled =\r\n config.automaticDataCollectionEnabled;\r\n this._container = container;\r\n this.container.addComponent(new Component('app', () => this, \"PUBLIC\" /* PUBLIC */));\r\n }\r\n get automaticDataCollectionEnabled() {\r\n this.checkDestroyed();\r\n return this._automaticDataCollectionEnabled;\r\n }\r\n set automaticDataCollectionEnabled(val) {\r\n this.checkDestroyed();\r\n this._automaticDataCollectionEnabled = val;\r\n }\r\n get name() {\r\n this.checkDestroyed();\r\n return this._name;\r\n }\r\n get options() {\r\n this.checkDestroyed();\r\n return this._options;\r\n }\r\n get config() {\r\n this.checkDestroyed();\r\n return this._config;\r\n }\r\n get container() {\r\n return this._container;\r\n }\r\n get isDeleted() {\r\n return this._isDeleted;\r\n }\r\n set isDeleted(val) {\r\n this._isDeleted = val;\r\n }\r\n /**\r\n * This function will throw an Error if the App has already been deleted -\r\n * use before performing API actions on the App.\r\n */\r\n checkDestroyed() {\r\n if (this.isDeleted) {\r\n throw ERROR_FACTORY.create(\"app-deleted\" /* APP_DELETED */, { appName: this._name });\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * The current SDK version.\r\n *\r\n * @public\r\n */\r\nconst SDK_VERSION = version;\r\nfunction initializeApp(options, rawConfig = {}) {\r\n if (typeof rawConfig !== 'object') {\r\n const name = rawConfig;\r\n rawConfig = { name };\r\n }\r\n const config = Object.assign({ name: DEFAULT_ENTRY_NAME, automaticDataCollectionEnabled: false }, rawConfig);\r\n const name = config.name;\r\n if (typeof name !== 'string' || !name) {\r\n throw ERROR_FACTORY.create(\"bad-app-name\" /* BAD_APP_NAME */, {\r\n appName: String(name)\r\n });\r\n }\r\n const existingApp = _apps.get(name);\r\n if (existingApp) {\r\n // return the existing app if options and config deep equal the ones in the existing app.\r\n if (deepEqual(options, existingApp.options) &&\r\n deepEqual(config, existingApp.config)) {\r\n return existingApp;\r\n }\r\n else {\r\n throw ERROR_FACTORY.create(\"duplicate-app\" /* DUPLICATE_APP */, { appName: name });\r\n }\r\n }\r\n const container = new ComponentContainer(name);\r\n for (const component of _components.values()) {\r\n container.addComponent(component);\r\n }\r\n const newApp = new FirebaseAppImpl(options, config, container);\r\n _apps.set(name, newApp);\r\n return newApp;\r\n}\r\n/**\r\n * Retrieves a {@link @firebase/app#FirebaseApp} instance.\r\n *\r\n * When called with no arguments, the default app is returned. When an app name\r\n * is provided, the app corresponding to that name is returned.\r\n *\r\n * An exception is thrown if the app being retrieved has not yet been\r\n * initialized.\r\n *\r\n * @example\r\n * ```javascript\r\n * // Return the default app\r\n * const app = getApp();\r\n * ```\r\n *\r\n * @example\r\n * ```javascript\r\n * // Return a named app\r\n * const otherApp = getApp(\"otherApp\");\r\n * ```\r\n *\r\n * @param name - Optional name of the app to return. If no name is\r\n * provided, the default is `\"[DEFAULT]\"`.\r\n *\r\n * @returns The app corresponding to the provided app name.\r\n * If no app name is provided, the default app is returned.\r\n *\r\n * @public\r\n */\r\nfunction getApp(name = DEFAULT_ENTRY_NAME) {\r\n const app = _apps.get(name);\r\n if (!app) {\r\n throw ERROR_FACTORY.create(\"no-app\" /* NO_APP */, { appName: name });\r\n }\r\n return app;\r\n}\r\n/**\r\n * A (read-only) array of all initialized apps.\r\n * @public\r\n */\r\nfunction getApps() {\r\n return Array.from(_apps.values());\r\n}\r\n/**\r\n * Renders this app unusable and frees the resources of all associated\r\n * services.\r\n *\r\n * @example\r\n * ```javascript\r\n * deleteApp(app)\r\n * .then(function() {\r\n * console.log(\"App deleted successfully\");\r\n * })\r\n * .catch(function(error) {\r\n * console.log(\"Error deleting app:\", error);\r\n * });\r\n * ```\r\n *\r\n * @public\r\n */\r\nasync function deleteApp(app) {\r\n const name = app.name;\r\n if (_apps.has(name)) {\r\n _apps.delete(name);\r\n await Promise.all(app.container\r\n .getProviders()\r\n .map(provider => provider.delete()));\r\n app.isDeleted = true;\r\n }\r\n}\r\n/**\r\n * Registers a library's name and version for platform logging purposes.\r\n * @param library - Name of 1p or 3p library (e.g. firestore, angularfire)\r\n * @param version - Current version of that library.\r\n * @param variant - Bundle variant, e.g., node, rn, etc.\r\n *\r\n * @public\r\n */\r\nfunction registerVersion(libraryKeyOrName, version, variant) {\r\n var _a;\r\n // TODO: We can use this check to whitelist strings when/if we set up\r\n // a good whitelist system.\r\n let library = (_a = PLATFORM_LOG_STRING[libraryKeyOrName]) !== null && _a !== void 0 ? _a : libraryKeyOrName;\r\n if (variant) {\r\n library += `-${variant}`;\r\n }\r\n const libraryMismatch = library.match(/\\s|\\//);\r\n const versionMismatch = version.match(/\\s|\\//);\r\n if (libraryMismatch || versionMismatch) {\r\n const warning = [\r\n `Unable to register library \"${library}\" with version \"${version}\":`\r\n ];\r\n if (libraryMismatch) {\r\n warning.push(`library name \"${library}\" contains illegal characters (whitespace or \"/\")`);\r\n }\r\n if (libraryMismatch && versionMismatch) {\r\n warning.push('and');\r\n }\r\n if (versionMismatch) {\r\n warning.push(`version name \"${version}\" contains illegal characters (whitespace or \"/\")`);\r\n }\r\n logger.warn(warning.join(' '));\r\n return;\r\n }\r\n _registerComponent(new Component(`${library}-version`, () => ({ library, version }), \"VERSION\" /* VERSION */));\r\n}\r\n/**\r\n * Sets log handler for all Firebase SDKs.\r\n * @param logCallback - An optional custom log handler that executes user code whenever\r\n * the Firebase SDK makes a logging call.\r\n *\r\n * @public\r\n */\r\nfunction onLog(logCallback, options) {\r\n if (logCallback !== null && typeof logCallback !== 'function') {\r\n throw ERROR_FACTORY.create(\"invalid-log-argument\" /* INVALID_LOG_ARGUMENT */);\r\n }\r\n setUserLogHandler(logCallback, options);\r\n}\r\n/**\r\n * Sets log level for all Firebase SDKs.\r\n *\r\n * All of the log types above the current log level are captured (i.e. if\r\n * you set the log level to `info`, errors are logged, but `debug` and\r\n * `verbose` logs are not).\r\n *\r\n * @public\r\n */\r\nfunction setLogLevel(logLevel) {\r\n setLogLevel$1(logLevel);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst DB_NAME = 'firebase-heartbeat-database';\r\nconst DB_VERSION = 1;\r\nconst STORE_NAME = 'firebase-heartbeat-store';\r\nlet dbPromise = null;\r\nfunction getDbPromise() {\r\n if (!dbPromise) {\r\n dbPromise = openDB(DB_NAME, DB_VERSION, {\r\n upgrade: (db, oldVersion) => {\r\n // We don't use 'break' in this switch statement, the fall-through\r\n // behavior is what we want, because if there are multiple versions between\r\n // the old version and the current version, we want ALL the migrations\r\n // that correspond to those versions to run, not only the last one.\r\n // eslint-disable-next-line default-case\r\n switch (oldVersion) {\r\n case 0:\r\n db.createObjectStore(STORE_NAME);\r\n }\r\n }\r\n }).catch(e => {\r\n throw ERROR_FACTORY.create(\"storage-open\" /* STORAGE_OPEN */, {\r\n originalErrorMessage: e.message\r\n });\r\n });\r\n }\r\n return dbPromise;\r\n}\r\nasync function readHeartbeatsFromIndexedDB(app) {\r\n try {\r\n const db = await getDbPromise();\r\n return db\r\n .transaction(STORE_NAME)\r\n .objectStore(STORE_NAME)\r\n .get(computeKey(app));\r\n }\r\n catch (e) {\r\n throw ERROR_FACTORY.create(\"storage-get\" /* STORAGE_GET */, {\r\n originalErrorMessage: e.message\r\n });\r\n }\r\n}\r\nasync function writeHeartbeatsToIndexedDB(app, heartbeatObject) {\r\n try {\r\n const db = await getDbPromise();\r\n const tx = db.transaction(STORE_NAME, 'readwrite');\r\n const objectStore = tx.objectStore(STORE_NAME);\r\n await objectStore.put(heartbeatObject, computeKey(app));\r\n return tx.done;\r\n }\r\n catch (e) {\r\n throw ERROR_FACTORY.create(\"storage-set\" /* STORAGE_WRITE */, {\r\n originalErrorMessage: e.message\r\n });\r\n }\r\n}\r\nfunction computeKey(app) {\r\n return `${app.name}!${app.options.appId}`;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2021 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst MAX_HEADER_BYTES = 1024;\r\n// 30 days\r\nconst STORED_HEARTBEAT_RETENTION_MAX_MILLIS = 30 * 24 * 60 * 60 * 1000;\r\nclass HeartbeatServiceImpl {\r\n constructor(container) {\r\n this.container = container;\r\n /**\r\n * In-memory cache for heartbeats, used by getHeartbeatsHeader() to generate\r\n * the header string.\r\n * Stores one record per date. This will be consolidated into the standard\r\n * format of one record per user agent string before being sent as a header.\r\n * Populated from indexedDB when the controller is instantiated and should\r\n * be kept in sync with indexedDB.\r\n * Leave public for easier testing.\r\n */\r\n this._heartbeatsCache = null;\r\n const app = this.container.getProvider('app').getImmediate();\r\n this._storage = new HeartbeatStorageImpl(app);\r\n this._heartbeatsCachePromise = this._storage.read().then(result => {\r\n this._heartbeatsCache = result;\r\n return result;\r\n });\r\n }\r\n /**\r\n * Called to report a heartbeat. The function will generate\r\n * a HeartbeatsByUserAgent object, update heartbeatsCache, and persist it\r\n * to IndexedDB.\r\n * Note that we only store one heartbeat per day. So if a heartbeat for today is\r\n * already logged, subsequent calls to this function in the same day will be ignored.\r\n */\r\n async triggerHeartbeat() {\r\n const platformLogger = this.container\r\n .getProvider('platform-logger')\r\n .getImmediate();\r\n // This is the \"Firebase user agent\" string from the platform logger\r\n // service, not the browser user agent.\r\n const agent = platformLogger.getPlatformInfoString();\r\n const date = getUTCDateString();\r\n if (this._heartbeatsCache === null) {\r\n this._heartbeatsCache = await this._heartbeatsCachePromise;\r\n }\r\n // Do not store a heartbeat if one is already stored for this day\r\n // or if a header has already been sent today.\r\n if (this._heartbeatsCache.lastSentHeartbeatDate === date ||\r\n this._heartbeatsCache.heartbeats.some(singleDateHeartbeat => singleDateHeartbeat.date === date)) {\r\n return;\r\n }\r\n else {\r\n // There is no entry for this date. Create one.\r\n this._heartbeatsCache.heartbeats.push({ date, agent });\r\n }\r\n // Remove entries older than 30 days.\r\n this._heartbeatsCache.heartbeats = this._heartbeatsCache.heartbeats.filter(singleDateHeartbeat => {\r\n const hbTimestamp = new Date(singleDateHeartbeat.date).valueOf();\r\n const now = Date.now();\r\n return now - hbTimestamp <= STORED_HEARTBEAT_RETENTION_MAX_MILLIS;\r\n });\r\n return this._storage.overwrite(this._heartbeatsCache);\r\n }\r\n /**\r\n * Returns a base64 encoded string which can be attached to the heartbeat-specific header directly.\r\n * It also clears all heartbeats from memory as well as in IndexedDB.\r\n *\r\n * NOTE: Consuming product SDKs should not send the header if this method\r\n * returns an empty string.\r\n */\r\n async getHeartbeatsHeader() {\r\n if (this._heartbeatsCache === null) {\r\n await this._heartbeatsCachePromise;\r\n }\r\n // If it's still null or the array is empty, there is no data to send.\r\n if (this._heartbeatsCache === null ||\r\n this._heartbeatsCache.heartbeats.length === 0) {\r\n return '';\r\n }\r\n const date = getUTCDateString();\r\n // Extract as many heartbeats from the cache as will fit under the size limit.\r\n const { heartbeatsToSend, unsentEntries } = extractHeartbeatsForHeader(this._heartbeatsCache.heartbeats);\r\n const headerString = base64urlEncodeWithoutPadding(JSON.stringify({ version: 2, heartbeats: heartbeatsToSend }));\r\n // Store last sent date to prevent another being logged/sent for the same day.\r\n this._heartbeatsCache.lastSentHeartbeatDate = date;\r\n if (unsentEntries.length > 0) {\r\n // Store any unsent entries if they exist.\r\n this._heartbeatsCache.heartbeats = unsentEntries;\r\n // This seems more likely than emptying the array (below) to lead to some odd state\r\n // since the cache isn't empty and this will be called again on the next request,\r\n // and is probably safest if we await it.\r\n await this._storage.overwrite(this._heartbeatsCache);\r\n }\r\n else {\r\n this._heartbeatsCache.heartbeats = [];\r\n // Do not wait for this, to reduce latency.\r\n void this._storage.overwrite(this._heartbeatsCache);\r\n }\r\n return headerString;\r\n }\r\n}\r\nfunction getUTCDateString() {\r\n const today = new Date();\r\n // Returns date format 'YYYY-MM-DD'\r\n return today.toISOString().substring(0, 10);\r\n}\r\nfunction extractHeartbeatsForHeader(heartbeatsCache, maxSize = MAX_HEADER_BYTES) {\r\n // Heartbeats grouped by user agent in the standard format to be sent in\r\n // the header.\r\n const heartbeatsToSend = [];\r\n // Single date format heartbeats that are not sent.\r\n let unsentEntries = heartbeatsCache.slice();\r\n for (const singleDateHeartbeat of heartbeatsCache) {\r\n // Look for an existing entry with the same user agent.\r\n const heartbeatEntry = heartbeatsToSend.find(hb => hb.agent === singleDateHeartbeat.agent);\r\n if (!heartbeatEntry) {\r\n // If no entry for this user agent exists, create one.\r\n heartbeatsToSend.push({\r\n agent: singleDateHeartbeat.agent,\r\n dates: [singleDateHeartbeat.date]\r\n });\r\n if (countBytes(heartbeatsToSend) > maxSize) {\r\n // If the header would exceed max size, remove the added heartbeat\r\n // entry and stop adding to the header.\r\n heartbeatsToSend.pop();\r\n break;\r\n }\r\n }\r\n else {\r\n heartbeatEntry.dates.push(singleDateHeartbeat.date);\r\n // If the header would exceed max size, remove the added date\r\n // and stop adding to the header.\r\n if (countBytes(heartbeatsToSend) > maxSize) {\r\n heartbeatEntry.dates.pop();\r\n break;\r\n }\r\n }\r\n // Pop unsent entry from queue. (Skipped if adding the entry exceeded\r\n // quota and the loop breaks early.)\r\n unsentEntries = unsentEntries.slice(1);\r\n }\r\n return {\r\n heartbeatsToSend,\r\n unsentEntries\r\n };\r\n}\r\nclass HeartbeatStorageImpl {\r\n constructor(app) {\r\n this.app = app;\r\n this._canUseIndexedDBPromise = this.runIndexedDBEnvironmentCheck();\r\n }\r\n async runIndexedDBEnvironmentCheck() {\r\n if (!isIndexedDBAvailable()) {\r\n return false;\r\n }\r\n else {\r\n return validateIndexedDBOpenable()\r\n .then(() => true)\r\n .catch(() => false);\r\n }\r\n }\r\n /**\r\n * Read all heartbeats.\r\n */\r\n async read() {\r\n const canUseIndexedDB = await this._canUseIndexedDBPromise;\r\n if (!canUseIndexedDB) {\r\n return { heartbeats: [] };\r\n }\r\n else {\r\n const idbHeartbeatObject = await readHeartbeatsFromIndexedDB(this.app);\r\n return idbHeartbeatObject || { heartbeats: [] };\r\n }\r\n }\r\n // overwrite the storage with the provided heartbeats\r\n async overwrite(heartbeatsObject) {\r\n var _a;\r\n const canUseIndexedDB = await this._canUseIndexedDBPromise;\r\n if (!canUseIndexedDB) {\r\n return;\r\n }\r\n else {\r\n const existingHeartbeatsObject = await this.read();\r\n return writeHeartbeatsToIndexedDB(this.app, {\r\n lastSentHeartbeatDate: (_a = heartbeatsObject.lastSentHeartbeatDate) !== null && _a !== void 0 ? _a : existingHeartbeatsObject.lastSentHeartbeatDate,\r\n heartbeats: heartbeatsObject.heartbeats\r\n });\r\n }\r\n }\r\n // add heartbeats\r\n async add(heartbeatsObject) {\r\n var _a;\r\n const canUseIndexedDB = await this._canUseIndexedDBPromise;\r\n if (!canUseIndexedDB) {\r\n return;\r\n }\r\n else {\r\n const existingHeartbeatsObject = await this.read();\r\n return writeHeartbeatsToIndexedDB(this.app, {\r\n lastSentHeartbeatDate: (_a = heartbeatsObject.lastSentHeartbeatDate) !== null && _a !== void 0 ? _a : existingHeartbeatsObject.lastSentHeartbeatDate,\r\n heartbeats: [\r\n ...existingHeartbeatsObject.heartbeats,\r\n ...heartbeatsObject.heartbeats\r\n ]\r\n });\r\n }\r\n }\r\n}\r\n/**\r\n * Calculate bytes of a HeartbeatsByUserAgent array after being wrapped\r\n * in a platform logging header JSON object, stringified, and converted\r\n * to base 64.\r\n */\r\nfunction countBytes(heartbeatsCache) {\r\n // base64 has a restricted set of characters, all of which should be 1 byte.\r\n return base64urlEncodeWithoutPadding(\r\n // heartbeatsCache wrapper properties\r\n JSON.stringify({ version: 2, heartbeats: heartbeatsCache })).length;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction registerCoreComponents(variant) {\r\n _registerComponent(new Component('platform-logger', container => new PlatformLoggerServiceImpl(container), \"PRIVATE\" /* PRIVATE */));\r\n _registerComponent(new Component('heartbeat', container => new HeartbeatServiceImpl(container), \"PRIVATE\" /* PRIVATE */));\r\n // Register `app` package.\r\n registerVersion(name$o, version$1, variant);\r\n // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\r\n registerVersion(name$o, version$1, 'esm2017');\r\n // Register platform SDK identifier (no version).\r\n registerVersion('fire-js', '');\r\n}\n\n/**\r\n * Firebase App\r\n *\r\n * @remarks This package coordinates the communication between the different Firebase components\r\n * @packageDocumentation\r\n */\r\nregisterCoreComponents('');\n\nexport { SDK_VERSION, DEFAULT_ENTRY_NAME as _DEFAULT_ENTRY_NAME, _addComponent, _addOrOverwriteComponent, _apps, _clearComponents, _components, _getProvider, _registerComponent, _removeServiceInstance, deleteApp, getApp, getApps, initializeApp, onLog, registerVersion, setLogLevel };\n//# sourceMappingURL=index.esm2017.js.map\n","import { registerVersion } from '@firebase/app';\nexport * from '@firebase/app';\n\nvar name = \"firebase\";\nvar version = \"9.8.1\";\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nregisterVersion(name, version, 'app');\n//# sourceMappingURL=index.esm.js.map\n","import { getApp, _getProvider, _registerComponent, registerVersion } from '@firebase/app';\nimport { Component } from '@firebase/component';\nimport { ErrorFactory, FirebaseError } from '@firebase/util';\nimport { openDB } from 'idb';\n\nconst name = \"@firebase/installations\";\nconst version = \"0.5.9\";\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst PENDING_TIMEOUT_MS = 10000;\r\nconst PACKAGE_VERSION = `w:${version}`;\r\nconst INTERNAL_AUTH_VERSION = 'FIS_v2';\r\nconst INSTALLATIONS_API_URL = 'https://firebaseinstallations.googleapis.com/v1';\r\nconst TOKEN_EXPIRATION_BUFFER = 60 * 60 * 1000; // One hour\r\nconst SERVICE = 'installations';\r\nconst SERVICE_NAME = 'Installations';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst ERROR_DESCRIPTION_MAP = {\r\n [\"missing-app-config-values\" /* MISSING_APP_CONFIG_VALUES */]: 'Missing App configuration value: \"{$valueName}\"',\r\n [\"not-registered\" /* NOT_REGISTERED */]: 'Firebase Installation is not registered.',\r\n [\"installation-not-found\" /* INSTALLATION_NOT_FOUND */]: 'Firebase Installation not found.',\r\n [\"request-failed\" /* REQUEST_FAILED */]: '{$requestName} request failed with error \"{$serverCode} {$serverStatus}: {$serverMessage}\"',\r\n [\"app-offline\" /* APP_OFFLINE */]: 'Could not process request. Application offline.',\r\n [\"delete-pending-registration\" /* DELETE_PENDING_REGISTRATION */]: \"Can't delete installation while there is a pending registration request.\"\r\n};\r\nconst ERROR_FACTORY = new ErrorFactory(SERVICE, SERVICE_NAME, ERROR_DESCRIPTION_MAP);\r\n/** Returns true if error is a FirebaseError that is based on an error from the server. */\r\nfunction isServerError(error) {\r\n return (error instanceof FirebaseError &&\r\n error.code.includes(\"request-failed\" /* REQUEST_FAILED */));\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction getInstallationsEndpoint({ projectId }) {\r\n return `${INSTALLATIONS_API_URL}/projects/${projectId}/installations`;\r\n}\r\nfunction extractAuthTokenInfoFromResponse(response) {\r\n return {\r\n token: response.token,\r\n requestStatus: 2 /* COMPLETED */,\r\n expiresIn: getExpiresInFromResponseExpiresIn(response.expiresIn),\r\n creationTime: Date.now()\r\n };\r\n}\r\nasync function getErrorFromResponse(requestName, response) {\r\n const responseJson = await response.json();\r\n const errorData = responseJson.error;\r\n return ERROR_FACTORY.create(\"request-failed\" /* REQUEST_FAILED */, {\r\n requestName,\r\n serverCode: errorData.code,\r\n serverMessage: errorData.message,\r\n serverStatus: errorData.status\r\n });\r\n}\r\nfunction getHeaders({ apiKey }) {\r\n return new Headers({\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n 'x-goog-api-key': apiKey\r\n });\r\n}\r\nfunction getHeadersWithAuth(appConfig, { refreshToken }) {\r\n const headers = getHeaders(appConfig);\r\n headers.append('Authorization', getAuthorizationHeader(refreshToken));\r\n return headers;\r\n}\r\n/**\r\n * Calls the passed in fetch wrapper and returns the response.\r\n * If the returned response has a status of 5xx, re-runs the function once and\r\n * returns the response.\r\n */\r\nasync function retryIfServerError(fn) {\r\n const result = await fn();\r\n if (result.status >= 500 && result.status < 600) {\r\n // Internal Server Error. Retry request.\r\n return fn();\r\n }\r\n return result;\r\n}\r\nfunction getExpiresInFromResponseExpiresIn(responseExpiresIn) {\r\n // This works because the server will never respond with fractions of a second.\r\n return Number(responseExpiresIn.replace('s', '000'));\r\n}\r\nfunction getAuthorizationHeader(refreshToken) {\r\n return `${INTERNAL_AUTH_VERSION} ${refreshToken}`;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function createInstallationRequest({ appConfig, heartbeatServiceProvider }, { fid }) {\r\n const endpoint = getInstallationsEndpoint(appConfig);\r\n const headers = getHeaders(appConfig);\r\n // If heartbeat service exists, add the heartbeat string to the header.\r\n const heartbeatService = heartbeatServiceProvider.getImmediate({\r\n optional: true\r\n });\r\n if (heartbeatService) {\r\n const heartbeatsHeader = await heartbeatService.getHeartbeatsHeader();\r\n if (heartbeatsHeader) {\r\n headers.append('x-firebase-client', heartbeatsHeader);\r\n }\r\n }\r\n const body = {\r\n fid,\r\n authVersion: INTERNAL_AUTH_VERSION,\r\n appId: appConfig.appId,\r\n sdkVersion: PACKAGE_VERSION\r\n };\r\n const request = {\r\n method: 'POST',\r\n headers,\r\n body: JSON.stringify(body)\r\n };\r\n const response = await retryIfServerError(() => fetch(endpoint, request));\r\n if (response.ok) {\r\n const responseValue = await response.json();\r\n const registeredInstallationEntry = {\r\n fid: responseValue.fid || fid,\r\n registrationStatus: 2 /* COMPLETED */,\r\n refreshToken: responseValue.refreshToken,\r\n authToken: extractAuthTokenInfoFromResponse(responseValue.authToken)\r\n };\r\n return registeredInstallationEntry;\r\n }\r\n else {\r\n throw await getErrorFromResponse('Create Installation', response);\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** Returns a promise that resolves after given time passes. */\r\nfunction sleep(ms) {\r\n return new Promise(resolve => {\r\n setTimeout(resolve, ms);\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction bufferToBase64UrlSafe(array) {\r\n const b64 = btoa(String.fromCharCode(...array));\r\n return b64.replace(/\\+/g, '-').replace(/\\//g, '_');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst VALID_FID_PATTERN = /^[cdef][\\w-]{21}$/;\r\nconst INVALID_FID = '';\r\n/**\r\n * Generates a new FID using random values from Web Crypto API.\r\n * Returns an empty string if FID generation fails for any reason.\r\n */\r\nfunction generateFid() {\r\n try {\r\n // A valid FID has exactly 22 base64 characters, which is 132 bits, or 16.5\r\n // bytes. our implementation generates a 17 byte array instead.\r\n const fidByteArray = new Uint8Array(17);\r\n const crypto = self.crypto || self.msCrypto;\r\n crypto.getRandomValues(fidByteArray);\r\n // Replace the first 4 random bits with the constant FID header of 0b0111.\r\n fidByteArray[0] = 0b01110000 + (fidByteArray[0] % 0b00010000);\r\n const fid = encode(fidByteArray);\r\n return VALID_FID_PATTERN.test(fid) ? fid : INVALID_FID;\r\n }\r\n catch (_a) {\r\n // FID generation errored\r\n return INVALID_FID;\r\n }\r\n}\r\n/** Converts a FID Uint8Array to a base64 string representation. */\r\nfunction encode(fidByteArray) {\r\n const b64String = bufferToBase64UrlSafe(fidByteArray);\r\n // Remove the 23rd character that was added because of the extra 4 bits at the\r\n // end of our 17 byte array, and the '=' padding.\r\n return b64String.substr(0, 22);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/** Returns a string key that can be used to identify the app. */\r\nfunction getKey(appConfig) {\r\n return `${appConfig.appName}!${appConfig.appId}`;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst fidChangeCallbacks = new Map();\r\n/**\r\n * Calls the onIdChange callbacks with the new FID value, and broadcasts the\r\n * change to other tabs.\r\n */\r\nfunction fidChanged(appConfig, fid) {\r\n const key = getKey(appConfig);\r\n callFidChangeCallbacks(key, fid);\r\n broadcastFidChange(key, fid);\r\n}\r\nfunction addCallback(appConfig, callback) {\r\n // Open the broadcast channel if it's not already open,\r\n // to be able to listen to change events from other tabs.\r\n getBroadcastChannel();\r\n const key = getKey(appConfig);\r\n let callbackSet = fidChangeCallbacks.get(key);\r\n if (!callbackSet) {\r\n callbackSet = new Set();\r\n fidChangeCallbacks.set(key, callbackSet);\r\n }\r\n callbackSet.add(callback);\r\n}\r\nfunction removeCallback(appConfig, callback) {\r\n const key = getKey(appConfig);\r\n const callbackSet = fidChangeCallbacks.get(key);\r\n if (!callbackSet) {\r\n return;\r\n }\r\n callbackSet.delete(callback);\r\n if (callbackSet.size === 0) {\r\n fidChangeCallbacks.delete(key);\r\n }\r\n // Close broadcast channel if there are no more callbacks.\r\n closeBroadcastChannel();\r\n}\r\nfunction callFidChangeCallbacks(key, fid) {\r\n const callbacks = fidChangeCallbacks.get(key);\r\n if (!callbacks) {\r\n return;\r\n }\r\n for (const callback of callbacks) {\r\n callback(fid);\r\n }\r\n}\r\nfunction broadcastFidChange(key, fid) {\r\n const channel = getBroadcastChannel();\r\n if (channel) {\r\n channel.postMessage({ key, fid });\r\n }\r\n closeBroadcastChannel();\r\n}\r\nlet broadcastChannel = null;\r\n/** Opens and returns a BroadcastChannel if it is supported by the browser. */\r\nfunction getBroadcastChannel() {\r\n if (!broadcastChannel && 'BroadcastChannel' in self) {\r\n broadcastChannel = new BroadcastChannel('[Firebase] FID Change');\r\n broadcastChannel.onmessage = e => {\r\n callFidChangeCallbacks(e.data.key, e.data.fid);\r\n };\r\n }\r\n return broadcastChannel;\r\n}\r\nfunction closeBroadcastChannel() {\r\n if (fidChangeCallbacks.size === 0 && broadcastChannel) {\r\n broadcastChannel.close();\r\n broadcastChannel = null;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst DATABASE_NAME = 'firebase-installations-database';\r\nconst DATABASE_VERSION = 1;\r\nconst OBJECT_STORE_NAME = 'firebase-installations-store';\r\nlet dbPromise = null;\r\nfunction getDbPromise() {\r\n if (!dbPromise) {\r\n dbPromise = openDB(DATABASE_NAME, DATABASE_VERSION, {\r\n upgrade: (db, oldVersion) => {\r\n // We don't use 'break' in this switch statement, the fall-through\r\n // behavior is what we want, because if there are multiple versions between\r\n // the old version and the current version, we want ALL the migrations\r\n // that correspond to those versions to run, not only the last one.\r\n // eslint-disable-next-line default-case\r\n switch (oldVersion) {\r\n case 0:\r\n db.createObjectStore(OBJECT_STORE_NAME);\r\n }\r\n }\r\n });\r\n }\r\n return dbPromise;\r\n}\r\n/** Assigns or overwrites the record for the given key with the given value. */\r\nasync function set(appConfig, value) {\r\n const key = getKey(appConfig);\r\n const db = await getDbPromise();\r\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n const objectStore = tx.objectStore(OBJECT_STORE_NAME);\r\n const oldValue = (await objectStore.get(key));\r\n await objectStore.put(value, key);\r\n await tx.done;\r\n if (!oldValue || oldValue.fid !== value.fid) {\r\n fidChanged(appConfig, value.fid);\r\n }\r\n return value;\r\n}\r\n/** Removes record(s) from the objectStore that match the given key. */\r\nasync function remove(appConfig) {\r\n const key = getKey(appConfig);\r\n const db = await getDbPromise();\r\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n await tx.objectStore(OBJECT_STORE_NAME).delete(key);\r\n await tx.done;\r\n}\r\n/**\r\n * Atomically updates a record with the result of updateFn, which gets\r\n * called with the current value. If newValue is undefined, the record is\r\n * deleted instead.\r\n * @return Updated value\r\n */\r\nasync function update(appConfig, updateFn) {\r\n const key = getKey(appConfig);\r\n const db = await getDbPromise();\r\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n const store = tx.objectStore(OBJECT_STORE_NAME);\r\n const oldValue = (await store.get(key));\r\n const newValue = updateFn(oldValue);\r\n if (newValue === undefined) {\r\n await store.delete(key);\r\n }\r\n else {\r\n await store.put(newValue, key);\r\n }\r\n await tx.done;\r\n if (newValue && (!oldValue || oldValue.fid !== newValue.fid)) {\r\n fidChanged(appConfig, newValue.fid);\r\n }\r\n return newValue;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Updates and returns the InstallationEntry from the database.\r\n * Also triggers a registration request if it is necessary and possible.\r\n */\r\nasync function getInstallationEntry(installations) {\r\n let registrationPromise;\r\n const installationEntry = await update(installations.appConfig, oldEntry => {\r\n const installationEntry = updateOrCreateInstallationEntry(oldEntry);\r\n const entryWithPromise = triggerRegistrationIfNecessary(installations, installationEntry);\r\n registrationPromise = entryWithPromise.registrationPromise;\r\n return entryWithPromise.installationEntry;\r\n });\r\n if (installationEntry.fid === INVALID_FID) {\r\n // FID generation failed. Waiting for the FID from the server.\r\n return { installationEntry: await registrationPromise };\r\n }\r\n return {\r\n installationEntry,\r\n registrationPromise\r\n };\r\n}\r\n/**\r\n * Creates a new Installation Entry if one does not exist.\r\n * Also clears timed out pending requests.\r\n */\r\nfunction updateOrCreateInstallationEntry(oldEntry) {\r\n const entry = oldEntry || {\r\n fid: generateFid(),\r\n registrationStatus: 0 /* NOT_STARTED */\r\n };\r\n return clearTimedOutRequest(entry);\r\n}\r\n/**\r\n * If the Firebase Installation is not registered yet, this will trigger the\r\n * registration and return an InProgressInstallationEntry.\r\n *\r\n * If registrationPromise does not exist, the installationEntry is guaranteed\r\n * to be registered.\r\n */\r\nfunction triggerRegistrationIfNecessary(installations, installationEntry) {\r\n if (installationEntry.registrationStatus === 0 /* NOT_STARTED */) {\r\n if (!navigator.onLine) {\r\n // Registration required but app is offline.\r\n const registrationPromiseWithError = Promise.reject(ERROR_FACTORY.create(\"app-offline\" /* APP_OFFLINE */));\r\n return {\r\n installationEntry,\r\n registrationPromise: registrationPromiseWithError\r\n };\r\n }\r\n // Try registering. Change status to IN_PROGRESS.\r\n const inProgressEntry = {\r\n fid: installationEntry.fid,\r\n registrationStatus: 1 /* IN_PROGRESS */,\r\n registrationTime: Date.now()\r\n };\r\n const registrationPromise = registerInstallation(installations, inProgressEntry);\r\n return { installationEntry: inProgressEntry, registrationPromise };\r\n }\r\n else if (installationEntry.registrationStatus === 1 /* IN_PROGRESS */) {\r\n return {\r\n installationEntry,\r\n registrationPromise: waitUntilFidRegistration(installations)\r\n };\r\n }\r\n else {\r\n return { installationEntry };\r\n }\r\n}\r\n/** This will be executed only once for each new Firebase Installation. */\r\nasync function registerInstallation(installations, installationEntry) {\r\n try {\r\n const registeredInstallationEntry = await createInstallationRequest(installations, installationEntry);\r\n return set(installations.appConfig, registeredInstallationEntry);\r\n }\r\n catch (e) {\r\n if (isServerError(e) && e.customData.serverCode === 409) {\r\n // Server returned a \"FID can not be used\" error.\r\n // Generate a new ID next time.\r\n await remove(installations.appConfig);\r\n }\r\n else {\r\n // Registration failed. Set FID as not registered.\r\n await set(installations.appConfig, {\r\n fid: installationEntry.fid,\r\n registrationStatus: 0 /* NOT_STARTED */\r\n });\r\n }\r\n throw e;\r\n }\r\n}\r\n/** Call if FID registration is pending in another request. */\r\nasync function waitUntilFidRegistration(installations) {\r\n // Unfortunately, there is no way of reliably observing when a value in\r\n // IndexedDB changes (yet, see https://github.com/WICG/indexed-db-observers),\r\n // so we need to poll.\r\n let entry = await updateInstallationRequest(installations.appConfig);\r\n while (entry.registrationStatus === 1 /* IN_PROGRESS */) {\r\n // createInstallation request still in progress.\r\n await sleep(100);\r\n entry = await updateInstallationRequest(installations.appConfig);\r\n }\r\n if (entry.registrationStatus === 0 /* NOT_STARTED */) {\r\n // The request timed out or failed in a different call. Try again.\r\n const { installationEntry, registrationPromise } = await getInstallationEntry(installations);\r\n if (registrationPromise) {\r\n return registrationPromise;\r\n }\r\n else {\r\n // if there is no registrationPromise, entry is registered.\r\n return installationEntry;\r\n }\r\n }\r\n return entry;\r\n}\r\n/**\r\n * Called only if there is a CreateInstallation request in progress.\r\n *\r\n * Updates the InstallationEntry in the DB based on the status of the\r\n * CreateInstallation request.\r\n *\r\n * Returns the updated InstallationEntry.\r\n */\r\nfunction updateInstallationRequest(appConfig) {\r\n return update(appConfig, oldEntry => {\r\n if (!oldEntry) {\r\n throw ERROR_FACTORY.create(\"installation-not-found\" /* INSTALLATION_NOT_FOUND */);\r\n }\r\n return clearTimedOutRequest(oldEntry);\r\n });\r\n}\r\nfunction clearTimedOutRequest(entry) {\r\n if (hasInstallationRequestTimedOut(entry)) {\r\n return {\r\n fid: entry.fid,\r\n registrationStatus: 0 /* NOT_STARTED */\r\n };\r\n }\r\n return entry;\r\n}\r\nfunction hasInstallationRequestTimedOut(installationEntry) {\r\n return (installationEntry.registrationStatus === 1 /* IN_PROGRESS */ &&\r\n installationEntry.registrationTime + PENDING_TIMEOUT_MS < Date.now());\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function generateAuthTokenRequest({ appConfig, heartbeatServiceProvider }, installationEntry) {\r\n const endpoint = getGenerateAuthTokenEndpoint(appConfig, installationEntry);\r\n const headers = getHeadersWithAuth(appConfig, installationEntry);\r\n // If heartbeat service exists, add the heartbeat string to the header.\r\n const heartbeatService = heartbeatServiceProvider.getImmediate({\r\n optional: true\r\n });\r\n if (heartbeatService) {\r\n const heartbeatsHeader = await heartbeatService.getHeartbeatsHeader();\r\n if (heartbeatsHeader) {\r\n headers.append('x-firebase-client', heartbeatsHeader);\r\n }\r\n }\r\n const body = {\r\n installation: {\r\n sdkVersion: PACKAGE_VERSION,\r\n appId: appConfig.appId\r\n }\r\n };\r\n const request = {\r\n method: 'POST',\r\n headers,\r\n body: JSON.stringify(body)\r\n };\r\n const response = await retryIfServerError(() => fetch(endpoint, request));\r\n if (response.ok) {\r\n const responseValue = await response.json();\r\n const completedAuthToken = extractAuthTokenInfoFromResponse(responseValue);\r\n return completedAuthToken;\r\n }\r\n else {\r\n throw await getErrorFromResponse('Generate Auth Token', response);\r\n }\r\n}\r\nfunction getGenerateAuthTokenEndpoint(appConfig, { fid }) {\r\n return `${getInstallationsEndpoint(appConfig)}/${fid}/authTokens:generate`;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns a valid authentication token for the installation. Generates a new\r\n * token if one doesn't exist, is expired or about to expire.\r\n *\r\n * Should only be called if the Firebase Installation is registered.\r\n */\r\nasync function refreshAuthToken(installations, forceRefresh = false) {\r\n let tokenPromise;\r\n const entry = await update(installations.appConfig, oldEntry => {\r\n if (!isEntryRegistered(oldEntry)) {\r\n throw ERROR_FACTORY.create(\"not-registered\" /* NOT_REGISTERED */);\r\n }\r\n const oldAuthToken = oldEntry.authToken;\r\n if (!forceRefresh && isAuthTokenValid(oldAuthToken)) {\r\n // There is a valid token in the DB.\r\n return oldEntry;\r\n }\r\n else if (oldAuthToken.requestStatus === 1 /* IN_PROGRESS */) {\r\n // There already is a token request in progress.\r\n tokenPromise = waitUntilAuthTokenRequest(installations, forceRefresh);\r\n return oldEntry;\r\n }\r\n else {\r\n // No token or token expired.\r\n if (!navigator.onLine) {\r\n throw ERROR_FACTORY.create(\"app-offline\" /* APP_OFFLINE */);\r\n }\r\n const inProgressEntry = makeAuthTokenRequestInProgressEntry(oldEntry);\r\n tokenPromise = fetchAuthTokenFromServer(installations, inProgressEntry);\r\n return inProgressEntry;\r\n }\r\n });\r\n const authToken = tokenPromise\r\n ? await tokenPromise\r\n : entry.authToken;\r\n return authToken;\r\n}\r\n/**\r\n * Call only if FID is registered and Auth Token request is in progress.\r\n *\r\n * Waits until the current pending request finishes. If the request times out,\r\n * tries once in this thread as well.\r\n */\r\nasync function waitUntilAuthTokenRequest(installations, forceRefresh) {\r\n // Unfortunately, there is no way of reliably observing when a value in\r\n // IndexedDB changes (yet, see https://github.com/WICG/indexed-db-observers),\r\n // so we need to poll.\r\n let entry = await updateAuthTokenRequest(installations.appConfig);\r\n while (entry.authToken.requestStatus === 1 /* IN_PROGRESS */) {\r\n // generateAuthToken still in progress.\r\n await sleep(100);\r\n entry = await updateAuthTokenRequest(installations.appConfig);\r\n }\r\n const authToken = entry.authToken;\r\n if (authToken.requestStatus === 0 /* NOT_STARTED */) {\r\n // The request timed out or failed in a different call. Try again.\r\n return refreshAuthToken(installations, forceRefresh);\r\n }\r\n else {\r\n return authToken;\r\n }\r\n}\r\n/**\r\n * Called only if there is a GenerateAuthToken request in progress.\r\n *\r\n * Updates the InstallationEntry in the DB based on the status of the\r\n * GenerateAuthToken request.\r\n *\r\n * Returns the updated InstallationEntry.\r\n */\r\nfunction updateAuthTokenRequest(appConfig) {\r\n return update(appConfig, oldEntry => {\r\n if (!isEntryRegistered(oldEntry)) {\r\n throw ERROR_FACTORY.create(\"not-registered\" /* NOT_REGISTERED */);\r\n }\r\n const oldAuthToken = oldEntry.authToken;\r\n if (hasAuthTokenRequestTimedOut(oldAuthToken)) {\r\n return Object.assign(Object.assign({}, oldEntry), { authToken: { requestStatus: 0 /* NOT_STARTED */ } });\r\n }\r\n return oldEntry;\r\n });\r\n}\r\nasync function fetchAuthTokenFromServer(installations, installationEntry) {\r\n try {\r\n const authToken = await generateAuthTokenRequest(installations, installationEntry);\r\n const updatedInstallationEntry = Object.assign(Object.assign({}, installationEntry), { authToken });\r\n await set(installations.appConfig, updatedInstallationEntry);\r\n return authToken;\r\n }\r\n catch (e) {\r\n if (isServerError(e) &&\r\n (e.customData.serverCode === 401 || e.customData.serverCode === 404)) {\r\n // Server returned a \"FID not found\" or a \"Invalid authentication\" error.\r\n // Generate a new ID next time.\r\n await remove(installations.appConfig);\r\n }\r\n else {\r\n const updatedInstallationEntry = Object.assign(Object.assign({}, installationEntry), { authToken: { requestStatus: 0 /* NOT_STARTED */ } });\r\n await set(installations.appConfig, updatedInstallationEntry);\r\n }\r\n throw e;\r\n }\r\n}\r\nfunction isEntryRegistered(installationEntry) {\r\n return (installationEntry !== undefined &&\r\n installationEntry.registrationStatus === 2 /* COMPLETED */);\r\n}\r\nfunction isAuthTokenValid(authToken) {\r\n return (authToken.requestStatus === 2 /* COMPLETED */ &&\r\n !isAuthTokenExpired(authToken));\r\n}\r\nfunction isAuthTokenExpired(authToken) {\r\n const now = Date.now();\r\n return (now < authToken.creationTime ||\r\n authToken.creationTime + authToken.expiresIn < now + TOKEN_EXPIRATION_BUFFER);\r\n}\r\n/** Returns an updated InstallationEntry with an InProgressAuthToken. */\r\nfunction makeAuthTokenRequestInProgressEntry(oldEntry) {\r\n const inProgressAuthToken = {\r\n requestStatus: 1 /* IN_PROGRESS */,\r\n requestTime: Date.now()\r\n };\r\n return Object.assign(Object.assign({}, oldEntry), { authToken: inProgressAuthToken });\r\n}\r\nfunction hasAuthTokenRequestTimedOut(authToken) {\r\n return (authToken.requestStatus === 1 /* IN_PROGRESS */ &&\r\n authToken.requestTime + PENDING_TIMEOUT_MS < Date.now());\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Creates a Firebase Installation if there isn't one for the app and\r\n * returns the Installation ID.\r\n * @param installations - The `Installations` instance.\r\n *\r\n * @public\r\n */\r\nasync function getId(installations) {\r\n const installationsImpl = installations;\r\n const { installationEntry, registrationPromise } = await getInstallationEntry(installationsImpl);\r\n if (registrationPromise) {\r\n registrationPromise.catch(console.error);\r\n }\r\n else {\r\n // If the installation is already registered, update the authentication\r\n // token if needed.\r\n refreshAuthToken(installationsImpl).catch(console.error);\r\n }\r\n return installationEntry.fid;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns a Firebase Installations auth token, identifying the current\r\n * Firebase Installation.\r\n * @param installations - The `Installations` instance.\r\n * @param forceRefresh - Force refresh regardless of token expiration.\r\n *\r\n * @public\r\n */\r\nasync function getToken(installations, forceRefresh = false) {\r\n const installationsImpl = installations;\r\n await completeInstallationRegistration(installationsImpl);\r\n // At this point we either have a Registered Installation in the DB, or we've\r\n // already thrown an error.\r\n const authToken = await refreshAuthToken(installationsImpl, forceRefresh);\r\n return authToken.token;\r\n}\r\nasync function completeInstallationRegistration(installations) {\r\n const { registrationPromise } = await getInstallationEntry(installations);\r\n if (registrationPromise) {\r\n // A createInstallation request is in progress. Wait until it finishes.\r\n await registrationPromise;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function deleteInstallationRequest(appConfig, installationEntry) {\r\n const endpoint = getDeleteEndpoint(appConfig, installationEntry);\r\n const headers = getHeadersWithAuth(appConfig, installationEntry);\r\n const request = {\r\n method: 'DELETE',\r\n headers\r\n };\r\n const response = await retryIfServerError(() => fetch(endpoint, request));\r\n if (!response.ok) {\r\n throw await getErrorFromResponse('Delete Installation', response);\r\n }\r\n}\r\nfunction getDeleteEndpoint(appConfig, { fid }) {\r\n return `${getInstallationsEndpoint(appConfig)}/${fid}`;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Deletes the Firebase Installation and all associated data.\r\n * @param installations - The `Installations` instance.\r\n *\r\n * @public\r\n */\r\nasync function deleteInstallations(installations) {\r\n const { appConfig } = installations;\r\n const entry = await update(appConfig, oldEntry => {\r\n if (oldEntry && oldEntry.registrationStatus === 0 /* NOT_STARTED */) {\r\n // Delete the unregistered entry without sending a deleteInstallation request.\r\n return undefined;\r\n }\r\n return oldEntry;\r\n });\r\n if (entry) {\r\n if (entry.registrationStatus === 1 /* IN_PROGRESS */) {\r\n // Can't delete while trying to register.\r\n throw ERROR_FACTORY.create(\"delete-pending-registration\" /* DELETE_PENDING_REGISTRATION */);\r\n }\r\n else if (entry.registrationStatus === 2 /* COMPLETED */) {\r\n if (!navigator.onLine) {\r\n throw ERROR_FACTORY.create(\"app-offline\" /* APP_OFFLINE */);\r\n }\r\n else {\r\n await deleteInstallationRequest(appConfig, entry);\r\n await remove(appConfig);\r\n }\r\n }\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Sets a new callback that will get called when Installation ID changes.\r\n * Returns an unsubscribe function that will remove the callback when called.\r\n * @param installations - The `Installations` instance.\r\n * @param callback - The callback function that is invoked when FID changes.\r\n * @returns A function that can be called to unsubscribe.\r\n *\r\n * @public\r\n */\r\nfunction onIdChange(installations, callback) {\r\n const { appConfig } = installations;\r\n addCallback(appConfig, callback);\r\n return () => {\r\n removeCallback(appConfig, callback);\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Returns an instance of {@link Installations} associated with the given\r\n * {@link @firebase/app#FirebaseApp} instance.\r\n * @param app - The {@link @firebase/app#FirebaseApp} instance.\r\n *\r\n * @public\r\n */\r\nfunction getInstallations(app = getApp()) {\r\n const installationsImpl = _getProvider(app, 'installations').getImmediate();\r\n return installationsImpl;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction extractAppConfig(app) {\r\n if (!app || !app.options) {\r\n throw getMissingValueError('App Configuration');\r\n }\r\n if (!app.name) {\r\n throw getMissingValueError('App Name');\r\n }\r\n // Required app config keys\r\n const configKeys = [\r\n 'projectId',\r\n 'apiKey',\r\n 'appId'\r\n ];\r\n for (const keyName of configKeys) {\r\n if (!app.options[keyName]) {\r\n throw getMissingValueError(keyName);\r\n }\r\n }\r\n return {\r\n appName: app.name,\r\n projectId: app.options.projectId,\r\n apiKey: app.options.apiKey,\r\n appId: app.options.appId\r\n };\r\n}\r\nfunction getMissingValueError(valueName) {\r\n return ERROR_FACTORY.create(\"missing-app-config-values\" /* MISSING_APP_CONFIG_VALUES */, {\r\n valueName\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst INSTALLATIONS_NAME = 'installations';\r\nconst INSTALLATIONS_NAME_INTERNAL = 'installations-internal';\r\nconst publicFactory = (container) => {\r\n const app = container.getProvider('app').getImmediate();\r\n // Throws if app isn't configured properly.\r\n const appConfig = extractAppConfig(app);\r\n const heartbeatServiceProvider = _getProvider(app, 'heartbeat');\r\n const installationsImpl = {\r\n app,\r\n appConfig,\r\n heartbeatServiceProvider,\r\n _delete: () => Promise.resolve()\r\n };\r\n return installationsImpl;\r\n};\r\nconst internalFactory = (container) => {\r\n const app = container.getProvider('app').getImmediate();\r\n // Internal FIS instance relies on public FIS instance.\r\n const installations = _getProvider(app, INSTALLATIONS_NAME).getImmediate();\r\n const installationsInternal = {\r\n getId: () => getId(installations),\r\n getToken: (forceRefresh) => getToken(installations, forceRefresh)\r\n };\r\n return installationsInternal;\r\n};\r\nfunction registerInstallations() {\r\n _registerComponent(new Component(INSTALLATIONS_NAME, publicFactory, \"PUBLIC\" /* PUBLIC */));\r\n _registerComponent(new Component(INSTALLATIONS_NAME_INTERNAL, internalFactory, \"PRIVATE\" /* PRIVATE */));\r\n}\n\n/**\r\n * Firebase Installations\r\n *\r\n * @packageDocumentation\r\n */\r\nregisterInstallations();\r\nregisterVersion(name, version);\r\n// BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\r\nregisterVersion(name, version, 'esm2017');\n\nexport { deleteInstallations, getId, getInstallations, getToken, onIdChange };\n//# sourceMappingURL=index.esm2017.js.map\n","import '@firebase/installations';\nimport { Component } from '@firebase/component';\nimport { openDB, deleteDB } from 'idb';\nimport { ErrorFactory, validateIndexedDBOpenable, isIndexedDBAvailable, areCookiesEnabled, getModularInstance } from '@firebase/util';\nimport { _registerComponent, registerVersion, getApp, _getProvider } from '@firebase/app';\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst DEFAULT_SW_PATH = '/firebase-messaging-sw.js';\r\nconst DEFAULT_SW_SCOPE = '/firebase-cloud-messaging-push-scope';\r\nconst DEFAULT_VAPID_KEY = 'BDOU99-h67HcA6JeFXHbSNMu7e2yNNu3RzoMj8TM4W88jITfq7ZmPvIM1Iv-4_l2LxQcYwhqby2xGpWwzjfAnG4';\r\nconst ENDPOINT = 'https://fcmregistrations.googleapis.com/v1';\r\nconst CONSOLE_CAMPAIGN_ID = 'google.c.a.c_id';\r\nconst CONSOLE_CAMPAIGN_NAME = 'google.c.a.c_l';\r\nconst CONSOLE_CAMPAIGN_TIME = 'google.c.a.ts';\r\n/** Set to '1' if Analytics is enabled for the campaign */\r\nconst CONSOLE_CAMPAIGN_ANALYTICS_ENABLED = 'google.c.a.e';\r\nvar MessageType$1;\r\n(function (MessageType) {\r\n MessageType[MessageType[\"DATA_MESSAGE\"] = 1] = \"DATA_MESSAGE\";\r\n MessageType[MessageType[\"DISPLAY_NOTIFICATION\"] = 3] = \"DISPLAY_NOTIFICATION\";\r\n})(MessageType$1 || (MessageType$1 = {}));\n\n/**\r\n * @license\r\n * Copyright 2018 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\"); you may not use this file except\r\n * in compliance with the License. You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software distributed under the License\r\n * is distributed on an \"AS IS\" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express\r\n * or implied. See the License for the specific language governing permissions and limitations under\r\n * the License.\r\n */\r\nvar MessageType;\r\n(function (MessageType) {\r\n MessageType[\"PUSH_RECEIVED\"] = \"push-received\";\r\n MessageType[\"NOTIFICATION_CLICKED\"] = \"notification-clicked\";\r\n})(MessageType || (MessageType = {}));\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction arrayToBase64(array) {\r\n const uint8Array = new Uint8Array(array);\r\n const base64String = btoa(String.fromCharCode(...uint8Array));\r\n return base64String.replace(/=/g, '').replace(/\\+/g, '-').replace(/\\//g, '_');\r\n}\r\nfunction base64ToArray(base64String) {\r\n const padding = '='.repeat((4 - (base64String.length % 4)) % 4);\r\n const base64 = (base64String + padding)\r\n .replace(/\\-/g, '+')\r\n .replace(/_/g, '/');\r\n const rawData = atob(base64);\r\n const outputArray = new Uint8Array(rawData.length);\r\n for (let i = 0; i < rawData.length; ++i) {\r\n outputArray[i] = rawData.charCodeAt(i);\r\n }\r\n return outputArray;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst OLD_DB_NAME = 'fcm_token_details_db';\r\n/**\r\n * The last DB version of 'fcm_token_details_db' was 4. This is one higher, so that the upgrade\r\n * callback is called for all versions of the old DB.\r\n */\r\nconst OLD_DB_VERSION = 5;\r\nconst OLD_OBJECT_STORE_NAME = 'fcm_token_object_Store';\r\nasync function migrateOldDatabase(senderId) {\r\n if ('databases' in indexedDB) {\r\n // indexedDb.databases() is an IndexedDB v3 API and does not exist in all browsers. TODO: Remove\r\n // typecast when it lands in TS types.\r\n const databases = await indexedDB.databases();\r\n const dbNames = databases.map(db => db.name);\r\n if (!dbNames.includes(OLD_DB_NAME)) {\r\n // old DB didn't exist, no need to open.\r\n return null;\r\n }\r\n }\r\n let tokenDetails = null;\r\n const db = await openDB(OLD_DB_NAME, OLD_DB_VERSION, {\r\n upgrade: async (db, oldVersion, newVersion, upgradeTransaction) => {\r\n var _a;\r\n if (oldVersion < 2) {\r\n // Database too old, skip migration.\r\n return;\r\n }\r\n if (!db.objectStoreNames.contains(OLD_OBJECT_STORE_NAME)) {\r\n // Database did not exist. Nothing to do.\r\n return;\r\n }\r\n const objectStore = upgradeTransaction.objectStore(OLD_OBJECT_STORE_NAME);\r\n const value = await objectStore.index('fcmSenderId').get(senderId);\r\n await objectStore.clear();\r\n if (!value) {\r\n // No entry in the database, nothing to migrate.\r\n return;\r\n }\r\n if (oldVersion === 2) {\r\n const oldDetails = value;\r\n if (!oldDetails.auth || !oldDetails.p256dh || !oldDetails.endpoint) {\r\n return;\r\n }\r\n tokenDetails = {\r\n token: oldDetails.fcmToken,\r\n createTime: (_a = oldDetails.createTime) !== null && _a !== void 0 ? _a : Date.now(),\r\n subscriptionOptions: {\r\n auth: oldDetails.auth,\r\n p256dh: oldDetails.p256dh,\r\n endpoint: oldDetails.endpoint,\r\n swScope: oldDetails.swScope,\r\n vapidKey: typeof oldDetails.vapidKey === 'string'\r\n ? oldDetails.vapidKey\r\n : arrayToBase64(oldDetails.vapidKey)\r\n }\r\n };\r\n }\r\n else if (oldVersion === 3) {\r\n const oldDetails = value;\r\n tokenDetails = {\r\n token: oldDetails.fcmToken,\r\n createTime: oldDetails.createTime,\r\n subscriptionOptions: {\r\n auth: arrayToBase64(oldDetails.auth),\r\n p256dh: arrayToBase64(oldDetails.p256dh),\r\n endpoint: oldDetails.endpoint,\r\n swScope: oldDetails.swScope,\r\n vapidKey: arrayToBase64(oldDetails.vapidKey)\r\n }\r\n };\r\n }\r\n else if (oldVersion === 4) {\r\n const oldDetails = value;\r\n tokenDetails = {\r\n token: oldDetails.fcmToken,\r\n createTime: oldDetails.createTime,\r\n subscriptionOptions: {\r\n auth: arrayToBase64(oldDetails.auth),\r\n p256dh: arrayToBase64(oldDetails.p256dh),\r\n endpoint: oldDetails.endpoint,\r\n swScope: oldDetails.swScope,\r\n vapidKey: arrayToBase64(oldDetails.vapidKey)\r\n }\r\n };\r\n }\r\n }\r\n });\r\n db.close();\r\n // Delete all old databases.\r\n await deleteDB(OLD_DB_NAME);\r\n await deleteDB('fcm_vapid_details_db');\r\n await deleteDB('undefined');\r\n return checkTokenDetails(tokenDetails) ? tokenDetails : null;\r\n}\r\nfunction checkTokenDetails(tokenDetails) {\r\n if (!tokenDetails || !tokenDetails.subscriptionOptions) {\r\n return false;\r\n }\r\n const { subscriptionOptions } = tokenDetails;\r\n return (typeof tokenDetails.createTime === 'number' &&\r\n tokenDetails.createTime > 0 &&\r\n typeof tokenDetails.token === 'string' &&\r\n tokenDetails.token.length > 0 &&\r\n typeof subscriptionOptions.auth === 'string' &&\r\n subscriptionOptions.auth.length > 0 &&\r\n typeof subscriptionOptions.p256dh === 'string' &&\r\n subscriptionOptions.p256dh.length > 0 &&\r\n typeof subscriptionOptions.endpoint === 'string' &&\r\n subscriptionOptions.endpoint.length > 0 &&\r\n typeof subscriptionOptions.swScope === 'string' &&\r\n subscriptionOptions.swScope.length > 0 &&\r\n typeof subscriptionOptions.vapidKey === 'string' &&\r\n subscriptionOptions.vapidKey.length > 0);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// Exported for tests.\r\nconst DATABASE_NAME = 'firebase-messaging-database';\r\nconst DATABASE_VERSION = 1;\r\nconst OBJECT_STORE_NAME = 'firebase-messaging-store';\r\nlet dbPromise = null;\r\nfunction getDbPromise() {\r\n if (!dbPromise) {\r\n dbPromise = openDB(DATABASE_NAME, DATABASE_VERSION, {\r\n upgrade: (upgradeDb, oldVersion) => {\r\n // We don't use 'break' in this switch statement, the fall-through behavior is what we want,\r\n // because if there are multiple versions between the old version and the current version, we\r\n // want ALL the migrations that correspond to those versions to run, not only the last one.\r\n // eslint-disable-next-line default-case\r\n switch (oldVersion) {\r\n case 0:\r\n upgradeDb.createObjectStore(OBJECT_STORE_NAME);\r\n }\r\n }\r\n });\r\n }\r\n return dbPromise;\r\n}\r\n/** Gets record(s) from the objectStore that match the given key. */\r\nasync function dbGet(firebaseDependencies) {\r\n const key = getKey(firebaseDependencies);\r\n const db = await getDbPromise();\r\n const tokenDetails = (await db\r\n .transaction(OBJECT_STORE_NAME)\r\n .objectStore(OBJECT_STORE_NAME)\r\n .get(key));\r\n if (tokenDetails) {\r\n return tokenDetails;\r\n }\r\n else {\r\n // Check if there is a tokenDetails object in the old DB.\r\n const oldTokenDetails = await migrateOldDatabase(firebaseDependencies.appConfig.senderId);\r\n if (oldTokenDetails) {\r\n await dbSet(firebaseDependencies, oldTokenDetails);\r\n return oldTokenDetails;\r\n }\r\n }\r\n}\r\n/** Assigns or overwrites the record for the given key with the given value. */\r\nasync function dbSet(firebaseDependencies, tokenDetails) {\r\n const key = getKey(firebaseDependencies);\r\n const db = await getDbPromise();\r\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n await tx.objectStore(OBJECT_STORE_NAME).put(tokenDetails, key);\r\n await tx.done;\r\n return tokenDetails;\r\n}\r\n/** Removes record(s) from the objectStore that match the given key. */\r\nasync function dbRemove(firebaseDependencies) {\r\n const key = getKey(firebaseDependencies);\r\n const db = await getDbPromise();\r\n const tx = db.transaction(OBJECT_STORE_NAME, 'readwrite');\r\n await tx.objectStore(OBJECT_STORE_NAME).delete(key);\r\n await tx.done;\r\n}\r\nfunction getKey({ appConfig }) {\r\n return appConfig.appId;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst ERROR_MAP = {\r\n [\"missing-app-config-values\" /* MISSING_APP_CONFIG_VALUES */]: 'Missing App configuration value: \"{$valueName}\"',\r\n [\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */]: 'This method is available in a Window context.',\r\n [\"only-available-in-sw\" /* AVAILABLE_IN_SW */]: 'This method is available in a service worker context.',\r\n [\"permission-default\" /* PERMISSION_DEFAULT */]: 'The notification permission was not granted and dismissed instead.',\r\n [\"permission-blocked\" /* PERMISSION_BLOCKED */]: 'The notification permission was not granted and blocked instead.',\r\n [\"unsupported-browser\" /* UNSUPPORTED_BROWSER */]: \"This browser doesn't support the API's required to use the Firebase SDK.\",\r\n [\"indexed-db-unsupported\" /* INDEXED_DB_UNSUPPORTED */]: \"This browser doesn't support indexedDb.open() (ex. Safari iFrame, Firefox Private Browsing, etc)\",\r\n [\"failed-service-worker-registration\" /* FAILED_DEFAULT_REGISTRATION */]: 'We are unable to register the default service worker. {$browserErrorMessage}',\r\n [\"token-subscribe-failed\" /* TOKEN_SUBSCRIBE_FAILED */]: 'A problem occurred while subscribing the user to FCM: {$errorInfo}',\r\n [\"token-subscribe-no-token\" /* TOKEN_SUBSCRIBE_NO_TOKEN */]: 'FCM returned no token when subscribing the user to push.',\r\n [\"token-unsubscribe-failed\" /* TOKEN_UNSUBSCRIBE_FAILED */]: 'A problem occurred while unsubscribing the ' +\r\n 'user from FCM: {$errorInfo}',\r\n [\"token-update-failed\" /* TOKEN_UPDATE_FAILED */]: 'A problem occurred while updating the user from FCM: {$errorInfo}',\r\n [\"token-update-no-token\" /* TOKEN_UPDATE_NO_TOKEN */]: 'FCM returned no token when updating the user to push.',\r\n [\"use-sw-after-get-token\" /* USE_SW_AFTER_GET_TOKEN */]: 'The useServiceWorker() method may only be called once and must be ' +\r\n 'called before calling getToken() to ensure your service worker is used.',\r\n [\"invalid-sw-registration\" /* INVALID_SW_REGISTRATION */]: 'The input to useServiceWorker() must be a ServiceWorkerRegistration.',\r\n [\"invalid-bg-handler\" /* INVALID_BG_HANDLER */]: 'The input to setBackgroundMessageHandler() must be a function.',\r\n [\"invalid-vapid-key\" /* INVALID_VAPID_KEY */]: 'The public VAPID key must be a string.',\r\n [\"use-vapid-key-after-get-token\" /* USE_VAPID_KEY_AFTER_GET_TOKEN */]: 'The usePublicVapidKey() method may only be called once and must be ' +\r\n 'called before calling getToken() to ensure your VAPID key is used.'\r\n};\r\nconst ERROR_FACTORY = new ErrorFactory('messaging', 'Messaging', ERROR_MAP);\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function requestGetToken(firebaseDependencies, subscriptionOptions) {\r\n const headers = await getHeaders(firebaseDependencies);\r\n const body = getBody(subscriptionOptions);\r\n const subscribeOptions = {\r\n method: 'POST',\r\n headers,\r\n body: JSON.stringify(body)\r\n };\r\n let responseData;\r\n try {\r\n const response = await fetch(getEndpoint(firebaseDependencies.appConfig), subscribeOptions);\r\n responseData = await response.json();\r\n }\r\n catch (err) {\r\n throw ERROR_FACTORY.create(\"token-subscribe-failed\" /* TOKEN_SUBSCRIBE_FAILED */, {\r\n errorInfo: err\r\n });\r\n }\r\n if (responseData.error) {\r\n const message = responseData.error.message;\r\n throw ERROR_FACTORY.create(\"token-subscribe-failed\" /* TOKEN_SUBSCRIBE_FAILED */, {\r\n errorInfo: message\r\n });\r\n }\r\n if (!responseData.token) {\r\n throw ERROR_FACTORY.create(\"token-subscribe-no-token\" /* TOKEN_SUBSCRIBE_NO_TOKEN */);\r\n }\r\n return responseData.token;\r\n}\r\nasync function requestUpdateToken(firebaseDependencies, tokenDetails) {\r\n const headers = await getHeaders(firebaseDependencies);\r\n const body = getBody(tokenDetails.subscriptionOptions);\r\n const updateOptions = {\r\n method: 'PATCH',\r\n headers,\r\n body: JSON.stringify(body)\r\n };\r\n let responseData;\r\n try {\r\n const response = await fetch(`${getEndpoint(firebaseDependencies.appConfig)}/${tokenDetails.token}`, updateOptions);\r\n responseData = await response.json();\r\n }\r\n catch (err) {\r\n throw ERROR_FACTORY.create(\"token-update-failed\" /* TOKEN_UPDATE_FAILED */, {\r\n errorInfo: err\r\n });\r\n }\r\n if (responseData.error) {\r\n const message = responseData.error.message;\r\n throw ERROR_FACTORY.create(\"token-update-failed\" /* TOKEN_UPDATE_FAILED */, {\r\n errorInfo: message\r\n });\r\n }\r\n if (!responseData.token) {\r\n throw ERROR_FACTORY.create(\"token-update-no-token\" /* TOKEN_UPDATE_NO_TOKEN */);\r\n }\r\n return responseData.token;\r\n}\r\nasync function requestDeleteToken(firebaseDependencies, token) {\r\n const headers = await getHeaders(firebaseDependencies);\r\n const unsubscribeOptions = {\r\n method: 'DELETE',\r\n headers\r\n };\r\n try {\r\n const response = await fetch(`${getEndpoint(firebaseDependencies.appConfig)}/${token}`, unsubscribeOptions);\r\n const responseData = await response.json();\r\n if (responseData.error) {\r\n const message = responseData.error.message;\r\n throw ERROR_FACTORY.create(\"token-unsubscribe-failed\" /* TOKEN_UNSUBSCRIBE_FAILED */, {\r\n errorInfo: message\r\n });\r\n }\r\n }\r\n catch (err) {\r\n throw ERROR_FACTORY.create(\"token-unsubscribe-failed\" /* TOKEN_UNSUBSCRIBE_FAILED */, {\r\n errorInfo: err\r\n });\r\n }\r\n}\r\nfunction getEndpoint({ projectId }) {\r\n return `${ENDPOINT}/projects/${projectId}/registrations`;\r\n}\r\nasync function getHeaders({ appConfig, installations }) {\r\n const authToken = await installations.getToken();\r\n return new Headers({\r\n 'Content-Type': 'application/json',\r\n Accept: 'application/json',\r\n 'x-goog-api-key': appConfig.apiKey,\r\n 'x-goog-firebase-installations-auth': `FIS ${authToken}`\r\n });\r\n}\r\nfunction getBody({ p256dh, auth, endpoint, vapidKey }) {\r\n const body = {\r\n web: {\r\n endpoint,\r\n auth,\r\n p256dh\r\n }\r\n };\r\n if (vapidKey !== DEFAULT_VAPID_KEY) {\r\n body.web.applicationPubKey = vapidKey;\r\n }\r\n return body;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n// UpdateRegistration will be called once every week.\r\nconst TOKEN_EXPIRATION_MS = 7 * 24 * 60 * 60 * 1000; // 7 days\r\nasync function getTokenInternal(messaging) {\r\n const pushSubscription = await getPushSubscription(messaging.swRegistration, messaging.vapidKey);\r\n const subscriptionOptions = {\r\n vapidKey: messaging.vapidKey,\r\n swScope: messaging.swRegistration.scope,\r\n endpoint: pushSubscription.endpoint,\r\n auth: arrayToBase64(pushSubscription.getKey('auth')),\r\n p256dh: arrayToBase64(pushSubscription.getKey('p256dh'))\r\n };\r\n const tokenDetails = await dbGet(messaging.firebaseDependencies);\r\n if (!tokenDetails) {\r\n // No token, get a new one.\r\n return getNewToken(messaging.firebaseDependencies, subscriptionOptions);\r\n }\r\n else if (!isTokenValid(tokenDetails.subscriptionOptions, subscriptionOptions)) {\r\n // Invalid token, get a new one.\r\n try {\r\n await requestDeleteToken(messaging.firebaseDependencies, tokenDetails.token);\r\n }\r\n catch (e) {\r\n // Suppress errors because of #2364\r\n console.warn(e);\r\n }\r\n return getNewToken(messaging.firebaseDependencies, subscriptionOptions);\r\n }\r\n else if (Date.now() >= tokenDetails.createTime + TOKEN_EXPIRATION_MS) {\r\n // Weekly token refresh\r\n return updateToken(messaging, {\r\n token: tokenDetails.token,\r\n createTime: Date.now(),\r\n subscriptionOptions\r\n });\r\n }\r\n else {\r\n // Valid token, nothing to do.\r\n return tokenDetails.token;\r\n }\r\n}\r\n/**\r\n * This method deletes the token from the database, unsubscribes the token from FCM, and unregisters\r\n * the push subscription if it exists.\r\n */\r\nasync function deleteTokenInternal(messaging) {\r\n const tokenDetails = await dbGet(messaging.firebaseDependencies);\r\n if (tokenDetails) {\r\n await requestDeleteToken(messaging.firebaseDependencies, tokenDetails.token);\r\n await dbRemove(messaging.firebaseDependencies);\r\n }\r\n // Unsubscribe from the push subscription.\r\n const pushSubscription = await messaging.swRegistration.pushManager.getSubscription();\r\n if (pushSubscription) {\r\n return pushSubscription.unsubscribe();\r\n }\r\n // If there's no SW, consider it a success.\r\n return true;\r\n}\r\nasync function updateToken(messaging, tokenDetails) {\r\n try {\r\n const updatedToken = await requestUpdateToken(messaging.firebaseDependencies, tokenDetails);\r\n const updatedTokenDetails = Object.assign(Object.assign({}, tokenDetails), { token: updatedToken, createTime: Date.now() });\r\n await dbSet(messaging.firebaseDependencies, updatedTokenDetails);\r\n return updatedToken;\r\n }\r\n catch (e) {\r\n await deleteTokenInternal(messaging);\r\n throw e;\r\n }\r\n}\r\nasync function getNewToken(firebaseDependencies, subscriptionOptions) {\r\n const token = await requestGetToken(firebaseDependencies, subscriptionOptions);\r\n const tokenDetails = {\r\n token,\r\n createTime: Date.now(),\r\n subscriptionOptions\r\n };\r\n await dbSet(firebaseDependencies, tokenDetails);\r\n return tokenDetails.token;\r\n}\r\n/**\r\n * Gets a PushSubscription for the current user.\r\n */\r\nasync function getPushSubscription(swRegistration, vapidKey) {\r\n const subscription = await swRegistration.pushManager.getSubscription();\r\n if (subscription) {\r\n return subscription;\r\n }\r\n return swRegistration.pushManager.subscribe({\r\n userVisibleOnly: true,\r\n // Chrome <= 75 doesn't support base64-encoded VAPID key. For backward compatibility, VAPID key\r\n // submitted to pushManager#subscribe must be of type Uint8Array.\r\n applicationServerKey: base64ToArray(vapidKey)\r\n });\r\n}\r\n/**\r\n * Checks if the saved tokenDetails object matches the configuration provided.\r\n */\r\nfunction isTokenValid(dbOptions, currentOptions) {\r\n const isVapidKeyEqual = currentOptions.vapidKey === dbOptions.vapidKey;\r\n const isEndpointEqual = currentOptions.endpoint === dbOptions.endpoint;\r\n const isAuthEqual = currentOptions.auth === dbOptions.auth;\r\n const isP256dhEqual = currentOptions.p256dh === dbOptions.p256dh;\r\n return isVapidKeyEqual && isEndpointEqual && isAuthEqual && isP256dhEqual;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction externalizePayload(internalPayload) {\r\n const payload = {\r\n from: internalPayload.from,\r\n // eslint-disable-next-line camelcase\r\n collapseKey: internalPayload.collapse_key,\r\n // eslint-disable-next-line camelcase\r\n messageId: internalPayload.fcmMessageId\r\n };\r\n propagateNotificationPayload(payload, internalPayload);\r\n propagateDataPayload(payload, internalPayload);\r\n propagateFcmOptions(payload, internalPayload);\r\n return payload;\r\n}\r\nfunction propagateNotificationPayload(payload, messagePayloadInternal) {\r\n if (!messagePayloadInternal.notification) {\r\n return;\r\n }\r\n payload.notification = {};\r\n const title = messagePayloadInternal.notification.title;\r\n if (!!title) {\r\n payload.notification.title = title;\r\n }\r\n const body = messagePayloadInternal.notification.body;\r\n if (!!body) {\r\n payload.notification.body = body;\r\n }\r\n const image = messagePayloadInternal.notification.image;\r\n if (!!image) {\r\n payload.notification.image = image;\r\n }\r\n}\r\nfunction propagateDataPayload(payload, messagePayloadInternal) {\r\n if (!messagePayloadInternal.data) {\r\n return;\r\n }\r\n payload.data = messagePayloadInternal.data;\r\n}\r\nfunction propagateFcmOptions(payload, messagePayloadInternal) {\r\n if (!messagePayloadInternal.fcmOptions) {\r\n return;\r\n }\r\n payload.fcmOptions = {};\r\n const link = messagePayloadInternal.fcmOptions.link;\r\n if (!!link) {\r\n payload.fcmOptions.link = link;\r\n }\r\n // eslint-disable-next-line camelcase\r\n const analyticsLabel = messagePayloadInternal.fcmOptions.analytics_label;\r\n if (!!analyticsLabel) {\r\n payload.fcmOptions.analyticsLabel = analyticsLabel;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction isConsoleMessage(data) {\r\n // This message has a campaign ID, meaning it was sent using the Firebase Console.\r\n return typeof data === 'object' && !!data && CONSOLE_CAMPAIGN_ID in data;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n_mergeStrings('hts/frbslgigp.ogepscmv/ieo/eaylg', 'tp:/ieaeogn-agolai.o/1frlglgc/o');\r\n_mergeStrings('AzSCbw63g1R0nCw85jG8', 'Iaya3yLKwmgvh7cF0q4');\r\nfunction _mergeStrings(s1, s2) {\r\n const resultArray = [];\r\n for (let i = 0; i < s1.length; i++) {\r\n resultArray.push(s1.charAt(i));\r\n if (i < s2.length) {\r\n resultArray.push(s2.charAt(i));\r\n }\r\n }\r\n return resultArray.join('');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction extractAppConfig(app) {\r\n if (!app || !app.options) {\r\n throw getMissingValueError('App Configuration Object');\r\n }\r\n if (!app.name) {\r\n throw getMissingValueError('App Name');\r\n }\r\n // Required app config keys\r\n const configKeys = [\r\n 'projectId',\r\n 'apiKey',\r\n 'appId',\r\n 'messagingSenderId'\r\n ];\r\n const { options } = app;\r\n for (const keyName of configKeys) {\r\n if (!options[keyName]) {\r\n throw getMissingValueError(keyName);\r\n }\r\n }\r\n return {\r\n appName: app.name,\r\n projectId: options.projectId,\r\n apiKey: options.apiKey,\r\n appId: options.appId,\r\n senderId: options.messagingSenderId\r\n };\r\n}\r\nfunction getMissingValueError(valueName) {\r\n return ERROR_FACTORY.create(\"missing-app-config-values\" /* MISSING_APP_CONFIG_VALUES */, {\r\n valueName\r\n });\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nclass MessagingService {\r\n constructor(app, installations, analyticsProvider) {\r\n // logging is only done with end user consent. Default to false.\r\n this.deliveryMetricsExportedToBigQueryEnabled = false;\r\n this.onBackgroundMessageHandler = null;\r\n this.onMessageHandler = null;\r\n this.logEvents = [];\r\n this.isLogServiceStarted = false;\r\n const appConfig = extractAppConfig(app);\r\n this.firebaseDependencies = {\r\n app,\r\n appConfig,\r\n installations,\r\n analyticsProvider\r\n };\r\n }\r\n _delete() {\r\n return Promise.resolve();\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function registerDefaultSw(messaging) {\r\n try {\r\n messaging.swRegistration = await navigator.serviceWorker.register(DEFAULT_SW_PATH, {\r\n scope: DEFAULT_SW_SCOPE\r\n });\r\n // The timing when browser updates sw when sw has an update is unreliable from experiment. It\r\n // leads to version conflict when the SDK upgrades to a newer version in the main page, but sw\r\n // is stuck with the old version. For example,\r\n // https://github.com/firebase/firebase-js-sdk/issues/2590 The following line reliably updates\r\n // sw if there was an update.\r\n messaging.swRegistration.update().catch(() => {\r\n /* it is non blocking and we don't care if it failed */\r\n });\r\n }\r\n catch (e) {\r\n throw ERROR_FACTORY.create(\"failed-service-worker-registration\" /* FAILED_DEFAULT_REGISTRATION */, {\r\n browserErrorMessage: e.message\r\n });\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function updateSwReg(messaging, swRegistration) {\r\n if (!swRegistration && !messaging.swRegistration) {\r\n await registerDefaultSw(messaging);\r\n }\r\n if (!swRegistration && !!messaging.swRegistration) {\r\n return;\r\n }\r\n if (!(swRegistration instanceof ServiceWorkerRegistration)) {\r\n throw ERROR_FACTORY.create(\"invalid-sw-registration\" /* INVALID_SW_REGISTRATION */);\r\n }\r\n messaging.swRegistration = swRegistration;\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function updateVapidKey(messaging, vapidKey) {\r\n if (!!vapidKey) {\r\n messaging.vapidKey = vapidKey;\r\n }\r\n else if (!messaging.vapidKey) {\r\n messaging.vapidKey = DEFAULT_VAPID_KEY;\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function getToken$1(messaging, options) {\r\n if (!navigator) {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */);\r\n }\r\n if (Notification.permission === 'default') {\r\n await Notification.requestPermission();\r\n }\r\n if (Notification.permission !== 'granted') {\r\n throw ERROR_FACTORY.create(\"permission-blocked\" /* PERMISSION_BLOCKED */);\r\n }\r\n await updateVapidKey(messaging, options === null || options === void 0 ? void 0 : options.vapidKey);\r\n await updateSwReg(messaging, options === null || options === void 0 ? void 0 : options.serviceWorkerRegistration);\r\n return getTokenInternal(messaging);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2019 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function logToScion(messaging, messageType, data) {\r\n const eventType = getEventType(messageType);\r\n const analytics = await messaging.firebaseDependencies.analyticsProvider.get();\r\n analytics.logEvent(eventType, {\r\n /* eslint-disable camelcase */\r\n message_id: data[CONSOLE_CAMPAIGN_ID],\r\n message_name: data[CONSOLE_CAMPAIGN_NAME],\r\n message_time: data[CONSOLE_CAMPAIGN_TIME],\r\n message_device_time: Math.floor(Date.now() / 1000)\r\n /* eslint-enable camelcase */\r\n });\r\n}\r\nfunction getEventType(messageType) {\r\n switch (messageType) {\r\n case MessageType.NOTIFICATION_CLICKED:\r\n return 'notification_open';\r\n case MessageType.PUSH_RECEIVED:\r\n return 'notification_foreground';\r\n default:\r\n throw new Error();\r\n }\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function messageEventListener(messaging, event) {\r\n const internalPayload = event.data;\r\n if (!internalPayload.isFirebaseMessaging) {\r\n return;\r\n }\r\n if (messaging.onMessageHandler &&\r\n internalPayload.messageType === MessageType.PUSH_RECEIVED) {\r\n if (typeof messaging.onMessageHandler === 'function') {\r\n messaging.onMessageHandler(externalizePayload(internalPayload));\r\n }\r\n else {\r\n messaging.onMessageHandler.next(externalizePayload(internalPayload));\r\n }\r\n }\r\n // Log to Scion if applicable\r\n const dataPayload = internalPayload.data;\r\n if (isConsoleMessage(dataPayload) &&\r\n dataPayload[CONSOLE_CAMPAIGN_ANALYTICS_ENABLED] === '1') {\r\n await logToScion(messaging, internalPayload.messageType, dataPayload);\r\n }\r\n}\n\nconst name = \"@firebase/messaging\";\nconst version = \"0.9.13\";\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nconst WindowMessagingFactory = (container) => {\r\n const messaging = new MessagingService(container.getProvider('app').getImmediate(), container.getProvider('installations-internal').getImmediate(), container.getProvider('analytics-internal'));\r\n navigator.serviceWorker.addEventListener('message', e => messageEventListener(messaging, e));\r\n return messaging;\r\n};\r\nconst WindowMessagingInternalFactory = (container) => {\r\n const messaging = container\r\n .getProvider('messaging')\r\n .getImmediate();\r\n const messagingInternal = {\r\n getToken: (options) => getToken$1(messaging, options)\r\n };\r\n return messagingInternal;\r\n};\r\nfunction registerMessagingInWindow() {\r\n _registerComponent(new Component('messaging', WindowMessagingFactory, \"PUBLIC\" /* PUBLIC */));\r\n _registerComponent(new Component('messaging-internal', WindowMessagingInternalFactory, \"PRIVATE\" /* PRIVATE */));\r\n registerVersion(name, version);\r\n // BUILD_TARGET will be replaced by values like esm5, esm2017, cjs5, etc during the compilation\r\n registerVersion(name, version, 'esm2017');\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Checks if all required APIs exist in the browser.\r\n * @returns a Promise that resolves to a boolean.\r\n *\r\n * @public\r\n */\r\nasync function isWindowSupported() {\r\n try {\r\n // This throws if open() is unsupported, so adding it to the conditional\r\n // statement below can cause an uncaught error.\r\n await validateIndexedDBOpenable();\r\n }\r\n catch (e) {\r\n return false;\r\n }\r\n // firebase-js-sdk/issues/2393 reveals that idb#open in Safari iframe and Firefox private browsing\r\n // might be prohibited to run. In these contexts, an error would be thrown during the messaging\r\n // instantiating phase, informing the developers to import/call isSupported for special handling.\r\n return (typeof window !== 'undefined' &&\r\n isIndexedDBAvailable() &&\r\n areCookiesEnabled() &&\r\n 'serviceWorker' in navigator &&\r\n 'PushManager' in window &&\r\n 'Notification' in window &&\r\n 'fetch' in window &&\r\n ServiceWorkerRegistration.prototype.hasOwnProperty('showNotification') &&\r\n PushSubscription.prototype.hasOwnProperty('getKey'));\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nasync function deleteToken$1(messaging) {\r\n if (!navigator) {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */);\r\n }\r\n if (!messaging.swRegistration) {\r\n await registerDefaultSw(messaging);\r\n }\r\n return deleteTokenInternal(messaging);\r\n}\n\n/**\r\n * @license\r\n * Copyright 2020 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\nfunction onMessage$1(messaging, nextOrObserver) {\r\n if (!navigator) {\r\n throw ERROR_FACTORY.create(\"only-available-in-window\" /* AVAILABLE_IN_WINDOW */);\r\n }\r\n messaging.onMessageHandler = nextOrObserver;\r\n return () => {\r\n messaging.onMessageHandler = null;\r\n };\r\n}\n\n/**\r\n * @license\r\n * Copyright 2017 Google LLC\r\n *\r\n * Licensed under the Apache License, Version 2.0 (the \"License\");\r\n * you may not use this file except in compliance with the License.\r\n * You may obtain a copy of the License at\r\n *\r\n * http://www.apache.org/licenses/LICENSE-2.0\r\n *\r\n * Unless required by applicable law or agreed to in writing, software\r\n * distributed under the License is distributed on an \"AS IS\" BASIS,\r\n * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.\r\n * See the License for the specific language governing permissions and\r\n * limitations under the License.\r\n */\r\n/**\r\n * Retrieves a Firebase Cloud Messaging instance.\r\n *\r\n * @returns The Firebase Cloud Messaging instance associated with the provided firebase app.\r\n *\r\n * @public\r\n */\r\nfunction getMessagingInWindow(app = getApp()) {\r\n // Conscious decision to make this async check non-blocking during the messaging instance\r\n // initialization phase for performance consideration. An error would be thrown latter for\r\n // developer's information. Developers can then choose to import and call `isSupported` for\r\n // special handling.\r\n isWindowSupported().then(isSupported => {\r\n // If `isWindowSupported()` resolved, but returned false.\r\n if (!isSupported) {\r\n throw ERROR_FACTORY.create(\"unsupported-browser\" /* UNSUPPORTED_BROWSER */);\r\n }\r\n }, _ => {\r\n // If `isWindowSupported()` rejected.\r\n throw ERROR_FACTORY.create(\"indexed-db-unsupported\" /* INDEXED_DB_UNSUPPORTED */);\r\n });\r\n return _getProvider(getModularInstance(app), 'messaging').getImmediate();\r\n}\r\n/**\r\n * Subscribes the {@link Messaging} instance to push notifications. Returns an Firebase Cloud\r\n * Messaging registration token that can be used to send push messages to that {@link Messaging}\r\n * instance.\r\n *\r\n * If a notification permission isn't already granted, this method asks the user for permission. The\r\n * returned promise rejects if the user does not allow the app to show notifications.\r\n *\r\n * @param messaging - The {@link Messaging} instance.\r\n * @param options - Provides an optional vapid key and an optinoal service worker registration\r\n *\r\n * @returns The promise resolves with an FCM registration token.\r\n *\r\n * @public\r\n */\r\nasync function getToken(messaging, options) {\r\n messaging = getModularInstance(messaging);\r\n return getToken$1(messaging, options);\r\n}\r\n/**\r\n * Deletes the registration token associated with this {@link Messaging} instance and unsubscribes\r\n * the {@link Messaging} instance from the push subscription.\r\n *\r\n * @param messaging - The {@link Messaging} instance.\r\n *\r\n * @returns The promise resolves when the token has been successfully deleted.\r\n *\r\n * @public\r\n */\r\nfunction deleteToken(messaging) {\r\n messaging = getModularInstance(messaging);\r\n return deleteToken$1(messaging);\r\n}\r\n/**\r\n * When a push message is received and the user is currently on a page for your origin, the\r\n * message is passed to the page and an `onMessage()` event is dispatched with the payload of\r\n * the push message.\r\n *\r\n *\r\n * @param messaging - The {@link Messaging} instance.\r\n * @param nextOrObserver - This function, or observer object with `next` defined,\r\n * is called when a message is received and the user is currently viewing your page.\r\n * @returns To stop listening for messages execute this returned function.\r\n *\r\n * @public\r\n */\r\nfunction onMessage(messaging, nextOrObserver) {\r\n messaging = getModularInstance(messaging);\r\n return onMessage$1(messaging, nextOrObserver);\r\n}\n\n/**\r\n * Firebase Cloud Messaging\r\n *\r\n * @packageDocumentation\r\n */\r\nregisterMessagingInWindow();\n\nexport { deleteToken, getMessagingInWindow as getMessaging, getToken, isWindowSupported as isSupported, onMessage };\n//# sourceMappingURL=index.esm2017.js.map\n","const __WEBPACK_NAMESPACE_OBJECT__ = Tinode;","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nexport default class Alert extends React.PureComponent {\n render() {\n return this.props.visible ?\n
\n
\n
{this.props.title}
\n
{this.props.content}
\n
\n {this.props.onReject ?\n \n :\n null\n }\n \n
\n
\n
\n :\n null;\n }\n};\n","// This is a generated file. Don't edit.\n\nexport const PACKAGE_VERSION = \"0.20.0-alpha1\";\n","import { PACKAGE_VERSION } from './version.js';\n\n// Name of this application, used in the User-Agent.\nexport const APP_NAME = 'TinodeWeb/' + (PACKAGE_VERSION || '0.17');\n\n// API key. Use https://github.com/tinode/chat/tree/master/keygen to generate your own\nexport const API_KEY = 'AQEAAAABAAD_rAp4DJh05a1HAwFT3A6K';\n\n// The array of possible hosts to connect to.\nexport const KNOWN_HOSTS = {hosted: 'web.tinode.co', local: 'localhost:6060'};\n\n// Default host name and port to connect to.\nexport const DEFAULT_HOST = KNOWN_HOSTS.hosted;\n\n// Enable console logging.\nexport const LOGGING_ENABLED = true;\n\n// Minimum time between two keypress notifications, milliseconds.\nexport const KEYPRESS_DELAY = 3_000;\n// Delay before sending a {note} for reciving a message, milliseconds.\nexport const RECEIVED_DELAY = 500;\n// Delay before sending a read notification, milliseconds.\nexport const READ_DELAY = 1000;\n\n// The default shortest allowed tag length. Matches the value on the server.\nexport const MIN_TAG_LENGTH = 2;\n// The default greatest allowed tag length. Matches the value on the server.\nexport const MAX_TAG_LENGTH = 96;\n// The default maximum number of tags allowed. Matches the value on the server.\nexport const MAX_TAG_COUNT = 16;\n\n// Access mode for P2P subscriptions initiated by the current user.\nexport const DEFAULT_P2P_ACCESS_MODE = 'JRWPS';\n// Access mode for new group topics created by the current user.\nexport const NEW_GRP_ACCESS_MODE = 'JRWPSAO';\n// Access mode for a channel.\nexport const CHANNEL_ACCESS_MODE = 'JR';\n\n// Access mode for no access.\nexport const NO_ACCESS_MODE = 'N';\n\n// Mediaquery breakpoint between desktop and mobile, in px. Should match the value\n// in @media (max-size: 640px) in base.css\nexport const MEDIA_BREAKPOINT = 640;\n// Size of css 'rem' unit in pixels. Default 1rem = 10pt = 13px.\nexport const REM_SIZE = 13;\n\n// Size of the avatar image: when image dimensions are greater or the image is not square, it's resized to\n// a square of this size or less.\nexport const AVATAR_SIZE = 384;\n\n// Maximum size of an avatar in bytes for sending in-band. Bigger avatars will be sent out of band (as uploads).\nexport const MAX_AVATAR_BYTES = 4096;\n\n// Size of the broken_image shown in MessagesView\nexport const BROKEN_IMAGE_SIZE = 32;\n\n// Number of chat messages to fetch in one call.\nexport const MESSAGES_PAGE = 24;\n\n// Default maximum in-band (included directly into the message) attachment size which fits into\n// a message of 256K in size. Used when the server-provided value is unavailable. The actual\n// binary size of the attachment should be smaller due to base64 encoding expansion and some overhead,\n// for instance 1024 bytes.\n// Increase this limit to a greater value in production, if desired. Also increase\n// max_message_size in the server config.\nexport const MAX_INBAND_ATTACHMENT_SIZE = 262_144;\n\n// Default absolute maximum attachment size to be used with the server = 8MB.\n// Used when the server-provided value is unavailable. Increase to something like 100MB in production.\nexport const MAX_EXTERN_ATTACHMENT_SIZE = 1 << 23;\n\n// Maximum allowed linear dimension (pixels) of an image sent inline. Larger images will be shrunk\n// to make the larger dimension fit under this size. You may want to adjust it to 1600 or\n// 2400 for production.\nexport const MAX_IMAGE_DIM = 1024;\n\n// Linear dimensions of image preview: shrink image under this size for previews.\nexport const IMAGE_PREVIEW_DIM = 64;\n\n// Linear dimensions of image thumbnail: shrink image under this size for thumbnails in reply quote previews.\nexport const IMAGE_THUMBNAIL_DIM = 36;\n\n// Maximum number of online users to be shown in a topic title bar. Others will be\n// hidden under \"+X more\"\nexport const MAX_ONLINE_IN_TOPIC = 4;\n\n// Maximum length of user name, topic title, and private comment.\nexport const MAX_TITLE_LENGTH = 60;\n// Maximum length of topic description.\nexport const MAX_TOPIC_DESCRIPTION_LENGTH = 360;\n\n// Length of message previews in chat list, in characters.\nexport const MESSAGE_PREVIEW_LENGTH = 80;\n\n// Length of a quote in quoted reply (for outgoing messages).\nexport const QUOTED_REPLY_LENGTH = 30;\n// Length of a preview of a forwarded message.\nexport const FORWARDED_PREVIEW_LENGTH = 84;\n\n// Minimum duration of an audio recording in milliseconds (2 sec).\nexport const MIN_DURATION = 2_000;\n// Maximum duration of an audio recording in milliseconds (10 min).\nexport const MAX_DURATION = 600_000;\n\n// Link for \"Contact Us\".\nexport const LINK_CONTACT_US = 'mailto:support@tinode.co';\n\n// Link to Privacy Policy.\nexport const LINK_PRIVACY_POLICY = 'https://tinode.co/privacy.html';\n\n// Link to Terms of Service.\nexport const LINK_TERMS_OF_SERVICE = 'https://tinode.co/terms.html';\n\n// Video calls/WebRTC configuration.\nexport const CALL_WEBRTC_CONFIG = {\n iceServers: [\n { urls: [ \"stun:bn-turn1.xirsys.com\" ] },\n {\n username: \"0kYXFmQL9xojOrUy4VFemlTnNPVFZpp7jfPjpB3AjxahuRe4QWrCs6Ll1vDc7TTjAAAAAGAG2whXZWJUdXRzUGx1cw==\",\n credential: \"285ff060-5a58-11eb-b269-0242ac140004\",\n urls: [\n \"turn:bn-turn1.xirsys.com:80?transport=udp\",\n \"turn:bn-turn1.xirsys.com:3478?transport=udp\",\n \"turn:bn-turn1.xirsys.com:80?transport=tcp\",\n \"turn:bn-turn1.xirsys.com:3478?transport=tcp\",\n \"turns:bn-turn1.xirsys.com:443?transport=tcp\",\n \"turns:bn-turn1.xirsys.com:5349?transport=tcp\"\n ]\n }\n ]};\n","// Context Menu: popup/dropdown menu.\nimport React from 'react';\nimport { injectIntl, defineMessages } from 'react-intl';\n\nimport { REM_SIZE } from '../config.js';\n\nconst messages = defineMessages({\n info: {\n id: 'menu_item_info',\n defaultMessage: 'Info',\n description: 'Show extended topic information'\n },\n clear_messages: {\n id: 'menu_item_clear_messages',\n defaultMessage: 'Clear messages',\n description: 'Delete all messages'\n },\n clear_for_all: {\n id: 'menu_item_clear_messages_for_all',\n defaultMessage: 'Clear for All',\n description: 'Delete all message(s) for all members'\n },\n delete: {\n id: 'menu_item_delete',\n defaultMessage: 'Delete',\n description: 'Delete selected messages'\n },\n delete_for_all: {\n id: 'menu_item_delete_for_all',\n defaultMessage: 'Delete for All',\n description: 'Delete selected message(s) for all members'\n },\n send_retry: {\n id: 'menu_item_send_retry',\n defaultMessage: 'Retry',\n description: 'Retry sending message'\n },\n mute: {\n id: 'menu_item_mute',\n defaultMessage: 'Mute',\n description: 'Turn off notifications'\n },\n unmute: {\n id: 'menu_item_unmute',\n defaultMessage: 'Unmute',\n description: 'Turn notifications on'\n },\n reply: {\n id: 'menu_item_reply',\n defaultMessage: 'Reply',\n description: 'Reply to message'\n },\n forward: {\n id: 'menu_item_forward',\n defaultMessage: 'Forward',\n description: 'Forward message'\n },\n topic_delete: {\n id: 'menu_item_delete_topic',\n defaultMessage: 'Delete',\n description: 'Delete entire topic'\n },\n topic_delete_warning: {\n id: 'topic_delete_warning',\n defaultMessage: 'Are you sure you want to delete this conversation? It cannot be undone.',\n description: 'Alert warning when deleting entire topic'\n },\n delete_messages_warning: {\n id: 'delete_messages_warning',\n defaultMessage: 'Are you sure you want to delete all messages for everyone? It cannot be undone.',\n description: 'Alert dialog warning when hard-deleting all messages.'\n },\n unblock: {\n id: 'menu_item_unblock',\n defaultMessage: 'Unblock',\n description: 'Unblock topic or user'\n },\n // Generic string suitable for either topic or user.\n block: {\n id: 'menu_item_block',\n defaultMessage: 'Block',\n description: 'Block topic or user'\n },\n topic_block_warning: {\n id: 'topic_block_warning',\n defaultMessage: 'Are you sure you want to block this conversation?',\n description: 'Alert warning when blocking a topic.'\n },\n member_delete: {\n id: 'menu_item_member_delete',\n defaultMessage: 'Remove',\n description: 'Remove user from topic'\n },\n archive: {\n id: 'menu_item_archive_topic',\n defaultMessage: 'Archive',\n description: 'Move topic from the list of active chats to archive'\n },\n unarchive: {\n id: 'menu_item_restore_topic',\n defaultMessage: 'Restore',\n description: 'Restore topic from archive'\n },\n edit_permissions: {\n id: 'menu_item_edit_permissions',\n defaultMessage: 'Edit permissions',\n description: 'Menu item [Edit permissions]'\n },\n clear_messages_warning: {\n id: 'clear_messages_warning',\n defaultMessage: 'Are you sure you want to clear all messages? It cannot be undone.',\n description: 'Alert dialog warning when deleting all messages.'\n },\n});\n\nclass ContextMenu extends React.Component {\n constructor(props) {\n super(props);\n\n this.selfRef = React.createRef();\n\n const {formatMessage} = props.intl;\n\n this.handlePageClick = this.handlePageClick.bind(this);\n this.handleEscapeKey = this.handleEscapeKey.bind(this);\n this.handleClick = this.handleClick.bind(this);\n\n // Preconfigured menu items.\n this.MenuItems = {\n 'topic_info': {\n id: 'topic_info',\n title: formatMessage(messages.info),\n handler: null\n },\n 'messages_clear': {\n id: 'messages_clear',\n title: formatMessage(messages.clear_messages),\n handler: (params, errorHandler) => {\n return props.onShowAlert(\n formatMessage(messages.clear_messages), // title\n formatMessage(messages.clear_messages_warning), // content\n (() => { this.deleteMessages(true, false, params, errorHandler); }), // onConfirm\n null, // \"OK\"\n true, // Show Reject button\n null // \"Cancel\"\n );\n }\n },\n 'messages_clear_hard': {\n id: 'messages_clear_hard',\n title: formatMessage(messages.clear_for_all),\n handler: (params, errorHandler) => {\n return props.onShowAlert(\n formatMessage(messages.clear_for_all), // title\n formatMessage(message.delete_messages_warning), // content\n (() => { return this.deleteMessages(true, true, params, errorHandler); }),\n null, // \"OK\"\n true, // Show Reject button\n null // \"Cancel\"\n );\n }\n },\n 'message_delete': {\n id: 'message_delete',\n title: formatMessage(messages.delete),\n handler: (params, errorHandler) => {\n return this.deleteMessages(false, false, params, errorHandler);\n }\n },\n 'message_delete_hard': {\n id: 'message_delete_hard',\n title: formatMessage(messages.delete_for_all),\n handler: (params, errorHandler) => {\n return this.deleteMessages(false, true, params, errorHandler);\n }\n },\n 'menu_item_send_retry': {\n id: 'menu_item_send_retry',\n title: formatMessage(messages.send_retry),\n handler: (params, errorHandler) => {\n return this.retryMessage(params, errorHandler);\n }\n },\n 'menu_item_reply': {\n id: 'menu_item_reply',\n title: formatMessage(messages.reply),\n handler: (params, errorHandler) => {\n return this.replyToMessage(params, errorHandler);\n }\n },\n 'menu_item_forward': {\n id: 'menu_item_forward',\n title: formatMessage(messages.forward),\n handler: () => {} /* the action is taken directly in tinode-web */\n },\n 'topic_unmute': {\n id: 'topic_unmute',\n title: formatMessage(messages.unmute),\n handler: this.topicPermissionSetter.bind(this, '+P')\n },\n 'topic_mute': {\n id: 'topic_mute',\n title: formatMessage(messages.mute),\n handler: this.topicPermissionSetter.bind(this, '-P')\n },\n 'topic_unblock': {\n id: 'topic_unblock',\n title: formatMessage(messages.unblock),\n handler: this.topicPermissionSetter.bind(this, '+JP')\n },\n 'topic_block': {\n id: 'topic_block',\n title: formatMessage(messages.block),\n handler: (params, errorHandler) => {\n return props.onShowAlert(\n formatMessage(messages.block), // title\n formatMessage(messages.topic_block_warning), // content\n (() => {\n return this.topicPermissionSetter('-JP', params, errorHandler).then((ctrl) => {\n this.props.onTopicRemoved(params.topicName);\n return ctrl;\n });\n }),\n null, // \"OK\"\n true, // Show Reject button\n null // \"Cancel\"\n );\n }\n },\n 'topic_delete': {\n id: 'topic_delete',\n title: formatMessage(messages.topic_delete),\n handler: (params, errorHandler) => {\n return props.onShowAlert(\n formatMessage(messages.topic_delete), // title\n formatMessage(messages.topic_delete_warning), // content\n (() => {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic) {\n console.warn(\"Topic not found: \", params.topicName);\n return;\n }\n return topic.delTopic(true).catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }),\n null, // \"OK\"\n true, // Show Reject button\n null // \"Cancel\"\n );\n }\n },\n 'topic_archive': {\n id: 'topic_archive',\n title: formatMessage(messages.archive),\n handler: (params, errorHandler) => {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic) {\n console.warn(\"Topic not found: \", params.topicName);\n return;\n }\n return topic.archive(true).catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }\n },\n 'topic_restore': {\n id: 'topic_restore',\n title: formatMessage(messages.unarchive),\n handler: (params, errorHandler) => {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic) {\n console.warn(\"Topic not found: \", params.topicName);\n return;\n }\n return topic.archive(false).catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }\n },\n // menu_item_edit_permissions is defined elsewhere.\n 'permissions': {\n id: 'permissions',\n title: formatMessage(messages.edit_permissions),\n handler: null\n },\n 'member_delete': {\n id: 'member_delete',\n title: formatMessage(messages.member_delete),\n handler: (params, errorHandler) => {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic || !params.user) {\n console.warn(\"Topic or user not found: '\" + params.topicName + \"', '\" + params.user + \"'\");\n return;\n }\n return topic.delSubscription(params.user).catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }\n },\n 'member_mute': {\n id: 'member_mute',\n title: formatMessage(messages.mute),\n handler: this.topicPermissionSetter.bind(this, '-P')\n },\n 'member_unmute': {\n id: 'member_unmute',\n title: formatMessage(messages.unmute),\n handler: this.topicPermissionSetter.bind(this, '+P')\n },\n 'member_block': {\n id: 'member_block',\n title: formatMessage(messages.block),\n handler: this.topicPermissionSetter.bind(this, '-JP')\n },\n 'member_unblock': {\n id: 'member_unblock',\n title: formatMessage(messages.unblock),\n handler: this.topicPermissionSetter.bind(this, '+JP')\n },\n };\n }\n\n componentDidMount() {\n document.addEventListener('mousedown', this.handlePageClick, false);\n document.addEventListener('keyup', this.handleEscapeKey, false);\n }\n\n componentWillUnmount() {\n document.removeEventListener('mousedown', this.handlePageClick, false);\n document.removeEventListener('keyup', this.handleEscapeKey, false);\n }\n\n handlePageClick(e) {\n if (this.selfRef.current.contains(e.target)) {\n return;\n }\n e.preventDefault();\n e.stopPropagation();\n this.props.hide();\n }\n\n handleEscapeKey(e) {\n if (e.keyCode === 27) {\n this.props.hide();\n }\n }\n\n handleClick(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.hide();\n let item = this.props.items[e.currentTarget.dataset.id];\n if (typeof item == 'string') {\n item = this.MenuItems[item];\n }\n\n if (!item) {\n console.error(\"Invalid menu item ID\", e.currentTarget.dataset.id);\n } else {\n this.props.onAction(\n item.id,\n item.handler(this.props.params, this.props.onError),\n this.props.params);\n }\n }\n\n // Menu Actions\n\n deleteMessages(all, hard, params, errorHandler) {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic) {\n console.warn(\"Topic not found: \", params.topicName);\n return;\n }\n\n // We don't know if the message is still pending (e.g. attachment is being uploaded),\n // so try cancelling first. No harm if we can't cancel.\n // The message can be cancelled if transmission to the server has not\n // started yet or if the message send has failed.\n if (!all && topic.cancelSend(params.seq)) {\n return;\n }\n // Can't cancel. Delete instead.\n const promise = all ?\n topic.delMessagesAll(hard) :\n topic.delMessagesList([params.seq], hard);\n\n return promise.catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }\n\n // Retries sending failed message.\n retryMessage(params, errorHandler) {\n const topic = this.props.tinode.getTopic(params.topicName);\n // Remove the existing message entry.\n if (!topic || !topic.flushMessage(params.seq)) {\n return;\n }\n const msg = topic.createMessage(params.content, false);\n return topic.publishDraft(msg).catch((err) => {\n if (errorHandler) {\n errorHandler(err.message, 'err');\n }\n });\n }\n\n // Function is used by context menu to set permissions.\n topicPermissionSetter(mode, params, errorHandler) {\n const topic = this.props.tinode.getTopic(params.topicName);\n if (!topic) {\n console.warn(\"Topic not found\", params.topicName);\n return;\n }\n\n let result = topic.updateMode(params.user, mode);\n if (errorHandler) {\n result = result.catch((err) => {\n errorHandler(err.message, 'err');\n });\n }\n return result;\n }\n\n replyToMessage(params, errorHandler) {\n params.pickReply(params.seq, params.content, params.userFrom, params.userName, errorHandler);\n }\n\n render() {\n const menu = [];\n let count = 0;\n this.props.items.map((item) => {\n if (typeof item == 'string') {\n item = this.MenuItems[item];\n }\n if (item && item.title) {\n menu.push(\n item.title == '-' ?\n \n :\n
{item.title}
\n );\n }\n count++;\n });\n\n // Ensure that menu is inside the app-container.\n const hSize = 12 * REM_SIZE;\n const vSize = REM_SIZE * (0.7 + menu.length * 2.5);\n const left = (this.props.bounds.right - this.props.clickAt.x < hSize) ?\n (this.props.clickAt.x - this.props.bounds.left - hSize) :\n (this.props.clickAt.x - this.props.bounds.left);\n const top = (this.props.bounds.bottom - this.props.clickAt.y < vSize) ?\n (this.props.clickAt.y - this.props.bounds.top - vSize) :\n (this.props.clickAt.y - this.props.bounds.top);\n\n const position = {\n left: left + 'px',\n top: top + 'px'\n };\n\n return (\n
\n {menu}\n
\n );\n }\n}\n\nexport default injectIntl(ContextMenu);\n","import React from 'react';\n\nconst icon_mapping = {'muted': 'notifications_off', 'banned': 'block', 'staff': 'verified_user'};\n\n/* Contact's labels: [you], or icons [muted], [blocked] */\nexport default class ContactBadges extends React.PureComponent {\n render() {\n let badges = null;\n if (this.props.badges && this.props.badges.length > 0) {\n badges = [];\n this.props.badges.map((b) => {\n const color = (b.color ? ' ' + b.color : '');\n if (b.icon) {\n badges.push({icon_mapping[b.icon] || b.icon});\n } else {\n badges.push({b.name});\n }\n });\n return <>{badges}>;\n }\n return null;\n }\n};\n","// Short representation of time in the past.\nexport function shortDateFormat(then, locale) {\n locale = locale || window.navigator.userLanguage || window.navigator.language;\n const now = new Date();\n if (then.getFullYear() == now.getFullYear()) {\n // Same year.\n if (then.getMonth() == now.getMonth() && then.getDate() == now.getDate()) {\n // Same month and day, show time only.\n return then.toLocaleTimeString(locale, {hour12: false, hour: '2-digit', minute: '2-digit'});\n }\n // Different month and/or day, show month day, time.\n return then.toLocaleDateString(locale,\n {hour12: false, month: 'short', day: 'numeric', hour: '2-digit', minute: '2-digit'});\n }\n // Different year: just show the date.\n return then.toLocaleDateString(locale, {year: 'numeric', month: 'short', day: 'numeric'});\n}\n\n// Convert seconds to [hours:]minutes:seconds, i.e. 156 sec -> 2:36, 3756 sec -> 1:02:36.\n// If fixedMins is true, then minutes are represented by at least two digits.\nexport function secondsToTime(seconds, fixedMin) {\n let min = Math.floor(seconds / 60) | 0;\n let hours = Math.floor(min / 60) | 0;\n\n if (fixedMin || hours > 0) {\n min = min < 10 ? `0${min}` : min;\n }\n let sec = (seconds % 60) | 0;\n sec = sec < 10 ? `0${sec}` : sec;\n if (hours == 0) {\n return `${min}:${sec}`;\n }\n return `${hours}:${min}:${sec}`;\n}\n\n// Convert a number of bytes to human-readable format.\nexport function bytesToHumanSize(bytes) {\n if (!bytes || bytes == 0) {\n return '0 Bytes';\n }\n\n const sizes = ['Bytes', 'KB', 'MB', 'GB', 'TB', 'PB'];\n const bucket = Math.min(Math.floor(Math.log2(bytes) / 10) | 0, sizes.length-1);\n const count = bytes / Math.pow(1024, bucket);\n const round = bucket > 0 ? (count < 3 ? 2 : (count < 30 ? 1 : 0)) : 0;\n return count.toFixed(round) + ' ' + sizes[bucket];\n}\n\n// Shorten a file name to be under maxLength by clipping out the middle.\nexport function shortenFileName(filename, maxLength) {\n if (typeof filename != 'string') {\n return filename;\n }\n return filename.length > maxLength ?\n filename.slice(0, maxLength/2 - 1) + '…' + filename.slice(1 - maxLength/2) : filename;\n}\n\n// Get 32 bit integer hash value for a string. Ideally it should produce the same value\n// as Java's String#hash().\nfunction stringToColorHash(value) {\n let hash = 0;\n value = '' + value;\n for (let i = 0; i < value.length; i++) {\n hash = ((hash << 5) - hash) + value.charCodeAt(i);\n hash = hash & hash; // Convert to 32bit integer\n }\n return hash;\n}\n\n// User avatar letter color id.\nexport function letterTileColorId(userId) {\n return Math.abs(stringToColorHash(userId)) % 16;\n}\n\n// Converts user or topic ID to a CSS color class. Ideally it should produce the same color value as Java version.\n// params:\n// - {string} id: user or topic ID\n// - {boolean} light: light or dark version of the color.\n// - {boolean} fg: foreground (text) or background color.\nexport function idToColorClass(id, light, fg) {\n return (light ? 'lt-' : 'dk-') + (fg ? 'fg-' : 'bg-') + letterTileColorId(id);\n}\n","// Video call states.\nexport const CALL_STATE_NONE = 0;\nexport const CALL_STATE_OUTGOING_INITATED = 1;\nexport const CALL_STATE_INCOMING_RECEIVED = 2;\nexport const CALL_STATE_IN_PROGRESS = 3;\n\n// Mime type used for video call messages.\nexport const CALL_MESSAGE_MIME_TYPE = 'application/x-tinode-webrtc';\n","// Odds and ends\n\nimport { Tinode } from 'tinode-sdk';\n\nimport { CALL_MESSAGE_MIME_TYPE } from '../constants.js'\n\n// Make shortcut icon appear with a green dot + show unread count in title.\nexport function updateFavicon(count) {\n const oldIcon = document.getElementById('shortcut-icon');\n const head = document.head || document.getElementsByTagName('head')[0];\n const newIcon = document.createElement('link');\n newIcon.type = 'image/png';\n newIcon.id = 'shortcut-icon';\n newIcon.rel = 'shortcut icon';\n newIcon.href = 'img/logo32x32' + (count > 0 ? 'a' : '') + '.png';\n if (oldIcon) {\n head.removeChild(oldIcon);\n }\n head.appendChild(newIcon);\n\n document.title = (count > 0 ? '('+count+') ' : '') + 'Tinode';\n}\n\n// Create theCard which represents user's or topic's \"public\" info.\nexport function theCard(fn, imageUrl, imageMimeType, note) {\n let card = null;\n fn = fn && fn.trim();\n note = note && note.trim();\n\n if (fn) {\n card = {\n fn: fn\n };\n }\n\n if (typeof note == 'string') {\n card = card || {};\n card.note = note ? note : Tinode.DEL_CHAR;\n }\n\n if (imageUrl) {\n card = card || {};\n let mimeType = imageMimeType;\n // Is this a data URL \"data:[][;base64],\"?\n const matches = /^data:(image\\/[-a-z0-9+.]+)?(;base64)?,/i.exec(imageUrl);\n if (matches) {\n mimeType = matches[1];\n card.photo = {\n data: imageUrl.substring(imageUrl.indexOf(',') + 1),\n ref: Tinode.DEL_CHAR\n };\n } else {\n card.photo = {\n data: Tinode.DEL_CHAR,\n ref: imageUrl\n };\n }\n card.photo.type = (mimeType || 'image/jpeg').substring('image/'.length);\n }\n\n return card;\n}\n\n// Deep-shallow compare two arrays: shallow compare each element.\nexport function arrayEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (!Array.isArray(a) || !Array.isArray(b)) {\n return false;\n }\n\n // Compare lengths first.\n if (a.length != b.length) {\n return false;\n }\n // Order of elements is ignored.\n a.sort();\n b.sort();\n for (let i = 0, l = a.length; i < l; i++) {\n if (a[i] !== b[i]) {\n return false;\n }\n }\n return true;\n}\n\n// Checks (loosely) if the given string is a phone. If so, returns the phone number in a format\n// as close to E.164 as possible.\nexport function asPhone(val) {\n val = val.trim();\n if (/^(?:\\+?(\\d{1,3}))?[- (.]*(\\d{3})[- ).]*(\\d{3})[- .]*(\\d{2})[- .]*(\\d{2})?$/.test(val)) {\n return val.replace(/[- ().]*/, '');\n }\n return null;\n}\n\n// Checks (loosely) if the given string is an email. If so returns the email.\nexport function asEmail(val) {\n val = val.trim();\n if (/^[a-zA-Z0-9_.+-]+@[a-zA-Z0-9-]+\\.[a-zA-Z0-9-.]+$/.test(val)) {\n return val;\n }\n return null;\n}\n\n// Checks if URL is a relative url, i.e. has no 'scheme://', including the case of missing scheme '//'.\n// The scheme is expected to be RFC-compliant, e.g. [a-z][a-z0-9+.-]*\n// example.html - ok\n// https:example.com - not ok.\n// http:/example.com - not ok.\n// ' ↲ https://example.com' - not ok. (↲ means carriage return)\nexport function isUrlRelative(url) {\n return url && !/^\\s*([a-z][a-z0-9+.-]*:|\\/\\/)/im.test(url);\n}\n\n// Ensure URL does not present an XSS risk. Optional allowedSchemes may contain an array of\n// strings with permitted URL schemes, such as ['ftp', 'ftps']; otherwise accept http and https only.\nexport function sanitizeUrl(url, allowedSchemes) {\n if (typeof url != 'string') {\n return url;\n }\n\n // Strip control characters and whitespace. They are not valid URL characters anyway.\n url = url.replace(/[^\\x20-\\x7E]/gmi, '').trim();\n\n // Relative URLs are safe.\n // Relative URL does not start with ':', abcd123: or '//'.\n if (!/^([a-z][a-z0-9+.-]*:|\\/\\/)/i.test(url)) {\n return url;\n }\n\n // Blob URLs are safe.\n if (/^blob:http/.test(url)) {\n return url;\n }\n\n // Absolute URL. Accept only safe schemes, or no scheme.\n const schemes = Array.isArray(allowedSchemes) ? allowedSchemes.join('|') : 'http|https';\n const re = new RegExp('^((' + schemes + '):|//)', 'i');\n if (!re.test(url)) {\n return null;\n }\n\n return url;\n}\n\n// Ensure URL is suitable as a source like field: the URL must be a relative URL or\n// have http:, https:, blob: or data: scheme.\n// In case of data: scheme, the URL must must be of the right MIME type such as 'data:{mimeMajor}/XXXX;base64,'.\nexport function sanitizeUrlForMime(url, mimeMajor) {\n if (!url) {\n return null;\n }\n\n const sanitizedUrl = sanitizeUrl(url);\n if (sanitizedUrl) {\n return sanitizedUrl;\n }\n\n // Is this a data: URL of the appropriate mime type?\n const re = new RegExp(`data:${mimeMajor}\\/[a-z0-9.-]+;base64,`, 'i');\n if (re.test(url.trim())) {\n return url;\n }\n\n return null;\n}\n\n// Given message's received status, return name and color of a delivery indicator icon.\nexport function deliveryMarker(received) {\n switch (received) {\n case Tinode.MESSAGE_STATUS_SENDING:\n return { name: 'access_time' }; // watch face\n case Tinode.MESSAGE_STATUS_FAILED:\n return { name: 'warning', color: 'danger-color' }; // yellow icon /!\\\n case Tinode.MESSAGE_STATUS_SENT:\n return { name: 'done' }; // checkmark\n case Tinode.MESSAGE_STATUS_RECEIVED:\n return { name: 'done_all' }; // double checkmark\n case Tinode.MESSAGE_STATUS_READ:\n return { name: 'done_all', color: 'blue' }; // blue double checkmark\n }\n return null;\n}\n\n// Wraps a promise to make it cancelable.\n// The parameter can be either a promise or an error. If it's an error, the wrapped promise is\n// created in a rejected state.\nexport function cancelablePromise(promise) {\n let hasCanceled = false;\n\n const wrappedPromise = promise instanceof Error ?\n Promise.reject(promise) :\n new Promise((resolve, reject) => {\n promise.then(\n result => hasCanceled ? reject({isCanceled: true}) : resolve(result),\n error => hasCanceled ? reject({isCanceled: true}) : reject(error)\n );\n });\n\n return {\n promise: wrappedPromise,\n cancel() {\n hasCanceled = true;\n },\n };\n};\n\n// Returns true if specified mime type represents a Tinode video call.\nexport function isVideoCall(mime) {\n return mime == CALL_MESSAGE_MIME_TYPE;\n}\n\n// Clips string to the specified length.\nexport function clipStr(str, length) {\n return str && str.substring(0, length);\n}\n","import React from 'react';\n\nimport { Tinode } from 'tinode-sdk';\n\nimport { idToColorClass } from '../lib/strformat.js';\nimport { sanitizeUrlForMime } from '../lib/utils.js';\n\nexport default class LetterTile extends React.PureComponent {\n render() {\n let avatar;\n if (this.props.avatar === true) {\n const isGroup = Tinode.isGroupTopicName(this.props.topic);\n const iconColor = idToColorClass(this.props.topic, isGroup);\n if (this.props.topic && this.props.title && this.props.title.trim()) {\n const letter = this.props.title.trim().charAt(0);\n const className = 'lettertile ' + iconColor + (this.props.deleted ? ' disabled' : '');\n avatar = (
{letter}
)\n } else {\n const className = 'material-icons ' + iconColor + (this.props.deleted ? ' disabled' : '');\n avatar = isGroup ? group : person;\n }\n } else if (this.props.avatar) {\n const url = this.props.tinode.authorizeURL(sanitizeUrlForMime(this.props.avatar, 'image'));\n // If avatar image is invalid, show a placeholder.\n const className = 'avatar' + (this.props.deleted ? ' deleted' : '');\n avatar = {e.target.onerror = null; e.target.src=\"../img/broken_image.png\"}} />;\n } else {\n avatar = null;\n }\n return avatar;\n }\n}\n","// The counter of unread messages in the topic.\nimport React from 'react';\n\nexport default class UnreadBadge extends React.PureComponent {\n render() {\n return (this.props.count > 0 ?\n {this.props.count > 9 ? \"9+\" : this.props.count}\n : null);\n }\n};\n","// File and image helper functions.\n\n// Supported image MIME types and corresponding file extensions.\nexport const SUPPORTED_IMAGE_FORMATS = ['image/jpeg', 'image/gif', 'image/png', 'image/svg', 'image/svg+xml'];\nexport const MIME_EXTENSIONS = ['jpg', 'gif', 'png', 'svg', 'svg'];\n\n// Get an URL from a theCard photo: either create a data: URL or return reference URL.\nexport function makeImageUrl(photo) {\n if (photo && typeof photo == 'object') {\n if (photo.ref) {\n return photo.ref\n }\n if (photo.data && photo.type) {\n const mime = photo.type.startsWith('image/') ? photo.type : ('image/' + photo.type);\n return 'data:' + mime + ';base64,' + photo.data;\n }\n }\n return null;\n}\n\n// Calculate linear dimensions for scaling image down to fit under a certain size.\n// Returns an object which contains destination sizes, source sizes, and offsets\n// into source (when making square images).\nexport function fitImageSize(width, height, maxWidth, maxHeight, forceSquare) {\n // Sanitize input\n width = width | 0;\n height = height | 0;\n maxWidth = maxWidth | 0;\n maxHeight = maxHeight | 0;\n\n if (width <= 0 || height <= 0 || maxWidth <= 0 || maxHeight <= 0) {\n return null;\n }\n\n if (forceSquare) {\n maxWidth = maxHeight = Math.min(maxWidth, maxHeight);\n }\n\n const scale = Math.min(\n Math.min(width, maxWidth) / width,\n Math.min(height, maxHeight) / height\n );\n\n const size = {\n dstWidth: (width * scale) | 0,\n dstHeight: (height * scale) | 0,\n };\n\n if (forceSquare) {\n // Also calculate parameters for making the image square.\n size.dstWidth = size.dstHeight = Math.min(size.dstWidth, size.dstHeight);\n size.srcWidth = size.srcHeight = Math.min(width, height);\n size.xoffset = ((width - size.srcWidth) / 2) | 0;\n size.yoffset = ((height - size.srcWidth) / 2) | 0;\n } else {\n size.xoffset = size.yoffset = 0;\n size.srcWidth = width;\n size.srcHeight = height;\n }\n return size;\n}\n\n// Ensure file's extension matches mime content type\nexport function fileNameForMime(fname, mime) {\n const idx = SUPPORTED_IMAGE_FORMATS.indexOf(mime);\n if (idx < 0 || !fname) {\n // Unknown mime or empty name.\n return fname;\n }\n const ext = MIME_EXTENSIONS[idx];\n\n const at = fname.lastIndexOf('.');\n if (at >= 0) {\n fname = fname.substring(0, at);\n }\n return fname + '.' + ext;\n}\n\n// Scale uploaded image to fit under certain dimensions and byte size, optionally constraining to a square.\n// Returns a promise which is resolven on success or rejected on failure.\nexport function imageScaled(fileOrBlob, maxWidth, maxHeight, maxSize, forceSquare) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.crossOrigin = 'Anonymous';\n img.onerror = function(err) {\n reject(new Error(\"Image format unrecognized\"));\n }\n img.onload = async function() {\n // Once the image is loaded, the URL is no longer needed.\n URL.revokeObjectURL(img.src);\n\n // Calculate the desired image dimensions.\n const dim = fitImageSize(img.width, img.height, maxWidth, maxHeight, forceSquare);\n if (!dim) {\n reject(new Error(\"Invalid image\"));\n return;\n }\n let canvas = document.createElement('canvas');\n canvas.width = dim.dstWidth;\n canvas.height = dim.dstHeight;\n let ctx = canvas.getContext('2d');\n ctx.imageSmoothingEnabled = true;\n ctx.drawImage(img, dim.xoffset, dim.yoffset, dim.srcWidth, dim.srcHeight,\n 0, 0, dim.dstWidth, dim.dstHeight);\n\n const mime = SUPPORTED_IMAGE_FORMATS.includes(fileOrBlob.type) ? fileOrBlob.type : 'image/jpeg';\n // Generate blob to check size of the image.\n let blob = await new Promise(resolve => canvas.toBlob(resolve, mime));\n if (!blob) {\n reject(new Error(\"Unsupported image format\"));\n return;\n }\n // Ensure the image is not too large. Shrink the image keeping the aspect ratio.\n // Do nothing if maxsize is <= 0.\n while (maxSize > 0 && blob.length > maxSize) {\n dim.dstWidth = (dim.dstWidth * 0.70710678118) | 0;\n dim.dstHeight = (dim.dstHeight * 0.70710678118) | 0;\n canvas.width = dim.dstWidth;\n canvas.height = dim.dstHeight;\n ctx = canvas.getContext('2d');\n ctx.clearRect(0, 0, canvas.width, canvas.height);\n ctx.drawImage(img, dim.xoffset, dim.yoffset, dim.srcWidth, dim.srcHeight,\n 0, 0, dim.dstWidth, dim.dstHeight);\n blob = await new Promise(resolve => canvas.toBlob(resolve, mime));\n }\n\n canvas = null;\n resolve({mime: mime, blob: blob, width: dim.dstWidth, height: dim.dstHeight, name: fileNameForMime(fileOrBlob.name, mime)});\n };\n img.src = URL.createObjectURL(fileOrBlob);\n });\n}\n\n// Scale and crop image according to specified dimensions.\n// The coordinates are in unscaled image pixels, i.e. cut the rectangle first then scale it.\n// returns a promise.\nexport function imageCrop(mime, objURL, left, top, width, height, scale) {\n return new Promise((resolve, reject) => {\n const img = new Image();\n img.crossOrigin = 'Anonymous';\n img.onerror = (err) => {\n reject(new Error(\"Image format unrecognized\"));\n };\n img.onload = () => {\n // Once the image is loaded, the URL is no longer needed.\n URL.revokeObjectURL(img.src);\n\n let canvas = document.createElement('canvas');\n canvas.width = width * scale;\n canvas.height = height * scale;\n let ctx = canvas.getContext('2d');\n ctx.imageSmoothingEnabled = true;\n ctx.drawImage(img, left, top, width, height, 0, 0, canvas.width, canvas.height);\n\n mime = SUPPORTED_IMAGE_FORMATS.includes(mime) ? mime : 'image/jpeg';\n // Generate blob to check size of the image.\n canvas.toBlob((blob) => {\n // Allow GC.\n canvas = null;\n if (blob) {\n resolve({mime: mime, blob: blob, width: width, height: height});\n } else {\n reject(new Error(\"Unsupported image format\"));\n }\n }, mime);\n };\n img.src = objURL;\n });\n}\n\n// Convert file to base64 string.\nexport function fileToBase64(file) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onerror = (evt) => {\n reject(reader.error);\n };\n reader.onload = () => {\n resolve({mime: file.type, bits: reader.result.split(',')[1], name: file.name});\n };\n reader.readAsDataURL(file);\n });\n}\n\n// Convert Blob to base64 string. Returns a promise resolved with the base64 string and mime.\nexport function blobToBase64(blob) {\n return new Promise((resolve, reject) => {\n const reader = new FileReader();\n reader.onerror = _ => {\n reject(reader.error);\n };\n reader.onload = () => {\n resolve({mime: blob.type, bits: reader.result.split(',')[1]});\n };\n reader.readAsDataURL(blob);\n });\n}\n\n// File pasted from the clipboard. It's either an inline image or a file attachment.\nexport function filePasted(event, onImageSuccess, onAttachmentSuccess, onError) {\n const items = (event.clipboardData || event.originalEvent.clipboardData || {}).items;\n if (!items || !items.length) {\n return false;\n }\n\n for (let i in items) {\n const item = items[i];\n if (item.kind === 'file') {\n const file = item.getAsFile();\n if (!file) {\n console.error(\"Failed to get file object from pasted file item\", item.kind, item.type);\n onError(\"Failed to get file object from pasted file item\");\n continue;\n }\n if (file.type && file.type.split('/')[0] == 'image') {\n onImageSuccess(file);\n } else {\n onAttachmentSuccess(file);\n }\n // Indicate that the pasted data contains a file.\n return true;\n }\n }\n // No file found.\n return false;\n}\n\n// Get mime type from data URL header.\nexport function getMimeType(header) {\n var mime = /^data:(image\\/[-+a-z0-9.]+);base64/.exec(header);\n return (mime && mime.length > 1) ? mime[1] : null;\n}\n\n// Given length of a binary object in bytes, calculate the length after\n// base64 encoding.\nexport function base64EncodedLen(n) {\n return Math.floor((n + 2) / 3) * 4;\n}\n\n// Given length of a base64-encoded object, calculate decoded size of the\n// pbject in bytes.\nexport function base64DecodedLen(n) {\n return Math.floor(n / 4) * 3;\n}\n\n// Re-encode string to standard base64 encoding with padding.\n// The string may be base64-URL encoded without the padding.\nexport function base64ReEncode(str) {\n if (str) {\n str = str.replace(/-/g, '+').replace(/_/g, '/');\n try {\n str = btoa(atob(str));\n } catch(err) {\n console.error(\"Failed to base64 re-encode string.\", err);\n str = null;\n }\n }\n return str;\n}\n\n// Convert a base64 encoded string with the provided mime type into a Blob.\nexport function base64ToBlob(str, mime) {\n if (!str) {\n return null;\n }\n\n try {\n // Make blob.\n const bin = atob(str);\n const length = bin.length;\n const buf = new ArrayBuffer(length);\n const arr = new Uint8Array(buf);\n for (let i = 0; i < length; i++) {\n arr[i] = bin.charCodeAt(i);\n }\n\n return new Blob([buf], { type: mime });\n } catch(err) {\n console.error(\"Failed to convert base64 to blob: \", err);\n }\n\n return null;\n}\n\nexport function intArrayToBase64(arr) {\n if (!Array.isArray(arr)) {\n return null;\n }\n try {\n let bin = '';\n new Uint8Array(arr).forEach(b => bin += String.fromCharCode(b));\n return window.btoa(bin);\n } catch (err) {}\n return null;\n}\n\nexport function base64ToIntArray(b64) {\n const arr = [];\n try {\n const bin = window.atob(b64);\n [...bin].forEach(c => {\n arr.push(c.charCodeAt(0));\n });\n return arr;\n } catch (err) {}\n return null;\n}\n","// Audio recorder widget.\n\nimport React from 'react';\n\nimport { secondsToTime } from '../lib/strformat';\nimport { base64ToIntArray } from '../lib/blob-helpers';\n\n// Make canvas bigger than the element size to reduce blurring.\nconst CANVAS_UPSCALING = 2.0;\n// Thickness of a visualization bar.\nconst LINE_WIDTH = 3 * CANVAS_UPSCALING;\n// Spacing between two visualization bars.\nconst SPACING = 2 * CANVAS_UPSCALING;\n// Color of histogram bars.\nconst BAR_COLOR = '#888A';\nconst BAR_COLOR_DARK = '#666C';\nconst THUMB_COLOR = '#444E';\n// Minimum number of amplitude bars to draw.\nconst MIN_PREVIEW_LENGTH = 16;\n\nexport default class AudioPlayer extends React.PureComponent {\n constructor(props) {\n super(props);\n\n let preview = base64ToIntArray(this.props.preview);\n if (!Array.isArray(preview) || preview.length < MIN_PREVIEW_LENGTH) {\n preview = null;\n }\n\n this.state = {\n canPlay: false,\n playing: false,\n currentTime: '0:00',\n duration: this.props.duration > 0 ? secondsToTime(this.props.duration / 1000) : '-:--',\n longMin: this.props.duration >= 600000,\n preview: preview\n };\n\n this.initAudio = this.initAudio.bind(this);\n this.initCanvas = this.initCanvas.bind(this);\n this.resampleBars = this.resampleBars.bind(this);\n this.visualize = this.visualize.bind(this);\n\n this.handlePlay = this.handlePlay.bind(this);\n this.handleSeek = this.handleSeek.bind(this);\n this.handleError = this.handleError.bind(this);\n\n this.audioPlayer = null;\n\n this.viewBuffer = [];\n this.canvasRef = React.createRef();\n }\n\n componentDidMount() {\n if (this.props.src) {\n this.initAudio();\n }\n\n this.initCanvas();\n }\n\n componentWillUnmount() {\n if (this.audioPlayer) {\n this.audioPlayer.oncanplay = null;\n this.audioPlayer.ontimeupdate = null;\n this.audioPlayer.onended = null;\n this.audioPlayer.pause();\n this.audioPlayer = null;\n }\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.src != prevProps.src) {\n this.initAudio();\n }\n\n if (this.props.preview != prevProps.preview) {\n let preview = base64ToIntArray(this.props.preview);\n if (!Array.isArray(preview) || preview.length < MIN_PREVIEW_LENGTH) {\n preview = null;\n }\n this.setState({preview: preview}, this.initCanvas);\n }\n }\n\n initAudio() {\n this.audioPlayer = new Audio(this.props.src);\n this.audioPlayer.oncanplay = _ => this.setState({canPlay: true});\n this.audioPlayer.ontimeupdate = _ => this.setState({\n currentTime: secondsToTime(this.audioPlayer.currentTime, this.state.longMin)\n });\n this.audioPlayer.onended = _ => {\n this.audioPlayer.currentTime = 0;\n this.setState({playing: false, currentTime: secondsToTime(0, this.state.longMin)})\n }\n }\n\n initCanvas() {\n // Force canvas aspect ratio to match one of the element + upscale canvas to reduce blurring.\n this.canvasRef.current.width = this.canvasRef.current.offsetWidth * CANVAS_UPSCALING;\n this.canvasRef.current.height = this.canvasRef.current.offsetHeight * CANVAS_UPSCALING;\n\n this.canvasContext = this.canvasRef.current.getContext('2d');\n this.canvasContext.lineCap = 'round';\n\n this.viewBuffer = this.resampleBars(this.state.preview);\n this.visualize();\n }\n\n // Draw amplitude of sound.\n visualize() {\n if (!this.canvasRef.current) {\n return;\n }\n\n const width = this.effectiveWidth;\n const height = this.canvasRef.current.height;\n\n this.canvasContext.lineWidth = LINE_WIDTH;\n\n const drawFrame = () => {\n if (!this.canvasRef.current || !this.audioPlayer) {\n // The component is unmounted.\n return;\n }\n\n this.canvasContext.clearRect(0, 0, this.canvasRef.current.width, height);\n\n if (this.viewBuffer) {\n if (this.state.playing) {\n window.requestAnimationFrame(drawFrame);\n }\n\n // Current playback position.\n const thumbAt = this.props.duration ?\n Math.max(0, Math.min(this.audioPlayer.currentTime * 1000 / this.props.duration, 1)) * (width - LINE_WIDTH * 2) : -1;\n\n // Draw amplitude bars.\n this.canvasContext.beginPath();\n this.canvasContext.strokeStyle = BAR_COLOR_DARK;\n for (let i = 0; i < this.viewBuffer.length; i++) {\n let x = 1 + i * (LINE_WIDTH + SPACING) + LINE_WIDTH * 0.5;\n let y = this.viewBuffer[i] * height * 0.9;\n\n const color = x < thumbAt ? BAR_COLOR_DARK : BAR_COLOR;\n if (this.canvasContext.strokeStyle != color) {\n this.canvasContext.stroke();\n this.canvasContext.beginPath();\n this.canvasContext.strokeStyle = color;\n }\n\n this.canvasContext.moveTo(x, (height - y) * 0.5);\n this.canvasContext.lineTo(x, height * 0.5 + y * 0.5);\n }\n // Actually draw the bars on canvas.\n this.canvasContext.stroke();\n\n // Draw thumb.\n if (this.props.duration) {\n this.canvasContext.beginPath();\n this.canvasContext.arc(thumbAt + LINE_WIDTH * 2, height * 0.5, LINE_WIDTH * 2, 0, 2 * Math.PI);\n this.canvasContext.fillStyle = THUMB_COLOR;\n this.canvasContext.fill();\n }\n }\n }\n\n drawFrame();\n }\n\n // Quick and dirty downsampling of the original preview bars into a smaller (or equal) number of bars we can display here.\n resampleBars(original) {\n const dstCount = ((this.canvasRef.current.width - SPACING) / (LINE_WIDTH + SPACING)) | 0;\n // Remove extra padding on the right due to fractional bar which is not drawn.\n this.effectiveWidth = dstCount * (LINE_WIDTH + SPACING) + SPACING;\n\n if (!Array.isArray(original) || original.length == 0) {\n return Array.apply(null, Array(dstCount)).map(_ => 0.01);\n }\n\n const factor = original.length / dstCount;\n let amps = [];\n let maxAmp = -1;\n for (let i=0; i 0) {\n return amps.map(a => a / maxAmp);\n }\n return Array.apply(null, Array(dstCount)).map(_ => 0.01);\n }\n\n handlePlay(e) {\n e.preventDefault();\n if (!this.state.canPlay) {\n return;\n }\n if (this.state.playing) {\n this.audioPlayer.pause();\n this.setState({playing: false});\n } else {\n this.audioPlayer.play();\n this.setState({playing: true}, this.visualize);\n }\n }\n\n handleError(err) {\n console.error(err);\n }\n\n handleSeek(e) {\n e.preventDefault();\n if (e.target && this.props.duration) {\n const rect = e.target.getBoundingClientRect();\n const offset = (e.clientX - rect.left) / this.effectiveWidth * CANVAS_UPSCALING;\n this.audioPlayer.currentTime = this.props.duration * offset / 1000;\n this.setState({currentTime: secondsToTime(this.audioPlayer.currentTime, this.state.longMin)});\n if (!this.state.playing) {\n this.visualize();\n }\n }\n }\n\n render() {\n const playClass = 'material-icons' +\n (this.props.short ? '' : ' large') +\n (this.state.canPlay ? '' : ' disabled');\n const play = (\n {this.state.playing ? 'pause_circle' :\n (this.state.canPlay ? 'play_circle' : 'not_interested')}\n );\n return (
\n );\n }\n}\n","// Image view with progress bar and a cancel button.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport FileProgress from './file-progress.jsx';\n\nexport default class UploadingImage extends React.PureComponent {\n constructor(props) {\n super(props);\n }\n\n render() {\n return (\n
\n {React.createElement('img', this.props)}\n
\n \n
\n
\n );\n }\n};\n","import React from 'react';\nimport { defineMessages } from 'react-intl';\n\nimport { Drafty } from 'tinode-sdk';\n\nimport AudioPlayer from '../widgets/audio-player.jsx'\nimport LazyImage from '../widgets/lazy-image.jsx'\nimport UploadingImage from '../widgets/uploading-image.jsx'\n\nimport { IMAGE_THUMBNAIL_DIM, BROKEN_IMAGE_SIZE, REM_SIZE } from '../config.js';\nimport { base64ToBlob, blobToBase64, fitImageSize, imageScaled } from './blob-helpers.js';\nimport { idToColorClass, secondsToTime, shortenFileName } from './strformat.js';\nimport { cancelablePromise, sanitizeUrlForMime } from './utils.js';\n\nconst messages = defineMessages({\n drafty_form: {\n id: 'drafty_form',\n defaultMessage: 'Form: ',\n description: 'Comment for form in drafty'\n },\n drafty_attachment: {\n id: 'drafty_attachment',\n defaultMessage: 'Attachment',\n description: 'Comment for attachment in drafty'\n },\n drafty_image: {\n id: 'drafty_image',\n defaultMessage: 'Picture',\n description: 'Comment for embedded images in drafty'\n },\n drafty_unknown: {\n id: 'drafty_unknown',\n defaultMessage: 'Unsupported',\n description: 'Unsupported entity in drafty'\n }\n});\n\n// Additional processing of image data.\nfunction handleImageData(el, data, attr) {\n if (!data) {\n attr.src = 'img/broken_image.png';\n attr.style = {\n width: IMAGE_THUMBNAIL_DIM + 'px',\n height: IMAGE_THUMBNAIL_DIM + 'px',\n };\n return el;\n }\n\n attr.className = 'inline-image';\n const dim = fitImageSize(data.width, data.height,\n this.viewportWidth > 0 ? Math.min(this.viewportWidth - REM_SIZE * 6.5, REM_SIZE * 34.5) :\n REM_SIZE * 34.5, REM_SIZE * 24, false) ||\n {dstWidth: BROKEN_IMAGE_SIZE, dstHeight: BROKEN_IMAGE_SIZE};\n attr.style = {\n width: dim.dstWidth + 'px',\n height: dim.dstHeight + 'px',\n // Looks like a Chrome bug: broken image does not respect 'width' and 'height'.\n minWidth: dim.dstWidth + 'px',\n minHeight: dim.dstHeight + 'px'\n };\n if (!Drafty.isProcessing(data)) {\n attr.src = this.authorizeURL(sanitizeUrlForMime(attr.src, 'image'));\n attr.alt = data.name;\n if (attr.src) {\n if (Math.max(data.width || 0, data.height || 0) > IMAGE_THUMBNAIL_DIM) {\n // Allow previews for large enough images.\n attr.onClick = this.onImagePreview;\n attr.className += ' image-clickable';\n }\n attr.loading = 'lazy';\n } else {\n attr.src = 'img/broken_image.png';\n }\n } else {\n // Use custom element instead of .\n el = UploadingImage;\n }\n\n return el;\n}\n\n// The main Drafty formatter: converts Drafty elements into React classes. 'this' is set by the caller.\n// 'this' must contain:\n// viewportWidth: this.props.viewportWidth;\n// authorizeURL: this.props.tinode.authorizeURL\n// onImagePreview: this.handleImagePreview\n// onFormButtonClick: this.handleFormButtonClick\n// onQuoteClick: this.handleQuoteClick (optional)\nexport function fullFormatter(style, data, values, key, stack) {\n if (stack.includes('QQ')) {\n return quoteFormatter.call(this, style, data, values, key);\n }\n\n if (!style) {\n // Unformatted.\n return values;\n }\n\n let el = Drafty.tagName(style);\n let attr = Drafty.attrValue(style, data) || {};\n attr.key = key;\n switch (style) {\n case 'AU':\n // Show audio player.\n if (attr.src) {\n attr.src = this.authorizeURL(sanitizeUrlForMime(attr.src, 'audio'));\n attr.duration = data.duration > 0 ? (data.duration | 0) : undefined;\n attr.preview = data.preview;\n attr.loading = 'lazy';\n }\n el = AudioPlayer;\n // Audio element cannot have content.\n values = null;\n break;\n case 'BR':\n values = null;\n break;\n case 'EX':\n // Ignore.\n break;\n case 'HL':\n // Highlighted text. Assign class name.\n attr.className = 'highlight';\n break;\n case 'HD':\n el = null;\n values = null;\n break;\n case 'IM':\n // Additional processing for images\n el = handleImageData.call(this, el, data, attr);\n // Image element cannot have content.\n values = null;\n break;\n case 'BN':\n // Button\n attr.onClick = this.onFormButtonClick;\n let inner = React.Children.map(values, (child) => {\n return typeof child == 'string' ? child : undefined;\n });\n if (!inner || inner.length == 0) {\n inner = [attr.name]\n }\n // Get text which will be sent back when the button is clicked.\n attr['data-title'] = inner.join('');\n break;\n case 'MN':\n // Mention\n attr.className = 'mention'\n if (data) {\n attr.className += ' ' + idToColorClass(data.val, false, true);\n }\n break;\n case 'FM':\n // Form\n attr.className = 'bot-form';\n break;\n case 'RW':\n // Form element formatting is dependent on element content.\n break;\n case 'QQ':\n // Quote/citation.\n attr.className = 'reply-quote'\n attr.onClick = this.onQuoteClick;\n break;\n default:\n if (!el) {\n // Unknown element.\n el = React.Fragment;\n attr = {key: key};\n // Generate comment for unknown element.\n let body = values;\n if (!Array.isArray(values) || !values.join('').trim()) {\n body = [{this.formatMessage(messages.drafty_unknown)}];\n }\n values = [extension, ' '].concat(body);\n }\n break;\n }\n if (!el) {\n return values;\n }\n return React.createElement(el, attr, values);\n}\n\n// Converts Drafty object into a one-line preview. 'this' is set by the caller.\n// 'this' must contain:\n// formatMessage: this.props.intl.formatMessage\n// messages: formatjs messages defined with defineMessages.\nexport function previewFormatter(style, data, values, key) {\n if (!style) {\n // Unformatted.\n return values;\n }\n\n let el = Drafty.tagName(style);\n const attr = { key: key };\n switch (style) {\n case 'AU':\n // Voicemail as '[mic] 0:00'.\n el = React.Fragment;\n values = [mic, ' ', secondsToTime(data.duration/1000)];\n break;\n case 'BR':\n // Replace new line with a space.\n el = React.Fragment;\n values = [' '];\n break;\n case 'HL':\n // Make highlight less prominent in preview.\n attr.className = 'highlight preview';\n break;\n case 'LN':\n case 'MN':\n // Disable links in previews.\n el = 'span';\n break;\n case 'IM':\n // Replace image with '[icon] Image'.\n el = React.Fragment;\n values = [photo, ' ', this.formatMessage(messages.drafty_image)];\n break;\n case 'BN':\n el = 'span';\n attr.className = 'flat-button faux';\n break;\n case 'FM':\n el = React.Fragment;\n values = [dashboard,\n this.formatMessage(messages.drafty_form)].concat(' ', values || []);\n break;\n case 'RW':\n el = React.Fragment;\n break;\n case 'EX':\n if (data) {\n if (data.mime == 'application/json') {\n // Ignore JSON attachments: they are form response payloads.\n return null;\n }\n // Clear payload.\n delete data.val;\n delete data.ref;\n }\n el = React.Fragment;\n values = [attachment, ' ', this.formatMessage(messages.drafty_attachment)];\n break;\n case 'QQ':\n case 'HD':\n el = null;\n values = null;\n break;\n default:\n if (!el) {\n // Unknown element.\n el = React.Fragment;\n values = [extension, ' ', this.formatMessage(messages.drafty_unknown)];\n }\n break;\n }\n if (!el) {\n return values;\n }\n return React.createElement(el, attr, values);\n};\n\n// Converts Drafty object into a quoted reply. 'this' is set by the caller.\nfunction inlineImageAttr(attr, data) {\n attr.style = {\n width: IMAGE_THUMBNAIL_DIM + 'px',\n height: IMAGE_THUMBNAIL_DIM + 'px',\n maxWidth: IMAGE_THUMBNAIL_DIM + 'px',\n maxHeight: IMAGE_THUMBNAIL_DIM + 'px',\n }\n attr.className = 'inline-image';\n attr.alt = this.formatMessage(messages.drafty_image);\n if (!data) {\n attr.src = 'img/broken_image.png';\n }\n attr.title = attr.alt;\n return attr;\n}\n\n// Displays a portion of Drafty within 'QQ' quotes. 'this' is set by the caller.\n// 'this' must contain:\n// formatMessage: this.props.intl.formatMessage\n// messages: formatjs messages defined with defineMessages.\n// authorizeURL: this.props.tinode.authorizeURL\n// onQuoteClick: this.handleQuoteClick (optional)\nfunction quoteFormatter(style, data, values, key) {\n if (['BR', 'EX', 'IM', 'MN'].includes(style)) {\n let el = Drafty.tagName(style);\n let attr = Drafty.attrValue(style, data) || {};\n attr.key = key;\n switch(style) {\n case 'BR':\n values = null;\n break;\n case 'IM':\n attr = inlineImageAttr.call(this, attr, data);\n values = [React.createElement('img', attr, null), ' ', attr.alt];\n el = React.Fragment;\n // Fragment attributes.\n attr = {key: key};\n break;\n case 'MN':\n el = 'span';\n attr.className = 'mention'\n if (data) {\n attr.className += ' ' + idToColorClass(data.val, false, true);\n }\n break;\n case 'EX':\n let fname;\n if (data) {\n if (data.mime == 'application/json') {\n // Ignore JSON attachments: they are form response payloads.\n return null;\n }\n fname = data.name;\n // Clear payload.\n delete data.val;\n delete data.ref;\n }\n el = React.Fragment;\n values = [attachment,\n shortenFileName(fname, 16) || this.formatMessage(messages.drafty_attachment)];\n break;\n }\n return React.createElement(el, attr, values);\n }\n return previewFormatter.call(this, style, data, values, key);\n}\n\n// Create image thumbnail suitable for inclusion in a quote.\nfunction quoteImage(data) {\n let promise;\n // Get the blob from the image data.\n if (data.val) {\n const blob = base64ToBlob(data.val, data.mime);\n if (!blob) {\n throw new Error(\"Invalid image\");\n }\n promise = Promise.resolve(blob);\n } else if (data.ref) {\n promise = fetch(this.authorizeURL(sanitizeUrlForMime(data.ref, 'image')))\n .then(evt => {\n if (evt.ok) {\n return evt.blob();\n } else {\n throw new Error(`Image fetch unsuccessful: ${evt.status} ${evt.statusText}`);\n }\n });\n } else {\n throw new Error(\"Missing image data\");\n }\n\n // Scale the blob.\n return promise\n .then(blob => {\n // Cut the square from the center of the image and shrink it.\n return imageScaled(blob, IMAGE_THUMBNAIL_DIM, IMAGE_THUMBNAIL_DIM, -1, true)\n }).then(scaled => {\n data.mime = scaled.mime;\n data.size = scaled.blob.size;\n data.width = scaled.width;\n data.height = scaled.height;\n delete data.ref;\n // Keeping the original file name, if provided: ex.data.name;\n\n data.src = URL.createObjectURL(scaled.blob);\n return blobToBase64(scaled.blob);\n }).then(b64 => {\n data.val = b64.bits;\n return data;\n }).catch(err => {\n delete data.val;\n delete data.src;\n data.width = IMAGE_THUMBNAIL_DIM;\n data.height = IMAGE_THUMBNAIL_DIM;\n // Rethrow.\n throw err;\n });\n}\n\n// Create a preview of a reply.\nexport function replyFormatter(style, data, values, key, stack) {\n if (style == 'IM') {\n const attr = inlineImageAttr.call(this, {key: key}, data);\n let loadedPromise;\n try {\n loadedPromise = cancelablePromise(quoteImage.call(this, data));\n } catch (error) {\n loadedPromise = cancelablePromise(error);\n }\n attr.whenDone = loadedPromise;\n values = [React.createElement(LazyImage, attr, null), ' ', attr.alt];\n return React.createElement(React.Fragment, {key: key}, values);\n } else if (style == 'QQ') {\n if (stack.includes('QQ')) {\n // Quote inside quote when forwarding a message.\n return React.createElement('span', {key: key},\n [format_quote, ' ']);\n }\n\n const attr = Drafty.attrValue('QQ', data) || {};\n attr.key = key;\n attr.className = 'reply-quote'\n return React.createElement(Drafty.tagName('QQ'), attr, values);\n }\n return quoteFormatter.call(this, style, data, values, key);\n}\n","// A single topic or user.\nimport React from 'react';\nimport { FormattedMessage, injectIntl } from 'react-intl';\n\nimport ContactBadges from './contact-badges.jsx';\nimport LetterTile from './letter-tile.jsx';\nimport UnreadBadge from './unread-badge.jsx';\n\nimport { Drafty } from 'tinode-sdk';\n\nimport { previewFormatter } from '../lib/formatters.js';\nimport { deliveryMarker } from '../lib/utils.js';\n\nclass Contact extends React.Component {\n constructor(props) {\n super(props);\n\n this.handleClick = this.handleClick.bind(this);\n this.handleContextClick = this.handleContextClick.bind(this);\n }\n\n handleClick(e) {\n e.preventDefault();\n e.stopPropagation();\n if (this.props.onSelected) {\n // Index this.props.index is used by GroupManager.\n this.props.onSelected(this.props.item, this.props.index);\n }\n }\n\n handleContextClick(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.showContextMenu({ topicName: this.props.item, y: e.pageY, x: e.pageX });\n }\n\n render() {\n let title = this.props.title;\n if (!title) {\n title = ;\n } else if (title.length > 30) {\n // FIXME: this is probably wrong for RTL languages.\n title = title.substring(0, 28) + '…';\n }\n const online = this.props.now ? 'online' : 'offline';\n const avatar = this.props.avatar ? this.props.avatar : true;\n const badges = this.props.badges ? this.props.badges.slice() : [];\n const icon_badges = [];\n if (this.props.isVerified) {\n icon_badges.push({icon: 'verified', color: 'verified-color'});\n }\n if (this.props.isStaff) {\n icon_badges.push({icon: 'staff', color: 'staff-color'});\n }\n if (this.props.isDangerous) {\n icon_badges.push({icon: 'dangerous', color: 'danger-color'});\n }\n if (this.props.acs) {\n if (this.props.showMode) {\n badges.push({name: this.props.acs.getMode(), key: 'mode'});\n }\n if (this.props.acs.isMuted()) {\n icon_badges.push({icon: 'muted'});\n }\n if (!this.props.acs.isJoiner()) {\n icon_badges.push({icon: 'banned'});\n }\n }\n\n // The this.props.preview contains alreay shortened Drafty or string.\n let preview;\n if (this.props.previewIsVideoCall) {\n preview = <>{this.props.previewIsResponse ? 'call_received' : 'call_made'}\n video_call>;\n } else if (typeof this.props.preview == 'string') {\n preview = this.props.preview;\n } else if (Drafty.isValid(this.props.preview)) {\n preview = React.createElement(React.Fragment, null, Drafty.format(this.props.preview, previewFormatter,\n {formatMessage: this.props.intl.formatMessage}));\n } else if (this.props.preview) {\n preview =\n <>warning_amber\n \n >;\n }\n\n const icon = deliveryMarker(this.props.received);\n const marker = icon ? {icon.name} : null;\n const titleClass = 'contact-title' + (this.props.deleted ? ' deleted' : '');\n\n return (\n
\n );\n }\n};\n\nexport default injectIntl(Contact);\n","// A panel included into a list of contacts with an action text.\nimport React from 'react';\nimport { injectIntl } from 'react-intl';\n\nclass ContactAction extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.handleClick = this.handleClick.bind(this);\n }\n\n handleClick(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.onAction(this.props.action);\n }\n\n render() {\n const {formatMessage} = this.props.intl;\n return (\n
: null);\n }\n}\n","import React from 'react';\n\nimport LetterTile from './letter-tile.jsx';\nimport LoadSpinner from './load-spinner.jsx';\n\nimport { sanitizeUrlForMime } from '../lib/utils.js';\n\nimport { AVATAR_SIZE } from '../config.js';\n\nexport default class AvatarUpload extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = {\n source: props.avatar\n };\n\n this.handleFileReceived = this.handleFileReceived.bind(this);\n }\n\n componentDidUpdate(prevProps) {\n if (this.props.avatar != prevProps.avatar) {\n this.setState({source: this.props.avatar});\n }\n }\n\n handleFileReceived(e) {\n const image = e.target.files[0];\n this.props.onImageUpdated(image.type, URL.createObjectURL(image), image.name);\n // Clear the value so the same file can be uploaded again.\n e.target.value = '';\n }\n\n render() {\n // Randomize id value in case more than one AvatarUpload is shown\n // at the same time.\n const randId = 'file-input-avatar-' + ('' + Math.random()).substring(0, 4);\n const className = 'avatar-upload' + (this.props.readOnly ? ' read-only' : '');\n return (\n
\n );\n }\n};\n\nexport default injectIntl(SendMessage);\n","import React from 'react';\nimport { FormattedMessage } from 'react-intl';\nimport SendMessage from '../widgets/send-message.jsx';\n\nimport { bytesToHumanSize, shortenFileName } from '../lib/strformat.js';\n\n// Get material icon name from mime type.\nfunction iconFromMime(mime) {\n // If more icons become available in material icons, add them to this mime-to-icon mapping.\n const mimeToIcon = {default: 'insert_drive_file', image: 'image', text: 'description', video: 'theaters'};\n\n return mimeToIcon[mime] || mimeToIcon[(mime || '').split('/')[0]] || mimeToIcon['default'];\n}\n\nexport default class DocPreview extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.handleSendDoc = this.handleSendDoc.bind(this);\n }\n\n handleSendDoc(caption) {\n this.props.onClose();\n this.props.onSendMessage(this.props.content.file);\n }\n\n render() {\n if (!this.props.content) {\n return null;\n }\n return (\n
\n );\n }\n};\n","// GroupSubs: a list of group subscribers currently online.\n// Show in the topic title bar\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport { MAX_ONLINE_IN_TOPIC } from '../config.js'\n\nimport LetterTile from './letter-tile.jsx';\nimport { makeImageUrl } from '../lib/blob-helpers.js';\n\nexport default class GroupSubs extends React.Component {\n constructor(props) {\n super(props);\n }\n\n render() {\n const usersOnline = [];\n const totalCount = (this.props.subscribers || []).length;\n const countToShow = Math.min(MAX_ONLINE_IN_TOPIC, totalCount);\n\n (this.props.subscribers || []).some((sub) => {\n usersOnline.push(\n
\n );\n }\n};\n","// A single topic or user.\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nexport default class Invitation extends React.PureComponent {\n constructor(props) {\n super(props);\n\n this.handleButtonAction = this.handleButtonAction.bind(this);\n }\n\n handleButtonAction(evt, data) {\n evt.preventDefault();\n this.props.onAction(data);\n }\n\n render() {\n return (\n
\n
\n \n
\n
\n \n \n \n
\n
\n );\n }\n};\n","/* This is just a static page to display when no conversation is selected. */\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nimport { Tinode } from 'tinode-sdk';\n\nimport { APP_NAME } from '../config.js';\n\nexport default class LogoView extends React.PureComponent {\n render() {\n const version = APP_NAME + ' (' + Tinode.getLibrary() + ')';\n return (\n
\n );\n }\n};\n","// Message bubble with non-payload content, such as an indicator of deleted content or a date stamp.\n\nimport React from 'react';\nimport { FormattedMessage } from 'react-intl';\n\nexport default class MetaMessage extends React.PureComponent {\n constructor(props) {\n super(props);\n }\n\n render() {\n let content = null;\n let bubbleClass = 'bubble';\n if (this.props.deleted) {\n // Message represents a range of deleted messages.\n content = <>block\n \n >\n bubbleClass += ' deleted';\n } else if (this.props.date) {\n // A date badge.\n content = <>{this.props.date}>\n bubbleClass += ' date';\n }\n\n if (!content) {\n return <>{null}>\n }\n\n return (\n
\n
\n
\n {content}\n
\n
\n
\n );\n }\n};\n","// Utility class for hash navigation.\n\n// Parse hash as in http://www.example.com/path#hash as if it were\n// path and arguments.\nexport default class HashNavigation {\n static parseUrlHash(hash) {\n // Split path from args, path -> parts[0], args->path[1]\n const parts = hash.split('?', 2);\n const params = {};\n let path = [];\n if (parts[0]) {\n path = parts[0].replace('#', '').split('/');\n }\n if (parts[1]) {\n parts[1].split('&').forEach(function(part) {\n const item = part.split('=');\n if (item[0]) {\n params[decodeURIComponent(item[0])] = decodeURIComponent(item[1]);\n }\n });\n }\n return {path: path, params: params};\n }\n\n static navigateTo(url) {\n window.location.hash = url;\n }\n\n static composeUrlHash(path, params) {\n let url = path.join('/');\n const args = [];\n for (const key in params) {\n if (params.hasOwnProperty(key)) {\n args.push(key + '=' + params[key]);\n }\n }\n if (args.length > 0) {\n url += '?' + args.join('&');\n }\n return url;\n }\n\n static addUrlParam(hash, key, value) {\n const parsed = this.parseUrlHash(hash);\n parsed.params[key] = value;\n return this.composeUrlHash(parsed.path, parsed.params);\n }\n\n static removeUrlParam(hash, key) {\n const parsed = this.parseUrlHash(hash);\n delete parsed.params[key];\n return this.composeUrlHash(parsed.path, parsed.params);\n }\n\n static setUrlSidePanel(hash, sidepanel) {\n const parsed = this.parseUrlHash(hash);\n parsed.path[0] = sidepanel;\n return this.composeUrlHash(parsed.path, parsed.params);\n }\n\n static setUrlInfoPanel(hash, infopanel) {\n const parsed = this.parseUrlHash(hash);\n if (infopanel) {\n parsed.params.info = infopanel;\n } else {\n delete parsed.params.info;\n }\n return this.composeUrlHash(parsed.path, parsed.params);\n }\n\n static setUrlTopic(hash, topic) {\n const parsed = this.parseUrlHash(hash);\n parsed.path[1] = topic;\n // Close InfoView on topic change.\n delete parsed.params.info;\n return this.composeUrlHash(parsed.path, parsed.params);\n }\n}\n","// Panel with a chat.\n\nimport React from 'react';\nimport { FormattedMessage, defineMessages, injectIntl } from 'react-intl';\n\nimport { Drafty, Tinode } from 'tinode-sdk';\n\nimport CallPanel from '../widgets/call-panel.jsx';\nimport ChatMessage from '../widgets/chat-message.jsx';\nimport ContactBadges from '../widgets/contact-badges.jsx';\nimport DocPreview from '../widgets/doc-preview.jsx';\nimport ErrorPanel from '../widgets/error-panel.jsx';\nimport GroupSubs from '../widgets/group-subs.jsx';\nimport ImagePreview from '../widgets/image-preview.jsx';\nimport Invitation from '../widgets/invitation.jsx';\nimport LetterTile from '../widgets/letter-tile.jsx';\nimport LoadSpinner from '../widgets/load-spinner.jsx';\nimport LogoView from './logo-view.jsx';\nimport MetaMessage from '../widgets/meta-message.jsx';\nimport SendMessage from '../widgets/send-message.jsx';\n\nimport { DEFAULT_P2P_ACCESS_MODE, IMAGE_PREVIEW_DIM, KEYPRESS_DELAY,\n MESSAGES_PAGE, MAX_EXTERN_ATTACHMENT_SIZE, MAX_IMAGE_DIM, MAX_INBAND_ATTACHMENT_SIZE,\n READ_DELAY, QUOTED_REPLY_LENGTH } from '../config.js';\nimport { CALL_STATE_OUTGOING_INITATED, CALL_STATE_IN_PROGRESS } from '../constants.js';\nimport { blobToBase64, fileToBase64, imageScaled, makeImageUrl } from '../lib/blob-helpers.js';\nimport HashNavigation from '../lib/navigation.js';\nimport { bytesToHumanSize, shortDateFormat } from '../lib/strformat.js';\nimport { isVideoCall } from '../lib/utils.js';\n\n// Run timer with this frequency (ms) for checking notification queue.\nconst NOTIFICATION_EXEC_INTERVAL = 300;\n// Scroll distance before [go to latest message] button is shown.\nconst SHOW_GO_TO_LAST_DIST = 100;\n\nconst messages = defineMessages({\n online_now: {\n id: 'online_now',\n defaultMessage: 'online now',\n description: 'Indicator that the user or topic is currently online',\n },\n last_seen: {\n id: 'last_seen_timestamp',\n defaultMessage: 'Last seen',\n description: 'Label for the timestamp of when the user or topic was last online'\n },\n not_found: {\n id: 'title_not_found',\n defaultMessage: 'Not found',\n description: 'Title shown when topic is not found'\n },\n channel: {\n id: 'channel',\n defaultMessage: 'channel',\n description: 'Subtitle shown for channels in MessagesView instead of last seen'\n },\n file_attachment_too_large: {\n id: 'file_attachment_too_large',\n defaultMessage: 'The file size {size} exceeds the {limit} limit.',\n description: 'Error message when attachment is too large'\n },\n invalid_content: {\n id: 'invalid_content',\n defaultMessage: 'invalid content',\n description: 'Shown when the message is unreadable'\n },\n});\n\n// Checks if the access permissions are granted but not yet accepted.\nfunction isUnconfirmed(acs) {\n if (acs) {\n const ex = acs.getExcessive() || '';\n return acs.isJoiner('given') && (ex.includes('R') || ex.includes('W'));\n }\n return false;\n}\n\nfunction isPeerRestricted(acs) {\n if (acs) {\n const ms = acs.getMissing() || '';\n return acs.isJoiner('want') && (ms.includes('R') || ms.includes('W'));\n }\n return false;\n}\n\nfunction shouldPresentCallPanel(callState) {\n // Show call panel if either:\n // - call is outgoing (and the client is waiting for the other side to pick up) or,\n // - call is already in progress.\n return callState == CALL_STATE_OUTGOING_INITATED || callState == CALL_STATE_IN_PROGRESS;\n}\n\nclass MessagesView extends React.Component {\n constructor(props) {\n super(props);\n\n this.state = MessagesView.getDerivedStateFromProps(props, {});\n\n this.leave = this.leave.bind(this);\n this.sendMessage = this.sendMessage.bind(this);\n this.retrySend = this.retrySend.bind(this);\n this.sendImageAttachment = this.sendImageAttachment.bind(this);\n this.sendFileAttachment = this.sendFileAttachment.bind(this);\n this.sendAudioAttachment = this.sendAudioAttachment.bind(this);\n this.sendKeyPress = this.sendKeyPress.bind(this);\n this.subscribe = this.subscribe.bind(this);\n this.handleScrollReference = this.handleScrollReference.bind(this);\n this.handleScrollEvent = this.handleScrollEvent.bind(this);\n this.handleDescChange = this.handleDescChange.bind(this);\n this.handleSubsUpdated = this.handleSubsUpdated.bind(this);\n this.handleMessageUpdate = this.handleMessageUpdate.bind(this);\n this.handleAllMessagesReceived = this.handleAllMessagesReceived.bind(this);\n this.handleInfoReceipt = this.handleInfoReceipt.bind(this);\n this.handleImagePostview = this.handleImagePostview.bind(this);\n this.handleClosePreview = this.handleClosePreview.bind(this);\n this.handleFormResponse = this.handleFormResponse.bind(this);\n this.handleContextClick = this.handleContextClick.bind(this);\n this.handleShowMessageContextMenu = this.handleShowMessageContextMenu.bind(this);\n this.handleNewChatAcceptance = this.handleNewChatAcceptance.bind(this);\n this.handleEnablePeer = this.handleEnablePeer.bind(this);\n this.handleAttachFile = this.handleAttachFile.bind(this);\n this.handleAttachImage = this.handleAttachImage.bind(this);\n this.handleCancelUpload = this.handleCancelUpload.bind(this);\n this.postReadNotification = this.postReadNotification.bind(this);\n this.clearNotificationQueue = this.clearNotificationQueue.bind(this);\n this.goToLatestMessage = this.goToLatestMessage.bind(this);\n\n this.handlePickReply = this.handlePickReply.bind(this);\n this.handleCancelReply = this.handleCancelReply.bind(this);\n this.handleQuoteClick = this.handleQuoteClick.bind(this);\n this.handleCallHangup = this.handleCallHangup.bind(this);\n\n this.chatMessageRefs = {};\n this.getOrCreateMessageRef = this.getOrCreateMessageRef.bind(this);\n\n this.readNotificationQueue = [];\n this.readNotificationTimer = null;\n }\n\n getOrCreateMessageRef(seqId) {\n if (this.chatMessageRefs.hasOwnProperty(seqId)) {\n return this.chatMessageRefs[seqId];\n }\n const ref = React.createRef();\n this.chatMessageRefs[seqId] = ref;\n return ref;\n }\n\n componentDidMount() {\n if (this.messagesScroller) {\n this.messagesScroller.addEventListener('scroll', this.handleScrollEvent);\n }\n }\n\n componentWillUnmount() {\n if (this.messagesScroller) {\n this.messagesScroller.removeEventListener('scroll', this.handleScrollEvent);\n }\n\n // Flush all notifications.\n this.clearNotificationQueue();\n }\n\n // Scroll last message into view on component update e.g. on message received\n // or vertical shrinking.\n componentDidUpdate(prevProps, prevState) {\n if (this.messagesScroller &&\n (prevState.topic != this.state.topic || prevState.messageCount != this.state.messageCount)) {\n // New message.\n if (this.state.scrollPosition < SHOW_GO_TO_LAST_DIST) {\n this.messagesScroller.scrollTop = this.messagesScroller.scrollHeight -\n this.state.scrollPosition -\n this.messagesScroller.offsetHeight;\n }\n }\n\n const topic = this.props.tinode ? this.props.tinode.getTopic(this.state.topic) : undefined;\n if (this.state.topic != prevState.topic) {\n if (prevState.topic && !Tinode.isNewGroupTopicName(prevState.topic)) {\n this.leave(prevState.topic);\n if (prevState.rtcPanel) {\n this.handleCallHangup(prevState.topic, prevProps.callSeq);\n }\n }\n\n if (topic) {\n topic.onData = this.handleMessageUpdate;\n topic.onAllMessagesReceived = this.handleAllMessagesReceived;\n topic.onInfo = this.handleInfoReceipt;\n topic.onMetaDesc = this.handleDescChange;\n topic.onSubsUpdated = this.handleSubsUpdated;\n topic.onPres = this.handleSubsUpdated;\n }\n }\n\n if (!this.props.applicationVisible) {\n // If application is not visible, flush all unsent 'read' notifications.\n this.clearNotificationQueue();\n } else {\n // Otherwise assume there are unread messages.\n this.postReadNotification(0);\n }\n\n if (topic && ((this.state.topic != prevState.topic) || !prevProps.ready)) {\n // Don't immediately subscribe to a new p2p topic, wait for the first message.\n if (topic._new && topic.isP2PType()) {\n topic.getMeta(topic.startMetaQuery().withDesc().build());\n } else {\n this.subscribe(topic);\n }\n }\n }\n\n static getDerivedStateFromProps(nextProps, prevState) {\n let nextState = {};\n if (!nextProps.topic) {\n // Default state: no topic.\n nextState = {\n messageCount: 0,\n latestClearId: -1,\n onlineSubs: [],\n topic: null,\n title: '',\n avatar: null,\n isVerified: false,\n isStaff: false,\n isDangerous: false,\n deleted: false,\n docPreview: null,\n imagePreview: null,\n imagePostview: null,\n rtcPanel: null,\n typingIndicator: false,\n scrollPosition: 0,\n fetchingMessages: false,\n peerMessagingDisabled: false,\n channel: false,\n reply: null,\n showGoToLastButton: false\n };\n } else if (nextProps.topic != prevState.topic) {\n const topic = nextProps.tinode.getTopic(nextProps.topic);\n\n nextState = {\n topic: nextProps.topic,\n docPreview: null,\n imagePreview: null,\n imagePostview: null,\n rtcPanel: null,\n typingIndicator: false,\n scrollPosition: 0,\n fetchingMessages: false,\n showGoToLastButton: false,\n deleted: topic._deleted\n };\n\n if (nextProps.forwardMessage) {\n // We are forwarding a message. Show preview.\n nextState.reply = {\n content: nextProps.forwardMessage.preview,\n seq: null\n };\n }\n\n if (topic) {\n // Topic exists.\n const subs = [];\n\n if (nextProps.connected) {\n topic.subscribers((sub) => {\n if (sub.online && sub.user != nextProps.myUserId) {\n subs.push(sub);\n }\n });\n }\n\n Object.assign(nextState, {\n onlineSubs: subs\n });\n\n if (topic.public) {\n Object.assign(nextState, {\n title: topic.public.fn,\n avatar: makeImageUrl(topic.public.photo)\n });\n } else {\n Object.assign(nextState, {\n title: '',\n avatar: null\n });\n }\n\n const peer = topic.p2pPeerDesc();\n if (peer) {\n Object.assign(nextState, {\n peerMessagingDisabled: isPeerRestricted(peer.acs)\n });\n } else if (prevState.peerMessagingDisabled) {\n Object.assign(nextState, {\n peerMessagingDisabled: false\n });\n }\n Object.assign(nextState, {\n messageCount: topic.messageCount(),\n latestClearId: topic.maxClearId(),\n channel: topic.isChannelType()\n });\n\n if (nextProps.callTopic == topic.name && shouldPresentCallPanel(nextProps.callState)) {\n nextState.rtcPanel = nextProps.callTopic;\n }\n } else {\n // Invalid topic.\n Object.assign(nextState, {\n messageCount: 0,\n latestClearId: -1,\n onlineSubs: [],\n title: '',\n avatar: null,\n peerMessagingDisabled: false,\n channel: false\n });\n }\n } else {\n // We are still in same topic. Show the call panel if necessary.\n if (nextProps.callTopic == prevState.topic && !prevState.rtcPanel &&\n shouldPresentCallPanel(nextProps.callState)) {\n nextState.rtcPanel = nextProps.callTopic;\n }\n }\n\n if (nextProps.acs) {\n if (nextProps.acs.isWriter() != prevState.isWriter) {\n nextState.isWriter = !prevState.isWriter;\n }\n if (nextProps.acs.isReader() != prevState.isReader) {\n nextState.isReader = !prevState.isReader;\n }\n if (!nextProps.acs.isReader('given') != prevState.readingBlocked) {\n nextState.readingBlocked = !prevState.readingBlocked;\n }\n if (nextProps.acs.isSharer() != prevState.isSharer) {\n nextState.isSharer = !prevState.isSharer;\n }\n } else {\n if (prevState.isWriter) {\n nextState.isWriter = false;\n }\n if (prevState.isReader) {\n nextState.isReader = false;\n }\n if (!prevState.readingBlocked) {\n prevState.readingBlocked = true;\n }\n if (prevState.isSharer) {\n nextState.isSharer = false;\n }\n }\n\n if (isUnconfirmed(nextProps.acs) == !prevState.unconformed) {\n nextState.unconfirmed = !prevState.unconformed;\n }\n\n // Clear subscribers online when there is no connection.\n if (!nextProps.connected && prevState.onlineSubs && prevState.onlineSubs.length > 0) {\n nextState.onlineSubs = [];\n }\n\n return nextState;\n }\n\n subscribe(topic) {\n if (topic.isSubscribed() || !this.props.ready) {\n return;\n }\n\n // Is this a new topic?\n const newTopic = (this.props.newTopicParams && this.props.newTopicParams._topicName == this.props.topic);\n\n // Don't request the tags. They are useless unless the user\n // is the owner and is editing the topic.\n let getQuery = topic.startMetaQuery().withLaterDesc().withLaterSub();\n if (this.state.isReader || newTopic) {\n // Reading is either permitted or we don't know because it's a new topic. Ask for messages.\n getQuery = getQuery.withLaterData(MESSAGES_PAGE);\n if (this.state.isReader) {\n getQuery = getQuery.withLaterDel();\n }\n // And show \"loading\" spinner.\n this.setState({ fetchingMessages: true });\n }\n\n const setQuery = newTopic ? this.props.newTopicParams : undefined;\n topic.subscribe(getQuery.build(), setQuery)\n .then((ctrl) => {\n if (ctrl.code == 303) {\n // Redirect to another topic requested.\n HashNavigation.navigateTo(HashNavigation.setUrlTopic('', ctrl.params.topic));\n return;\n }\n if (this.state.topic != ctrl.topic) {\n this.setState({topic: ctrl.topic});\n }\n this.props.onNewTopicCreated(this.props.topic, ctrl.topic);\n // If there are unsent messages, try sending them now.\n topic.queuedMessages((pub) => {\n if (pub._sending) {\n return;\n }\n if (topic.isSubscribed()) {\n this.retrySend(pub);\n }\n });\n })\n .catch((err) => {\n console.error(\"Failed subscription to\", this.state.topic, err);\n this.props.onError(err.message, 'err');\n const blankState = MessagesView.getDerivedStateFromProps({}, {});\n blankState.title = this.props.intl.formatMessage(messages.not_found);\n this.setState(blankState);\n });\n }\n\n leave(oldTopicName) {\n if (!oldTopicName || !this.props.tinode.isTopicCached(oldTopicName)) {\n return;\n }\n\n const oldTopic = this.props.tinode.getTopic(oldTopicName);\n if (oldTopic && oldTopic.isSubscribed()) {\n oldTopic.leave(false)\n .catch(() => { /* do nothing here */ })\n .finally(() => {\n // We don't care if the request succeeded or failed.\n // The topic is dead regardless.\n this.setState({fetchingMessages: false});\n oldTopic.onData = undefined;\n oldTopic.onAllMessagesReceived = undefined;\n oldTopic.onInfo = undefined;\n oldTopic.onMetaDesc = undefined;\n oldTopic.onSubsUpdated = undefined;\n oldTopic.onPres = undefined;\n });\n }\n }\n\n // Don't use React.createRef as the ref.current is not available in componentDidMount in this component.\n handleScrollReference(node) {\n if (node) {\n node.addEventListener('scroll', this.handleScrollEvent);\n this.messagesScroller = node;\n this.messagesScroller.scrollTop = this.messagesScroller.scrollHeight - this.state.scrollPosition;\n }\n }\n\n // Get older messages and show/hide [go to latest message] button.\n handleScrollEvent(event) {\n const pos = event.target.scrollHeight - event.target.scrollTop - event.target.offsetHeight;\n this.setState({\n scrollPosition: pos,\n // Show [go to latest message] if far enough from bottom and scrolling down.\n showGoToLastButton: (pos > SHOW_GO_TO_LAST_DIST) && (pos < this.state.scrollPosition),\n });\n\n if (this.state.fetchingMessages) {\n return;\n }\n\n if (event.target.scrollTop <= 0) {\n const topic = this.props.tinode.getTopic(this.state.topic);\n if (topic && topic.isSubscribed() && topic.msgHasMoreMessages()) {\n this.setState({fetchingMessages: true}, () => {\n topic.getMessagesPage(MESSAGES_PAGE)\n .catch((err) => this.props.onError(err.message, 'err'))\n .finally(() => this.setState({fetchingMessages: false}));\n });\n }\n }\n }\n\n goToLatestMessage() {\n this.setState({scrollPosition: 0});\n if (this.messagesScroller) {\n this.messagesScroller.scrollTop = this.messagesScroller.scrollHeight;\n }\n }\n\n handleDescChange(desc) {\n if (desc.public) {\n this.setState({\n title: desc.public.fn,\n avatar: makeImageUrl(desc.public.photo)\n });\n } else {\n this.setState({\n title: '',\n avatar: null\n });\n }\n\n if (desc.acs) {\n this.setState({\n isWriter: desc.acs.isWriter(),\n isReader: desc.acs.isReader(),\n readingBlocked: !desc.acs.isReader('given'),\n unconfirmed: isUnconfirmed(desc.acs),\n });\n }\n }\n\n postReadNotification(seq) {\n // Ignore notifications if the app is invisible.\n if (!this.props.applicationVisible) {\n return;\n }\n\n // Set up the timer if it's not running already.\n if (!this.readNotificationTimer) {\n this.readNotificationTimer = setInterval(() => {\n if (this.readNotificationQueue.length == 0) {\n // Shut down the timer if the queue is empty.\n clearInterval(this.readNotificationTimer);\n this.readNotificationTimer = null;\n return;\n }\n\n let seq = -1;\n while (this.readNotificationQueue.length > 0) {\n const n = this.readNotificationQueue[0];\n if (n.topicName != this.state.topic) {\n // Topic has changed. Drop the notification.\n this.readNotificationQueue.shift();\n continue;\n }\n\n const now = new Date();\n if (n.sendAt <= now) {\n // Remove expired notification from queue.\n this.readNotificationQueue.shift();\n seq = Math.max(seq, n.seq);\n } else {\n break;\n }\n }\n\n // Send only one notification for the whole batch of messages.\n if (seq >= 0) {\n const topic = this.props.tinode.getTopic(this.state.topic);\n if (topic) {\n topic.noteRead(seq);\n }\n }\n }, NOTIFICATION_EXEC_INTERVAL);\n }\n\n const now = new Date();\n this.readNotificationQueue.push({\n topicName: this.state.topic,\n seq: seq,\n sendAt: now.setMilliseconds(now.getMilliseconds() + READ_DELAY)\n });\n }\n\n // Clear notification queue and timer.\n clearNotificationQueue() {\n this.readNotificationQueue = [];\n if (this.readNotificationTimer) {\n clearInterval(this.readNotificationTimer);\n this.readNotificationTimer = null;\n }\n }\n\n handleSubsUpdated() {\n if (this.state.topic) {\n const subs = [];\n const topic = this.props.tinode.getTopic(this.state.topic);\n topic.subscribers((sub) => {\n if (sub.online && sub.user != this.props.myUserId) {\n subs.push(sub);\n }\n });\n const newState = {onlineSubs: subs};\n const peer = topic.p2pPeerDesc();\n if (peer) {\n Object.assign(newState, {\n peerMessagingDisabled: isPeerRestricted(peer.acs)\n });\n } else if (this.state.peerMessagingDisabled) {\n Object.assign(newState, {\n peerMessagingDisabled: false\n });\n }\n this.setState(newState);\n }\n }\n\n // The 'msg' could be false-ish if some message ranges were deleted.\n handleMessageUpdate(msg) {\n const topic = this.props.tinode.getTopic(this.state.topic);\n if (!msg) {\n // msg could be null if one or more messages were deleted.\n // Updating state to force redraw.\n this.setState({latestClearId: topic.maxClearId()});\n return;\n }\n\n clearTimeout(this.keyPressTimer)\n this.setState({messageCount: topic.messageCount(), typingIndicator: false});\n\n // Scroll to the bottom if the message is added to the end of the message\n // list if already at the bottom, otherwise show [go to latest] button.\n if (topic.isNewMessage(msg.seq)) {\n if (this.state.scrollPosition > SHOW_GO_TO_LAST_DIST) {\n this.setState({showGoToLastButton: true});\n } else {\n this.setState({scrollPosition: 0});\n }\n }\n\n // Aknowledge messages except own messages. They are\n // automatically assumed to be read and recived.\n const status = topic.msgStatus(msg, true);\n if (status >= Tinode.MESSAGE_STATUS_SENT && msg.from != this.props.myUserId) {\n this.postReadNotification(msg.seq);\n }\n // This will send \"received\" notifications right away.\n this.props.onData(msg);\n }\n\n handleAllMessagesReceived(count) {\n this.setState({fetchingMessages: false});\n if (count > 0) {\n // 0 means \"latest\".\n this.postReadNotification(0);\n }\n }\n\n handleInfoReceipt(info) {\n switch (info.what) {\n case 'kp': {\n clearTimeout(this.keyPressTimer);\n this.keyPressTimer = setTimeout(() => {\n this.setState({typingIndicator: false});\n }, KEYPRESS_DELAY + 1000);\n if (!this.state.typingIndicator) {\n this.setState({typingIndicator: true});\n }\n break;\n }\n case 'read':\n case 'recv':\n // Redraw due to changed recv/read status.\n this.forceUpdate();\n break;\n default:\n console.info(\"Other change in topic: \", info.what);\n }\n }\n\n handleImagePostview(content) {\n this.setState({ imagePostview: content });\n }\n\n handleClosePreview() {\n if (this.state.imagePreview && this.state.imagePreview.url) {\n URL.revokeObjectURL(this.state.imagePreview.url);\n }\n this.setState({ imagePostview: null, imagePreview: null, docPreview: null });\n }\n\n handleFormResponse(action, text, data) {\n if (action == 'pub') {\n this.sendMessage(Drafty.attachJSON(Drafty.parse(text), data));\n } else if (action == 'url') {\n const url = new URL(data.ref);\n const params = url.searchParams;\n for (let key in data.resp) {\n if (data.resp.hasOwnProperty(key)) {\n params.set(key, data.resp[key]);\n }\n }\n ['name', 'seq'].map((key) => {\n if (data[key]) {\n params.set(key, data[key]);\n }\n });\n params.set('uid', this.props.myUserId);\n params.set('topic', this.state.topic);\n url.search = params;\n window.open(url, '_blank');\n } else {\n console.info(\"Unknown action in form\", action);\n }\n }\n\n handleContextClick(e) {\n e.preventDefault();\n e.stopPropagation();\n this.props.showContextMenu({ topicName: this.state.topic, y: e.pageY, x: e.pageX });\n }\n\n handleShowMessageContextMenu(params, messageSpecificMenuItems) {\n if (params.userFrom == 'chan') {\n params.userFrom = this.state.topic;\n params.userName = this.state.title;\n }\n params.topicName = this.state.topic;\n const menuItems = messageSpecificMenuItems || [];\n const topic = this.props.tinode.getTopic(params.topicName);\n if (topic) {\n if (!topic.isChannelType()) {\n menuItems.push('message_delete');\n }\n const acs = topic.getAccessMode();\n if (acs && acs.isDeleter()) {\n menuItems.push('message_delete_hard');\n }\n }\n this.props.showContextMenu(params, menuItems);\n }\n\n handleNewChatAcceptance(action) {\n this.props.onNewChat(this.state.topic, action);\n }\n\n handleEnablePeer(e) {\n e.preventDefault();\n this.props.onChangePermissions(this.state.topic, DEFAULT_P2P_ACCESS_MODE, this.state.topic);\n }\n\n sendKeyPress() {\n const topic = this.props.tinode.getTopic(this.state.topic);\n if (topic.isSubscribed()) {\n topic.noteKeyPress();\n }\n }\n\n // sendMessage sends the message with an optional subscription to topic first.\n sendMessage(msg, uploadCompletionPromise, uploader) {\n let head;\n if (this.props.forwardMessage) {\n // We are forwarding a message.\n msg = this.props.forwardMessage.msg;\n head = this.props.forwardMessage.head;\n this.handleCancelReply();\n } else if (this.state.reply && this.state.reply.content) {\n // We are replying to a message in this topic.\n head = {reply: '' + this.state.reply.seq};\n // Turn it into Drafty so we can make a quoted Drafty object later.\n if (typeof msg == 'string') {\n msg = Drafty.parse(msg);\n }\n msg = Drafty.append(Drafty.sanitizeEntities(this.state.reply.content), msg);\n this.handleCancelReply();\n }\n this.props.sendMessage(msg, uploadCompletionPromise, uploader, head);\n }\n\n // Retry sending a message.\n retrySend(pub) {\n this.props.sendMessage(pub.content, undefined, undefined, pub.head);\n }\n\n // Send attachment as Drafty message:\n // - if file is too large, upload it and send a s link.\n // - if file is small enough, just send it in-band.\n sendFileAttachment(file) {\n // Server-provided limit reduced for base64 encoding and overhead.\n const maxInbandAttachmentSize = (this.props.tinode.getServerLimit('maxMessageSize',\n MAX_INBAND_ATTACHMENT_SIZE) * 0.75 - 1024) | 0;\n\n if (file.size > maxInbandAttachmentSize) {\n // Too large to send inband - uploading out of band and sending as a link.\n const uploader = this.props.tinode.getLargeFileHelper();\n if (!uploader) {\n this.props.onError(this.props.intl.formatMessage(messages.cannot_initiate_upload));\n return;\n }\n const uploadCompletionPromise = uploader.upload(file);\n const msg = Drafty.attachFile(null, {\n mime: file.type,\n filename: file.name,\n size: file.size,\n urlPromise: uploadCompletionPromise\n });\n // Pass data and the uploader to the TinodeWeb.\n this.sendMessage(msg, uploadCompletionPromise, uploader);\n } else {\n // Small enough to send inband.\n fileToBase64(file)\n .then(b64 => this.sendMessage(Drafty.attachFile(null, {mime: b64.mime, data: b64.bits, filename: b64.name})))\n .catch(err => this.props.onError(err));\n }\n }\n\n // handleAttachFile method is called when [Attach file] button is clicked: launch attachment preview.\n handleAttachFile(file) {\n const maxExternAttachmentSize = this.props.tinode.getServerLimit('maxFileUploadSize', MAX_EXTERN_ATTACHMENT_SIZE);\n\n if (file.size > maxExternAttachmentSize) {\n // Too large.\n this.props.onError(this.props.intl.formatMessage(messages.file_attachment_too_large,\n {size: bytesToHumanSize(file.size), limit: bytesToHumanSize(maxExternAttachmentSize)}), 'err');\n } else {\n this.setState({\n docPreview: {\n file: file,\n name: file.name,\n size: file.size,\n type: file.type\n }\n });\n }\n }\n\n handleCallHangup(topic, seq) {\n this.props.onVideoCallClosed();\n this.setState({\n rtcPanel: null\n });\n this.props.onCallHangup(topic, seq);\n }\n\n // sendImageAttachment sends the image bits inband as Drafty message.\n sendImageAttachment(caption, blob) {\n const mime = this.state.imagePreview.mime;\n const width = this.state.imagePreview.width;\n const height = this.state.imagePreview.height;\n const fname = this.state.imagePreview.name;\n\n // Server-provided limit reduced for base64 encoding and overhead.\n const maxInbandAttachmentSize = (this.props.tinode.getServerLimit('maxMessageSize',\n MAX_INBAND_ATTACHMENT_SIZE) * 0.75 - 1024) | 0;\n\n if (blob.size > maxInbandAttachmentSize) {\n // Too large to send inband - uploading out of band and sending as a link.\n const uploader = this.props.tinode.getLargeFileHelper();\n if (!uploader) {\n this.props.onError(this.props.intl.formatMessage(messages.cannot_initiate_upload));\n return;\n }\n const uploadCompletionPromise = uploader.upload(blob);\n\n // Make small preview to show while uploading.\n imageScaled(blob, IMAGE_PREVIEW_DIM, IMAGE_PREVIEW_DIM, -1, false)\n // Convert tiny image into base64 for serialization and previewing.\n .then(scaled => blobToBase64(scaled.blob))\n .then(b64 => {\n let msg = Drafty.insertImage(null, 0, {\n mime: mime,\n _tempPreview: b64.bits, // This preview will not be serialized.\n width: width,\n height: height,\n filename: fname,\n size: blob.size,\n urlPromise: uploadCompletionPromise\n });\n if (caption) {\n msg = Drafty.appendLineBreak(msg);\n msg = Drafty.append(msg, Drafty.parse(caption));\n }\n // Pass data and the uploader to the TinodeWeb.\n this.sendMessage(msg, uploadCompletionPromise, uploader);\n }).catch((err) => {\n this.props.onError(err, 'err');\n });\n return;\n }\n\n // Upload the image if it's too big to be send inband.\n blobToBase64(blob)\n .then(b64 => {\n let msg = Drafty.insertImage(null, 0, {\n mime: b64.mime,\n preview: b64.bits, // Serializable preview\n width: width,\n height: height,\n filename: fname,\n size: blob.size\n });\n if (caption) {\n msg = Drafty.appendLineBreak(msg);\n msg = Drafty.append(msg, Drafty.parse(caption));\n }\n this.sendMessage(msg);\n });\n }\n\n // handleAttachImage method is called when [Attach image] button is clicked: launch image preview.\n handleAttachImage(file) {\n const maxExternAttachmentSize = this.props.tinode.getServerLimit('maxFileUploadSize', MAX_EXTERN_ATTACHMENT_SIZE);\n\n // Get image dimensions and size, optionally scale it down.\n imageScaled(file, MAX_IMAGE_DIM, MAX_IMAGE_DIM, maxExternAttachmentSize, false)\n .then(scaled => {\n this.setState({imagePreview: {\n url: URL.createObjectURL(scaled.blob),\n blob: scaled.blob,\n name: scaled.name,\n width: scaled.width,\n height: scaled.height,\n size: scaled.blob.size,\n mime: scaled.mime\n }});\n }).catch(err => {\n this.props.onError(err, 'err');\n });\n }\n\n // sendAudioAttachment sends audio bits inband as Drafty message (no preview).\n sendAudioAttachment(url, preview, duration) {\n fetch(url)\n .then(result => result.blob())\n .then(blob => {\n // Server-provided limit reduced for base64 encoding and overhead.\n const maxInbandAttachmentSize = this.props.tinode.getServerLimit('maxMessageSize', MAX_INBAND_ATTACHMENT_SIZE) * 0.75 - 1024;\n if (blob.size > maxInbandAttachmentSize) {\n // Too large to send inband - uploading out of band and sending as a link.\n const uploader = this.props.tinode.getLargeFileHelper();\n if (!uploader) {\n this.props.onError(this.props.intl.formatMessage(messages.cannot_initiate_upload));\n return;\n }\n const uploadCompletionPromise = uploader.upload(blob);\n const msg = Drafty.appendAudio(null, {\n mime: blob.type,\n size: blob.size,\n duration: duration,\n preview: preview,\n urlPromise: uploadCompletionPromise\n });\n // Pass data and the uploader to the TinodeWeb.\n this.sendMessage(msg, uploadCompletionPromise, uploader);\n } else {\n // Small enough to send inband.\n blobToBase64(blob)\n .then(b64 => {\n this.sendMessage(Drafty.appendAudio(null, {\n mime: b64.mime,\n size: blob.size,\n data: b64.bits,\n duration: duration,\n preview: preview,\n }))\n })\n }\n })\n .catch(err => {this.props.onError(err)});;\n }\n\n handleCancelUpload(seq, uploader) {\n const topic = this.props.tinode.getTopic(this.state.topic);\n const found = topic.findMessage(seq);\n if (found) {\n found._cancelled = true;\n }\n uploader.cancel();\n }\n\n // seq: seq ID of the source message\n // context: message content.\n // senderId: UID of the sender of the source message.\n // senderName: full name of the sender of the original message.\n handlePickReply(seq, content, senderId, senderName) {\n this.setState({reply: null});\n\n if (!seq || !content) {\n return;\n }\n\n content = typeof content == 'string' ? Drafty.init(content) : content;\n if (Drafty.isValid(content)) {\n content = Drafty.replyContent(content, QUOTED_REPLY_LENGTH);\n } else {\n // /!\\ invalid content.\n content = Drafty.append(Drafty.init('\\u26A0 '),\n Drafty.wrapInto(this.props.intl.formatMessage(messages.invalid_content), 'EM'));\n }\n\n this.setState({\n reply: {\n content: Drafty.quote(senderName, senderId, content),\n seq: seq\n }\n });\n this.props.onCancelForwardMessage();\n }\n\n handleCancelReply() {\n this.setState({reply: null});\n this.props.onCancelForwardMessage();\n }\n\n handleQuoteClick(replyToSeq) {\n const ref = this.getOrCreateMessageRef(replyToSeq);\n if (ref && ref.current) {\n ref.current.scrollIntoView({block: \"center\", behavior: \"smooth\"});\n ref.current.classList.add('flash');\n setTimeout(() => { ref.current.classList.remove('flash') } , 1000);\n } else {\n console.error(\"Unresolved message ref\", replyToSeq);\n }\n }\n\n render() {\n const {formatMessage} = this.props.intl;\n\n let component;\n if (this.props.hideSelf) {\n component = null;\n } else if (!this.state.topic) {\n component = (\n \n );\n } else {\n let component2;\n if (this.state.imagePreview) {\n // Preview image before sending.\n component2 = (\n \n );\n } else if (this.state.imagePostview) {\n // Expand received image.\n component2 = (\n \n );\n } else if (this.state.docPreview) {\n // Preview attachment before sending.\n component2 = (\n \n );\n } else if (this.state.rtcPanel) {\n const topic = this.props.tinode.getTopic(this.state.topic);\n component2 = (\n \n );\n } else {\n const topic = this.props.tinode.getTopic(this.state.topic);\n const isChannel = topic.isChannelType();\n const groupTopic = topic.isGroupType() && !isChannel;\n const icon_badges = [];\n if (topic.trusted) {\n if (topic.trusted.verified) {\n icon_badges.push({icon: 'verified', color: 'badge-inv'});\n }\n if (topic.trusted.staff) {\n icon_badges.push({icon: 'staff', color: 'badge-inv'});\n }\n if (topic.trusted.danger) {\n icon_badges.push({icon: 'dangerous', color: 'badge-inv'});\n }\n }\n\n const messageNodes = [];\n let previousFrom = null;\n let prevDate = null;\n let chatBoxClass = null;\n const dateFmt = new Intl.DateTimeFormat(this.props.intl.locale);\n topic.messages((msg, prev, next, i) => {\n let nextFrom = next ? (next.from || 'chan') : null;\n\n let sequence = 'single';\n let thisFrom = msg.from || 'chan';\n if (thisFrom == previousFrom) {\n if (thisFrom == nextFrom) {\n sequence = 'middle';\n } else {\n sequence = 'last';\n }\n } else if (thisFrom == nextFrom) {\n sequence = 'first';\n }\n previousFrom = thisFrom;\n\n const isReply = !(thisFrom == this.props.myUserId);\n const deliveryStatus = topic.msgStatus(msg, true);\n\n let userFrom = thisFrom, userName, userAvatar;\n const user = topic.userDesc(thisFrom);\n if (user && user.public) {\n userName = user.public.fn;\n userAvatar = makeImageUrl(user.public.photo);\n }\n chatBoxClass = groupTopic ? 'chat-box group' : 'chat-box';\n\n // Ref for this chat message.\n const ref = this.getOrCreateMessageRef(msg.seq);\n let replyToSeq = msg.head ? parseInt(msg.head.reply) : null;\n if (!replyToSeq || isNaN(replyToSeq)) {\n replyToSeq = null;\n }\n\n if (msg.hi) {\n // Deleted message.\n messageNodes.push(\n \n );\n } else {\n const thisDate = new Date(msg.ts);\n // This message was sent on a different date than the previous.\n if (!prevDate || prevDate.toDateString() != thisDate.toDateString()) {\n messageNodes.push(\n \n );\n prevDate = thisDate;\n }\n let duration;\n if (msg.head && isVideoCall(msg.head.mime)) {\n topic.messageVersions(msg, (cur, before) => {\n if (cur.content == 'finished' && before.content == 'accepted') {\n duration = msg.ts - before.ts;\n }\n });\n }\n messageNodes.push(\n \n );\n }\n });\n\n let lastSeen = null;\n if (isChannel) {\n lastSeen = formatMessage(messages.channel);\n } else {\n const cont = this.props.tinode.getMeTopic().getContact(this.state.topic);\n if (cont && Tinode.isP2PTopicName(cont.topic)) {\n if (cont.online) {\n lastSeen = formatMessage(messages.online_now);\n } else if (cont.seen) {\n lastSeen = formatMessage(messages.last_seen) + \": \" +\n shortDateFormat(cont.seen.when, this.props.intl.locale);\n // TODO: also handle user agent in c.seen.ua\n }\n }\n }\n const avatar = this.state.avatar || true;\n const online = this.state.deleted ? null :\n this.props.online ? 'online' + (this.state.typingIndicator ? ' typing' : '') : 'offline';\n\n const titleClass = 'panel-title' + (this.state.deleted ? ' deleted' : '');\n\n component2 = (\n <>\n