유희정

photo classification and timeline

Showing 1000 changed files with 1949 additions and 5 deletions

Too many changes to show.

To preserve performance only 1000 of 1000+ files are displayed.

......@@ -4,10 +4,8 @@
<component name="GradleSettings">
<option name="linkedExternalProjectsSettings">
<GradleProjectSettings>
<compositeConfiguration>
<compositeBuild compositeDefinitionSource="SCRIPT" />
</compositeConfiguration>
<option name="delegatedBuild" value="false" />
<option name="testRunner" value="PLATFORM" />
<option name="distributionType" value="DEFAULT_WRAPPED" />
<option name="externalProjectPath" value="$PROJECT_DIR$" />
<option name="modules">
......@@ -17,7 +15,6 @@
</set>
</option>
<option name="resolveModulePerSourceSet" value="false" />
<option name="testRunner" value="PLATFORM" />
</GradleProjectSettings>
</option>
</component>
......
.content{
width :100%;
height :100%;
}
.win_top{
width :100%;
height :10%;
float:left;
}
#title{
width :68%;
height :10%;
float:left;
}
#title img{
height: 80px;
width : auto;
margin-left : 20px;
float:left;
}
#title img:hover{
opacity:0.6;
}
#selected-date{
font-size: 10px;
float:left;
font-weight: bold;
margin-top : -10px;
margin-left:17px;
border-bottom: 1px solid #4e73df;
}
#selected-file{
font-size: 10px;
float:left;
font-weight: bold;
margin-top : -10px;
margin-left:70px;
border-bottom: 1px solid #4e73df;
}
#date{
width:28%;
height :15%;
float:left;
vertical-align: middle;
}
p.float_left{
float:left;
}
.results{
width :98%;
height :85%;
position:absolute;
bottom:10px;
left:10px;
text-align: center;
float:left;
border :2px dashed #4e73df;
overflow-y:auto;
}
.photo{
width : 240px;
height : 300px;
border :1px solid #4e73df;
color:black;
float : left;
margin : 5px;
}
.top{
width:240px;
height:240px;
}
.top img{
width:100%;
height:100%;
object-fit:contain;
}
.bottom{
width:240px;
height:60px;
}
.name{
width : 200px;
height:60px;
float : left;
}
.check{
width : 40px;
height:60px;
float : left;
}
.check input{
width:20px;
height :20px;
margin-top:20px;
margin-right:10px;
border: 2px solid #bcbcbc;
}
.check input:checked{
background-color: #4e73df;
}
#start_date{
border: 1px solid #4e73df;
background-color: white;
line-height: 1;
font-size: 17px;
width: 200px;
height :50px;
padding:10px 15px;
display: block;
box-sizing: border-box;
border-radius: 60px;
color: dimgray;
font-weight: 100;
letter-spacing: 0.01em;
position: relative;
z-index: 1;
margin-left: 10px;
}
#end_date{
border: 1px solid #4e73df;
background-color: white;
line-height: 1;
font-size: 17px;
width: 200px;
height :50px;
padding:10px 15px;
display: block;
box-sizing: border-box;
border-radius: 60px;
color: dimgray;
font-weight: 100;
letter-spacing: 0.01em;
position: relative;
z-index: 1;
margin-left: 10px;
}
#select{
border: 1px solid #4e73df;
background-color: #4e73df;
line-height: 1;
font-size: 17px;
width: 135px;
height :50px;
padding:10px 15px;
display: block;
box-sizing: border-box;
color: white;
font-weight: 100;
letter-spacing: 0.01em;
position: relative;
z-index: 1;
margin-left: 10px;
}
#select:hover{
background-color: white;
color: #4e73df;
}
#submit{
border: 1px solid #4e73df;
background-color: #4e73df;
line-height: 1;
font-size: 17px;
width: 100px;
height :50px;
padding:10px 15px;
display: block;
box-sizing: border-box;
border-radius: 60px;
color: white;
font-weight: 100;
letter-spacing: 0.01em;
position: relative;
z-index: 1;
margin-left: 10px;
}
#submit:hover{
background-color: white;
color: #4e73df;
}
#save_photo{
border: 1px solid #4e73df;
background-color: #4e73df;
line-height: 1;
font-size: 17px;
width: 135px;
height :50px;
padding:10px 15px;
display: block;
box-sizing: border-box;
color: white;
font-weight: 100;
letter-spacing: 0.01em;
position: relative;
z-index: 1;
margin-left: 10px;
visibility: visible;
}
#save_photo:hover{
background-color: white;
color: #4e73df;
}
#closeBtn {
border: 1px solid #4e73df;
background-color: #4e73df;
line-height: 1;
font-size: 25px;
width: 50px;
height :50px;
padding:10px 15px;
display: block;
box-sizing: border-box;
border-radius: 60px;
color: white;
font-weight: 100;
letter-spacing: 0.01em;
position: relative;
z-index: 1;
margin-left: 5px;
}
#closeBtn:hover{
background-color: white;
color: #4e73df;
}
.content{
width :100%;
height :100%;
}
.win_top{
width :100%;
height :10%;
float:left;
}
#title{
width :68%;
height :10%;
float:left;
}
#title img{
height: 80px;
width : auto;
margin-left : 20px;
float:left;
}
#title img:hover{
opacity :0.6;
}
#date{
width:28%;
height :15%;
float:left;
vertical-align: middle;
}
p.float_left{
float:left;
}
.results{
width :98%;
height :85%;
position:absolute;
bottom:10px;
left:10px;
text-align: center;
float:left;
overflow-y:auto;
border : 2px solid #4e73df
}
#image{
float: left;
filter:blur(5px);
margin:5px;
}
#image:hover{
opacity: 0.8;
}
#detect{
border: 1px solid dimgray;
background-color: dimgray;
line-height: 1;
font-size: 17px;
width: 200px;
height :40px;
padding:10px 15px;
display: block;
box-sizing: border-box;
color: white;
font-weight: 100;
letter-spacing: 0.01em;
position: absolute;
top:4%;
right:5%;
z-index: 1;
margin-top: 10px;
}
#detect:hover{
background-color: white;
color: dimgray;
}
\ No newline at end of file
.all{
width :100%;
height :100%;
}
.top{
width :100%;
height :10%;
float:left;
}
.title{
width :70%;
height :10%;
float:left;
}
.title img{
height: 80px;
width : auto;
margin-left : 20px;
float:left;
}.title img:hover{
opacity:0.6;
}
.content{
width :100%;
height :90%;
}
p.float_left{
float:left;
}
#explanation{
width:35%;
height:27.5%;
position: absolute;
right: 2%;
bottom: 55%;
text-align: center;
}
#explanation h1{
margin-top:12%;
color:dimgray;
}
#map {
width:35%;
height:50%;
clear:both;
border:solid 1px #4e73df;
position: absolute;
right: 2%;
bottom: 3%;
}
#main{
width:58%;
height:78%;
border:solid 5px #4e73df;
position: absolute;
left: 2%;
bottom : 3%;
overflow-y:auto;
background-color: #7FB2F0;
}
.p{
width:295px;
height:295px;
float : left;
margin :1px;
background-color: #4e73df;
}
.p img{
width:100%;
height:100%;
object-fit:contain;
}
.ex{
width: 147.5px;
height:147.5px;
float : left;
margin :0.5px;
background-color: #4e73df;
}
.ex img{
width:100%;
height:100%;
object-fit:contain;
}
\ No newline at end of file
.all{
width :100%;
height :100%;
}
.top{
width :100%;
height :15%;
float:left;
}
.title{
width :80%;
height :10%;
float:left;
}
.title img{
height: 80px;
width : auto;
margin-left : 20px;
float:left;
}
.title img:hover{
opacity:0.6;
}
#btn_area{
width:20%;
height :15%;
float:left;
vertical-align: middle;
}
#start{
border: 1px solid #4e73df;
background-color: #4e73df;
line-height: 1;
font-size: 17px;
width: 150px;
height :40px;
padding:10px 15px;
display: block;
box-sizing: border-box;
border-radius: 60px;
color: white;
font-weight: 100;
letter-spacing: 0.01em;
position: relative;
z-index: 1;
margin-top: -5px;
}
#next{
border: 1px solid #4e73df;
background-color: #4e73df;
line-height: 1;
font-size: 14px;
width: 150px;
height :40px;
padding:10px 15px;
display: block;
box-sizing: border-box;
border-radius: 60px;
color: white;
font-weight: 100;
letter-spacing: 0.01em;
position: relative;
z-index: 1;
visibility: hidden;
margin-top: -5px;
}
#start:hover{
background-color: white;
color: #4e73df;
}
p.float_left{
float:left;
}
.chart_cont{
position:absolute;
height:79%;
width:27%;
left : 3%;
bottom :5%;
overflow-y: auto;
float:left;
border:2px solid #4e73df;
}
.chart-container{
position: relative;
height:600px;
width:280px;
}
#content{
width :65%;
height :79%;
position: absolute;
right : 3%;
bottom:5%;
overflow-y: auto;
float:left;
border:2px solid #4e73df;
}
.photo {
width: 300px;
height: 220px;
margin : 5px;
float:left;
border:1px dashed #4e73df;
}
.p_title{
width: 300px;
height: 20px;
float:left;
text-align: center;
}
.p_title p{
font-size : 13px;
color: black;
font-weight: bold;
margin-top: -0.5px;
}
.image{
height : 200px;
width : 200px;
text-align: center;
float:left;
}
.image img{
width:100%;
height:100%;
object-fit:contain;
}
.keyword{
width :99%;
height: 15%;
float:left;
text-align: center;
}
.k_content{
width :99%;
height: 85%;
float:left;
text-align: center;
overflow-y: auto;
}
.keyword_photo{
float:left;
border:1px dashed #4e73df;
height : 200px;
width : 200px;
text-align: center;
margin : 10px;
}
.keyword_photo img{
width:100%;
height:100%;
object-fit:contain;
}
.labels{
width :100px;
height : 200px;
float :left;
vertical-align: middle;
}
.labels p{
font-size : 10px;
margin-top: -0.2px;
margin-bottom: -0.2px;
margin-left :2px;
color: navy;
}
\ No newline at end of file
.div_root{
width:100%;
height:100%;
margin:0px;
}
.div_top{
width:100%;
height:20%;
float:left;
}
.div_top img{
margin-left: 20px;
height:120px;
float:left;
}
.div_top img:hover{
opacity: 0.6;
}
.div_content{
width : 100%;
height: 80%;
float:left;
}
.div_con_block{
width:80%;
height:25%;
float:left;
margin-left: 50px;
}
.div_con_block p{
margin-left : 30px;
margin-top: -10px;
color : dimgray;
}
.div_con_block img{
padding :20px;
height : 100px;
}
.div_con_block img:hover{
opacity: 0.5;
}
.fa-chevron-left{
margin-top: 10px;
margin-left :5px;
margin-right : 5px;
color: dimgray;
}
.fa-chevron-left:hover{
opacity: 0.5;
}
.float_left{
float :left;
}
#image{
font-size: 15px;
height :30px;
width : 300px;
float: left;
margin:20px;
border: 1px solid dimgray;
background-color: dimgray;
}
.all{
width :100%;
height :100%;
}
.top{
width :100%;
height :15%;
float:left;
}
#title{
width :60%;
height :15%;
float:left;
}
#title img{
height: 100px;
width : auto;
margin-left : 20px;
float:left;
}#title img:hover{
opacity: 0.6;
}
#btn_area{
width:40%;
height :15%;
float:left;
vertical-align: middle;
}
#start{
border: 1px solid dimgray;
background-color: dimgray;
line-height: 1;
font-size: 17px;
width: 150px;
height :40px;
padding:10px 15px;
display: block;
box-sizing: border-box;
color: white;
font-weight: 100;
letter-spacing: 0.01em;
position: relative;
z-index: 1;
margin-left : 20px;
}
#start:hover{
background-color: white;
color: dimgray;
}
button.p_btn{
border: 1px solid dimgray;
background-color: dimgray;
line-height: 1;
font-size: 17px;
width: 50px;
height :50px;
padding:10px 15px;
display: block;
box-sizing: border-box;
color: white;
font-weight: 100;
letter-spacing: 0.01em;
position: relative;
z-index: 1;
}
button.p_btn:hover{
background-color: white;
color: dimgray;
}
#date{
border: 1px solid dimgray;
background-color: white;
line-height: 1;
font-size: 17px;
width: 200px;
height :40px;
padding:10px 15px;
display: block;
box-sizing: border-box;
border-radius: 60px;
color: dimgray;
font-weight: 100;
letter-spacing: 0.01em;
position: relative;
z-index: 1;
margin-left: 10px;
}
p.float_left{
float:left;
}
p.float_right{
float:right;
}
#content{
width :90%;
height :80%;
overflow-y: auto;
position: absolute;
left : 5%;
bottom:5%;
background-color: #FFFFFF;
}
/* -----------------------------------------------
* Timeline
* --------------------------------------------- */
.main-timeline{
font-family: 'Roboto Condensed', sans-serif;
position: relative;
}
.main-timeline:after{
content: '';
display: block;
clear: both;
}
.main-timeline:before{
content: '';
height: 100%;
width: 7px;
border-left: 7px dashed #999;
transform: translateX(-50%);
position: absolute;
left: 50%;
top: 0;
}
.main-timeline .timeline{
width: 45%;
padding: 0 0 0 40px;
margin: 0 0 0 20px;
float: right;
position: relative;
}
.main-timeline .timeline:after{
content: '';
background-color: #6044F0;
height: 35px;
width: 40px;
position: absolute;
left: 0;
top: 60px;
clip-path: polygon(0 50%, 100% 0, 100% 100%);
}
.main-timeline .timeline-content{
color: #555;
text-align: center;
padding: 35px 40px 35px;
display: block;
position: relative;
z-index: 1;
}
.main-timeline .timeline-content:hover{ text-decoration: none; }
.main-timeline .timeline-content:before,
.main-timeline .timeline-content:after{
content: '';
background-color: #fff;
border-radius: 50px 0;
box-shadow: 0 0 10px -3px rgba(0,0,0,0.5);
position: absolute;
left: 10px;
bottom: 10px;
right: 0;
top: 0;
z-index: -1;
}
.main-timeline .timeline-content:after{
background-color: transparent;
box-shadow: none;
border: 2px solid #6044F0;
left: 0;
bottom: 0;
right: 10px;
top: 10px;
}
.main-timeline .timeline-icon{
color: #fff;
background-color: #000;
font-size: 25px;
text-align: center;
line-height: 50px;
height: 50px;
width: 50px;
border-radius: 50%;
position: absolute;
left: 0;
top: 0;
z-index: 2;
}
.main-timeline .title{
color: #6044F0;
font-size: 20px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 1px;
margin: 0 0 5px;
}
.main-timeline .description{
font-size: 15px;
font-weight: 500;
letter-spacing: 1px;
margin: 0 0 0 10px;
}
.main-timeline .timeline:nth-child(even){
float: left;
padding: 0 40px 0 0;
margin: 0 20px 0 0;
}
.main-timeline .timeline:nth-child(even):after{
transform: rotateY(180deg);
left: auto;
right: 0;
}
.main-timeline .timeline:nth-child(even) .timeline-content:before,
.main-timeline .timeline:nth-child(even) .timeline-content:after{
border-radius: 0 50px;
}
.main-timeline .timeline:nth-child(even) .timeline-icon{
left: auto;
right: 0;
}
.main-timeline .timeline:nth-child(4n+2):after{ background-color: #FF3754; }
.main-timeline .timeline:nth-child(4n+2) .timeline-content:after{ border-color: #FF3754; }
.main-timeline .timeline:nth-child(4n+2) .title{ color: #FF3754; }
.main-timeline .timeline:nth-child(4n+3):after{ background-color: #01C1E1; }
.main-timeline .timeline:nth-child(4n+3) .timeline-content:after{ border-color: #01C1E1; }
.main-timeline .timeline:nth-child(4n+3) .title{ color: #01C1E1; }
.main-timeline .timeline:nth-child(4n+4):after{ background-color: #10B175; }
.main-timeline .timeline:nth-child(4n+4) .timeline-content:after{ border-color: #10B175; }
.main-timeline .timeline:nth-child(4n+4) .title{ color: #10B175; }
@media screen and (max-width:767px){
.main-timeline:before{ display: none; }
.main-timeline .timeline,
.main-timeline .timeline:nth-child(even){
width: 100%;
padding: 0 0 35px 0;
margin: 0;
}
.main-timeline .timeline:last-child{ padding: 0; }
.main-timeline .timeline:after,
.main-timeline .timeline:nth-child(even):after{
transform: translateX(-50%) rotate(-90deg);
left: 50%;
top: auto;
bottom: 0;
}
.main-timeline .timeline:last-child:after{ display: none; }
}
@media screen and (max-width:576px){
.main-timeline .title{ font-size: 18px; }
}
p.text-right{
text-align: right;
}
.shadow-textarea textarea.form-control::placeholder {
font-weight: 300;
}
.shadow-textarea textarea.form-control {
padding-left: 0.8rem;
padding-right: 0.8rem;
width:80%;
margin-top: 10px;
margin-left:5px;
}
.fa-chevron-left{
margin-left :5px;
margin-right : 5px;
color: dimgray;
}
.fa-chevron-left:hover{
opacity: 0.5;
}
\ No newline at end of file
const { app, BrowserWindow, ipcMain } = require('electron')
const path = require('path')
const url = require('url')
const vision = require('@google-cloud/vision');
// Keep a global reference of the window object, if you don't, the window will
// be closed automatically when the JavaScript object is garbage collected.
......@@ -52,6 +53,153 @@ app.on('activate', ()=>{
ipcMain.on("device-name", (e, arg) => {
win.webContents.send("device", arg);
});
//photos taken in selected dates
ipcMain.on("photo", (e, arg) => {
win.webContents.send("select_result", arg);
});
//open-file-dialog
ipcMain.on('open-file-dialog', async (event) => {
const result = await dialog.showOpenDialog({
properties: ['openFile', 'openDirectory']
})
win.webContents.send('selected-directory',result);
})
//console 출력
ipcMain.on('print', (e, arg)=>{
console.log(arg);
})
//internet connect 확인
/**
* const check = require('check-internet-connected');
const config = {
timeout : 5000,
retries : 3,
domain : 'apple.com'
}
check(config)
.then(()=>{
console.log("Connection available");
}).catch((err)=>{
console.log("No connection", err);
});
*/
//이미지 라벨
var label_result = new Array();
ipcMain.on('image_labels', async (event, list) =>{
label_result = [];
await Promise.all(list.map(async (element)=>{
var path = new String();
path = element.path;
var num = path.indexOf("DCIM");
var folder_path = new String();
folder_path = "./photos/" + path.substring(num);
await quickstart(folder_path, element.display_name);
}))
//라벨 검출 결과 전송
win.webContents.send('labels_result',label_result);
console.log(label_result.length);
})
async function quickstart(path, name) {
const client = new vision.ImageAnnotatorClient();
// Performs label detection on the image file
const [result] = await client.labelDetection(path);
const labels = result.labelAnnotations;
path = '../.'+path;
var content = {path : path, name : name, labels : labels}
label_result.push(content);
}
\ No newline at end of file
//detext unsafe image
let detect_result = new Array();
ipcMain.on("detect", async (e, result)=>{
detect_result = [];
await Promise.all(result.map(async (element)=>{
var path = new String();
path = element.path;
var num = path.indexOf("DCIM");
var folder_path = new String();
folder_path = "./photos/" + path.substring(num);
await detect(folder_path, element.display_name);
}))
win.webContents.send('detect_result', detect_result);
console.log("detect_success");
});
async function detect(path, name){
//const vision = require('@google-cloud/vision');
// Creates a client
const client = new vision.ImageAnnotatorClient();
// Performs safe search detection on the local file
const [result] = await client.safeSearchDetection(path);
const detections = result.safeSearchAnnotation;
var adult_sum = 0;
var racy_sum = 0;
if(detections.adult == "VERY_LIKELY"){
adult_sum = 100;
}
else if(detections.adult == "LIKELY"){
adult_sum = 80;
}
else if(detections.adult == "POSSIBLE"){
adult_sum = 60;
}
else if(detections.adult == "UNLIKELY"){
adult_sum = 40;
}
else if(detections.adult == "VERY_UNLIKELY"){
adult_sum = 20;
}
else{
adult_sum = 0;
}
if(detections.racy == "VERY_LIKELY"){
racy_sum = 100;
}
else if(detections.racy == "LIKELY"){
racy_sum = 80;
}
else if(detections.racy == "POSSIBLE"){
racy_sum = 60;
}
else if(detections.racy == "UNLIKELY"){
racy_sum = 40;
}
else if(detections.racy == "VERY_UNLIKELY"){
racy_sum = 20;
}
else{
racy_sum = 0;
}
var score = (adult_sum + racy_sum) / 2;
path = '../.'+path;
if(score>=60){
var content = {path : path, name : name, score : score};
detect_result.push(content);
}
}
ipcMain.on('open-error-dialog', (event) => {
dialog.showErrorBox('detected unsafe contents', '당신의 휴대폰에서 유해한 사진을 발견했습니다!')
})
//이전에 사용한 photos 폴더 삭제
var rimraf = require("rimraf");
rimraf("./photos", function(){console.log("")});
\ No newline at end of file
......
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../google-gax/build/tools/compileProtos.js" "$@"
ret=$?
else
node "$basedir/../google-gax/build/tools/compileProtos.js" "$@"
ret=$?
fi
exit $ret
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\google-gax\build\tools\compileProtos.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\google-gax\build\tools\compileProtos.js" %*
)
\ No newline at end of file
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../electron/cli.js" "$@"
ret=$?
else
node "$basedir/../electron/cli.js" "$@"
ret=$?
fi
exit $ret
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\electron\cli.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\electron\cli.js" %*
)
\ No newline at end of file
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../extract-zip/cli.js" "$@"
ret=$?
else
node "$basedir/../extract-zip/cli.js" "$@"
ret=$?
fi
exit $ret
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\extract-zip\cli.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\extract-zip\cli.js" %*
)
\ No newline at end of file
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../google-p12-pem/build/src/bin/gp12-pem.js" "$@"
ret=$?
else
node "$basedir/../google-p12-pem/build/src/bin/gp12-pem.js" "$@"
ret=$?
fi
exit $ret
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\google-p12-pem\build\src\bin\gp12-pem.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\google-p12-pem\build\src\bin\gp12-pem.js" %*
)
\ No newline at end of file
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../md5-file/cli.js" "$@"
ret=$?
else
node "$basedir/../md5-file/cli.js" "$@"
ret=$?
fi
exit $ret
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\md5-file\cli.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\md5-file\cli.js" %*
)
\ No newline at end of file
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../mime/cli.js" "$@"
ret=$?
else
node "$basedir/../mime/cli.js" "$@"
ret=$?
fi
exit $ret
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\mime\cli.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\mime\cli.js" %*
)
\ No newline at end of file
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../mkdirp/bin/cmd.js" "$@"
ret=$?
else
node "$basedir/../mkdirp/bin/cmd.js" "$@"
ret=$?
fi
exit $ret
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\mkdirp\bin\cmd.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\mkdirp\bin\cmd.js" %*
)
\ No newline at end of file
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../ncp/bin/ncp" "$@"
ret=$?
else
node "$basedir/../ncp/bin/ncp" "$@"
ret=$?
fi
exit $ret
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\ncp\bin\ncp" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\ncp\bin\ncp" %*
)
\ No newline at end of file
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../which/bin/node-which" "$@"
ret=$?
else
node "$basedir/../which/bin/node-which" "$@"
ret=$?
fi
exit $ret
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\which\bin\node-which" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\which\bin\node-which" %*
)
\ No newline at end of file
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../protobufjs/bin/pbjs" "$@"
ret=$?
else
node "$basedir/../protobufjs/bin/pbjs" "$@"
ret=$?
fi
exit $ret
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\protobufjs\bin\pbjs" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\protobufjs\bin\pbjs" %*
)
\ No newline at end of file
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../protobufjs/bin/pbts" "$@"
ret=$?
else
node "$basedir/../protobufjs/bin/pbts" "$@"
ret=$?
fi
exit $ret
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\protobufjs\bin\pbts" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\protobufjs\bin\pbts" %*
)
\ No newline at end of file
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../pixelmatch/bin/pixelmatch" "$@"
ret=$?
else
node "$basedir/../pixelmatch/bin/pixelmatch" "$@"
ret=$?
fi
exit $ret
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\pixelmatch\bin\pixelmatch" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\pixelmatch\bin\pixelmatch" %*
)
\ No newline at end of file
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../rimraf/bin.js" "$@"
ret=$?
else
node "$basedir/../rimraf/bin.js" "$@"
ret=$?
fi
exit $ret
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\rimraf\bin.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\rimraf\bin.js" %*
)
\ No newline at end of file
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../semver/bin/semver.js" "$@"
ret=$?
else
node "$basedir/../semver/bin/semver.js" "$@"
ret=$?
fi
exit $ret
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\semver\bin\semver.js" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\semver\bin\semver.js" %*
)
\ No newline at end of file
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../sshpk/bin/sshpk-conv" "$@"
ret=$?
else
node "$basedir/../sshpk/bin/sshpk-conv" "$@"
ret=$?
fi
exit $ret
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\sshpk\bin\sshpk-conv" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\sshpk\bin\sshpk-conv" %*
)
\ No newline at end of file
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../sshpk/bin/sshpk-sign" "$@"
ret=$?
else
node "$basedir/../sshpk/bin/sshpk-sign" "$@"
ret=$?
fi
exit $ret
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\sshpk\bin\sshpk-sign" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\sshpk\bin\sshpk-sign" %*
)
\ No newline at end of file
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../sshpk/bin/sshpk-verify" "$@"
ret=$?
else
node "$basedir/../sshpk/bin/sshpk-verify" "$@"
ret=$?
fi
exit $ret
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\sshpk\bin\sshpk-verify" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\sshpk\bin\sshpk-verify" %*
)
\ No newline at end of file
#!/bin/sh
basedir=$(dirname "$(echo "$0" | sed -e 's,\\,/,g')")
case `uname` in
*CYGWIN*) basedir=`cygpath -w "$basedir"`;;
esac
if [ -x "$basedir/node" ]; then
"$basedir/node" "$basedir/../uuid/dist/bin/uuid" "$@"
ret=$?
else
node "$basedir/../uuid/dist/bin/uuid" "$@"
ret=$?
fi
exit $ret
@IF EXIST "%~dp0\node.exe" (
"%~dp0\node.exe" "%~dp0\..\uuid\dist\bin\uuid" %*
) ELSE (
@SETLOCAL
@SET PATHEXT=%PATHEXT:;.JS;=;%
node "%~dp0\..\uuid\dist\bin\uuid" %*
)
\ No newline at end of file
MIT License
Copyright (c) 2014-present Sebastian McKenzie and other contributors
Permission is hereby granted, free of charge, to any person obtaining
a copy of this software and associated documentation files (the
"Software"), to deal in the Software without restriction, including
without limitation the rights to use, copy, modify, merge, publish,
distribute, sublicense, and/or sell copies of the Software, and to
permit persons to whom the Software is furnished to do so, subject to
the following conditions:
The above copyright notice and this permission notice shall be
included in all copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
# @babel/runtime
> babel's modular runtime helpers
See our website [@babel/runtime](https://babeljs.io/docs/en/next/babel-runtime.html) for more information.
## Install
Using npm:
```sh
npm install --save @babel/runtime
```
or using yarn:
```sh
yarn add @babel/runtime
```
var AwaitValue = require("./AwaitValue");
function AsyncGenerator(gen) {
var front, back;
function send(key, arg) {
return new Promise(function (resolve, reject) {
var request = {
key: key,
arg: arg,
resolve: resolve,
reject: reject,
next: null
};
if (back) {
back = back.next = request;
} else {
front = back = request;
resume(key, arg);
}
});
}
function resume(key, arg) {
try {
var result = gen[key](arg);
var value = result.value;
var wrappedAwait = value instanceof AwaitValue;
Promise.resolve(wrappedAwait ? value.wrapped : value).then(function (arg) {
if (wrappedAwait) {
resume(key === "return" ? "return" : "next", arg);
return;
}
settle(result.done ? "return" : "normal", arg);
}, function (err) {
resume("throw", err);
});
} catch (err) {
settle("throw", err);
}
}
function settle(type, value) {
switch (type) {
case "return":
front.resolve({
value: value,
done: true
});
break;
case "throw":
front.reject(value);
break;
default:
front.resolve({
value: value,
done: false
});
break;
}
front = front.next;
if (front) {
resume(front.key, front.arg);
} else {
back = null;
}
}
this._invoke = send;
if (typeof gen["return"] !== "function") {
this["return"] = undefined;
}
}
if (typeof Symbol === "function" && Symbol.asyncIterator) {
AsyncGenerator.prototype[Symbol.asyncIterator] = function () {
return this;
};
}
AsyncGenerator.prototype.next = function (arg) {
return this._invoke("next", arg);
};
AsyncGenerator.prototype["throw"] = function (arg) {
return this._invoke("throw", arg);
};
AsyncGenerator.prototype["return"] = function (arg) {
return this._invoke("return", arg);
};
module.exports = AsyncGenerator;
\ No newline at end of file
function _AwaitValue(value) {
this.wrapped = value;
}
module.exports = _AwaitValue;
\ No newline at end of file
function _applyDecoratedDescriptor(target, property, decorators, descriptor, context) {
var desc = {};
Object.keys(descriptor).forEach(function (key) {
desc[key] = descriptor[key];
});
desc.enumerable = !!desc.enumerable;
desc.configurable = !!desc.configurable;
if ('value' in desc || desc.initializer) {
desc.writable = true;
}
desc = decorators.slice().reverse().reduce(function (desc, decorator) {
return decorator(target, property, desc) || desc;
}, desc);
if (context && desc.initializer !== void 0) {
desc.value = desc.initializer ? desc.initializer.call(context) : void 0;
desc.initializer = undefined;
}
if (desc.initializer === void 0) {
Object.defineProperty(target, property, desc);
desc = null;
}
return desc;
}
module.exports = _applyDecoratedDescriptor;
\ No newline at end of file
function _arrayLikeToArray(arr, len) {
if (len == null || len > arr.length) len = arr.length;
for (var i = 0, arr2 = new Array(len); i < len; i++) {
arr2[i] = arr[i];
}
return arr2;
}
module.exports = _arrayLikeToArray;
\ No newline at end of file
function _arrayWithHoles(arr) {
if (Array.isArray(arr)) return arr;
}
module.exports = _arrayWithHoles;
\ No newline at end of file
var arrayLikeToArray = require("./arrayLikeToArray");
function _arrayWithoutHoles(arr) {
if (Array.isArray(arr)) return arrayLikeToArray(arr);
}
module.exports = _arrayWithoutHoles;
\ No newline at end of file
function _assertThisInitialized(self) {
if (self === void 0) {
throw new ReferenceError("this hasn't been initialised - super() hasn't been called");
}
return self;
}
module.exports = _assertThisInitialized;
\ No newline at end of file
function _asyncGeneratorDelegate(inner, awaitWrap) {
var iter = {},
waiting = false;
function pump(key, value) {
waiting = true;
value = new Promise(function (resolve) {
resolve(inner[key](value));
});
return {
done: false,
value: awaitWrap(value)
};
}
;
if (typeof Symbol === "function" && Symbol.iterator) {
iter[Symbol.iterator] = function () {
return this;
};
}
iter.next = function (value) {
if (waiting) {
waiting = false;
return value;
}
return pump("next", value);
};
if (typeof inner["throw"] === "function") {
iter["throw"] = function (value) {
if (waiting) {
waiting = false;
throw value;
}
return pump("throw", value);
};
}
if (typeof inner["return"] === "function") {
iter["return"] = function (value) {
if (waiting) {
waiting = false;
return value;
}
return pump("return", value);
};
}
return iter;
}
module.exports = _asyncGeneratorDelegate;
\ No newline at end of file
function _asyncIterator(iterable) {
var method;
if (typeof Symbol !== "undefined") {
if (Symbol.asyncIterator) {
method = iterable[Symbol.asyncIterator];
if (method != null) return method.call(iterable);
}
if (Symbol.iterator) {
method = iterable[Symbol.iterator];
if (method != null) return method.call(iterable);
}
}
throw new TypeError("Object is not async iterable");
}
module.exports = _asyncIterator;
\ No newline at end of file
function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {
try {
var info = gen[key](arg);
var value = info.value;
} catch (error) {
reject(error);
return;
}
if (info.done) {
resolve(value);
} else {
Promise.resolve(value).then(_next, _throw);
}
}
function _asyncToGenerator(fn) {
return function () {
var self = this,
args = arguments;
return new Promise(function (resolve, reject) {
var gen = fn.apply(self, args);
function _next(value) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "next", value);
}
function _throw(err) {
asyncGeneratorStep(gen, resolve, reject, _next, _throw, "throw", err);
}
_next(undefined);
});
};
}
module.exports = _asyncToGenerator;
\ No newline at end of file
var AwaitValue = require("./AwaitValue");
function _awaitAsyncGenerator(value) {
return new AwaitValue(value);
}
module.exports = _awaitAsyncGenerator;
\ No newline at end of file
function _classCallCheck(instance, Constructor) {
if (!(instance instanceof Constructor)) {
throw new TypeError("Cannot call a class as a function");
}
}
module.exports = _classCallCheck;
\ No newline at end of file
function _classNameTDZError(name) {
throw new Error("Class \"" + name + "\" cannot be referenced in computed property keys.");
}
module.exports = _classNameTDZError;
\ No newline at end of file
function _classPrivateFieldDestructureSet(receiver, privateMap) {
if (!privateMap.has(receiver)) {
throw new TypeError("attempted to set private field on non-instance");
}
var descriptor = privateMap.get(receiver);
if (descriptor.set) {
if (!("__destrObj" in descriptor)) {
descriptor.__destrObj = {
set value(v) {
descriptor.set.call(receiver, v);
}
};
}
return descriptor.__destrObj;
} else {
if (!descriptor.writable) {
throw new TypeError("attempted to set read only private field");
}
return descriptor;
}
}
module.exports = _classPrivateFieldDestructureSet;
\ No newline at end of file
function _classPrivateFieldGet(receiver, privateMap) {
var descriptor = privateMap.get(receiver);
if (!descriptor) {
throw new TypeError("attempted to get private field on non-instance");
}
if (descriptor.get) {
return descriptor.get.call(receiver);
}
return descriptor.value;
}
module.exports = _classPrivateFieldGet;
\ No newline at end of file
function _classPrivateFieldBase(receiver, privateKey) {
if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {
throw new TypeError("attempted to use private field on non-instance");
}
return receiver;
}
module.exports = _classPrivateFieldBase;
\ No newline at end of file
var id = 0;
function _classPrivateFieldKey(name) {
return "__private_" + id++ + "_" + name;
}
module.exports = _classPrivateFieldKey;
\ No newline at end of file
function _classPrivateFieldSet(receiver, privateMap, value) {
var descriptor = privateMap.get(receiver);
if (!descriptor) {
throw new TypeError("attempted to set private field on non-instance");
}
if (descriptor.set) {
descriptor.set.call(receiver, value);
} else {
if (!descriptor.writable) {
throw new TypeError("attempted to set read only private field");
}
descriptor.value = value;
}
return value;
}
module.exports = _classPrivateFieldSet;
\ No newline at end of file
function _classPrivateMethodGet(receiver, privateSet, fn) {
if (!privateSet.has(receiver)) {
throw new TypeError("attempted to get private field on non-instance");
}
return fn;
}
module.exports = _classPrivateMethodGet;
\ No newline at end of file
function _classPrivateMethodSet() {
throw new TypeError("attempted to reassign private method");
}
module.exports = _classPrivateMethodSet;
\ No newline at end of file
function _classStaticPrivateFieldSpecGet(receiver, classConstructor, descriptor) {
if (receiver !== classConstructor) {
throw new TypeError("Private static access of wrong provenance");
}
if (descriptor.get) {
return descriptor.get.call(receiver);
}
return descriptor.value;
}
module.exports = _classStaticPrivateFieldSpecGet;
\ No newline at end of file
function _classStaticPrivateFieldSpecSet(receiver, classConstructor, descriptor, value) {
if (receiver !== classConstructor) {
throw new TypeError("Private static access of wrong provenance");
}
if (descriptor.set) {
descriptor.set.call(receiver, value);
} else {
if (!descriptor.writable) {
throw new TypeError("attempted to set read only private field");
}
descriptor.value = value;
}
return value;
}
module.exports = _classStaticPrivateFieldSpecSet;
\ No newline at end of file
function _classStaticPrivateMethodGet(receiver, classConstructor, method) {
if (receiver !== classConstructor) {
throw new TypeError("Private static access of wrong provenance");
}
return method;
}
module.exports = _classStaticPrivateMethodGet;
\ No newline at end of file
function _classStaticPrivateMethodSet() {
throw new TypeError("attempted to set read only static private field");
}
module.exports = _classStaticPrivateMethodSet;
\ No newline at end of file
var setPrototypeOf = require("./setPrototypeOf");
var isNativeReflectConstruct = require("./isNativeReflectConstruct");
function _construct(Parent, args, Class) {
if (isNativeReflectConstruct()) {
module.exports = _construct = Reflect.construct;
} else {
module.exports = _construct = function _construct(Parent, args, Class) {
var a = [null];
a.push.apply(a, args);
var Constructor = Function.bind.apply(Parent, a);
var instance = new Constructor();
if (Class) setPrototypeOf(instance, Class.prototype);
return instance;
};
}
return _construct.apply(null, arguments);
}
module.exports = _construct;
\ No newline at end of file
function _defineProperties(target, props) {
for (var i = 0; i < props.length; i++) {
var descriptor = props[i];
descriptor.enumerable = descriptor.enumerable || false;
descriptor.configurable = true;
if ("value" in descriptor) descriptor.writable = true;
Object.defineProperty(target, descriptor.key, descriptor);
}
}
function _createClass(Constructor, protoProps, staticProps) {
if (protoProps) _defineProperties(Constructor.prototype, protoProps);
if (staticProps) _defineProperties(Constructor, staticProps);
return Constructor;
}
module.exports = _createClass;
\ No newline at end of file
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff could not be displayed because it is too large.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.
This diff is collapsed. Click to expand it.