diff --git a/README.md b/README.md index dbdd271..686d51e 100644 --- a/README.md +++ b/README.md @@ -7,6 +7,19 @@ pip install sphinx_rtd_theme pip install sphinx_markdown_tables pip install sphinx-multiversion ``` + +# 建立软链接 +``` +ln -s absolutepath/markdown/ ./soruce/_static +``` + +# 更新版本 +``` +git tag -a v${version} -m "message" +``` + + + # 配置文件说明 ./source/index.rst diff --git a/source/markdown/ContractAPI.md b/markdown/markdown/ContractAPI.md similarity index 100% rename from source/markdown/ContractAPI.md rename to markdown/markdown/ContractAPI.md diff --git a/source/markdown/IDEUsage.md b/markdown/markdown/IDEUsage.md similarity index 100% rename from source/markdown/IDEUsage.md rename to markdown/markdown/IDEUsage.md diff --git a/source/markdown/InstallTips.md b/markdown/markdown/InstallTips.md similarity index 100% rename from source/markdown/InstallTips.md rename to markdown/markdown/InstallTips.md diff --git a/source/markdown/Introduction.md b/markdown/markdown/Introduction.md similarity index 100% rename from source/markdown/Introduction.md rename to markdown/markdown/Introduction.md diff --git a/source/markdown/YJSAPI.md b/markdown/markdown/YJSAPI.md similarity index 100% rename from source/markdown/YJSAPI.md rename to markdown/markdown/YJSAPI.md diff --git a/source/markdown/YJSInDepth.md b/markdown/markdown/YJSInDepth.md similarity index 100% rename from source/markdown/YJSInDepth.md rename to markdown/markdown/YJSInDepth.md diff --git a/source/markdown/conf.py b/markdown/markdown/conf.py similarity index 100% rename from source/markdown/conf.py rename to markdown/markdown/conf.py diff --git a/source/markdown/index.rst b/markdown/markdown/index.rst similarity index 100% rename from source/markdown/index.rst rename to markdown/markdown/index.rst diff --git a/source/markdown_BDWare/ContractAPI.md b/markdown/markdown_BDWare/ContractAPI.md similarity index 100% rename from source/markdown_BDWare/ContractAPI.md rename to markdown/markdown_BDWare/ContractAPI.md diff --git a/source/markdown_BDWare/IDEUsage.md b/markdown/markdown_BDWare/IDEUsage.md similarity index 100% rename from source/markdown_BDWare/IDEUsage.md rename to markdown/markdown_BDWare/IDEUsage.md diff --git a/source/markdown_BDWare/InstallTips.md b/markdown/markdown_BDWare/InstallTips.md similarity index 100% rename from source/markdown_BDWare/InstallTips.md rename to markdown/markdown_BDWare/InstallTips.md diff --git a/source/markdown_BDWare/Introduction.md b/markdown/markdown_BDWare/Introduction.md similarity index 87% rename from source/markdown_BDWare/Introduction.md rename to markdown/markdown_BDWare/Introduction.md index 59be7f8..af581de 100644 --- a/source/markdown_BDWare/Introduction.md +++ b/markdown/markdown_BDWare/Introduction.md @@ -2,9 +2,9 @@ - - - -## 什么是北大数瑞? +## 什么是BDContract? - 北大数瑞是面向大数据场景的数据资源、IoT资源、云资源的管理、调度平台。BDContract是一个可信计算框架,计算逻辑以智能合约的方式表达。通过”随机“和”冗余计算“的方式实现智能合约的可信执行。BDContract在保证智能合约的可用性、可靠性的同时,着重提升执行效率和安全性。 +BDContract是一个可信计算框架,计算逻辑以智能合约的方式表达。通过”随机“和”冗余计算“的方式实现智能合约的可信执行。BDContract在保证智能合约的可用性、可靠性的同时,着重提升执行效率和安全性。 - - - diff --git a/source/markdown_BDWare/YJSAPI.md b/markdown/markdown_BDWare/YJSAPI.md similarity index 100% rename from source/markdown_BDWare/YJSAPI.md rename to markdown/markdown_BDWare/YJSAPI.md diff --git a/source/markdown_BDWare/YJSInDepth.md b/markdown/markdown_BDWare/YJSInDepth.md similarity index 100% rename from source/markdown_BDWare/YJSInDepth.md rename to markdown/markdown_BDWare/YJSInDepth.md diff --git a/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo-镂空反白-横版.png b/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo-镂空反白-横版.png new file mode 100644 index 0000000..ab47958 Binary files /dev/null and b/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo-镂空反白-横版.png differ diff --git a/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo-镂空反白-横版@2x.png b/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo-镂空反白-横版@2x.png new file mode 100644 index 0000000..1e47d6f Binary files /dev/null and b/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo-镂空反白-横版@2x.png differ diff --git a/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo-镂空反白-横版@3x.png b/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo-镂空反白-横版@3x.png new file mode 100644 index 0000000..4678a9a Binary files /dev/null and b/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo-镂空反白-横版@3x.png differ diff --git a/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo-镂空反白-竖版.png b/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo-镂空反白-竖版.png new file mode 100644 index 0000000..3b8e931 Binary files /dev/null and b/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo-镂空反白-竖版.png differ diff --git a/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo-镂空反白-竖版@2x.png b/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo-镂空反白-竖版@2x.png new file mode 100644 index 0000000..1fe4458 Binary files /dev/null and b/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo-镂空反白-竖版@2x.png differ diff --git a/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo-镂空反白-竖版@3x.png b/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo-镂空反白-竖版@3x.png new file mode 100644 index 0000000..65e3c1a Binary files /dev/null and b/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo-镂空反白-竖版@3x.png differ diff --git a/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo深色背景-横版.png b/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo深色背景-横版.png new file mode 100644 index 0000000..6657c8e Binary files /dev/null and b/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo深色背景-横版.png differ diff --git a/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo深色背景-横版@2x.png b/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo深色背景-横版@2x.png new file mode 100644 index 0000000..8f47df3 Binary files /dev/null and b/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo深色背景-横版@2x.png differ diff --git a/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo深色背景-横版@3x.png b/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo深色背景-横版@3x.png new file mode 100644 index 0000000..a64dac0 Binary files /dev/null and b/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo深色背景-横版@3x.png differ diff --git a/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo竖版-深色背景.png b/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo竖版-深色背景.png new file mode 100644 index 0000000..81e793a Binary files /dev/null and b/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo竖版-深色背景.png differ diff --git a/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo竖版-深色背景@2x.png b/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo竖版-深色背景@2x.png new file mode 100644 index 0000000..7a6ae50 Binary files /dev/null and b/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo竖版-深色背景@2x.png differ diff --git a/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo竖版-深色背景@3x.png b/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo竖版-深色背景@3x.png new file mode 100644 index 0000000..1a4b696 Binary files /dev/null and b/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo竖版-深色背景@3x.png differ diff --git a/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo竖版.png b/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo竖版.png new file mode 100644 index 0000000..062258b Binary files /dev/null and b/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo竖版.png differ diff --git a/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo竖版@2x.png b/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo竖版@2x.png new file mode 100644 index 0000000..32a5e10 Binary files /dev/null and b/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo竖版@2x.png differ diff --git a/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo竖版@3x.png b/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo竖版@3x.png new file mode 100644 index 0000000..ea02f33 Binary files /dev/null and b/markdown/markdown_BDWare/_static/02-logos/北大数瑞logo竖版@3x.png differ diff --git a/markdown/markdown_BDWare/_static/02-logos/北大数睿logo横版.png b/markdown/markdown_BDWare/_static/02-logos/北大数睿logo横版.png new file mode 100644 index 0000000..b72352b Binary files /dev/null and b/markdown/markdown_BDWare/_static/02-logos/北大数睿logo横版.png differ diff --git a/markdown/markdown_BDWare/_static/02-logos/北大数睿logo横版@2x.png b/markdown/markdown_BDWare/_static/02-logos/北大数睿logo横版@2x.png new file mode 100644 index 0000000..d022b52 Binary files /dev/null and b/markdown/markdown_BDWare/_static/02-logos/北大数睿logo横版@2x.png differ diff --git a/markdown/markdown_BDWare/_static/02-logos/北大数睿logo横版@3x.png b/markdown/markdown_BDWare/_static/02-logos/北大数睿logo横版@3x.png new file mode 100644 index 0000000..70c0436 Binary files /dev/null and b/markdown/markdown_BDWare/_static/02-logos/北大数睿logo横版@3x.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/analysis.png b/markdown/markdown_BDWare/_static/imgs/analysis.png new file mode 100644 index 0000000..88ac1d3 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/analysis.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/analysis1.png b/markdown/markdown_BDWare/_static/imgs/analysis1.png new file mode 100644 index 0000000..4e5774d Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/analysis1.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/analysis2.png b/markdown/markdown_BDWare/_static/imgs/analysis2.png new file mode 100644 index 0000000..4b0ab0d Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/analysis2.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/analysis3.png b/markdown/markdown_BDWare/_static/imgs/analysis3.png new file mode 100644 index 0000000..a1bb383 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/analysis3.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/analysisExecuteResult.png b/markdown/markdown_BDWare/_static/imgs/analysisExecuteResult.png new file mode 100644 index 0000000..80b52cd Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/analysisExecuteResult.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/authList.jpg b/markdown/markdown_BDWare/_static/imgs/authList.jpg new file mode 100644 index 0000000..741d070 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/authList.jpg differ diff --git a/markdown/markdown_BDWare/_static/imgs/authMan.jpg b/markdown/markdown_BDWare/_static/imgs/authMan.jpg new file mode 100644 index 0000000..df1041e Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/authMan.jpg differ diff --git a/markdown/markdown_BDWare/_static/imgs/authMana.jpg b/markdown/markdown_BDWare/_static/imgs/authMana.jpg new file mode 100644 index 0000000..1fb6be4 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/authMana.jpg differ diff --git a/markdown/markdown_BDWare/_static/imgs/authNodeManager.jpg b/markdown/markdown_BDWare/_static/imgs/authNodeManager.jpg new file mode 100644 index 0000000..ce63e83 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/authNodeManager.jpg differ diff --git a/markdown/markdown_BDWare/_static/imgs/authorizationOrNot.jpg b/markdown/markdown_BDWare/_static/imgs/authorizationOrNot.jpg new file mode 100644 index 0000000..7ca81fc Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/authorizationOrNot.jpg differ diff --git a/markdown/markdown_BDWare/_static/imgs/bash-api.png b/markdown/markdown_BDWare/_static/imgs/bash-api.png new file mode 100644 index 0000000..3d6cc3b Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/bash-api.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/centerManager.jpg b/markdown/markdown_BDWare/_static/imgs/centerManager.jpg new file mode 100644 index 0000000..eabae32 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/centerManager.jpg differ diff --git a/markdown/markdown_BDWare/_static/imgs/centerNodeList.png b/markdown/markdown_BDWare/_static/imgs/centerNodeList.png new file mode 100644 index 0000000..e8668f9 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/centerNodeList.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/centerNodePage.png b/markdown/markdown_BDWare/_static/imgs/centerNodePage.png new file mode 100644 index 0000000..07e78d8 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/centerNodePage.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/centerNodePreview.png b/markdown/markdown_BDWare/_static/imgs/centerNodePreview.png new file mode 100644 index 0000000..111c9ea Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/centerNodePreview.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/centerNodeUnitCreate.png b/markdown/markdown_BDWare/_static/imgs/centerNodeUnitCreate.png new file mode 100644 index 0000000..314f71e Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/centerNodeUnitCreate.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/centerNodeUnits.png b/markdown/markdown_BDWare/_static/imgs/centerNodeUnits.png new file mode 100644 index 0000000..fa7e86d Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/centerNodeUnits.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/checkUser.jpg b/markdown/markdown_BDWare/_static/imgs/checkUser.jpg new file mode 100644 index 0000000..9c94318 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/checkUser.jpg differ diff --git a/markdown/markdown_BDWare/_static/imgs/checkUser.png b/markdown/markdown_BDWare/_static/imgs/checkUser.png new file mode 100644 index 0000000..2282d10 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/checkUser.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/chooseInstance.png b/markdown/markdown_BDWare/_static/imgs/chooseInstance.png new file mode 100644 index 0000000..dd58914 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/chooseInstance.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/clientLoadProcess.png b/markdown/markdown_BDWare/_static/imgs/clientLoadProcess.png new file mode 100644 index 0000000..df9efc1 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/clientLoadProcess.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/closePermission.png b/markdown/markdown_BDWare/_static/imgs/closePermission.png new file mode 100644 index 0000000..2df7c24 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/closePermission.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/codeManage1-1.png b/markdown/markdown_BDWare/_static/imgs/codeManage1-1.png new file mode 100644 index 0000000..2af24cb Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/codeManage1-1.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/codeManage1-2.png b/markdown/markdown_BDWare/_static/imgs/codeManage1-2.png new file mode 100644 index 0000000..57d5727 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/codeManage1-2.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/codeManage1.png b/markdown/markdown_BDWare/_static/imgs/codeManage1.png new file mode 100644 index 0000000..aff2b9a Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/codeManage1.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/codeManage2.png b/markdown/markdown_BDWare/_static/imgs/codeManage2.png new file mode 100644 index 0000000..dd4fad0 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/codeManage2.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/codeManage3.png b/markdown/markdown_BDWare/_static/imgs/codeManage3.png new file mode 100644 index 0000000..7676d76 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/codeManage3.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/codeManage4.png b/markdown/markdown_BDWare/_static/imgs/codeManage4.png new file mode 100644 index 0000000..ad0606d Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/codeManage4.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/codeManage5.png b/markdown/markdown_BDWare/_static/imgs/codeManage5.png new file mode 100644 index 0000000..8b9c382 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/codeManage5.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/codeManage6.png b/markdown/markdown_BDWare/_static/imgs/codeManage6.png new file mode 100644 index 0000000..03ade62 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/codeManage6.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/codeManage7.png b/markdown/markdown_BDWare/_static/imgs/codeManage7.png new file mode 100644 index 0000000..4a48550 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/codeManage7.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/codeManage8.png b/markdown/markdown_BDWare/_static/imgs/codeManage8.png new file mode 100644 index 0000000..57ad15e Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/codeManage8.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/codeManageMenu.png b/markdown/markdown_BDWare/_static/imgs/codeManageMenu.png new file mode 100644 index 0000000..ddaf7d1 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/codeManageMenu.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/config.png b/markdown/markdown_BDWare/_static/imgs/config.png new file mode 100644 index 0000000..111d0ca Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/config.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/contract.jpg b/markdown/markdown_BDWare/_static/imgs/contract.jpg new file mode 100644 index 0000000..a165388 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/contract.jpg differ diff --git a/markdown/markdown_BDWare/_static/imgs/contractList.jpg b/markdown/markdown_BDWare/_static/imgs/contractList.jpg new file mode 100644 index 0000000..6cf8be2 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/contractList.jpg differ diff --git a/markdown/markdown_BDWare/_static/imgs/contractLog.jpg b/markdown/markdown_BDWare/_static/imgs/contractLog.jpg new file mode 100644 index 0000000..de245e6 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/contractLog.jpg differ diff --git a/markdown/markdown_BDWare/_static/imgs/contractMode.png b/markdown/markdown_BDWare/_static/imgs/contractMode.png new file mode 100644 index 0000000..b32397b Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/contractMode.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/contracteveryLog.jpg b/markdown/markdown_BDWare/_static/imgs/contracteveryLog.jpg new file mode 100644 index 0000000..65d683b Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/contracteveryLog.jpg differ diff --git a/markdown/markdown_BDWare/_static/imgs/dashboard.jpg b/markdown/markdown_BDWare/_static/imgs/dashboard.jpg new file mode 100644 index 0000000..23c862b Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/dashboard.jpg differ diff --git a/markdown/markdown_BDWare/_static/imgs/deploytopology.png b/markdown/markdown_BDWare/_static/imgs/deploytopology.png new file mode 100644 index 0000000..c326fac Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/deploytopology.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/dirstructure.png b/markdown/markdown_BDWare/_static/imgs/dirstructure.png new file mode 100644 index 0000000..e2c6098 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/dirstructure.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/docs.png b/markdown/markdown_BDWare/_static/imgs/docs.png new file mode 100644 index 0000000..828ecf9 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/docs.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/everyLog.jpg b/markdown/markdown_BDWare/_static/imgs/everyLog.jpg new file mode 100644 index 0000000..fcc7c56 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/everyLog.jpg differ diff --git a/markdown/markdown_BDWare/_static/imgs/executeResult.png b/markdown/markdown_BDWare/_static/imgs/executeResult.png new file mode 100644 index 0000000..21b9e51 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/executeResult.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/favicon.ico b/markdown/markdown_BDWare/_static/imgs/favicon.ico new file mode 100644 index 0000000..56aa953 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/favicon.ico differ diff --git a/markdown/markdown_BDWare/_static/imgs/fork1.png b/markdown/markdown_BDWare/_static/imgs/fork1.png new file mode 100644 index 0000000..931a43b Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/fork1.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/fork2.png b/markdown/markdown_BDWare/_static/imgs/fork2.png new file mode 100644 index 0000000..6f0d531 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/fork2.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/fork3.png b/markdown/markdown_BDWare/_static/imgs/fork3.png new file mode 100644 index 0000000..81702dc Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/fork3.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/genReadme.png b/markdown/markdown_BDWare/_static/imgs/genReadme.png new file mode 100644 index 0000000..dd3347a Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/genReadme.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/http-api.png b/markdown/markdown_BDWare/_static/imgs/http-api.png new file mode 100644 index 0000000..be7b2f9 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/http-api.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/ide_screenshots1.1.png b/markdown/markdown_BDWare/_static/imgs/ide_screenshots1.1.png new file mode 100644 index 0000000..7588fb1 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/ide_screenshots1.1.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/ide_screenshots2.2.png b/markdown/markdown_BDWare/_static/imgs/ide_screenshots2.2.png new file mode 100644 index 0000000..a4a766d Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/ide_screenshots2.2.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/index.png b/markdown/markdown_BDWare/_static/imgs/index.png new file mode 100644 index 0000000..5cc7516 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/index.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/intanceExecute.png b/markdown/markdown_BDWare/_static/imgs/intanceExecute.png new file mode 100644 index 0000000..bd66b1f Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/intanceExecute.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/licence.jpg b/markdown/markdown_BDWare/_static/imgs/licence.jpg new file mode 100644 index 0000000..22010d6 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/licence.jpg differ diff --git a/markdown/markdown_BDWare/_static/imgs/licence.png b/markdown/markdown_BDWare/_static/imgs/licence.png new file mode 100644 index 0000000..cca1c2d Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/licence.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/log.jpg b/markdown/markdown_BDWare/_static/imgs/log.jpg new file mode 100644 index 0000000..075d0b0 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/log.jpg differ diff --git a/markdown/markdown_BDWare/_static/imgs/log1.png b/markdown/markdown_BDWare/_static/imgs/log1.png new file mode 100644 index 0000000..04e05a0 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/log1.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/log2.png b/markdown/markdown_BDWare/_static/imgs/log2.png new file mode 100644 index 0000000..33773f7 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/log2.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/log3.png b/markdown/markdown_BDWare/_static/imgs/log3.png new file mode 100644 index 0000000..a2bde90 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/log3.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/logMenu.png b/markdown/markdown_BDWare/_static/imgs/logMenu.png new file mode 100644 index 0000000..9fd8fc5 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/logMenu.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/logo.png b/markdown/markdown_BDWare/_static/imgs/logo.png new file mode 100644 index 0000000..79d515e Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/logo.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/logo2.png b/markdown/markdown_BDWare/_static/imgs/logo2.png new file mode 100644 index 0000000..ab47958 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/logo2.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/memoryDump.png b/markdown/markdown_BDWare/_static/imgs/memoryDump.png new file mode 100644 index 0000000..44356a2 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/memoryDump.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/node.jpg b/markdown/markdown_BDWare/_static/imgs/node.jpg new file mode 100644 index 0000000..9827b89 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/node.jpg differ diff --git a/markdown/markdown_BDWare/_static/imgs/nodeConfig.png b/markdown/markdown_BDWare/_static/imgs/nodeConfig.png new file mode 100644 index 0000000..1954dc2 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/nodeConfig.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/nodeConfigChange.png b/markdown/markdown_BDWare/_static/imgs/nodeConfigChange.png new file mode 100644 index 0000000..1f771a9 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/nodeConfigChange.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/nodeInfo.jpg b/markdown/markdown_BDWare/_static/imgs/nodeInfo.jpg new file mode 100644 index 0000000..2282d10 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/nodeInfo.jpg differ diff --git a/markdown/markdown_BDWare/_static/imgs/nodeInstancesList.png b/markdown/markdown_BDWare/_static/imgs/nodeInstancesList.png new file mode 100644 index 0000000..e7e3fd1 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/nodeInstancesList.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/nodeInstancesPage.png b/markdown/markdown_BDWare/_static/imgs/nodeInstancesPage.png new file mode 100644 index 0000000..35e8478 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/nodeInstancesPage.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/nodeLicence.png b/markdown/markdown_BDWare/_static/imgs/nodeLicence.png new file mode 100644 index 0000000..940bab1 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/nodeLicence.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/nodeUnits.png b/markdown/markdown_BDWare/_static/imgs/nodeUnits.png new file mode 100644 index 0000000..502d271 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/nodeUnits.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/nodeUserManager.jpg b/markdown/markdown_BDWare/_static/imgs/nodeUserManager.jpg new file mode 100644 index 0000000..24a4612 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/nodeUserManager.jpg differ diff --git a/markdown/markdown_BDWare/_static/imgs/nullPermission.png b/markdown/markdown_BDWare/_static/imgs/nullPermission.png new file mode 100644 index 0000000..7573bdb Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/nullPermission.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/opList.jpg b/markdown/markdown_BDWare/_static/imgs/opList.jpg new file mode 100644 index 0000000..52098d9 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/opList.jpg differ diff --git a/markdown/markdown_BDWare/_static/imgs/operator.jpg b/markdown/markdown_BDWare/_static/imgs/operator.jpg new file mode 100644 index 0000000..9417d67 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/operator.jpg differ diff --git a/markdown/markdown_BDWare/_static/imgs/permissionShow.png b/markdown/markdown_BDWare/_static/imgs/permissionShow.png new file mode 100644 index 0000000..34223df Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/permissionShow.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/pic1.png b/markdown/markdown_BDWare/_static/imgs/pic1.png new file mode 100644 index 0000000..804b056 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/pic1.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/pic2.png b/markdown/markdown_BDWare/_static/imgs/pic2.png new file mode 100644 index 0000000..f4b8520 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/pic2.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/plicence.jpg b/markdown/markdown_BDWare/_static/imgs/plicence.jpg new file mode 100644 index 0000000..5250e6d Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/plicence.jpg differ diff --git a/markdown/markdown_BDWare/_static/imgs/projectdir.png b/markdown/markdown_BDWare/_static/imgs/projectdir.png new file mode 100644 index 0000000..4298746 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/projectdir.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/roleAuth.jpg b/markdown/markdown_BDWare/_static/imgs/roleAuth.jpg new file mode 100644 index 0000000..b00e6ce Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/roleAuth.jpg differ diff --git a/markdown/markdown_BDWare/_static/imgs/set.jpg b/markdown/markdown_BDWare/_static/imgs/set.jpg new file mode 100644 index 0000000..56ddd88 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/set.jpg differ diff --git a/markdown/markdown_BDWare/_static/imgs/shortcut.png b/markdown/markdown_BDWare/_static/imgs/shortcut.png new file mode 100644 index 0000000..bd940ee Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/shortcut.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/shortcut3.png b/markdown/markdown_BDWare/_static/imgs/shortcut3.png new file mode 100644 index 0000000..e000d9b Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/shortcut3.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/timeTravel.png b/markdown/markdown_BDWare/_static/imgs/timeTravel.png new file mode 100644 index 0000000..a9317a8 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/timeTravel.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/timetravel2.png b/markdown/markdown_BDWare/_static/imgs/timetravel2.png new file mode 100644 index 0000000..495ff0a Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/timetravel2.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/timetravel3.png b/markdown/markdown_BDWare/_static/imgs/timetravel3.png new file mode 100644 index 0000000..c227866 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/timetravel3.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/timetravel4.png b/markdown/markdown_BDWare/_static/imgs/timetravel4.png new file mode 100644 index 0000000..d3347cc Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/timetravel4.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/trustful.png b/markdown/markdown_BDWare/_static/imgs/trustful.png new file mode 100644 index 0000000..f09d767 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/trustful.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/updatePermission.png b/markdown/markdown_BDWare/_static/imgs/updatePermission.png new file mode 100644 index 0000000..7998271 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/updatePermission.png differ diff --git a/markdown/markdown_BDWare/_static/imgs/userActive.jpg b/markdown/markdown_BDWare/_static/imgs/userActive.jpg new file mode 100644 index 0000000..0ea95ac Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/userActive.jpg differ diff --git a/markdown/markdown_BDWare/_static/imgs/userAll.jpg b/markdown/markdown_BDWare/_static/imgs/userAll.jpg new file mode 100644 index 0000000..ef58c6d Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/userAll.jpg differ diff --git a/markdown/markdown_BDWare/_static/imgs/userApplyGraph.jpg b/markdown/markdown_BDWare/_static/imgs/userApplyGraph.jpg new file mode 100644 index 0000000..343e946 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/userApplyGraph.jpg differ diff --git a/markdown/markdown_BDWare/_static/imgs/userList.jpg b/markdown/markdown_BDWare/_static/imgs/userList.jpg new file mode 100644 index 0000000..927e5fd Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/userList.jpg differ diff --git a/markdown/markdown_BDWare/_static/imgs/userManager.jpg b/markdown/markdown_BDWare/_static/imgs/userManager.jpg new file mode 100644 index 0000000..05903ec Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/userManager.jpg differ diff --git a/markdown/markdown_BDWare/_static/imgs/websocket-api.png b/markdown/markdown_BDWare/_static/imgs/websocket-api.png new file mode 100644 index 0000000..9e38a75 Binary files /dev/null and b/markdown/markdown_BDWare/_static/imgs/websocket-api.png differ diff --git a/markdown/markdown_BDWare/_static/js/createWS.js b/markdown/markdown_BDWare/_static/js/createWS.js new file mode 100644 index 0000000..3638f73 --- /dev/null +++ b/markdown/markdown_BDWare/_static/js/createWS.js @@ -0,0 +1,169 @@ +var createWssocket = function(wsurl, onopen, handler) { + console.log("[createWS.js] createWssocket : "); + var retsocket = {}; + var wssocket = new WebSocket(wsurl); + wssocket.onerror = function(error) { + console.log(error); + }; + wssocket.onopen = onopen; + var onmessage = function(event) { + var obj = JSON.parse(event.data); + switch (obj.action) { + case 'sendNextSegment': + retsocket.sendNextSegment(); + break; + case 'sendSeg': + retsocket.receiveSeg(obj);C + break; + default: + handler(event, wssocket); + } + }; + var reconnect = function(error) { + setTimeout(function() { + console.log("[createWS.js] try to reconnect"); + wssocket = new WebSocket(wsurl); + wssocket.onclose = reconnect; + wssocket.onmessage = onmessage; + //wssocket.onopen = onopen; + }, 1000); + }; + wssocket.onclose = reconnect; + + retsocket.receiveSeg = function(obj) { + if (obj.cid == 'start') { + retsocket.toReceive = ""; + } + retsocket.toReceive += obj.data; + if (obj.cid == 'done') { + console.log("[receiveSeg] Received AllData:" + retsocket.toReceive); + var event = {}; + event.data = retsocket.toReceive; + retsocket.toReceive = ""; + handler(event); + } + }; + wssocket.onmessage = onmessage; + + retsocket.isSending = false; + retsocket.sendList = []; + retsocket.monitor = function() { + if (!retsocket.isSending) { + if (retsocket.sendList.length > 0) { + retsocket.send(retsocket.sendList.pop()); + } + } + setTimeout(retsocket.monitor, 1000); + }; + // TODO: we don't need monitor at all? + retsocket.monitor(); + retsocket.send = function(str) { + if (retsocket.isSending) { + retsocket.sendList.push(str); + return; + } + if (str.length > 1024) { + retsocket.isSending = true; + retsocket.toSend = str.substr(1024); + var obj = {}; + obj.isSegment = true; + obj.data = str.substr(0, 1024); + wssocket.send(JSON.stringify(obj)); + } else + wssocket.send(str); + }; + retsocket.sendNextSegment = function() { + var str = retsocket.toSend; + if (str.length > 1024) { + retsocket.toSend = str.substr(1024); + var obj = {}; + obj.isSegment = true; + obj.data = str.substr(0, 1024); + wssocket.send(JSON.stringify(obj)); + } else { + retsocket.toSend = ""; + var obj = {}; + obj.isSegment = false; + obj.data = str; + wssocket.send(JSON.stringify(obj)); + retsocket.isSending = false; + if (retsocket.sendList.length > 0) { + retsocket.send(retsocket.sendList.pop()); + } + } + }; + retsocket.isOpen = function() { + return wssocket.readyState; + } + return retsocket; +}; + +var aesDecrypt = function(data) { + data = cryptico.b64to256(data); + var encryptedBlocks = cryptico.string2bytes(data); + var exkey = global.aesKey.slice(0); + aes.ExpandKey(exkey); + aes.Decrypt(encryptedBlocks, exkey); + return cryptico.bytes2string(encryptedBlocks); + +}; +var aesEncrypt = function(data, aesKey) { + var key = aesKey; + var exkey = key.slice(0); + aes.ExpandKey(exkey); + var blocks = my.string2bytes(data); + blocks = my.pad16(blocks); + aes.Encrypt(blocks, exkey); + ciphertext = cryptico.bytes2string(blocks); + ciphertext = cryptico.b256to64(ciphertext); + return ciphertext; +}; +var rsaEncrypt = function(data, rsaKey) { + var rsa = new RSAKey(); + rsa.setPublic(rsaKey.n, rsaKey.e1); + var result = rsa.encrypt(data); + return result; +}; +var loadRSAKey = function(rsaKey) { + var str = cryptico.b64to256(rsaKey); + str = str.split(","); + var ret = {}; + ret.n = str[0]; + ret.e1 = str[1]; + ret.e2 = str[2]; + return ret; +}; +var testRSA = function() { + pubKey = loadRSAKey(global.privKey); + reqContent = {}; + reqContent.action = "main"; + reqContent.arg = "[{\"score\":20},{\"score\":20}]"; + reqContent.contractID = "abc"; + eReq = encryptReq(reqContent, pubKey); + url = "http://localhost:8080/SCIDE/SCManager?action=executeContractEncrypted&contractRequest=" + + encodeURIComponent(JSON.stringify(eReq)); +}; + +var encryptReq = function(reqContent, pubKey) { + // global.pubKey = loadRSAKey(global.privKey); + var aes = {}; + aes.key = cryptico.generateAESKey(); + var aesObj = JSON.stringify(aes); + var rsa = new RSAKey(); + rsa.setPrivate(pubKey.n, pubKey.e1, pubKey.e2); + var encrypedReq = {}; + encrypedReq.action = rsa.decrypt(aesObj); + encrypedReq.contractID = reqContent.contractID; + reqContent.contractID = undefined; + encrypedReq.arg = JSON.stringify(reqContent); + encrypedReq.arg = aesEncrypt(encrypedReq.arg, aes.key); + encrypedReq.requester = pubKey.n + "," + pubKey.e1 + "," + "0"; + encrypedReq.requester = cryptico.b256to64(encrypedReq.requester); + return encrypedReq; +}; +// global.aesKey = cryptico.generateAESKey(); +// +// var url = "ws://" + +// document.location.host+(document.location.pathname.replace("scide.html", +// "SCExecutor")); +// global.wssocket = createWssocket(url, WSHandler); diff --git a/markdown/markdown_BDWare/_static/js/sm2.js b/markdown/markdown_BDWare/_static/js/sm2.js new file mode 100644 index 0000000..6034ccc --- /dev/null +++ b/markdown/markdown_BDWare/_static/js/sm2.js @@ -0,0 +1,2101 @@ +window.sm2 = function(t) { + function i(r) { + if (e[r]) return e[r].exports; + var n = e[r] = { + i: r, + l: !1, + exports: {} + }; + return t[r].call(n.exports, n, n.exports, i), + n.l = !0, + n.exports + } + var e = {}; + return i.m = t, + i.c = e, + i.d = function(t, e, r) { + i.o(t, e) || Object.defineProperty(t, e, { + configurable: !1, + enumerable: !0, + get: r + }) + }, + i.n = function(t) { + var e = t && t.__esModule ? + function() { + return t. + default + }: + function() { + return t + }; + return i.d(e, "a", e), + e + }, + i.o = function(t, i) { + return Object.prototype.hasOwnProperty.call(t, i) + }, + i.p = "", + i(i.s = 3) +} ([function(t, i, e) { (function() { + function e(t, i, e) { + null != t && ("number" == typeof t ? this.fromNumber(t, i, e) : null == i && "string" != typeof t ? this.fromString(t, 256) : this.fromString(t, i)) + } + function r() { + return new e(null) + } + function n(t, i, e, r, n, s) { + for (; --s >= 0;) { + var o = i * this[t++] + e[r] + n; + n = Math.floor(o / 67108864), + e[r++] = 67108863 & o + } + return n + } + function s(t, i, e, r, n, s) { + for (var o = 32767 & i, + h = i >> 15; --s >= 0;) { + var u = 32767 & this[t], + a = this[t++] >> 15, + f = h * u + a * o; + u = o * u + ((32767 & f) << 15) + e[r] + (1073741823 & n), + n = (u >>> 30) + (f >>> 15) + h * a + (n >>> 30), + e[r++] = 1073741823 & u + } + return n + } + function o(t, i, e, r, n, s) { + for (var o = 16383 & i, + h = i >> 14; --s >= 0;) { + var u = 16383 & this[t], + a = this[t++] >> 14, + f = h * u + a * o; + u = o * u + ((16383 & f) << 14) + e[r] + n, + n = (u >> 28) + (f >> 14) + h * a, + e[r++] = 268435455 & u + } + return n + } + function h(t) { + return pi.charAt(t) + } + function u(t, i) { + var e = yi[t.charCodeAt(i)]; + return null == e ? -1 : e + } + function a(t) { + for (var i = this.t - 1; i >= 0; --i) t[i] = this[i]; + t.t = this.t, + t.s = this.s + } + function f(t) { + this.t = 1, + this.s = t < 0 ? -1 : 0, + t > 0 ? this[0] = t: t < -1 ? this[0] = t + this.DV: this.t = 0 + } + function l(t) { + var i = r(); + return i.fromInt(t), + i + } + function c(t, i) { + var r; + if (16 == i) r = 4; + else if (8 == i) r = 3; + else if (256 == i) r = 8; + else if (2 == i) r = 1; + else if (32 == i) r = 5; + else { + if (4 != i) return void this.fromRadix(t, i); + r = 2 + } + this.t = 0, + this.s = 0; + for (var n = t.length, + s = !1, + o = 0; --n >= 0;) { + var h = 8 == r ? 255 & t[n] : u(t, n); + h < 0 ? "-" == t.charAt(n) && (s = !0) : (s = !1, 0 == o ? this[this.t++] = h: o + r > this.DB ? (this[this.t - 1] |= (h & (1 << this.DB - o) - 1) << o, this[this.t++] = h >> this.DB - o) : this[this.t - 1] |= h << o, (o += r) >= this.DB && (o -= this.DB)) + } + 8 == r && 0 != (128 & t[0]) && (this.s = -1, o > 0 && (this[this.t - 1] |= (1 << this.DB - o) - 1 << o)), + this.clamp(), + s && e.ZERO.subTo(this, this) + } + function p() { + for (var t = this.s & this.DM; this.t > 0 && this[this.t - 1] == t;)--this.t + } + function y(t) { + if (this.s < 0) return "-" + this.negate().toString(t); + var i; + if (16 == t) i = 4; + else if (8 == t) i = 3; + else if (2 == t) i = 1; + else if (32 == t) i = 5; + else { + if (4 != t) return this.toRadix(t); + i = 2 + } + var e, r = (1 << i) - 1, + n = !1, + s = "", + o = this.t, + u = this.DB - o * this.DB % i; + if (o-->0) for (u < this.DB && (e = this[o] >> u) > 0 && (n = !0, s = h(e)); o >= 0;) u < i ? (e = (this[o] & (1 << u) - 1) << i - u, e |= this[--o] >> (u += this.DB - i)) : (e = this[o] >> (u -= i) & r, u <= 0 && (u += this.DB, --o)), + e > 0 && (n = !0), + n && (s += h(e)); + return n ? s: "0" + } + function v() { + var t = r(); + return e.ZERO.subTo(this, t), + t + } + function g() { + return this.s < 0 ? this.negate() : this + } + function m(t) { + var i = this.s - t.s; + if (0 != i) return i; + var e = this.t; + if (0 != (i = e - t.t)) return this.s < 0 ? -i: i; + for (; --e >= 0;) if (0 != (i = this[e] - t[e])) return i; + return 0 + } + function d(t) { + var i, e = 1; + return 0 != (i = t >>> 16) && (t = i, e += 16), + 0 != (i = t >> 8) && (t = i, e += 8), + 0 != (i = t >> 4) && (t = i, e += 4), + 0 != (i = t >> 2) && (t = i, e += 2), + 0 != (i = t >> 1) && (t = i, e += 1), + e + } + function T() { + return this.t <= 0 ? 0 : this.DB * (this.t - 1) + d(this[this.t - 1] ^ this.s & this.DM) + } + function b(t, i) { + var e; + for (e = this.t - 1; e >= 0; --e) i[e + t] = this[e]; + for (e = t - 1; e >= 0; --e) i[e] = 0; + i.t = this.t + t, + i.s = this.s + } + function F(t, i) { + for (var e = t; e < this.t; ++e) i[e - t] = this[e]; + i.t = Math.max(this.t - t, 0), + i.s = this.s + } + function B(t, i) { + var e, r = t % this.DB, + n = this.DB - r, + s = (1 << n) - 1, + o = Math.floor(t / this.DB), + h = this.s << r & this.DM; + for (e = this.t - 1; e >= 0; --e) i[e + o + 1] = this[e] >> n | h, + h = (this[e] & s) << r; + for (e = o - 1; e >= 0; --e) i[e] = 0; + i[o] = h, + i.t = this.t + o + 1, + i.s = this.s, + i.clamp() + } + function x(t, i) { + i.s = this.s; + var e = Math.floor(t / this.DB); + if (e >= this.t) return void(i.t = 0); + var r = t % this.DB, + n = this.DB - r, + s = (1 << r) - 1; + i[0] = this[e] >> r; + for (var o = e + 1; o < this.t; ++o) i[o - e - 1] |= (this[o] & s) << n, + i[o - e] = this[o] >> r; + r > 0 && (i[this.t - e - 1] |= (this.s & s) << n), + i.t = this.t - e, + i.clamp() + } + function w(t, i) { + for (var e = 0, + r = 0, + n = Math.min(t.t, this.t); e < n;) r += this[e] - t[e], + i[e++] = r & this.DM, + r >>= this.DB; + if (t.t < this.t) { + for (r -= t.s; e < this.t;) r += this[e], + i[e++] = r & this.DM, + r >>= this.DB; + r += this.s + } else { + for (r += this.s; e < t.t;) r -= t[e], + i[e++] = r & this.DM, + r >>= this.DB; + r -= t.s + } + i.s = r < 0 ? -1 : 0, + r < -1 ? i[e++] = this.DV + r: r > 0 && (i[e++] = r), + i.t = e, + i.clamp() + } + function S(t, i) { + var r = this.abs(), + n = t.abs(), + s = r.t; + for (i.t = s + n.t; --s >= 0;) i[s] = 0; + for (s = 0; s < n.t; ++s) i[s + r.t] = r.am(0, n[s], i, s, 0, r.t); + i.s = 0, + i.clamp(), + this.s != t.s && e.ZERO.subTo(i, i) + } + function k(t) { + for (var i = this.abs(), e = t.t = 2 * i.t; --e >= 0;) t[e] = 0; + for (e = 0; e < i.t - 1; ++e) { + var r = i.am(e, i[e], t, 2 * e, 0, 1); (t[e + i.t] += i.am(e + 1, 2 * i[e], t, 2 * e + 1, r, i.t - e - 1)) >= i.DV && (t[e + i.t] -= i.DV, t[e + i.t + 1] = 1) + } + t.t > 0 && (t[t.t - 1] += i.am(e, i[e], t, 2 * e, 0, 1)), + t.s = 0, + t.clamp() + } + function D(t, i, n) { + var s = t.abs(); + if (! (s.t <= 0)) { + var o = this.abs(); + if (o.t < s.t) return null != i && i.fromInt(0), + void(null != n && this.copyTo(n)); + null == n && (n = r()); + var h = r(), + u = this.s, + a = t.s, + f = this.DB - d(s[s.t - 1]); + f > 0 ? (s.lShiftTo(f, h), o.lShiftTo(f, n)) : (s.copyTo(h), o.copyTo(n)); + var l = h.t, + c = h[l - 1]; + if (0 != c) { + var p = c * (1 << this.F1) + (l > 1 ? h[l - 2] >> this.F2: 0), + y = this.FV / p, + v = (1 << this.F1) / p, + g = 1 << this.F2, + m = n.t, + T = m - l, + b = null == i ? r() : i; + for (h.dlShiftTo(T, b), n.compareTo(b) >= 0 && (n[n.t++] = 1, n.subTo(b, n)), e.ONE.dlShiftTo(l, b), b.subTo(h, h); h.t < l;) h[h.t++] = 0; + for (; --T >= 0;) { + var F = n[--m] == c ? this.DM: Math.floor(n[m] * y + (n[m - 1] + g) * v); + if ((n[m] += h.am(0, F, n, T, 0, l)) < F) for (h.dlShiftTo(T, b), n.subTo(b, n); n[m] < --F;) n.subTo(b, n) + } + null != i && (n.drShiftTo(l, i), u != a && e.ZERO.subTo(i, i)), + n.t = l, + n.clamp(), + f > 0 && n.rShiftTo(f, n), + u < 0 && e.ZERO.subTo(n, n) + } + } + } + function I(t) { + var i = r(); + return this.abs().divRemTo(t, null, i), + this.s < 0 && i.compareTo(e.ZERO) > 0 && t.subTo(i, i), + i + } + function E(t) { + this.m = t + } + function O(t) { + return t.s < 0 || t.compareTo(this.m) >= 0 ? t.mod(this.m) : t + } + function q(t) { + return t + } + function A(t) { + t.divRemTo(this.m, null, t) + } + function R(t, i, e) { + t.multiplyTo(i, e), + this.reduce(e) + } + function V(t, i) { + t.squareTo(i), + this.reduce(i) + } + function M() { + if (this.t < 1) return 0; + var t = this[0]; + if (0 == (1 & t)) return 0; + var i = 3 & t; + return i = i * (2 - (15 & t) * i) & 15, + i = i * (2 - (255 & t) * i) & 255, + i = i * (2 - ((65535 & t) * i & 65535)) & 65535, + i = i * (2 - t * i % this.DV) % this.DV, + i > 0 ? this.DV - i: -i + } + function _(t) { + this.m = t, + this.mp = t.invDigit(), + this.mpl = 32767 & this.mp, + this.mph = this.mp >> 15, + this.um = (1 << t.DB - 15) - 1, + this.mt2 = 2 * t.t + } + function C(t) { + var i = r(); + return t.abs().dlShiftTo(this.m.t, i), + i.divRemTo(this.m, null, i), + t.s < 0 && i.compareTo(e.ZERO) > 0 && this.m.subTo(i, i), + i + } + function L(t) { + var i = r(); + return t.copyTo(i), + this.reduce(i), + i + } + function P(t) { + for (; t.t <= this.mt2;) t[t.t++] = 0; + for (var i = 0; i < this.m.t; ++i) { + var e = 32767 & t[i], + r = e * this.mpl + ((e * this.mph + (t[i] >> 15) * this.mpl & this.um) << 15) & t.DM; + for (e = i + this.m.t, t[e] += this.m.am(0, r, t, i, 0, this.m.t); t[e] >= t.DV;) t[e] -= t.DV, + t[++e]++ + } + t.clamp(), + t.drShiftTo(this.m.t, t), + t.compareTo(this.m) >= 0 && t.subTo(this.m, t) + } + function H(t, i) { + t.squareTo(i), + this.reduce(i) + } + function N(t, i, e) { + t.multiplyTo(i, e), + this.reduce(e) + } + function U() { + return 0 == (this.t > 0 ? 1 & this[0] : this.s) + } + function z(t, i) { + if (t > 4294967295 || t < 1) return e.ONE; + var n = r(), + s = r(), + o = i.convert(this), + h = d(t) - 1; + for (o.copyTo(n); --h >= 0;) if (i.sqrTo(n, s), (t & 1 << h) > 0) i.mulTo(s, o, n); + else { + var u = n; + n = s, + s = u + } + return i.revert(n) + } + function j(t, i) { + var e; + return e = t < 256 || i.isEven() ? new E(i) : new _(i), + this.exp(t, e) + } + function X() { + var t = r(); + return this.copyTo(t), + t + } + function Z() { + if (this.s < 0) { + if (1 == this.t) return this[0] - this.DV; + if (0 == this.t) return - 1 + } else { + if (1 == this.t) return this[0]; + if (0 == this.t) return 0 + } + return (this[1] & (1 << 32 - this.DB) - 1) << this.DB | this[0] + } + function K() { + return 0 == this.t ? this.s: this[0] << 24 >> 24 + } + function G() { + return 0 == this.t ? this.s: this[0] << 16 >> 16 + } + function Y(t) { + return Math.floor(Math.LN2 * this.DB / Math.log(t)) + } + function W() { + return this.s < 0 ? -1 : this.t <= 0 || 1 == this.t && this[0] <= 0 ? 0 : 1 + } + function J(t) { + if (null == t && (t = 10), 0 == this.signum() || t < 2 || t > 36) return "0"; + var i = this.chunkSize(t), + e = Math.pow(t, i), + n = l(e), + s = r(), + o = r(), + h = ""; + for (this.divRemTo(n, s, o); s.signum() > 0;) h = (e + o.intValue()).toString(t).substr(1) + h, + s.divRemTo(n, s, o); + return o.intValue().toString(t) + h + } + function Q(t, i) { + this.fromInt(0), + null == i && (i = 10); + for (var r = this.chunkSize(i), n = Math.pow(i, r), s = !1, o = 0, h = 0, a = 0; a < t.length; ++a) { + var f = u(t, a); + f < 0 ? "-" == t.charAt(a) && 0 == this.signum() && (s = !0) : (h = i * h + f, ++o >= r && (this.dMultiply(n), this.dAddOffset(h, 0), o = 0, h = 0)) + } + o > 0 && (this.dMultiply(Math.pow(i, o)), this.dAddOffset(h, 0)), + s && e.ZERO.subTo(this, this) + } + function $(t, i, r) { + if ("number" == typeof i) if (t < 2) this.fromInt(1); + else for (this.fromNumber(t, r), this.testBit(t - 1) || this.bitwiseTo(e.ONE.shiftLeft(t - 1), ht, this), this.isEven() && this.dAddOffset(1, 0); ! this.isProbablePrime(i);) this.dAddOffset(2, 0), + this.bitLength() > t && this.subTo(e.ONE.shiftLeft(t - 1), this); + else { + var n = new Array, + s = 7 & t; + n.length = 1 + (t >> 3), + i.nextBytes(n), + s > 0 ? n[0] &= (1 << s) - 1 : n[0] = 0, + this.fromString(n, 256) + } + } + function tt() { + var t = this.t, + i = new Array; + i[0] = this.s; + var e, r = this.DB - t * this.DB % 8, + n = 0; + if (t-->0) for (r < this.DB && (e = this[t] >> r) != (this.s & this.DM) >> r && (i[n++] = e | this.s << this.DB - r); t >= 0;) r < 8 ? (e = (this[t] & (1 << r) - 1) << 8 - r, e |= this[--t] >> (r += this.DB - 8)) : (e = this[t] >> (r -= 8) & 255, r <= 0 && (r += this.DB, --t)), + 0 != (128 & e) && (e |= -256), + 0 == n && (128 & this.s) != (128 & e) && ++n, + (n > 0 || e != this.s) && (i[n++] = e); + return i + } + function it(t) { + return 0 == this.compareTo(t) + } + function et(t) { + return this.compareTo(t) < 0 ? this: t + } + function rt(t) { + return this.compareTo(t) > 0 ? this: t + } + function nt(t, i, e) { + var r, n, s = Math.min(t.t, this.t); + for (r = 0; r < s; ++r) e[r] = i(this[r], t[r]); + if (t.t < this.t) { + for (n = t.s & this.DM, r = s; r < this.t; ++r) e[r] = i(this[r], n); + e.t = this.t + } else { + for (n = this.s & this.DM, r = s; r < t.t; ++r) e[r] = i(n, t[r]); + e.t = t.t + } + e.s = i(this.s, t.s), + e.clamp() + } + function st(t, i) { + return t & i + } + function ot(t) { + var i = r(); + return this.bitwiseTo(t, st, i), + i + } + function ht(t, i) { + return t | i + } + function ut(t) { + var i = r(); + return this.bitwiseTo(t, ht, i), + i + } + function at(t, i) { + return t ^ i + } + function ft(t) { + var i = r(); + return this.bitwiseTo(t, at, i), + i + } + function lt(t, i) { + return t & ~i + } + function ct(t) { + var i = r(); + return this.bitwiseTo(t, lt, i), + i + } + function pt() { + for (var t = r(), i = 0; i < this.t; ++i) t[i] = this.DM & ~this[i]; + return t.t = this.t, + t.s = ~this.s, + t + } + function yt(t) { + var i = r(); + return t < 0 ? this.rShiftTo( - t, i) : this.lShiftTo(t, i), + i + } + function vt(t) { + var i = r(); + return t < 0 ? this.lShiftTo( - t, i) : this.rShiftTo(t, i), + i + } + function gt(t) { + if (0 == t) return - 1; + var i = 0; + return 0 == (65535 & t) && (t >>= 16, i += 16), + 0 == (255 & t) && (t >>= 8, i += 8), + 0 == (15 & t) && (t >>= 4, i += 4), + 0 == (3 & t) && (t >>= 2, i += 2), + 0 == (1 & t) && ++i, + i + } + function mt() { + for (var t = 0; t < this.t; ++t) if (0 != this[t]) return t * this.DB + gt(this[t]); + return this.s < 0 ? this.t * this.DB: -1 + } + function dt(t) { + for (var i = 0; 0 != t;) t &= t - 1, + ++i; + return i + } + function Tt() { + for (var t = 0, + i = this.s & this.DM, + e = 0; e < this.t; ++e) t += dt(this[e] ^ i); + return t + } + function bt(t) { + var i = Math.floor(t / this.DB); + return i >= this.t ? 0 != this.s: 0 != (this[i] & 1 << t % this.DB) + } + function Ft(t, i) { + var r = e.ONE.shiftLeft(t); + return this.bitwiseTo(r, i, r), + r + } + function Bt(t) { + return this.changeBit(t, ht) + } + function xt(t) { + return this.changeBit(t, lt) + } + function wt(t) { + return this.changeBit(t, at) + } + function St(t, i) { + for (var e = 0, + r = 0, + n = Math.min(t.t, this.t); e < n;) r += this[e] + t[e], + i[e++] = r & this.DM, + r >>= this.DB; + if (t.t < this.t) { + for (r += t.s; e < this.t;) r += this[e], + i[e++] = r & this.DM, + r >>= this.DB; + r += this.s + } else { + for (r += this.s; e < t.t;) r += t[e], + i[e++] = r & this.DM, + r >>= this.DB; + r += t.s + } + i.s = r < 0 ? -1 : 0, + r > 0 ? i[e++] = r: r < -1 && (i[e++] = this.DV + r), + i.t = e, + i.clamp() + } + function kt(t) { + var i = r(); + return this.addTo(t, i), + i + } + function Dt(t) { + var i = r(); + return this.subTo(t, i), + i + } + function It(t) { + var i = r(); + return this.multiplyTo(t, i), + i + } + function Et() { + var t = r(); + return this.squareTo(t), + t + } + function Ot(t) { + var i = r(); + return this.divRemTo(t, i, null), + i + } + function qt(t) { + var i = r(); + return this.divRemTo(t, null, i), + i + } + function At(t) { + var i = r(), + e = r(); + return this.divRemTo(t, i, e), + new Array(i, e) + } + function Rt(t) { + this[this.t] = this.am(0, t - 1, this, 0, 0, this.t), + ++this.t, + this.clamp() + } + function Vt(t, i) { + if (0 != t) { + for (; this.t <= i;) this[this.t++] = 0; + for (this[i] += t; this[i] >= this.DV;) this[i] -= this.DV, + ++i >= this.t && (this[this.t++] = 0), + ++this[i] + } + } + function Mt() {} + function _t(t) { + return t + } + function Ct(t, i, e) { + t.multiplyTo(i, e) + } + function Lt(t, i) { + t.squareTo(i) + } + function Pt(t) { + return this.exp(t, new Mt) + } + function Ht(t, i, e) { + var r = Math.min(this.t + t.t, i); + for (e.s = 0, e.t = r; r > 0;) e[--r] = 0; + var n; + for (n = e.t - this.t; r < n; ++r) e[r + this.t] = this.am(0, t[r], e, r, 0, this.t); + for (n = Math.min(t.t, i); r < n; ++r) this.am(0, t[r], e, r, 0, i - r); + e.clamp() + } + function Nt(t, i, e) {--i; + var r = e.t = this.t + t.t - i; + for (e.s = 0; --r >= 0;) e[r] = 0; + for (r = Math.max(i - this.t, 0); r < t.t; ++r) e[this.t + r - i] = this.am(i - r, t[r], e, 0, 0, this.t + r - i); + e.clamp(), + e.drShiftTo(1, e) + } + function Ut(t) { + this.r2 = r(), + this.q3 = r(), + e.ONE.dlShiftTo(2 * t.t, this.r2), + this.mu = this.r2.divide(t), + this.m = t + } + function zt(t) { + if (t.s < 0 || t.t > 2 * this.m.t) return t.mod(this.m); + if (t.compareTo(this.m) < 0) return t; + var i = r(); + return t.copyTo(i), + this.reduce(i), + i + } + function jt(t) { + return t + } + function Xt(t) { + for (t.drShiftTo(this.m.t - 1, this.r2), t.t > this.m.t + 1 && (t.t = this.m.t + 1, t.clamp()), this.mu.multiplyUpperTo(this.r2, this.m.t + 1, this.q3), this.m.multiplyLowerTo(this.q3, this.m.t + 1, this.r2); t.compareTo(this.r2) < 0;) t.dAddOffset(1, this.m.t + 1); + for (t.subTo(this.r2, t); t.compareTo(this.m) >= 0;) t.subTo(this.m, t) + } + function Zt(t, i) { + t.squareTo(i), + this.reduce(i) + } + function Kt(t, i, e) { + t.multiplyTo(i, e), + this.reduce(e) + } + function Gt(t, i) { + var e, n, s = t.bitLength(), + o = l(1); + if (s <= 0) return o; + e = s < 18 ? 1 : s < 48 ? 3 : s < 144 ? 4 : s < 768 ? 5 : 6, + n = s < 8 ? new E(i) : i.isEven() ? new Ut(i) : new _(i); + var h = new Array, + u = 3, + a = e - 1, + f = (1 << e) - 1; + if (h[1] = n.convert(this), e > 1) { + var c = r(); + for (n.sqrTo(h[1], c); u <= f;) h[u] = r(), + n.mulTo(c, h[u - 2], h[u]), + u += 2 + } + var p, y, v = t.t - 1, + g = !0, + m = r(); + for (s = d(t[v]) - 1; v >= 0;) { + for (s >= a ? p = t[v] >> s - a & f: (p = (t[v] & (1 << s + 1) - 1) << a - s, v > 0 && (p |= t[v - 1] >> this.DB + s - a)), u = e; 0 == (1 & p);) p >>= 1, + --u; + if ((s -= u) < 0 && (s += this.DB, --v), g) h[p].copyTo(o), + g = !1; + else { + for (; u > 1;) n.sqrTo(o, m), + n.sqrTo(m, o), + u -= 2; + u > 0 ? n.sqrTo(o, m) : (y = o, o = m, m = y), + n.mulTo(m, h[p], o) + } + for (; v >= 0 && 0 == (t[v] & 1 << s);) n.sqrTo(o, m), + y = o, + o = m, + m = y, + --s < 0 && (s = this.DB - 1, --v) + } + return n.revert(o) + } + function Yt(t) { + var i = this.s < 0 ? this.negate() : this.clone(), + e = t.s < 0 ? t.negate() : t.clone(); + if (i.compareTo(e) < 0) { + var r = i; + i = e, + e = r + } + var n = i.getLowestSetBit(), + s = e.getLowestSetBit(); + if (s < 0) return i; + for (n < s && (s = n), s > 0 && (i.rShiftTo(s, i), e.rShiftTo(s, e)); i.signum() > 0;)(n = i.getLowestSetBit()) > 0 && i.rShiftTo(n, i), + (n = e.getLowestSetBit()) > 0 && e.rShiftTo(n, e), + i.compareTo(e) >= 0 ? (i.subTo(e, i), i.rShiftTo(1, i)) : (e.subTo(i, e), e.rShiftTo(1, e)); + return s > 0 && e.lShiftTo(s, e), + e + } + function Wt(t) { + if (t <= 0) return 0; + var i = this.DV % t, + e = this.s < 0 ? t - 1 : 0; + if (this.t > 0) if (0 == i) e = this[0] % t; + else for (var r = this.t - 1; r >= 0; --r) e = (i * e + this[r]) % t; + return e + } + function Jt(t) { + var i = t.isEven(); + if (this.isEven() && i || 0 == t.signum()) return e.ZERO; + for (var r = t.clone(), n = this.clone(), s = l(1), o = l(0), h = l(0), u = l(1); 0 != r.signum();) { + for (; r.isEven();) r.rShiftTo(1, r), + i ? (s.isEven() && o.isEven() || (s.addTo(this, s), o.subTo(t, o)), s.rShiftTo(1, s)) : o.isEven() || o.subTo(t, o), + o.rShiftTo(1, o); + for (; n.isEven();) n.rShiftTo(1, n), + i ? (h.isEven() && u.isEven() || (h.addTo(this, h), u.subTo(t, u)), h.rShiftTo(1, h)) : u.isEven() || u.subTo(t, u), + u.rShiftTo(1, u); + r.compareTo(n) >= 0 ? (r.subTo(n, r), i && s.subTo(h, s), o.subTo(u, o)) : (n.subTo(r, n), i && h.subTo(s, h), u.subTo(o, u)) + } + return 0 != n.compareTo(e.ONE) ? e.ZERO: u.compareTo(t) >= 0 ? u.subtract(t) : u.signum() < 0 ? (u.addTo(t, u), u.signum() < 0 ? u.add(t) : u) : u + } + function Qt(t) { + var i, e = this.abs(); + if (1 == e.t && e[0] <= vi[vi.length - 1]) { + for (i = 0; i < vi.length; ++i) if (e[0] == vi[i]) return ! 0; + return ! 1 + } + if (e.isEven()) return ! 1; + for (i = 1; i < vi.length;) { + for (var r = vi[i], n = i + 1; n < vi.length && r < gi;) r *= vi[n++]; + for (r = e.modInt(r); i < n;) if (r % vi[i++] == 0) return ! 1 + } + return e.millerRabin(t) + } + function $t(t) { + var i = this.subtract(e.ONE), + n = i.getLowestSetBit(); + if (n <= 0) return ! 1; + var s = i.shiftRight(n); (t = t + 1 >> 1) > vi.length && (t = vi.length); + for (var o = r(), h = 0; h < t; ++h) { + o.fromInt(vi[Math.floor(Math.random() * vi.length)]); + var u = o.modPow(s, this); + if (0 != u.compareTo(e.ONE) && 0 != u.compareTo(i)) { + for (var a = 1; a++> 8 & 255, + di[Ti++] ^= t >> 16 & 255, + di[Ti++] ^= t >> 24 & 255, + Ti >= xi && (Ti -= xi) + } + function ii() { + ti((new Date).getTime()) + } + function ei() { + if (null == mi) { + for (ii(), mi = ui(), mi.init(di), Ti = 0; Ti < di.length; ++Ti) di[Ti] = 0; + Ti = 0 + } + return mi.next() + } + function ri(t) { + var i; + for (i = 0; i < t.length; ++i) t[i] = ei() + } + function ni() {} + function si() { + this.i = 0, + this.j = 0, + this.S = new Array + } + function oi(t) { + var i, e, r; + for (i = 0; i < 256; ++i) this.S[i] = i; + for (e = 0, i = 0; i < 256; ++i) e = e + this.S[i] + t[i % t.length] & 255, + r = this.S[i], + this.S[i] = this.S[e], + this.S[e] = r; + this.i = 0, + this.j = 0 + } + function hi() { + var t; + return this.i = this.i + 1 & 255, + this.j = this.j + this.S[this.i] & 255, + t = this.S[this.i], + this.S[this.i] = this.S[this.j], + this.S[this.j] = t, + this.S[t + this.S[this.i] & 255] + } + function ui() { + return new si + } + var ai, fi = "undefined" != typeof navigator; + fi && "Microsoft Internet Explorer" == navigator.appName ? (e.prototype.am = s, ai = 30) : fi && "Netscape" != navigator.appName ? (e.prototype.am = n, ai = 26) : (e.prototype.am = o, ai = 28), + e.prototype.DB = ai, + e.prototype.DM = (1 << ai) - 1, + e.prototype.DV = 1 << ai; + e.prototype.FV = Math.pow(2, 52), + e.prototype.F1 = 52 - ai, + e.prototype.F2 = 2 * ai - 52; + var li, ci, pi = "0123456789abcdefghijklmnopqrstuvwxyz", + yi = new Array; + for (li = "0".charCodeAt(0), ci = 0; ci <= 9; ++ci) yi[li++] = ci; + for (li = "a".charCodeAt(0), ci = 10; ci < 36; ++ci) yi[li++] = ci; + for (li = "A".charCodeAt(0), ci = 10; ci < 36; ++ci) yi[li++] = ci; + E.prototype.convert = O, + E.prototype.revert = q, + E.prototype.reduce = A, + E.prototype.mulTo = R, + E.prototype.sqrTo = V, + _.prototype.convert = C, + _.prototype.revert = L, + _.prototype.reduce = P, + _.prototype.mulTo = N, + _.prototype.sqrTo = H, + e.prototype.copyTo = a, + e.prototype.fromInt = f, + e.prototype.fromString = c, + e.prototype.clamp = p, + e.prototype.dlShiftTo = b, + e.prototype.drShiftTo = F, + e.prototype.lShiftTo = B, + e.prototype.rShiftTo = x, + e.prototype.subTo = w, + e.prototype.multiplyTo = S, + e.prototype.squareTo = k, + e.prototype.divRemTo = D, + e.prototype.invDigit = M, + e.prototype.isEven = U, + e.prototype.exp = z, + e.prototype.toString = y, + e.prototype.negate = v, + e.prototype.abs = g, + e.prototype.compareTo = m, + e.prototype.bitLength = T, + e.prototype.mod = I, + e.prototype.modPowInt = j, + e.ZERO = l(0), + e.ONE = l(1), + Mt.prototype.convert = _t, + Mt.prototype.revert = _t, + Mt.prototype.mulTo = Ct, + Mt.prototype.sqrTo = Lt, + Ut.prototype.convert = zt, + Ut.prototype.revert = jt, + Ut.prototype.reduce = Xt, + Ut.prototype.mulTo = Kt, + Ut.prototype.sqrTo = Zt; + var vi = [2, 3, 5, 7, 11, 13, 17, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, 97, 101, 103, 107, 109, 113, 127, 131, 137, 139, 149, 151, 157, 163, 167, 173, 179, 181, 191, 193, 197, 199, 211, 223, 227, 229, 233, 239, 241, 251, 257, 263, 269, 271, 277, 281, 283, 293, 307, 311, 313, 317, 331, 337, 347, 349, 353, 359, 367, 373, 379, 383, 389, 397, 401, 409, 419, 421, 431, 433, 439, 443, 449, 457, 461, 463, 467, 479, 487, 491, 499, 503, 509, 521, 523, 541, 547, 557, 563, 569, 571, 577, 587, 593, 599, 601, 607, 613, 617, 619, 631, 641, 643, 647, 653, 659, 661, 673, 677, 683, 691, 701, 709, 719, 727, 733, 739, 743, 751, 757, 761, 769, 773, 787, 797, 809, 811, 821, 823, 827, 829, 839, 853, 857, 859, 863, 877, 881, 883, 887, 907, 911, 919, 929, 937, 941, 947, 953, 967, 971, 977, 983, 991, 997], + gi = (1 << 26) / vi[vi.length - 1]; + e.prototype.chunkSize = Y, + e.prototype.toRadix = J, + e.prototype.fromRadix = Q, + e.prototype.fromNumber = $, + e.prototype.bitwiseTo = nt, + e.prototype.changeBit = Ft, + e.prototype.addTo = St, + e.prototype.dMultiply = Rt, + e.prototype.dAddOffset = Vt, + e.prototype.multiplyLowerTo = Ht, + e.prototype.multiplyUpperTo = Nt, + e.prototype.modInt = Wt, + e.prototype.millerRabin = $t, + e.prototype.clone = X, + e.prototype.intValue = Z, + e.prototype.byteValue = K, + e.prototype.shortValue = G, + e.prototype.signum = W, + e.prototype.toByteArray = tt, + e.prototype.equals = it, + e.prototype.min = et, + e.prototype.max = rt, + e.prototype.and = ot, + e.prototype.or = ut, + e.prototype.xor = ft, + e.prototype.andNot = ct, + e.prototype.not = pt, + e.prototype.shiftLeft = yt, + e.prototype.shiftRight = vt, + e.prototype.getLowestSetBit = mt, + e.prototype.bitCount = Tt, + e.prototype.testBit = bt, + e.prototype.setBit = Bt, + e.prototype.clearBit = xt, + e.prototype.flipBit = wt, + e.prototype.add = kt, + e.prototype.subtract = Dt, + e.prototype.multiply = It, + e.prototype.divide = Ot, + e.prototype.remainder = qt, + e.prototype.divideAndRemainder = At, + e.prototype.modPow = Gt, + e.prototype.modInverse = Jt, + e.prototype.pow = Pt, + e.prototype.gcd = Yt, + e.prototype.isProbablePrime = Qt, + e.prototype.square = Et, + e.prototype.Barrett = Ut; + var mi, di, Ti; + if (null == di) { + di = new Array, + Ti = 0; + var bi; + if ("undefined" != typeof window && window.crypto) if (window.crypto.getRandomValues) { + var Fi = new Uint8Array(32); + for (window.crypto.getRandomValues(Fi), bi = 0; bi < 32; ++bi) di[Ti++] = Fi[bi] + } else if ("Netscape" == navigator.appName && navigator.appVersion < "5") { + var Bi = window.crypto.random(32); + for (bi = 0; bi < Bi.length; ++bi) di[Ti++] = 255 & Bi.charCodeAt(bi) + } + for (; Ti < xi;) bi = Math.floor(65536 * Math.random()), + di[Ti++] = bi >>> 8, + di[Ti++] = 255 & bi; + Ti = 0, + ii() + } + ni.prototype.nextBytes = ri, + si.prototype.init = oi, + si.prototype.next = hi; + var xi = 256; + i = t.exports = { + default: + e, + BigInteger: e, + SecureRandom: ni + } + }).call(this) +}, +function(t, i, e) { + "use strict"; + function r() { + return T + } + function n() { + var t = new p("FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFF", 16), + i = new p("FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF00000000FFFFFFFFFFFFFFFC", 16), + e = new p("28E9FA9E9D9F5E344D5A9E4BCF6509A7F39789F515AB8F92DDBCBD414D940E93", 16), + r = new g(t, i, e); + return { + curve: r, + G: r.decodePointHex("0432C4AE2C1F1981195F9904466A39C9948FE30BBFF2660BE1715A4589334C74C7BC3736A2F4F6779C59BDCEE36B692153D0A9877CC62A474002DF32E52139F0A0"), + n: new p("FFFFFFFEFFFFFFFFFFFFFFFFFFFFFFFF7203DF6B21C6052B53BBF40939D54123", 16) + } + } + function s() { + var t = new p(F.bitLength(), m).mod(F.subtract(p.ONE)).add(p.ONE), + i = u(t.toString(16), 64), + e = b.multiply(t); + return { + privateKey: i, + publicKey: "04" + u(e.getX().toBigInteger().toString(16), 64) + u(e.getY().toBigInteger().toString(16), 64) + } + } + function o(t) { + t = unescape(encodeURIComponent(t)); + for (var i = t.length, + e = [], r = 0; r < i; r++) e[r >>> 2] |= (255 & t.charCodeAt(r)) << 24 - r % 4 * 8; + for (var n = [], s = 0; s < i; s++) { + var o = e[s >>> 2] >>> 24 - s % 4 * 8 & 255; + n.push((o >>> 4).toString(16)), + n.push((15 & o).toString(16)) + } + return n.join("") + } + function h(t) { + return Array.prototype.map.call(new Uint8Array(t), + function(t) { + return ("00" + t.toString(16)).slice( - 2) + }).join("") + } + function u(t, i) { + return t.length >= i ? t: new Array(i - t.length + 1).join("0") + t + } + function a(t) { + for (var i = [], e = 0, r = 0; r < 2 * t.length; r += 2) i[r >>> 3] |= parseInt(t[e], 10) << 24 - r % 8 * 4, + e++; + for (var n = [], s = 0; s < t.length; s++) { + var o = i[s >>> 2] >>> 24 - s % 4 * 8 & 255; + n.push((o >>> 4).toString(16)), + n.push((15 & o).toString(16)) + } + return n.join("") + } + function f(t) { + for (var i = [], e = 0, r = 0; r < 2 * t.length; r += 2) i[r >>> 3] |= parseInt(t[e], 10) << 24 - r % 8 * 4, + e++; + try { + for (var n = [], s = 0; s < t.length; s++) { + var o = i[s >>> 2] >>> 24 - s % 4 * 8 & 255; + n.push(String.fromCharCode(o)) + } + return decodeURIComponent(escape(n.join(""))) + } catch(t) { + throw new Error("Malformed UTF-8 data") + } + } + function l(t) { + var i = [], + e = t.length; + e % 2 != 0 && (t = u(t, e + 1)), + e = t.length; + for (var r = 0; r < e; r += 2) i.push(parseInt(t.substr(r, 2), 16)); + return i + } + var c = e(0), + p = c.BigInteger, + y = c.SecureRandom, + v = e(5), + g = v.ECCurveFp, + m = new y, + d = n(), + T = d.curve, + b = d.G, + F = d.n; + t.exports = { + getGlobalCurve: r, + generateEcparam: n, + generateKeyPairHex: s, + parseUtf8StringToHex: o, + parseArrayBufferToHex: h, + leftPad: u, + arrayToHex: a, + arrayToUtf8: f, + hexToArray: l + } +}, +function(t, i, e) { + "use strict"; + function r(t, i) { + if (! (t instanceof i)) throw new TypeError("Cannot call a class as a function") + } + var n = function() { + function t(t, i) { + for (var e = 0; e < i.length; e++) { + var r = i[e]; + r.enumerable = r.enumerable || !1, + r.configurable = !0, + "value" in r && (r.writable = !0), + Object.defineProperty(t, r.key, r) + } + } + return function(i, e, r) { + return e && t(i.prototype, e), + r && t(i, r), + i + } + } (), + s = e(0), + o = s.BigInteger, + h = e(1), + u = function(t, i, e, r, n) { + for (var s = 0; s < n; s++) e[r + s] = t[i + s] + }, + a = { + minValue: -parseInt("10000000000000000000000000000000", 2), + maxValue: parseInt("1111111111111111111111111111111", 2), + parse: function(t) { + if (t < this.minValue) { + for (var i = new Number( - t), e = i.toString(2), r = e.substr(e.length - 31, 31), n = "", s = 0; s < r.length; s++) { + n += "0" == r.substr(s, 1) ? "1": "0" + } + return parseInt(n, 2) + 1 + } + if (t > this.maxValue) { + for (var o = Number(t), h = o.toString(2), u = h.substr(h.length - 31, 31), a = "", f = 0; f < u.length; f++) { + a += "0" == u.substr(f, 1) ? "1": "0" + } + return - (parseInt(a, 2) + 1) + } + return t + }, + parseByte: function(t) { + if (t < 0) { + for (var i = new Number( - t), e = i.toString(2), r = e.substr(e.length - 8, 8), n = "", s = 0; s < r.length; s++) { + n += "0" == r.substr(s, 1) ? "1": "0" + } + return parseInt(n, 2) + 1 + } + if (t > 255) { + var o = Number(t), + h = o.toString(2); + return parseInt(h.substr(h.length - 8, 8), 2) + } + return t + } + }, + f = function() { + function t() { + r(this, t), + this.xBuf = new Array, + this.xBufOff = 0, + this.byteCount = 0, + this.DIGEST_LENGTH = 32, + this.v0 = [1937774191, 1226093241, 388252375, 3666478592, 2842636476, 372324522, 3817729613, 2969243214], + this.v0 = [1937774191, 1226093241, 388252375, -628488704, -1452330820, 372324522, -477237683, -1325724082], + this.v = new Array(8), + this.v_ = new Array(8), + this.X0 = [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0], + this.X = new Array(68), + this.xOff = 0, + this.T_00_15 = 2043430169, + this.T_16_63 = 2055708042, + arguments.length > 0 ? this.initDigest(arguments[0]) : this.init() + } + return n(t, [{ + key: "init", + value: function() { + this.xBuf = new Array(4), + this.reset() + } + }, + { + key: "initDigest", + value: function(t) { + this.xBuf = [].concat(t.xBuf), + this.xBufOff = t.xBufOff, + this.byteCount = t.byteCount, + u(t.X, 0, this.X, 0, t.X.length), + this.xOff = t.xOff, + u(t.v, 0, this.v, 0, t.v.length) + } + }, + { + key: "getDigestSize", + value: function() { + return this.DIGEST_LENGTH + } + }, + { + key: "reset", + value: function() { + this.byteCount = 0, + this.xBufOff = 0; + for (var t in this.xBuf) this.xBuf[t] = null; + u(this.v0, 0, this.v, 0, this.v0.length), + this.xOff = 0, + u(this.X0, 0, this.X, 0, this.X0.length) + } + }, + { + key: "processBlock", + value: function() { + var t = void 0, + i = this.X, + e = new Array(64); + for (t = 16; t < 68; t++) i[t] = this.p1(i[t - 16] ^ i[t - 9] ^ this.rotate(i[t - 3], 15)) ^ this.rotate(i[t - 13], 7) ^ i[t - 6]; + for (t = 0; t < 64; t++) e[t] = i[t] ^ i[t + 4]; + var r = this.v, + n = this.v_; + u(r, 0, n, 0, this.v0.length); + var s = void 0, + o = void 0, + h = void 0, + f = void 0, + l = void 0; + for (t = 0; t < 16; t++) l = this.rotate(n[0], 12), + s = a.parse(a.parse(l + n[4]) + this.rotate(this.T_00_15, t)), + s = this.rotate(s, 7), + o = s ^ l, + h = a.parse(a.parse(this.ff_00_15(n[0], n[1], n[2]) + n[3]) + o) + e[t], + f = a.parse(a.parse(this.gg_00_15(n[4], n[5], n[6]) + n[7]) + s) + i[t], + n[3] = n[2], + n[2] = this.rotate(n[1], 9), + n[1] = n[0], + n[0] = h, + n[7] = n[6], + n[6] = this.rotate(n[5], 19), + n[5] = n[4], + n[4] = this.p0(f); + for (t = 16; t < 64; t++) l = this.rotate(n[0], 12), + s = a.parse(a.parse(l + n[4]) + this.rotate(this.T_16_63, t)), + s = this.rotate(s, 7), + o = s ^ l, + h = a.parse(a.parse(this.ff_16_63(n[0], n[1], n[2]) + n[3]) + o) + e[t], + f = a.parse(a.parse(this.gg_16_63(n[4], n[5], n[6]) + n[7]) + s) + i[t], + n[3] = n[2], + n[2] = this.rotate(n[1], 9), + n[1] = n[0], + n[0] = h, + n[7] = n[6], + n[6] = this.rotate(n[5], 19), + n[5] = n[4], + n[4] = this.p0(f); + for (t = 0; t < 8; t++) r[t] ^= a.parse(n[t]); + this.xOff = 0, + u(this.X0, 0, this.X, 0, this.X0.length) + } + }, + { + key: "processWord", + value: function(t, i) { + var e = t[i] << 24; + e |= (255 & t[++i]) << 16, + e |= (255 & t[++i]) << 8, + e |= 255 & t[++i], + this.X[this.xOff] = e, + 16 == ++this.xOff && this.processBlock() + } + }, + { + key: "processLength", + value: function(t) { + this.xOff > 14 && this.processBlock(), + this.X[14] = this.urShiftLong(t, 32), + this.X[15] = 4294967295 & t + } + }, + { + key: "intToBigEndian", + value: function(t, i, e) { + i[e] = a.parseByte(this.urShift(t, 24)), + i[++e] = a.parseByte(this.urShift(t, 16)), + i[++e] = a.parseByte(this.urShift(t, 8)), + i[++e] = a.parseByte(t) + } + }, + { + key: "doFinal", + value: function(t, i) { + this.finish(); + for (var e = 0; e < 8; e++) this.intToBigEndian(this.v[e], t, i + 4 * e); + return this.reset(), + this.DIGEST_LENGTH + } + }, + { + key: "update", + value: function(t) { + this.xBuf[this.xBufOff++] = t, + this.xBufOff == this.xBuf.length && (this.processWord(this.xBuf, 0), this.xBufOff = 0), + this.byteCount++ + } + }, + { + key: "blockUpdate", + value: function(t, i, e) { + for (; 0 != this.xBufOff && e > 0;) this.update(t[i]), + i++, + e--; + for (; e > this.xBuf.length;) this.processWord(t, i), + i += this.xBuf.length, + e -= this.xBuf.length, + this.byteCount += this.xBuf.length; + for (; e > 0;) this.update(t[i]), + i++, + e-- + } + }, + { + key: "finish", + value: function() { + var t = this.byteCount << 3; + for (this.update(128); 0 != this.xBufOff;) this.update(0); + this.processLength(t), + this.processBlock() + } + }, + { + key: "rotate", + value: function(t, i) { + return t << i | this.urShift(t, 32 - i) + } + }, + { + key: "p0", + value: function(t) { + return t ^ this.rotate(t, 9) ^ this.rotate(t, 17) + } + }, + { + key: "p1", + value: function(t) { + return t ^ this.rotate(t, 15) ^ this.rotate(t, 23) + } + }, + { + key: "ff_00_15", + value: function(t, i, e) { + return t ^ i ^ e + } + }, + { + key: "ff_16_63", + value: function(t, i, e) { + return t & i | t & e | i & e + } + }, + { + key: "gg_00_15", + value: function(t, i, e) { + return t ^ i ^ e + } + }, + { + key: "gg_16_63", + value: function(t, i, e) { + return t & i | ~t & e + } + }, + { + key: "urShift", + value: function(t, i) { + return (t > a.maxValue || t < a.minValue) && (t = a.parse(t)), + t >= 0 ? t >> i: (t >> i) + (2 << ~i) + } + }, + { + key: "urShiftLong", + value: function(t, i) { + var e = void 0, + r = new o; + if (r.fromInt(t), r.signum() >= 0) e = r.shiftRight(i).intValue(); + else { + var n = new o; + n.fromInt(2); + var s = ~i, + h = ""; + if (s < 0) { + for (var u = 64 + s, + a = 0; a < u; a++) h += "0"; + var f = new o; + f.fromInt(t >> i); + var l = new o("10" + h, 2); + h = l.toRadix(10); + e = l.add(f).toRadix(10) + } else h = n.shiftLeft(~i).intValue(), + e = (t >> i) + h + } + return e + } + }, + { + key: "getZ", + value: function(t, i) { + var e = h.parseUtf8StringToHex("1234567812345678"), + r = 4 * e.length; + this.update(r >> 8 & 255), + this.update(255 & r); + var n = h.hexToArray(e); + this.blockUpdate(n, 0, n.length); + var s = h.hexToArray(t.curve.a.toBigInteger().toRadix(16)), + o = h.hexToArray(t.curve.b.toBigInteger().toRadix(16)), + u = h.hexToArray(t.getX().toBigInteger().toRadix(16)), + a = h.hexToArray(t.getY().toBigInteger().toRadix(16)), + f = h.hexToArray(i.substr(0, 64)), + l = h.hexToArray(i.substr(64, 64)); + this.blockUpdate(s, 0, s.length), + this.blockUpdate(o, 0, o.length), + this.blockUpdate(u, 0, u.length), + this.blockUpdate(a, 0, a.length), + this.blockUpdate(f, 0, f.length), + this.blockUpdate(l, 0, l.length); + var c = new Array(this.getDigestSize()); + return this.doFinal(c, 0), + c + } + }]), + t + } (); + t.exports = f +}, +function(t, i, e) { + "use strict"; + function r(t, i) { + var e = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1, + r = new g; + t = m.hexToArray(m.parseUtf8StringToHex(t)), + i.length > 128 && (i = i.substr(i.length - 128)); + var n = i.substr(0, 64), + s = i.substr(64); + i = r.createPoint(n, s); + var o = r.initEncipher(i); + r.encryptBlock(t); + var h = m.arrayToHex(t), + u = new Array(32); + return r.doFinal(u), + u = m.arrayToHex(u), + e === B ? o + h + u: o + u + h + } + function n(t, i) { + var e = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : 1, + r = new g; + i = new l(i, 16); + var n = t.substr(0, 64), + s = t.substr(0 + n.length, 64), + o = n.length + s.length, + h = t.substr(o, 64), + u = t.substr(o + 64); + e === B && (h = t.substr(t.length - 64), u = t.substr(o, t.length - o - 64)); + var a = m.hexToArray(u), + f = r.createPoint(n, s); + r.initDecipher(i, f), + r.decryptBlock(a); + var c = new Array(32); + if (r.doFinal(c), m.arrayToHex(c) === h) return m.arrayToUtf8(a); + return "" + } + function s(t, i) { + var e = arguments.length > 2 && void 0 !== arguments[2] ? arguments[2] : {}, + r = e.pointPool, + n = e.der, + s = e.hash, + o = e.publicKey, + f = "string" == typeof t ? m.parseUtf8StringToHex(t) : m.parseArrayBufferToHex(t); + s && (o = o || u(i), f = h(f, o)); + var c = new l(i, 16), + y = new l(f, 16), + v = null, + g = null, + d = null; + do { + do { + var T = void 0; + T = r && r.length ? r.pop() : a(), v = T.k, g = y.add(T.x1).mod(F) + } while ( g . equals ( l . ZERO ) || g.add(v).equals(F)); + d = c.add(l.ONE).modInverse(F).multiply(v.subtract(g.multiply(c))).mod(F) + } while ( d . equals ( l . ZERO )); + return n ? p(g, d) : m.leftPad(g.toString(16), 64) + m.leftPad(d.toString(16), 64) + } + function o(t, i, e) { + var r = arguments.length > 3 && void 0 !== arguments[3] ? arguments[3] : {}, + n = r.der, + s = r.hash, + o = "string" == typeof t ? m.parseUtf8StringToHex(t) : m.parseArrayBufferToHex(t); + s && (o = h(o, e)); + var u = void 0, + a = void 0; + if (n) { + var f = y(i); + u = f.r, + a = f.s + } else u = new l(i.substring(0, 64), 16), + a = new l(i.substring(64), 16); + var c = b.decodePointHex(e), + p = new l(o, 16), + v = u.add(a).mod(F); + if (v.equals(l.ZERO)) return ! 1; + var g = T.multiply(a).add(c.multiply(v)), + d = p.add(g.getX().toBigInteger()).mod(F); + return u.equals(d) + } + function h(t, i) { + var e = new v, + r = (new v).getZ(T, i.substr(2, 128)), + n = m.hexToArray(m.arrayToHex(r).toString()), + s = t, + o = m.hexToArray(s), + h = new Array(e.getDigestSize()); + return e.blockUpdate(n, 0, n.length), + e.blockUpdate(o, 0, o.length), + e.doFinal(h, 0), + m.arrayToHex(h).toString() + } + function u(t) { + var i = T.multiply(new l(t, 16)); + return "04" + m.leftPad(i.getX().toBigInteger().toString(16), 64) + m.leftPad(i.getY().toBigInteger().toString(16), 64) + } + function a() { + var t = m.generateKeyPairHex(), + i = b.decodePointHex(t.publicKey); + return t.k = new l(t.privateKey, 16), + t.x1 = i.getX().toBigInteger(), + t + } + var f = e(0), + l = f.BigInteger, + c = e(4), + p = c.encodeDer, + y = c.decodeDer, + v = e(2), + g = e(6), + m = e(1), + d = m.generateEcparam(), + T = d.G, + b = d.curve, + F = d.n, + B = 0; + t.exports = { + generateKeyPairHex: m.generateKeyPairHex, + doEncrypt: r, + doDecrypt: n, + doSignature: s, + doVerifySignature: o, + getPoint: a + } +}, +function(t, i, e) { + "use strict"; + function r(t, i) { + if (!t) throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); + return ! i || "object" != typeof i && "function" != typeof i ? t: i + } + function n(t, i) { + if ("function" != typeof i && null !== i) throw new TypeError("Super expression must either be null or a function, not " + typeof i); + t.prototype = Object.create(i && i.prototype, { + constructor: { + value: t, + enumerable: !1, + writable: !0, + configurable: !0 + } + }), + i && (Object.setPrototypeOf ? Object.setPrototypeOf(t, i) : t.__proto__ = i) + } + function s(t, i) { + if (! (t instanceof i)) throw new TypeError("Cannot call a class as a function") + } + function o(t) { + var i = t.toString(16); + if ("-" !== i.substr(0, 1)) i.length % 2 == 1 ? i = "0" + i: i.match(/^[0-7]/) || (i = "00" + i); + else { + var e = i.substr(1), + r = e.length; + r % 2 == 1 ? r += 1 : i.match(/^[0-7]/) || (r += 2); + for (var n = "", + s = 0; s < r; s++) n += "f"; + i = new g(n, 16).xor(t).add(g.ONE).toString(16).replace(/^-/, "") + } + return i + } + function h(t, i) { + if ("8" !== t.substring(i + 2, i + 3)) return 1; + var e = parseInt(t.substring(i + 3, i + 4)); + return 0 === e ? -1 : 0 < e && e < 10 ? e + 1 : -2 + } + function u(t, i) { + var e = h(t, i); + return e < 1 ? "": t.substring(i + 2, i + 2 + 2 * e) + } + function a(t, i) { + var e = u(t, i); + if ("" === e) return - 1; + var r = void 0; + return r = parseInt(e.substring(0, 1)) < 8 ? new g(e, 16) : new g(e.substring(2), 16), + r.intValue() + } + function f(t, i) { + var e = h(t, i); + return e < 0 ? l_len: i + 2 * (e + 1) + } + function l(t, i) { + var e = f(t, i), + r = a(t, i); + return t.substring(e, e + 2 * r) + } + function c(t, i) { + return f(t, i) + 2 * a(t, i) + } + function p(t, i) { + var e = [], + r = f(t, i); + e.push(r); + for (var n = a(t, i), s = r, o = 0;;) { + var h = c(t, s); + if (null === h || h - r >= 2 * n) break; + if (o >= 200) break; + e.push(h), + s = h, + o++ + } + return e + } + var y = function() { + function t(t, i) { + for (var e = 0; e < i.length; e++) { + var r = i[e]; + r.enumerable = r.enumerable || !1, + r.configurable = !0, + "value" in r && (r.writable = !0), + Object.defineProperty(t, r.key, r) + } + } + return function(i, e, r) { + return e && t(i.prototype, e), + r && t(i, r), + i + } + } (), + v = e(0), + g = v.BigInteger, + m = function() { + function t() { + s(this, t), + this.isModified = !0, + this.hTLV = null, + this.hT = "00", + this.hL = "00", + this.hV = "" + } + return y(t, [{ + key: "getLengthHexFromValue", + value: function() { + var t = this.hV.length / 2, + i = t.toString(16); + return i.length % 2 == 1 && (i = "0" + i), + t < 128 ? i: (128 + i.length / 2).toString(16) + i + } + }, + { + key: "getEncodedHex", + value: function() { + return (null == this.hTLV || this.isModified) && (this.hV = this.getFreshValueHex(), this.hL = this.getLengthHexFromValue(), this.hTLV = this.hT + this.hL + this.hV, this.isModified = !1), + this.hTLV + } + }, + { + key: "getFreshValueHex", + value: function() { + return "" + } + }]), + t + } (), + d = function(t) { + function i(t) { + s(this, i); + var e = r(this, (i.__proto__ || Object.getPrototypeOf(i)).call(this)); + return e.hT = "02", + t && t.bigint && (e.hTLV = null, e.isModified = !0, e.hV = o(t.bigint)), + e + } + return n(i, t), + y(i, [{ + key: "getFreshValueHex", + value: function() { + return this.hV + } + }]), + i + } (m), + T = function(t) { + function i(t) { + s(this, i); + var e = r(this, (i.__proto__ || Object.getPrototypeOf(i)).call(this)); + return e.hT = "30", + e.asn1Array = [], + t && t.array && (e.asn1Array = t.array), + e + } + return n(i, t), + y(i, [{ + key: "getFreshValueHex", + value: function() { + for (var t = "", + i = 0; i < this.asn1Array.length; i++) { + t += this.asn1Array[i].getEncodedHex() + } + return this.hV = t, + this.hV + } + }]), + i + } (m); + t.exports = { + encodeDer: function(t, i) { + var e = new d({ + bigint: t + }), + r = new d({ + bigint: i + }); + return new T({ + array: [e, r] + }).getEncodedHex() + }, + decodeDer: function(t) { + var i = p(t, 0), + e = i[0], + r = i[1], + n = l(t, e), + s = l(t, r); + return { + r: new g(n, 16), + s: new g(s, 16) + } + } + } +}, +function(t, i, e) { + "use strict"; + function r(t, i) { + if (! (t instanceof i)) throw new TypeError("Cannot call a class as a function") + } + var n = function() { + function t(t, i) { + for (var e = 0; e < i.length; e++) { + var r = i[e]; + r.enumerable = r.enumerable || !1, + r.configurable = !0, + "value" in r && (r.writable = !0), + Object.defineProperty(t, r.key, r) + } + } + return function(i, e, r) { + return e && t(i.prototype, e), + r && t(i, r), + i + } + } (), + s = e(0), + o = s.BigInteger, + h = new o("3"), + u = function() { + function t(i, e) { + r(this, t), + this.x = e, + this.q = i + } + return n(t, [{ + key: "equals", + value: function(t) { + return t === this || this.q.equals(t.q) && this.x.equals(t.x) + } + }, + { + key: "toBigInteger", + value: function() { + return this.x + } + }, + { + key: "negate", + value: function() { + return new t(this.q, this.x.negate().mod(this.q)) + } + }, + { + key: "add", + value: function(i) { + return new t(this.q, this.x.add(i.toBigInteger()).mod(this.q)) + } + }, + { + key: "subtract", + value: function(i) { + return new t(this.q, this.x.subtract(i.toBigInteger()).mod(this.q)) + } + }, + { + key: "multiply", + value: function(i) { + return new t(this.q, this.x.multiply(i.toBigInteger()).mod(this.q)) + } + }, + { + key: "divide", + value: function(i) { + return new t(this.q, this.x.multiply(i.toBigInteger().modInverse(this.q)).mod(this.q)) + } + }, + { + key: "square", + value: function() { + return new t(this.q, this.x.square().mod(this.q)) + } + }]), + t + } (), + a = function() { + function t(i, e, n, s) { + r(this, t), + this.curve = i, + this.x = e, + this.y = n, + this.z = void 0 === s ? o.ONE: s, + this.zinv = null + } + return n(t, [{ + key: "getX", + value: function() { + return null === this.zinv && (this.zinv = this.z.modInverse(this.curve.q)), + this.curve.fromBigInteger(this.x.toBigInteger().multiply(this.zinv).mod(this.curve.q)) + } + }, + { + key: "getY", + value: function() { + return null === this.zinv && (this.zinv = this.z.modInverse(this.curve.q)), + this.curve.fromBigInteger(this.y.toBigInteger().multiply(this.zinv).mod(this.curve.q)) + } + }, + { + key: "equals", + value: function(t) { + return t === this || (this.isInfinity() ? t.isInfinity() : t.isInfinity() ? this.isInfinity() : !!t.y.toBigInteger().multiply(this.z).subtract(this.y.toBigInteger().multiply(t.z)).mod(this.curve.q).equals(o.ZERO) && t.x.toBigInteger().multiply(this.z).subtract(this.x.toBigInteger().multiply(t.z)).mod(this.curve.q).equals(o.ZERO)) + } + }, + { + key: "isInfinity", + value: function() { + return null === this.x && null === this.y || this.z.equals(o.ZERO) && !this.y.toBigInteger().equals(o.ZERO) + } + }, + { + key: "negate", + value: function() { + return new t(this.curve, this.x, this.y.negate(), this.z) + } + }, + { + key: "add", + value: function(i) { + if (this.isInfinity()) return i; + if (i.isInfinity()) return this; + var e = this.x.toBigInteger(), + r = this.y.toBigInteger(), + n = this.z, + s = i.x.toBigInteger(), + h = i.y.toBigInteger(), + u = i.z, + a = this.curve.q, + f = e.multiply(u).mod(a), + l = s.multiply(n).mod(a), + c = f.subtract(l), + p = r.multiply(u).mod(a), + y = h.multiply(n).mod(a), + v = p.subtract(y); + if (o.ZERO.equals(c)) return o.ZERO.equals(v) ? this.twice() : this.curve.infinity; + var g = f.add(l), + m = n.multiply(u).mod(a), + d = c.square().mod(a), + T = c.multiply(d).mod(a), + b = m.multiply(v.square()).subtract(g.multiply(d)).mod(a), + F = c.multiply(b).mod(a), + B = v.multiply(d.multiply(f).subtract(b)).subtract(p.multiply(T)).mod(a), + x = T.multiply(m).mod(a); + return new t(this.curve, this.curve.fromBigInteger(F), this.curve.fromBigInteger(B), x) + } + }, + { + key: "twice", + value: function() { + if (this.isInfinity()) return this; + if (!this.y.toBigInteger().signum()) return this.curve.infinity; + var i = this.x.toBigInteger(), + e = this.y.toBigInteger(), + r = this.z, + n = this.curve.q, + s = this.curve.a.toBigInteger(), + o = i.square().multiply(h).add(s.multiply(r.square())).mod(n), + u = e.shiftLeft(1).multiply(r).mod(n), + a = e.square().mod(n), + f = a.multiply(i).multiply(r).mod(n), + l = u.square().mod(n), + c = o.square().subtract(f.shiftLeft(3)).mod(n), + p = u.multiply(c).mod(n), + y = o.multiply(f.shiftLeft(2).subtract(c)).subtract(l.shiftLeft(1).multiply(a)).mod(n), + v = u.multiply(l).mod(n); + return new t(this.curve, this.curve.fromBigInteger(p), this.curve.fromBigInteger(y), v) + } + }, + { + key: "multiply", + value: function(t) { + if (this.isInfinity()) return this; + if (!t.signum()) return this.curve.infinity; + for (var i = t.multiply(h), e = this.negate(), r = this, n = i.bitLength() - 2; n > 0; n--) { + r = r.twice(); + var s = i.testBit(n); + s !== t.testBit(n) && (r = r.add(s ? this: e)) + } + return r + } + }]), + t + } (), + f = function() { + function t(i, e, n) { + r(this, t), + this.q = i, + this.a = this.fromBigInteger(e), + this.b = this.fromBigInteger(n), + this.infinity = new a(this, null, null) + } + return n(t, [{ + key: "equals", + value: function(t) { + return t === this || this.q.equals(t.q) && this.a.equals(t.a) && this.b.equals(t.b) + } + }, + { + key: "fromBigInteger", + value: function(t) { + return new u(this.q, t) + } + }, + { + key: "decodePointHex", + value: function(t) { + switch (parseInt(t.substr(0, 2), 16)) { + case 0: + return this.infinity; + case 2: + case 3: + return null; + case 4: + case 6: + case 7: + var i = (t.length - 2) / 2, + e = t.substr(2, i), + r = t.substr(i + 2, i); + return new a(this, this.fromBigInteger(new o(e, 16)), this.fromBigInteger(new o(r, 16))); + default: + return null + } + } + }]), + t + } (); + t.exports = { + ECPointFp: a, + ECCurveFp: f + } +}, +function(t, i, e) { + "use strict"; + function r(t, i) { + if (! (t instanceof i)) throw new TypeError("Cannot call a class as a function") + } + var n = function() { + function t(t, i) { + for (var e = 0; e < i.length; e++) { + var r = i[e]; + r.enumerable = r.enumerable || !1, + r.configurable = !0, + "value" in r && (r.writable = !0), + Object.defineProperty(t, r.key, r) + } + } + return function(i, e, r) { + return e && t(i.prototype, e), + r && t(i, r), + i + } + } (), + s = e(0), + o = s.BigInteger, + h = e(2), + u = e(1), + a = function() { + function t() { + r(this, t), + this.ct = 1, + this.p2 = null, + this.sm3keybase = null, + this.sm3c3 = null, + this.key = new Array(32), + this.keyOff = 0 + } + return n(t, [{ + key: "reset", + value: function() { + this.sm3keybase = new h, + this.sm3c3 = new h; + var t = u.hexToArray(this.p2.getX().toBigInteger().toRadix(16)), + i = u.hexToArray(this.p2.getY().toBigInteger().toRadix(16)); + this.sm3keybase.blockUpdate(t, 0, t.length), + this.sm3c3.blockUpdate(t, 0, t.length), + this.sm3keybase.blockUpdate(i, 0, i.length), + this.ct = 1, + this.nextKey() + } + }, + { + key: "nextKey", + value: function() { + var t = new h(this.sm3keybase); + t.update(this.ct >> 24 & 255), + t.update(this.ct >> 16 & 255), + t.update(this.ct >> 8 & 255), + t.update(255 & this.ct), + t.doFinal(this.key, 0), + this.keyOff = 0, + this.ct++ + } + }, + { + key: "initEncipher", + value: function(t) { + var i = u.generateKeyPairHex(), + e = new o(i.privateKey, 16), + r = i.publicKey; + return this.p2 = t.multiply(e), + this.reset(), + r.length > 128 && (r = r.substr(r.length - 128)), + r + } + }, + { + key: "encryptBlock", + value: function(t) { + this.sm3c3.blockUpdate(t, 0, t.length); + for (var i = 0; i < t.length; i++) this.keyOff === this.key.length && this.nextKey(), + t[i] ^= 255 & this.key[this.keyOff++] + } + }, + { + key: "initDecipher", + value: function(t, i) { + this.p2 = i.multiply(t), + this.reset() + } + }, + { + key: "decryptBlock", + value: function(t) { + for (var i = 0; i < t.length; i++) this.keyOff === this.key.length && this.nextKey(), + t[i] ^= 255 & this.key[this.keyOff++]; + this.sm3c3.blockUpdate(t, 0, t.length) + } + }, + { + key: "doFinal", + value: function(t) { + var i = u.hexToArray(this.p2.getY().toBigInteger().toRadix(16)); + this.sm3c3.blockUpdate(i, 0, i.length), + this.sm3c3.doFinal(t, 0), + this.reset() + } + }, + { + key: "createPoint", + value: function(t, i) { + var e = "04" + t + i; + return u.getGlobalCurve().decodePointHex(e) + } + }]), + t + } (); + t.exports = a +}]); \ No newline at end of file diff --git a/source/markdown_BDWare/conf.py b/markdown/markdown_BDWare/conf.py similarity index 99% rename from source/markdown_BDWare/conf.py rename to markdown/markdown_BDWare/conf.py index 8caa5e6..a4d7a61 100644 --- a/source/markdown_BDWare/conf.py +++ b/markdown/markdown_BDWare/conf.py @@ -21,7 +21,7 @@ copyright = '2021, Peking University' author = 'Peking University' # The full version, including alpha/beta/rc tags -release = 'V1.0' +release = 'V1.4.6' # -- General configuration --------------------------------------------------- diff --git a/source/markdown_BDWare/httpapi.md b/markdown/markdown_BDWare/httpapi.md similarity index 100% rename from source/markdown_BDWare/httpapi.md rename to markdown/markdown_BDWare/httpapi.md diff --git a/source/markdown_BDWare/index.rst b/markdown/markdown_BDWare/index.rst similarity index 100% rename from source/markdown_BDWare/index.rst rename to markdown/markdown_BDWare/index.rst diff --git a/source/markdown_ZRYH/ContractAPI.md b/markdown/markdown_ZRYH/ContractAPI.md similarity index 100% rename from source/markdown_ZRYH/ContractAPI.md rename to markdown/markdown_ZRYH/ContractAPI.md diff --git a/source/markdown_ZRYH/IDEUsage.md b/markdown/markdown_ZRYH/IDEUsage.md similarity index 100% rename from source/markdown_ZRYH/IDEUsage.md rename to markdown/markdown_ZRYH/IDEUsage.md diff --git a/source/markdown_ZRYH/InstallTips.md b/markdown/markdown_ZRYH/InstallTips.md similarity index 100% rename from source/markdown_ZRYH/InstallTips.md rename to markdown/markdown_ZRYH/InstallTips.md diff --git a/source/markdown_ZRYH/Introduction.md b/markdown/markdown_ZRYH/Introduction.md similarity index 100% rename from source/markdown_ZRYH/Introduction.md rename to markdown/markdown_ZRYH/Introduction.md diff --git a/source/markdown_ZRYH/YJSAPI.md b/markdown/markdown_ZRYH/YJSAPI.md similarity index 100% rename from source/markdown_ZRYH/YJSAPI.md rename to markdown/markdown_ZRYH/YJSAPI.md diff --git a/source/markdown_ZRYH/YJSInDepth.md b/markdown/markdown_ZRYH/YJSInDepth.md similarity index 100% rename from source/markdown_ZRYH/YJSInDepth.md rename to markdown/markdown_ZRYH/YJSInDepth.md diff --git a/source/markdown_ZRYH/conf.py b/markdown/markdown_ZRYH/conf.py similarity index 100% rename from source/markdown_ZRYH/conf.py rename to markdown/markdown_ZRYH/conf.py diff --git a/source/markdown_ZRYH/index.rst b/markdown/markdown_ZRYH/index.rst similarity index 100% rename from source/markdown_ZRYH/index.rst rename to markdown/markdown_ZRYH/index.rst diff --git a/source/Introduction.rst b/source/Introduction.rst index 8153117..4cc2a15 100644 --- a/source/Introduction.rst +++ b/source/Introduction.rst @@ -3,10 +3,10 @@ -------------- -什么是北大数瑞? ---------------- +什么是BDContract? +----------------- -北大数瑞是面向大数据场景的数据资源、IoT资源、云资源的管理、调度平台。BDContract是一个可信计算框架,计算逻辑以智能合约的方式表达。通过”随机“和”冗余计算“的方式实现智能合约的可信执行。BDContract在保证智能合约的可用性、可靠性的同时,着重提升执行效率和安全性。 +BDContract是一个可信计算框架,计算逻辑以智能合约的方式表达。通过”随机“和”冗余计算“的方式实现智能合约的可信执行。BDContract在保证智能合约的可用性、可靠性的同时,着重提升执行效率和安全性。 -------------- diff --git a/source/YJSInDepth.rst b/source/YJSInDepth.rst index 0a4bfbc..1174ed2 100644 --- a/source/YJSInDepth.rst +++ b/source/YJSInDepth.rst @@ -128,91 +128,40 @@ YJS中的变量类似于JavaScript(ES6)中的变量,分为\ **全局变量 事件 ^^^^ -YJS中包含两种事件,全局(Global)事件和本地(Local)事件: - -* 全局事件类似于一般事件中间件中的事件,发布的事件由事件主题进行标识,订阅者通过订阅事件主题获取相应的事件。 -* 本地事件类似于以太坊Solidity中的事件,由智能合约定义并发布,订阅者需要使用合约名/合约ID和事件名来订阅特定合约的相应事件。 +YJS中的事件类似于Solidity中的事件。 **发布者**\ 定义一个包含事件发布函数的事件,然后通过调用事件发布函数发布事件。 -定义的事件默认为本地事件,可使用global或local关键词来标识事件的类型。 **订阅者**\ 订阅并处理事件。 事件示例如下: -EventLocalPuber.yjs +EventPuber.yjs :: - contract EventLocalPuber { - event abcEvent; - // 等价于 - // event local abcEvent - export function pub(arg){ - abcEvent(arg); - return "done!"; - } - } + contract EventPuber{ + event abcEvent; + export function pub(arg){ + abcEvent(arg); + return "done!"; + } + } -EventLocalSuber.yjs +EventSuber.yjs :: - contract EventLocalSuber { - function onCreate() { - Global.topic2event = {}; - } - export function init(arg) { - var topic = YancloudUtil.subscribe("EventPuber", "abcEvent", handler); - Global.topic2event[topic] = "abcEvent"; - print("Handler:" + handler); - } - function handler(e) { - var ret = "ReceiveEvent: " + (Global.topic2event[e.topic]) + " " + (e.content); - print(ret); - } - } - -EventGlobalPuber.yjs - -:: - - contract EventGlobalPuber { - event global globalEvent; - export function pub(arg){ - globalEvent(arg); - return "done!"; - } - } - -EventGlobalSuber.yjs - -:: - - contract EventGlobalSuber { - export function init(arg) { - var topic = YancloudUtil.subscribe("globalEvent", handler); - print("Handler:" + handler); - } - function handler(e) { - var ret = "ReceiveEvent: " + (e.topic) + " " + (e.content); - print(ret); - } - } - -YJS的两种事件都支持事件语义: - -* 至少一次(AT_LEAST_ONCE):事件至少被处理一次,该事件将被发送给所有订阅者。 -* 至多一次(AT_MOST_ONCE):事件至多被处理一次,该事件只会被发送给一个随机的订阅者。 -* 只有一次(ONLY_ONCE):该事件被且仅被一个合约订阅者处理一次。 - -默认的事件语义为至少一次,其他事件语义需要在事件声明中指定,例如: - -:: - - event local alo(AT_LEAST_ONCE); - event global amo(AT_MOST_ONCE); - event global oo(ONLY_ONCE); + contract EventSuber{ + export function init(arg){ + YancloudUtil.subscribe("EventPuber","abcEvent",handler); + print("Handler:"+handler); + } + function handler(e){ + var ret = "ReceiveEvent:"+(e.type)+" "+(e.content); + print(ret); + } + } -------------- diff --git a/source/conf.py b/source/conf.py index 8caa5e6..a4d7a61 100644 --- a/source/conf.py +++ b/source/conf.py @@ -21,7 +21,7 @@ copyright = '2021, Peking University' author = 'Peking University' # The full version, including alpha/beta/rc tags -release = 'V1.0' +release = 'V1.4.6' # -- General configuration --------------------------------------------------- diff --git a/toRst.sh b/toRst.sh index 2abc498..f8f1232 100644 --- a/toRst.sh +++ b/toRst.sh @@ -8,19 +8,21 @@ rm -rf YJSAPI.rst rm -rf YJSInDepth.rst rm -rf conf.py rm -rf index.rst - +rm -rf _static if [ $# -lt 1 ]; then - export src=./markdown + export src=../markdown/markdown_BDWare elif [ $1 == "zryh" ] ; then - export src=./markdown_ZRYH + export src=../markdown/markdown_ZRYH elif [ $1 == "bdware" ] ; then - export src=./markdown_BDWare + export src=../markdown/markdown_BDWare else echo "error arguments, use ./markdown" - export src=./markdown + export src=../markdown/markdown_BDWare fi cp ${src}/conf.py ./conf.py cp ${src}/index.rst ./index.rst +cp -r ${src}/_static ./_static + pandoc ${src}/ContractAPI.md -f markdown -t rst -o ContractAPI.rst pandoc ${src}/IDEUsage.md -f markdown -t rst -o IDEUsage.rst pandoc ${src}/InstallTips.md -f markdown -t rst -o InstallTips.rst