Commit d9ac2ce8 authored by Liang Ding's avatar Liang Ding

🎨 #12932

parent 11e8e963
src/main/webapp/markdowns/*
!src/main/webapp/markdowns/README.md
src/main/resources/markdowns/*
!src/main/resources/markdowns/README.md
solo_h2_test/
target/
......
[submodule "src/main/webapp/skins"]
path = src/main/webapp/skins
[submodule "src/main/resources/skins"]
path = src/main/resources/skins
url = https://github.com/b3log/solo-skins
......@@ -3,7 +3,7 @@ FROM maven:3-jdk-8-alpine as MVN_BUILD
WORKDIR /opt/solo/
ADD . /tmp
RUN cd /tmp && mvn package -DskipTests -Pci && mv target/solo/* /opt/solo/ \
&& cp -f /tmp/src/main/resources/docker/* /opt/solo/WEB-INF/classes/
&& cp -f /tmp/src/main/resources/docker/* /opt/solo/
FROM openjdk:8-alpine
LABEL maintainer="Liang Ding<d@b3log.org>"
......@@ -15,4 +15,4 @@ RUN apk add --no-cache ca-certificates tzdata
ENV TZ=Asia/Shanghai
EXPOSE 8080
ENTRYPOINT [ "java", "-cp", "WEB-INF/lib/*:WEB-INF/classes", "org.b3log.solo.Server" ]
ENTRYPOINT [ "java", "-jar", "solo.jar" ]
......@@ -33,104 +33,104 @@ const rename = require('gulp-rename')
const del = require('del')
function sassSkinProcess () {
return gulp.src('./src/main/webapp/skins/*/css/*.scss').
return gulp.src('./src/main/resources/skins/*/css/*.scss').
pipe(sass({
outputStyle: 'compressed',
includePaths: ['node_modules']
}).on('error', sass.logError)).
pipe(gulp.dest('./src/main/webapp/skins/'))
pipe(gulp.dest('./src/main/resources/skins/'))
}
function sassWatch () {
gulp.watch(['./src/main/webapp/skins/*/css/*.scss'], sassSkinProcess)
gulp.watch(['./src/main/webapp/scss/*.scss'], sassCommonProcess)
gulp.watch(['./src/main/resources/skins/*/css/*.scss'], sassSkinProcess)
gulp.watch(['./src/main/resources/scss/*.scss'], sassCommonProcess)
}
function sassCommonProcess () {
return gulp.src('./src/main/webapp/scss/*.scss').
return gulp.src('./src/main/resources/scss/*.scss').
pipe(sass({
outputStyle: 'compressed',
includePaths: ['node_modules']
}).on('error', sass.logError)).
pipe(gulp.dest('./src/main/webapp/scss/'))
pipe(gulp.dest('./src/main/resources/scss/'))
}
gulp.task('watch', gulp.series(sassWatch))
function minJS () {
// minify js
return gulp.src('./src/main/webapp/js/*.js').
return gulp.src('./src/main/resources/js/*.js').
pipe(rename({suffix: '.min'})).
pipe(uglify()).
pipe(gulp.dest('./src/main/webapp/js/'))
pipe(gulp.dest('./src/main/resources/js/'))
}
function miniAdmin () {
// concat js
const jsJqueryUpload = [
'./src/main/webapp/js/admin/admin.js',
'./src/main/webapp/js/admin/editor.js',
'./src/main/webapp/js/admin/tablePaginate.js',
'./src/main/webapp/js/admin/article.js',
'./src/main/webapp/js/admin/comment.js',
'./src/main/webapp/js/admin/articleList.js',
'./src/main/webapp/js/admin/draftList.js',
'./src/main/webapp/js/admin/pageList.js',
'./src/main/webapp/js/admin/others.js',
'./src/main/webapp/js/admin/linkList.js',
'./src/main/webapp/js/admin/preference.js',
'./src/main/webapp/js/admin/themeList.js',
'./src/main/webapp/js/admin/pluginList.js',
'./src/main/webapp/js/admin/userList.js',
'./src/main/webapp/js/admin/categoryList.js',
'./src/main/webapp/js/admin/commentList.js',
'./src/main/webapp/js/admin/plugin.js',
'./src/main/webapp/js/admin/main.js',
'./src/main/webapp/js/admin/about.js']
'./src/main/resources/js/admin/admin.js',
'./src/main/resources/js/admin/editor.js',
'./src/main/resources/js/admin/tablePaginate.js',
'./src/main/resources/js/admin/article.js',
'./src/main/resources/js/admin/comment.js',
'./src/main/resources/js/admin/articleList.js',
'./src/main/resources/js/admin/draftList.js',
'./src/main/resources/js/admin/pageList.js',
'./src/main/resources/js/admin/others.js',
'./src/main/resources/js/admin/linkList.js',
'./src/main/resources/js/admin/preference.js',
'./src/main/resources/js/admin/themeList.js',
'./src/main/resources/js/admin/pluginList.js',
'./src/main/resources/js/admin/userList.js',
'./src/main/resources/js/admin/categoryList.js',
'./src/main/resources/js/admin/commentList.js',
'./src/main/resources/js/admin/plugin.js',
'./src/main/resources/js/admin/main.js',
'./src/main/resources/js/admin/about.js']
return gulp.src(jsJqueryUpload).
pipe(uglify({output: {ascii_only: true}})).
pipe(concat('admin.min.js')).
pipe(gulp.dest('./src/main/webapp/js/admin'))
pipe(gulp.dest('./src/main/resources/js/admin'))
}
function miniAdminLibs () {
// concat js
const jsJqueryUpload = [
'./src/main/webapp/js/lib/jquery/jquery.min.js',
'./src/main/webapp/js/lib/jquery/jquery.bowknot.min.js',]
'./src/main/resources/js/lib/jquery/jquery.min.js',
'./src/main/resources/js/lib/jquery/jquery.bowknot.min.js',]
return gulp.src(jsJqueryUpload).
pipe(uglify({output: {ascii_only: true}})).
// https://github.com/b3log/solo/issues/12522
pipe(concat('admin-lib.min.js')).
pipe(gulp.dest('./src/main/webapp/js/lib/compress/'))
pipe(gulp.dest('./src/main/resources/js/lib/compress/'))
}
function miniPjax () {
// concat js
const jsPjax = [
'./src/main/webapp/js/lib/jquery/jquery-3.1.0.min.js',
'./src/main/webapp/js/lib/jquery/jquery.pjax.js',
'./src/main/webapp/js/lib/nprogress/nprogress.js']
'./src/main/resources/js/lib/jquery/jquery-3.1.0.min.js',
'./src/main/resources/js/lib/jquery/jquery.pjax.js',
'./src/main/resources/js/lib/nprogress/nprogress.js']
return gulp.src(jsPjax).
pipe(uglify()).
pipe(concat('pjax.min.js')).
pipe(gulp.dest('./src/main/webapp/js/lib/compress/'))
pipe(gulp.dest('./src/main/resources/js/lib/compress/'))
}
function minSkinJS () {
// minify js
return gulp.src('./src/main/webapp/skins/*/js/*.js').
return gulp.src('./src/main/resources/skins/*/js/*.js').
pipe(rename({suffix: '.min'})).
pipe(uglify()).
pipe(gulp.dest('./src/main/webapp/skins/'))
pipe(gulp.dest('./src/main/resources/skins/'))
}
function cleanProcess () {
return del([
'./src/main/webapp/js/*.min.js',
'./src/main/webapp/skins/*/js/*.min.js'])
'./src/main/resources/js/*.min.js',
'./src/main/resources/skins/*/js/*.min.js'])
}
gulp.task('default',
......
......@@ -227,7 +227,7 @@
<testResources>
<testResource>
<directory>src/main/webapp</directory>
<directory>src/main/resources</directory>
</testResource>
<testResource>
<directory>src/test/resources</directory>
......@@ -279,28 +279,27 @@
<strictCheck>true</strictCheck>
<includes>
<include>**/src/*/java/**/*.java</include>
<include>**/src/*/webapp/js/*.js</include>
<include>**/src/*/webapp/scss/*.scss</include>
<include>**/src/*/webapp/**/*.ftl</include>
<include>**/src/*/webapp/skins/*/js/*.js</include>
<include>**/src/*/webapp/skins/**/*.scss</include>
<include>**/src/*/webapp/skins/**/*.properties</include>
<include>**/src/*/webapp/plugins/*/js/*.js</include>
<include>**/src/*/webapp/plugins/*/css/*.css</include>
<include>**/src/*/webapp/plugins/*/*.properties</include>
<include>**/src/*/webapp/js/admin/*.js</include>
<include>**/src/*/resources/js/*.js</include>
<include>**/src/*/resources/scss/*.scss</include>
<include>**/src/*/resources/**/*.ftl</include>
<include>**/src/*/resources/skins/*/js/*.js</include>
<include>**/src/*/resources/skins/**/*.scss</include>
<include>**/src/*/resources/skins/**/*.properties</include>
<include>**/src/*/resources/plugins/*/js/*.js</include>
<include>**/src/*/resources/plugins/*/css/*.css</include>
<include>**/src/*/resources/plugins/*/*.properties</include>
<include>**/src/*/resources/js/admin/*.js</include>
<include>**/src/*/resources/*.properties</include>
<include>**/src/*/webapp/WEB-INF/*.xml</include>
<include>**/src/test/resources/**/*</include>
<include>**/src/*/resources/docker/*</include>
</includes>
<excludes>
<exclude>**/src/main/java/**/package-info.java</exclude>
<exclude>**/src/*/webapp/js/lib/*.js</exclude>
<include>**/src/*/webapp/js/*.min.js</include>
<include>**/src/*/webapp/js/admin/*.min.js</include>
<include>**/src/*/webapp/skins/*/js/*.min.js</include>
<include>**/src/*/webapp/skins/*/css/*.css</include>
<exclude>**/src/*/resources/js/lib/*.js</exclude>
<include>**/src/*/resources/js/*.min.js</include>
<include>**/src/*/resources/js/admin/*.min.js</include>
<include>**/src/*/resources/skins/*/js/*.min.js</include>
<include>**/src/*/resources/skins/*/css/*.css</include>
<exclude>**/src/main/java/com/**/*.java</exclude>
</excludes>
......
......@@ -113,9 +113,7 @@ public final class Server extends BaseServer {
final CommandLineParser commandLineParser = new DefaultParser();
CommandLine commandLine;
final boolean isWindows = System.getProperty("os.name").toLowerCase().contains("windows");
final String cmdSyntax = isWindows ? "java -cp \"WEB-INF/lib/*;WEB-INF/classes\" org.b3log.solo.Starter"
: "java -cp \"WEB-INF/lib/*:WEB-INF/classes\" org.b3log.solo.Starter";
final String cmdSyntax = "java -jar solo.jar";
final String header = "\nSolo 是一款小而美的博客系统,专为程序员设计。\n\n";
final String footer = "\n提需求或报告缺陷请到项目网站: https://github.com/b3log/solo\n\n";
try {
......
......@@ -195,9 +195,9 @@ public class IndexProcessor {
*/
@RequestProcessing(value = "/logout", method = HttpMethod.GET)
public void logout(final RequestContext context) {
final Request httpServletRequest = context.getRequest();
final Request request = context.getRequest();
Solos.logout(httpServletRequest, context.getResponse());
Solos.logout(request, context.getResponse());
Solos.addGoogleNoIndex(context);
context.sendRedirect(Latkes.getServePath());
......
......@@ -65,7 +65,7 @@ public class SkinHandler implements Handler {
}
/**
* Resolve skin (template) for the specified HTTP servlet request.
* Resolve skin (template) for the specified HTTP request.
* 前台皮肤切换 https://github.com/b3log/solo/issues/12060
*
* @param request the specified HTTP request
......
......@@ -39,7 +39,7 @@ import java.util.Map;
public final class SkinRenderer extends AbstractFreeMarkerRenderer {
/**
* HTTP servlet request context.
* HTTP request context.
*/
private final RequestContext context;
......
......@@ -32,7 +32,7 @@ import org.b3log.solo.util.Skins;
public final class ConsoleRenderer extends AbstractFreeMarkerRenderer {
/**
* HTTP servlet request context.
* HTTP request context.
*/
private final RequestContext context;
......
......@@ -71,7 +71,7 @@ public class ImportService {
*/
public void importMarkdowns() {
new Thread(() -> {
final String markdownsPath = ImportService.class.getResource("markdowns").getPath();
final String markdownsPath = ImportService.class.getResource("/markdowns").getPath();
LOGGER.debug("Import directory [" + markdownsPath + "]");
final JSONObject admin = userQueryService.getAdmin();
......
......@@ -118,8 +118,8 @@ public final class Skins {
}
/**
* Fills the specified data model with the current skin's (WebRoot/skins/${skinDirName}/lang/lang_xx_XX.properties)
* and core language (WebRoot/WEB-INF/classes/lang_xx_XX.properties) configurations.
* Fills the specified data model with the current skin's (skins/${skinDirName}/lang/lang_xx_XX.properties)
* and core language (classes/lang_xx_XX.properties) configurations.
*
* @param localeString the specified locale string
* @param currentSkinDirName the specified current skin directory name
......
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
This diff is collapsed.
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment