Commit dbb915a2 authored by 佚名's avatar 佚名 🎅🏼

fix: bugs

parent b2a15326
...@@ -11,7 +11,8 @@ ...@@ -11,7 +11,8 @@
"history": "^4.9.0", "history": "^4.9.0",
"less": "^3.9.0", "less": "^3.9.0",
"react": "^16.2.0", "react": "^16.2.0",
"react-dom": "^16.2.0" "react-dom": "^16.2.0",
"styled-components": "^4.3.2"
}, },
"devDependencies": { "devDependencies": {
"babel-plugin-dva-hmr": "^0.3.2", "babel-plugin-dva-hmr": "^0.3.2",
......
import React, { Component } from 'react'; import React from 'react';
import Square from './Square'; import Square from './Square';
import './styles/board.css'; import { BoardRow } from './style';
class Board extends Component { const Board = (props) => {
renderSquare(i) { const renderSquare = (i) => {
return ( return (
<Square <Square
value={this.props.squares[i]} value={props.squares[i]}
onClick={() => this.props.onClick(i)} onClick={() => props.dispatch({type: 'game/handleClick', payload: i})}
/> />
) )
} }
render() {
return ( return (
<div> <div>
<div className="board-row"> <BoardRow>
{this.renderSquare(0)} {renderSquare(0)}
{this.renderSquare(1)} {renderSquare(1)}
{this.renderSquare(2)} {renderSquare(2)}
</div> </BoardRow>
<div className="board-row"> <BoardRow>
{this.renderSquare(3)} {renderSquare(3)}
{this.renderSquare(4)} {renderSquare(4)}
{this.renderSquare(5)} {renderSquare(5)}
</div> </BoardRow>
<div className="board-row"> <BoardRow>
{this.renderSquare(6)} {renderSquare(6)}
{this.renderSquare(7)} {renderSquare(7)}
{this.renderSquare(8)} {renderSquare(8)}
</div> </BoardRow>
</div> </div>
) )
}
} }
export default Board; export default Board;
\ No newline at end of file
import React from 'react'; import React from 'react';
import './styles/square.css'; import { Button } from './style';
// import './styles/square.css';
//import 样式未生效,问题查找中,暂且定义行内样式
const style = {
width: '34px',
height: '34px',
border: '1px solid #999',
fontSize: '24px',
fontWeight: 'bold',
lineHeight: '34px',
marginTop: '-1px',
marginRight: '-1px',
padding: '0',
textAlign: 'center',
background: '#fff',
}
const Square = (props) => { const Square = (props) => {
return ( return (
<button <Button
style={style}
className="square"
onClick={props.onClick} onClick={props.onClick}
> >
{props.value} {props.value}
</button> </Button>
); );
}; };
......
.square { import styled from 'styled-components';
width: 34px;
height: 34px; export const Button = styled.button`
border: 1px solid #999; float: left;
font-size: 24px; width: 60px;
font-weight: bold; height: 60px;
line-height: 34px; line-height: 34px;
margin-top: -1px; margin-top: -1px;
margin-right: -1px; margin-right: -1px;
padding: 0; padding: 0;
text-align: center;
background: #fff; background: #fff;
} border: 1px solid #999;
font-size: 30px;
font-weight: bold;
text-align: center;
&:focus {
outline: none
}
`
.square:focus { export const BoardRow = styled.div`
outline: none; &:after {
} clear: both;
\ No newline at end of file content: "";
display: table;
}
`
\ No newline at end of file
.board-row:after {
clear: both;
content: "";
display: table;
}
\ No newline at end of file
html, body, :global(#root) {
height: 100%;
}
...@@ -15,7 +15,6 @@ export default { ...@@ -15,7 +15,6 @@ export default {
reducers: { reducers: {
handleClick(state, action){ handleClick(state, action){
function calculateWinner(squares) { function calculateWinner(squares) {
const lines = [ const lines = [
[0, 1, 2], [0, 1, 2],
...@@ -39,8 +38,9 @@ export default { ...@@ -39,8 +38,9 @@ export default {
const history = state.history.slice(0, state.stepNumber + 1); const history = state.history.slice(0, state.stepNumber + 1);
const current = history[history.length - 1]; const current = history[history.length - 1];
const squares = current.squares.slice(); const squares = current.squares.slice();
console.log(action.payload)
if (calculateWinner(squares) || squares[action.payload]) { if (calculateWinner(squares) || squares[action.payload]) {
return; return {...state};
} }
squares[action.payload] = state.xIsNext ? "X" : "O"; squares[action.payload] = state.xIsNext ? "X" : "O";
return { return {
...@@ -55,7 +55,8 @@ export default { ...@@ -55,7 +55,8 @@ export default {
}, },
jumpTo(state, action){ jumpTo(state, action){
return { return {
stepNumber: action.move, ...state,
stepNumber: action.payload,
xIsNext: (action.move % 2) === 0 xIsNext: (action.move % 2) === 0
} }
} }
......
import React from 'react'; import React from 'react';
import { connect } from 'dva'; import { connect } from 'dva';
import Board from '../components/Board'; import Board from '../components/Board';
import './game.css'; import style from './game.css';
function calculateWinner(squares) { function calculateWinner(squares) {
const lines = [ const lines = [
...@@ -43,13 +43,12 @@ const Game = ({ history, stepNumber, xIsNext, dispatch }) => { ...@@ -43,13 +43,12 @@ const Game = ({ history, stepNumber, xIsNext, dispatch }) => {
status = "Next player: " + (xIsNext ? "X" : "O"); status = "Next player: " + (xIsNext ? "X" : "O");
} }
return ( return (
<div className="game"> <div className={style.game}>
<div className="game-board"> <div className="game-board">
<Board <Board
squares={current.squares} squares={current.squares}
onClick={(i) => dispatch({type: 'game/handleClick', payload: i}) } dispatch={dispatch}
/> />
<div>样式目前存在较大问题,玩法功能也存在较多问题,正常玩法流程可进行,多次点击目前报错,以及时间回溯功能也报错,下午完善,上午才着手做这个,昨天看了份dva视频教程</div>
</div> </div>
<div className="game-info"> <div className="game-info">
<div>{status}</div> <div>{status}</div>
......
body {
font: 14px "Century Gothic", Futura, sans-serif;
margin: 20px;
}
ol, ul {
padding-left: 30px;
}
.board-row:after {
clear: both;
content: "";
display: table;
}
.status {
margin-bottom: 10px;
}
.square {
background: #fff;
border: 1px solid #999;
float: left;
font-size: 24px;
font-weight: bold;
line-height: 34px;
height: 34px;
margin-right: -1px;
margin-top: -1px;
padding: 0;
text-align: center;
width: 34px;
}
.square:focus {
outline: none;
}
.kbd-navigation .square:focus {
background: #ddd;
}
.game { .game {
display: flex; margin: 100px 200px;
flex-direction: row;
}
.game-info {
margin-left: 20px;
} }
\ No newline at end of file
...@@ -966,7 +966,7 @@ ...@@ -966,7 +966,7 @@
invariant "^2.2.0" invariant "^2.2.0"
lodash "^4.2.0" lodash "^4.2.0"
"@babel/traverse@^7.1.0", "@babel/traverse@^7.4.4", "@babel/traverse@^7.4.5", "@babel/traverse@^7.5.0": "@babel/traverse@^7.0.0", "@babel/traverse@^7.1.0", "@babel/traverse@^7.4.4", "@babel/traverse@^7.4.5", "@babel/traverse@^7.5.0":
version "7.5.0" version "7.5.0"
resolved "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.5.0.tgz?cache=0&sync_timestamp=1562245150727&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftraverse%2Fdownload%2F%40babel%2Ftraverse-7.5.0.tgz#4216d6586854ef5c3c4592dab56ec7eb78485485" resolved "https://registry.npm.taobao.org/@babel/traverse/download/@babel/traverse-7.5.0.tgz?cache=0&sync_timestamp=1562245150727&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2F%40babel%2Ftraverse%2Fdownload%2F%40babel%2Ftraverse-7.5.0.tgz#4216d6586854ef5c3c4592dab56ec7eb78485485"
integrity sha1-QhbWWGhU71w8RZLatW7H63hIVIU= integrity sha1-QhbWWGhU71w8RZLatW7H63hIVIU=
...@@ -999,6 +999,23 @@ ...@@ -999,6 +999,23 @@
lodash "^4.17.11" lodash "^4.17.11"
to-fast-properties "^2.0.0" to-fast-properties "^2.0.0"
"@emotion/is-prop-valid@^0.8.1":
version "0.8.2"
resolved "https://registry.npm.taobao.org/@emotion/is-prop-valid/download/@emotion/is-prop-valid-0.8.2.tgz#b9692080da79041683021fcc32f96b40c54c59dc"
integrity sha1-uWkggNp5BBaDAh/MMvlrQMVMWdw=
dependencies:
"@emotion/memoize" "0.7.2"
"@emotion/memoize@0.7.2":
version "0.7.2"
resolved "https://registry.npm.taobao.org/@emotion/memoize/download/@emotion/memoize-0.7.2.tgz#7f4c71b7654068dfcccad29553520f984cc66b30"
integrity sha1-f0xxt2VAaN/MytKVU1IPmEzGazA=
"@emotion/unitless@^0.7.0":
version "0.7.4"
resolved "https://registry.npm.taobao.org/@emotion/unitless/download/@emotion/unitless-0.7.4.tgz#a87b4b04e5ae14a88d48ebef15015f6b7d1f5677"
integrity sha1-qHtLBOWuFKiNSOvvFQFfa30fVnc=
"@types/history@*": "@types/history@*":
version "4.7.2" version "4.7.2"
resolved "https://registry.npm.taobao.org/@types/history/download/@types/history-4.7.2.tgz#0e670ea254d559241b6eeb3894f8754991e73220" resolved "https://registry.npm.taobao.org/@types/history/download/@types/history-4.7.2.tgz#0e670ea254d559241b6eeb3894f8754991e73220"
...@@ -1793,6 +1810,21 @@ babel-plugin-react-require@3.0.0: ...@@ -1793,6 +1810,21 @@ babel-plugin-react-require@3.0.0:
resolved "https://registry.npm.taobao.org/babel-plugin-react-require/download/babel-plugin-react-require-3.0.0.tgz#2e4e7b4496b93a654a1c80042276de4e4eeb20e3" resolved "https://registry.npm.taobao.org/babel-plugin-react-require/download/babel-plugin-react-require-3.0.0.tgz#2e4e7b4496b93a654a1c80042276de4e4eeb20e3"
integrity sha1-Lk57RJa5OmVKHIAEInbeTk7rIOM= integrity sha1-Lk57RJa5OmVKHIAEInbeTk7rIOM=
"babel-plugin-styled-components@>= 1":
version "1.10.6"
resolved "https://registry.npm.taobao.org/babel-plugin-styled-components/download/babel-plugin-styled-components-1.10.6.tgz#f8782953751115faf09a9f92431436912c34006b"
integrity sha1-+HgpU3URFfrwmp+SQxQ2kSw0AGs=
dependencies:
"@babel/helper-annotate-as-pure" "^7.0.0"
"@babel/helper-module-imports" "^7.0.0"
babel-plugin-syntax-jsx "^6.18.0"
lodash "^4.17.11"
babel-plugin-syntax-jsx@^6.18.0:
version "6.18.0"
resolved "https://registry.npm.taobao.org/babel-plugin-syntax-jsx/download/babel-plugin-syntax-jsx-6.18.0.tgz#0af32a9a6e13ca7a3fd5069e62d7b0f58d0d8946"
integrity sha1-CvMqmm4Tyno/1QaeYtew9Y0NiUY=
babel-plugin-syntax-object-rest-spread@^6.13.0: babel-plugin-syntax-object-rest-spread@^6.13.0:
version "6.13.0" version "6.13.0"
resolved "https://registry.npm.taobao.org/babel-plugin-syntax-object-rest-spread/download/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5" resolved "https://registry.npm.taobao.org/babel-plugin-syntax-object-rest-spread/download/babel-plugin-syntax-object-rest-spread-6.13.0.tgz#fd6536f2bce13836ffa3a5458c4903a597bb3bf5"
...@@ -2372,6 +2404,11 @@ camelcase@^4.0.0, camelcase@^4.1.0: ...@@ -2372,6 +2404,11 @@ camelcase@^4.0.0, camelcase@^4.1.0:
resolved "https://registry.npm.taobao.org/camelcase/download/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd" resolved "https://registry.npm.taobao.org/camelcase/download/camelcase-4.1.0.tgz#d545635be1e33c542649c69173e5de6acfae34dd"
integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0= integrity sha1-1UVjW+HjPFQmScaRc+Xeas+uNN0=
camelize@^1.0.0:
version "1.0.0"
resolved "https://registry.npm.taobao.org/camelize/download/camelize-1.0.0.tgz#164a5483e630fa4321e5af07020e531831b2609b"
integrity sha1-FkpUg+Yw+kMh5a8HAg5TGDGyYJs=
caniuse-api@^1.5.2: caniuse-api@^1.5.2:
version "1.6.1" version "1.6.1"
resolved "https://registry.npm.taobao.org/caniuse-api/download/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c" resolved "https://registry.npm.taobao.org/caniuse-api/download/caniuse-api-1.6.1.tgz#b534e7c734c4f81ec5fbe8aca2ad24354b962c6c"
...@@ -2985,6 +3022,11 @@ crypto-random-string@^1.0.0: ...@@ -2985,6 +3022,11 @@ crypto-random-string@^1.0.0:
resolved "https://registry.npm.taobao.org/crypto-random-string/download/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e" resolved "https://registry.npm.taobao.org/crypto-random-string/download/crypto-random-string-1.0.0.tgz#a230f64f568310e1498009940790ec99545bca7e"
integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4= integrity sha1-ojD2T1aDEOFJgAmUB5DsmVRbyn4=
css-color-keywords@^1.0.0:
version "1.0.0"
resolved "https://registry.npm.taobao.org/css-color-keywords/download/css-color-keywords-1.0.0.tgz#fea2616dc676b2962686b3af8dbdbe180b244e05"
integrity sha1-/qJhbcZ2spYmhrOvjb2+GAskTgU=
css-color-names@0.0.4: css-color-names@0.0.4:
version "0.0.4" version "0.0.4"
resolved "https://registry.npm.taobao.org/css-color-names/download/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0" resolved "https://registry.npm.taobao.org/css-color-names/download/css-color-names-0.0.4.tgz#808adc2e79cf84738069b646cb20ec27beb629e0"
...@@ -3029,6 +3071,15 @@ css-selector-tokenizer@^0.7.0: ...@@ -3029,6 +3071,15 @@ css-selector-tokenizer@^0.7.0:
fastparse "^1.1.1" fastparse "^1.1.1"
regexpu-core "^1.0.0" regexpu-core "^1.0.0"
css-to-react-native@^2.2.2:
version "2.3.1"
resolved "https://registry.npm.taobao.org/css-to-react-native/download/css-to-react-native-2.3.1.tgz#cf0f61e0514846e2d4dc188b0886e29d8bef64a2"
integrity sha1-zw9h4FFIRuLU3BiLCIbinYvvZKI=
dependencies:
camelize "^1.0.0"
css-color-keywords "^1.0.0"
postcss-value-parser "^3.3.0"
css-what@2.1: css-what@2.1:
version "2.1.3" version "2.1.3"
resolved "https://registry.npm.taobao.org/css-what/download/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2" resolved "https://registry.npm.taobao.org/css-what/download/css-what-2.1.3.tgz#a6d7604573365fe74686c3f311c56513d88285f2"
...@@ -5728,6 +5779,11 @@ is-utf8@^0.2.0: ...@@ -5728,6 +5779,11 @@ is-utf8@^0.2.0:
resolved "https://registry.npm.taobao.org/is-utf8/download/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72" resolved "https://registry.npm.taobao.org/is-utf8/download/is-utf8-0.2.1.tgz#4b0da1442104d1b336340e80797e865cf39f7d72"
integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI= integrity sha1-Sw2hRCEE0bM2NA6AeX6GXPOffXI=
is-what@^3.2.4:
version "3.2.4"
resolved "https://registry.npm.taobao.org/is-what/download/is-what-3.2.4.tgz#da528659017bdd4b07892dfe4fd60da6ac500e98"
integrity sha1-2lKGWQF73UsHiS3+T9YNpqxQDpg=
is-windows@^1.0.1, is-windows@^1.0.2: is-windows@^1.0.1, is-windows@^1.0.2:
version "1.0.2" version "1.0.2"
resolved "https://registry.npm.taobao.org/is-windows/download/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d" resolved "https://registry.npm.taobao.org/is-windows/download/is-windows-1.0.2.tgz#d1850eb9791ecd18e6182ce12a30f396634bb19d"
...@@ -6689,6 +6745,11 @@ mem@^1.1.0: ...@@ -6689,6 +6745,11 @@ mem@^1.1.0:
dependencies: dependencies:
mimic-fn "^1.0.0" mimic-fn "^1.0.0"
memoize-one@^5.0.0:
version "5.0.5"
resolved "https://registry.npm.taobao.org/memoize-one/download/memoize-one-5.0.5.tgz?cache=0&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmemoize-one%2Fdownload%2Fmemoize-one-5.0.5.tgz#8cd3809555723a07684afafcd6f756072ac75d7e"
integrity sha1-jNOAlVVyOgdoSvr81vdWByrHXX4=
memory-fs@^0.4.0, memory-fs@~0.4.1: memory-fs@^0.4.0, memory-fs@~0.4.1:
version "0.4.1" version "0.4.1"
resolved "https://registry.npm.taobao.org/memory-fs/download/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552" resolved "https://registry.npm.taobao.org/memory-fs/download/memory-fs-0.4.1.tgz#3a9a20b8462523e447cfbc7e8bb80ed667bfc552"
...@@ -6713,6 +6774,13 @@ meow@^3.3.0, meow@^3.7.0: ...@@ -6713,6 +6774,13 @@ meow@^3.3.0, meow@^3.7.0:
redent "^1.0.0" redent "^1.0.0"
trim-newlines "^1.0.0" trim-newlines "^1.0.0"
merge-anything@^2.2.4:
version "2.4.0"
resolved "https://registry.npm.taobao.org/merge-anything/download/merge-anything-2.4.0.tgz?cache=0&sync_timestamp=1562996309832&other_urls=https%3A%2F%2Fregistry.npm.taobao.org%2Fmerge-anything%2Fdownload%2Fmerge-anything-2.4.0.tgz#86959caf02bb8969d1ae5e1b652862bc5fe54e44"
integrity sha1-hpWcrwK7iWnRrl4bZShivF/lTkQ=
dependencies:
is-what "^3.2.4"
merge-descriptors@1.0.1: merge-descriptors@1.0.1:
version "1.0.1" version "1.0.1"
resolved "https://registry.npm.taobao.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61" resolved "https://registry.npm.taobao.org/merge-descriptors/download/merge-descriptors-1.0.1.tgz#b00aaa556dd8b44568150ec9d1b953f3f90cbb61"
...@@ -8418,7 +8486,7 @@ react-error-overlay@^4.0.1: ...@@ -8418,7 +8486,7 @@ react-error-overlay@^4.0.1:
resolved "https://registry.npm.taobao.org/react-error-overlay/download/react-error-overlay-4.0.1.tgz#417addb0814a90f3a7082eacba7cee588d00da89" resolved "https://registry.npm.taobao.org/react-error-overlay/download/react-error-overlay-4.0.1.tgz#417addb0814a90f3a7082eacba7cee588d00da89"
integrity sha1-QXrdsIFKkPOnCC6sunzuWI0A2ok= integrity sha1-QXrdsIFKkPOnCC6sunzuWI0A2ok=
react-is@^16.8.1, react-is@^16.8.6: react-is@^16.6.0, react-is@^16.8.1, react-is@^16.8.6:
version "16.8.6" version "16.8.6"
resolved "https://registry.npm.taobao.org/react-is/download/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16" resolved "https://registry.npm.taobao.org/react-is/download/react-is-16.8.6.tgz#5bbc1e2d29141c9fbdfed456343fe2bc430a6a16"
integrity sha1-W7weLSkUHJ+9/tRWND/ivEMKahY= integrity sha1-W7weLSkUHJ+9/tRWND/ivEMKahY=
...@@ -9679,6 +9747,35 @@ style-loader@^0.20.3: ...@@ -9679,6 +9747,35 @@ style-loader@^0.20.3:
loader-utils "^1.1.0" loader-utils "^1.1.0"
schema-utils "^0.4.5" schema-utils "^0.4.5"
styled-components@^4.3.2:
version "4.3.2"
resolved "https://registry.npm.taobao.org/styled-components/download/styled-components-4.3.2.tgz#4ca81918c812d3006f60ac5fdec7d6b64a9509cc"
integrity sha1-TKgZGMgS0wBvYKxf3sfWtkqVCcw=
dependencies:
"@babel/helper-module-imports" "^7.0.0"
"@babel/traverse" "^7.0.0"
"@emotion/is-prop-valid" "^0.8.1"
"@emotion/unitless" "^0.7.0"
babel-plugin-styled-components ">= 1"
css-to-react-native "^2.2.2"
memoize-one "^5.0.0"
merge-anything "^2.2.4"
prop-types "^15.5.4"
react-is "^16.6.0"
stylis "^3.5.0"
stylis-rule-sheet "^0.0.10"
supports-color "^5.5.0"
stylis-rule-sheet@^0.0.10:
version "0.0.10"
resolved "https://registry.npm.taobao.org/stylis-rule-sheet/download/stylis-rule-sheet-0.0.10.tgz#44e64a2b076643f4b52e5ff71efc04d8c3c4a430"
integrity sha1-ROZKKwdmQ/S1Ll/3HvwE2MPEpDA=
stylis@^3.5.0:
version "3.5.4"
resolved "https://registry.npm.taobao.org/stylis/download/stylis-3.5.4.tgz#f665f25f5e299cf3d64654ab949a57c768b73fbe"
integrity sha1-9mXyX14pnPPWRlSrlJpXx2i3P74=
subarg@^1.0.0: subarg@^1.0.0:
version "1.0.0" version "1.0.0"
resolved "https://registry.npm.taobao.org/subarg/download/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2" resolved "https://registry.npm.taobao.org/subarg/download/subarg-1.0.0.tgz#f62cf17581e996b48fc965699f54c06ae268b8d2"
...@@ -9721,7 +9818,7 @@ supports-color@^4.2.1: ...@@ -9721,7 +9818,7 @@ supports-color@^4.2.1:
dependencies: dependencies:
has-flag "^2.0.0" has-flag "^2.0.0"
supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0: supports-color@^5.1.0, supports-color@^5.3.0, supports-color@^5.4.0, supports-color@^5.5.0:
version "5.5.0" version "5.5.0"
resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f" resolved "https://registry.npm.taobao.org/supports-color/download/supports-color-5.5.0.tgz#e2e69a44ac8772f78a1ec0b35b689df6530efc8f"
integrity sha1-4uaaRKyHcveKHsCzW2id9lMO/I8= integrity sha1-4uaaRKyHcveKHsCzW2id9lMO/I8=
......
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