diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml
new file mode 100644
index 0000000..6fd8d64
--- /dev/null
+++ b/.github/workflows/build.yml
@@ -0,0 +1,59 @@
+# Copyright (c) 2018 LibJ
+#
+# Permission is hereby granted, free of charge, to any person obtaining a copy
+# of this software and associated documentation files (the "Software"), to deal
+# in the Software without restriction, including without limitation the rights
+# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+# copies of the Software, and to permit persons to whom the Software is
+# furnished to do so, subject to the following conditions:
+#
+# The above copyright notice and this permission notice shall be included in
+# all copies or substantial portions of the Software.
+#
+# You should have received a copy of The MIT License (MIT) along with this
+# program. If not, see .
+
+name: build
+on: [push]
+jobs:
+ build:
+ runs-on: ubuntu-latest
+ env:
+ MAVEN_OPTS: "-Xms64M -Xmx1600M -Dhttp.keepAlive=false -Dmaven.wagon.httpconnectionManager.ttlSeconds=15 -Dmaven.wagon.http.retryHandler.count=3 -Dmaven.wagon.rto=15000"
+ strategy:
+ matrix:
+ jdk: ['8', '11']
+
+ steps:
+ - uses: actions/checkout@v2
+
+ - uses: actions/cache@v2
+ with:
+ path: ~/.m2/repository
+ key: ${{ runner.os }}-maven-${{ hashFiles('**/pom.xml') }}
+ restore-keys: |
+ ${{ runner.os }}-maven-
+
+ - name: Set up JDK ${{ matrix.jdk }}
+ uses: actions/setup-java@v2
+ with:
+ distribution: 'zulu'
+ java-version: ${{ matrix.jdk }}
+
+ - name: Build
+ env:
+ GPG: ${{ secrets.GPG }}
+ REPO_TOKEN: ${{ secrets.REPO_TOKEN }}
+ GPG_KEY_NAME: ${{ secrets.GPG_KEY_NAME }}
+ GPG_PASSPHRASE: ${{ secrets.GPG_PASSPHRASE }}
+ SONATYPE_USERNAME: ${{ secrets.SONATYPE_USERNAME }}
+ SONATYPE_PASSWORD: ${{ secrets.SONATYPE_PASSWORD }}
+ run: |
+ if [ "${{ matrix.jdk }}" = "8" ] &&
+ [ "${{ github.ref }}" = "refs/heads/master" ] &&
+ [ "${{ github.head_ref }}" = "" ]; then
+ echo $GPG | base64 -d | gpg --import --no-tty --batch --yes &> /dev/null &&
+ mvn -e -U -B -s settings.xml -DskipRTests -DrepoToken=$REPO_TOKEN deploy -P javadoc,report,deploy;
+ else
+ mvn -e -U -B -s settings.xml -DskipRTests install;
+ fi
\ No newline at end of file
diff --git a/.travis.yml b/.travis.yml
deleted file mode 100644
index 337db46..0000000
--- a/.travis.yml
+++ /dev/null
@@ -1,44 +0,0 @@
-# Copyright (c) 2018 LibJ
-#
-# Permission is hereby granted, free of charge, to any person obtaining a copy
-# of this software and associated documentation files (the "Software"), to deal
-# in the Software without restriction, including without limitation the rights
-# to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
-# copies of the Software, and to permit persons to whom the Software is
-# furnished to do so, subject to the following conditions:
-#
-# The above copyright notice and this permission notice shall be included in
-# all copies or substantial portions of the Software.
-#
-# You should have received a copy of The MIT License (MIT) along with this
-# program. If not, see .
-
-dist: trusty
-sudo: required
-language: java
-jdk:
-- openjdk8
-- openjdk11
-install: export MAVEN_OPTS="-Dmaven.wagon.httpconnectionManager.ttlSeconds=15 -Dmaven.wagon.http.retryHandler.count=3" && mvn -version
-script:
-- 'if [ "$TRAVIS_JDK_VERSION" = "openjdk8" ] &&
- [ "$TRAVIS_BRANCH" = "master" ] &&
- [ "$TRAVIS_PULL_REQUEST" = "false" ]; then
- eval "$SIGNING_KEY" &> /dev/null &&
- mvn -e -U -B -s settings.xml -DskipRTests -DrepoToken=$REPO_TOKEN deploy -P javadoc,report,deploy;
- else
- mvn -e -U -B -s settings.xml -DskipRTests install;
- fi'
-cache:
- directories:
- - ~/.m2/repository
-env:
- global:
- - SECRET=VTJGc2RHVmtYMS8rVnB1YVpGTHB1VStpTkdBQlNVQmY2TWlmT1hQNVBGRmZYUm5qOVdiM3V1YTNRaVFHLzhwNAo2Y0lnMnpNS0QrV0QvWDZjaFQvYTBibEt0S1Q3cEZVaXdwY0ZHRlN1T3FiOXhXN0tVK2Z5TUdLNDhtNTE0RmdUCjNwUUVzdnNMR1ROWFRZbVJKd1hsRnVXK0xpcVRaSFNLQkkxUllaOUx0aGpPSVowRVdGcG0vMmNTT2kyUzJPK0IKQ2NTa25BQUJMYmFYaEtVNmtxdXZUdDBHZDF6YkpLNC9UeEFIQm5QSmRLY2xxdTZYYjM2UDlUWVFIUUNITVNxYgpGaGFjbHRYa0ZDNHpvSjVvVzFzNnhiNFJPTXhvSy9XVlVjM3RWWC9CUmZyMjBZMGhkZFhsenB1S0p6Z1kyTURXCndXNmxGampDMWhOeEVVR0FWU0xKNGtFZHMrdHlZWlNqeHJFTmVjRFRmaFk3dzgrUGxiYUtqMyt0WmI0OVhpZE8KZmtZd21OWlFObjNYOTlCRUNVdFZ0Sk5mMlNWWkx5TEo5NFl5cCtTa0hJWUUyMmQwODEva1VGRXR3aSt0NlMwSApMYnBReHRlWFowcU1iRHBvRUhRV0MzM3BCMEVXZ3hrK29KSy81c1QvZXdON1pwaDF2OFBTZE9jcVBmZEpQNFVRClNZTHlEMENpM1JLdFRWVGttUHI0YVh0VEFGUHdsZHZsZDgvbFBmK0piUUxVbTAxZUozM1hyRTl0OUFkWWt6QWQKZEt3cWZpeEY2dkxMdm9qSUFXNFpuQ0s4cmpnWjdXMDArTzFEVXhVSUloWVZqK09KVjhCRW1MUmkvY2x1elh3TQp5UGNJWDZYSndqTC9yM0MwOU9lTEFJZWpEMjZFNjZaeEk1WHY4LzRtZXA4YnhMaWZvblVoM3dzb3VNOGRRR05JCnVOckhNNjZxZERob1VwcGh4MERJN1RJY0ovYmlKVUorRUtyeUY4YjRhMWNzT1ZaU3hRK3NtT0Y4OExQUis1UFEKUkNDSXRZeGk5d2VHT2pSdXZOdUFNckdlOEZRblBJMHZLKzgwU1c2T0tESUJaUUNVUExCT3JKWkF1azFTWWowVQp6SzdiaFFrMjRsZ3VMMnRYVmQva1VYZ2txMVpNQUViY3BxM3hIdDh2MVI2Z2VUb0JjT0xpK1dsdzYrNnJUMFN3CjN1Qng3OGFtS1QwQ08yT0VJVk5ZeVcrcXFTKzB5Rm5HdTFsN0FPREw2THZWYnplQWlielFJc3lnalRNTFMwUmsKVytxcVJNa0c0cUIxV1VYdFdCbkhQSlBpc0h4b1FrV3NKelJCNlVXU3R2bGJyd21lUFlObFNZLzFUVTRZYmtaOApoRGxKcnpHUEYwRFdQaEVtVTg5Q0NPdWRCQnV4aTNnT2laaTlUTFJ3eVZaMWxUNzFsaW5OOFZydVE2eEc2VGtoCndOWWY0ajNYcHVEdjFySGpreWZkaG5SVkEyWUlPUmNKSy9wK2d5ZEFoN2NFNWgySXpXeUgrVnpDUnUrMk91bXgKMmpqUldCZ0xwaDhNUjdQQ0ZlMlZEQU56QkttZGNYd3phV0JJcDNuUzB2UnNUZVZpcFFrcGxRUWxpcE15c3RIZgpUVEdQZlVmRHZQRXV3OStiYWV4dE9HZ2pYcnBHdHNPekcrTkp3RUVMV2hxbzdYNGZFcVREZEd2b3VMQUlaMm9ECkM1cVpSOGVLRlRVZEpiTytSYmQrejJlRlYvRUM4QU9nNDQ1WXZEbWMvNEN0OVJLNk1YWXloZjkzTjFNNlVyYmgKWHI5aTI3VWd5ZzNUMEl3cEYzbWtaRHZYSVExUWZwZGgyaktqZFVpaGZ2VzJVTlFnMFc0eXU3M0F1c2RaWmhZYgpueklpenB5Y1RPaWRaUGZ3RWwzY0pMWU0yZ3BVQkZSTld3ZmRpazFyMGI3R0RBSURlVkxydFU4dnZrRVVRaEV0CkdXSmU5VlF4ODRaR1BCUHV3OXIzaXlhb1d4UEdXRWJJTXArSE1oZVJUTy80RU8wWGVDMFpITDR5dU5vRXAraEkKQ3piU2psMVo3R25jOUpFRzRRS1hjRld4OEZ4cVI4YmdOZ3MyS05kQnUzZlJtRFFEYzFBTjVDaDhEWUtNVC9UcgppNmI3MTFxZm9sR0E5cER3djZ2NjY3Vk5zQmppL3ZuQXozd3g4eEJhVXlUUFkzN2V5SHk4VkRNRzU3ZnYvcHA5CmRJSUl4UDBuVmVYRXVwTk9tU2ZsbnZ0cTVqTEhnd3VTMThTcnVHNW5oTC9rRW1OUnh5REw1STd2VWhsUEdScDIKUVJDOEJTejBFeFl5RE41RkhMMzlZSlVHZkVveHZ1ZVg2eGx1Q2trcndwRzlkQlVjb1p5enFNMkdIZzFCc2NSMgpxWTF6bmhIYTU2THlhNHRCNWxwZnBYbnpqRHV0R3J2QWFzT2pXRHc5VExyeXVpRWxnZWw2VERLaUVqVTFNRGoyCkdPTE54OVU2c0l0QUplNDNvRmtSd2pKRUNKTHZvZElvM2UxK1ppQnJCVXViNGRJQkZFZktZSlRNVkZNNWh1cXAKZGJLdkVJanpJSEovS01xMFpFdEUrbVFpbUhnc1V2SkhsUDluZFdiM3FhTnF2ZkFHVzB5VlRUQ1BBSlVBVXZEVwpXTmwxaEE1VmVWTUhadERoWUNpTktaNUN1azJWSjNITWFKVENEL2VpanN6dU8wcUxWTUdLQzN3M0V2SE5CMTNtCkZyeEpJRTgya0JDYXIwOTRybEdlWFg3VU5iZmh6S3h5cnBXbUs1TE1PZXdsTnNXb1ZweGlhcHNKUWF6TlZHdS8KRnN1ZXFYZzR1LzJRSHZpT1pyengwNTJ6dFBrYzRyV05XZmFTN2UyRDdDTC9yVCt1aENFTFdRT1RXVlJGc08rQwowa3JteWFwN2x0aW9iMnEweEJXWW5MMkczMk80enBxZitzWHJIUFNjdFkxQmY5dVdnQnlYOGhGS0oxUmJYdCtVClNxUitGV2hZT2FqWmRablpsdldyaFUxclRlUm4xMEtEOHRFZzllVWFaUFlRUmV1SmlKWFRuWVdBenNnV1ltYkIKd3gxT1RMVXZtOXgrOEZMdS9QZ2tkamM4cEpRQld0NHhDTTJqMVdxR0FPd0Znd2JPN1grT1VoeHAwczhxdThMeApFMkZGOFlmbUppMGhZWThpZGRyLzd4RUM4V0JkNU9BVzNvVnQzdFRVaGpNdVB4Rmx3aEdXMFhYaVZaZEVhRnZJCm8zRitCMzc4REYvNkdHTUFaZklPRkVndXk2cERLZSs0RTIzZ0N4ZndKMGhtY1ljenFnSE5CR3lTaDNKb3hJSDIKY2h6eXh4dS9ibTQ1MHQ5d3Bhb1lvT2ZZYllva0hncGFUR2Z0dWZyRmsybkt1YklEcGY1WTFqSUljY0lZMDFBdApMSWFPVW9DUU5nSjBzam9hRW1NbFREQVVDa1h0YXJKM2s1d1oydVZtR0F1dyt6UGRoV3lQQTJHUXVrYnZ4STdUCnE3bVJOQStSTGVoZW1UQnRZOWtuekh5T0N2eURubE5KNnFKZm0rRDgzczN0QktCZ01OS1RaZHhIUGMwWk9SQU8KRlpYVnY1Y3RVRW13bnl3R2Irc0Y2QW0xbkI0NnBXSUhQNE9TMVFoL2N4L1R0RE5rcTJBZzRHUVZPYVVFcXY1WQpzdDZZQnkwdUV0SHpjZDQrV3YySWZYenBCelNsRjBtQzB0RDdMK2J5NXQvNmZyMC81UHBxZjRlcnNKczlXUkRZCnA4cHUwK0p5Wk9JbVc1N3kyRnBFblYyN09KTmF0Y3QzZDZRYWpHNWVlaEN0ZmNKRHlqZEZFaHFOa1hQQXpWbTkKcFd3ZkJrV2tLb0RROEpUZkFlei9ybWxSOHh6VlU4Y2pHTE9rVTVhRCtTY3lUdGlWQUtMMW43VExxZ08rRnBVaQpxWkZQUzYxbmNHb0ovZ2VvejZyemdSckxyOXd6TjM5RGs3S1VCSnNNeFMvd1Z4K01VdHdFbC9DdmxhZ082c0QxClZDaTl0ZWtyOTFCR2ZGOVR5dUpRWmxRakJUNDlPeUR1UEp1YVlJZWxXZ2VkcC9nbXJQanRQMDQvYm11Z2dwRDUKcEcwNmlaTjA0WG4vSS9aSVNaNDc3UkFMWkVGNGVBa2I0cXlnS0VoRldjRXd4N0RGWXA5M0xlcFNyU3lqMXNtRQptSitTdGVRVEJ0RkJFbnNVVFRFd2FoWkl1b2ptWmlOVGNmcW9pcHJ2cURvUFJKS01IcDNOamhqQzJxSzRqVVYwClMrY2s0UFE1Z0ZFd0pka2tZVk9jeHozNW1rZHdmWngzMUp6bHJEaVM4TndxeEdYL3hpQXhmZHVMaGk1ZW5JWlAKL2lCdmhaSjJsSFNERDlhMVRJOWRaRm5tVnhPVldONDZpRVNRV25ZeWxVL2dDNUlZZDRwenZvazJLYzVHdlhXZwo3czl5aG41RGJNRVVYb1FYKzNGZlJMR0dsOEZSSUhESGdBbFNnSFRBb0xub1p0aC9RVjJHNkVmUU5HS0sva0VoClVrSlJrRk9nTCtNUUdWMW42ajgwaFZVdzkyZG14S3A0MUY3UnI5UExPMGVQYnVLUHJYNm5ZZVM4a214cEVjU2YKbzBkZmZjaXdwK2RvM20yRFl1cDZ1UFZONHV6M2piVWdMcUlkVzd3M0lBTGgyUXhNdHlPNk94YUxZcEZzQkdOTAp5R1BYYS94bm1MMVdYZk5Vd21hMHZZWnpGcWg1em1QaWdJcm9RYzJFTUZqdnZQTkdycWs0OVR2SEM2Vk1ZclNVCjd6MU9GOTBzbStJbVFaYTRDZWRqNjB5TVhRZU9KcWlhSm1QdDRlcDR5WUlUc0VteDVTRTJhMTU1THR0REpWK0wKVllYdWtuQStrWlVlNCttVDRSZ01yS3lORVlSdStBekN3QVUxbUlDeTA0VDNZcXpDU0RkMDY2T2RkZHJxcTl4YQo3OGQ5NStSUFc4eGNTczMzdVhSLytDbk1laktoL1F5TllsOGlVcDdHalVhRnJUR1hBWFFURlN6cVBDWU9ZMTlPCk9zYUhwZ2E5b3ptVStqU05lelZ5MlprNTk0K1dwSGZmYURETlVTdDVSS2lVUU1XamdOZWl1VHFPZmZzNGJxUUUKMzZpWFNQRGpDTWdQTURIRWV2OVc4QWVJU3JJNW5wZkZZTHh5ZmFVcTZta2dJL0l3Q0VhRHVvWms3YnQ5U0puMgpyNDAwemw1ellQV2U1eWMxOEVQMzlKSWpiMWNZNFRsWE01Q3ZlblVxOHhlYXcyNCtOUWFnQ1VwTXZsUmltWGJoCmVUSW81cDlWWG9yUU0zdlpaRlpGdTFaQ2syQ2xJbCtTQm9HSE9MaDdzK3dLNURaMGliTHlmTjBLbHc3VWZwVisKSnBTdHM1M01ESFQ4bGFTMGNVV3g2WE5nZ2NsN2FMeVRhSThLSTFjNExiKzJmR28rMWl1T0NONXY4cDNlU2hWcgpneHFUTCtYTXRkb1hVQUZCS2FhMXNsK29Sd2IrS0l4NWlBVk9SeVYraFZIdnR6MWtNeUk5aFNvTExrdGhnNUJMCnRSUDNlclNRRkwzRUt6ZTFabitsbUpuK29CSHJ2ZU9ySHRzUGNlNXhTZlJuZUFSRUVZZ2FmV0lIQXJmTWVsUWcKbkNvVk5GMGQvT3BqM2lBelBxdkprdU0xYmpERVBJVVJqL1N5Sm9mZ0J1VTV0UDZxczFPbU1GdWhDSjlPaUNFTQpGK3RBZlljemdUZ3BLcjlFSWx3Vmk0MnJCSC9xVmVYRlRuR1QvNG9iNFROZUNnc1llaFFHT2VsSFhWL3V1Mm12CmFpSFcxcVhSZFZ3VWlSSlVCQkVsZEJLc3d1NWcxWmNlK0w1SWNOZVR5MHgyNkQyZE5UZzZjVXZLVjBZMVV1S3EKamRCdGZvSFRBRW5qWlVWbHMrcVNMc0ExYTdvMjhXdmJZUlMrVHdIckk2TDlwWFNaZHo4eEFlYjFaSmhCT1lFMwpHTTg4dlVmQ0xjTmNMdUJPd0o3dDgwYTR4eXBLZ0szNGIycHdOUE56UEdVRnpoTzFUUlNhcGtOOTRVTjJVb2xuCkQ3YmdoakppVGpLUitrdUQrZ1F6SzUvK01DL1F6L2RLSTZWajMwRDd4amZqeVdUZDJURFRQUUVuMzFiQmw2MkQKYVYxelh1YUYyc0ZRSFNiczRUZGVtblFONjU0STNIdkNGeHM2eFdIWGxKTWE4RStlZW1jeDV0SEpTWHlkTWNOZgpUWlZkdFlUL2NLNStyY0tZZm5SSmdoajdYNlREOGNrT3VnV3k0bkNnb25ZTHRpeEVYL04xNktSeWgrYmRsclFsClJsNDhWbk40MUxhWDhETjhlQXl2SXVIKzJLN0hhWFcwbXBTRTJ3R01DZG5CbzhvbUMrMW0wdS9PeFVVMGxCY0IKdVBSOHJPdmROUTJwRHlneGdJMGRRS0tVakM2Umx1Ly9oaVFsRFJVdHArOD0K
- - secure: LEOhO8oqcaMR1lQS+JXe0zs2nJVj20XhoHVxuyDWUWpE39BSSQFsho/g5HmqueVB5JYH0RNI6k+9HIGgAh4ZSABbxJL61S4VZJNBbGZPyYCQbxpfiUx6Biow70jTDtdTMqDfUxQrk4Oj0831TD7uJ8l0a9zGCxHx0TuQ/zSvvWiJ9oAYnKGbJSRWFAXfH63KMnZW3LVLldEcvCKFB+TmPsMtEhjpLj3m3IhWx8fK8h1/HmjVRyXN6+PCForLfZtbpeM8krJgSzIDX4I1Y9gcKiXQ3+rDlUTRZqxdhYZimoAG3tR88fzO0sHpyFVD5DZt55RkC4tLKQXKb0uv5Kpj5qjxkuwsNl09iifXPWGPOWj1v1Mx65PM17Xv+fOBEBaoF0q3jQcQGpaXQQNwWfLdBrgH0Ah/imbjVpd/rpeMTJMD64Ol2Nl4weMKD0Rmt0rlNQ9tV8fcLF4HepdQauCKe5KObtEBixJSQ7RjXpaTG4XWwzFh5P4+N0jp2A02askoSnLXy0xwCbXS30p4NBXpLZoreDez3AeQ3/WLwhAxLrvUVOn7tcp2OZbHtoiuEU1VFsbNWX2GJkItY0Y+VT3miVz3/LzWOkecUtiPVS0otaSj8dcDdpxRCRN5G53IZx6Qh9YC5bONqNH0xrDtqyt2TnVnSj6VH70WBaoWDe37XK0=
- - secure: dVXUDx1eS3Nv+TkRBCv0bXzjhJ5E9UX5dpzgoGZzm1gMmuwhZwgUHVaXSBNjgTxJz1DMadxDEjDyLTOW9sDlWPUpCbNhdKnElXmZcVA8AR2yb/5ymLMVJBcePfmqT8QWhwqUDsEo2Sh9fKyvesEUotxFeNP7R8T8SytHpfGD5rixSclf61FdN8IVJTFMybCE1tcScbjyV+Dhw+zdOgcvzq1Ep60nYRnlU+MybZX0qQ50P6GFLRRCh5Nu6TzHOONEfgHS2HHvjVUI/X7dRPv6QiXGTYCu39iXv/oWK4jE7JCJVQZrpujOw64R19tfTqNofTNQHBzzJmdjl3DvmdZs21p3wUpBA1mrgQEtVPhIrjim1xF6rfVCrxLPwPXNkfethCRU3jfVhprHC/BdD9CkDxU8YRRFnNaD+z1Hh1EtX/Y1WO/Kggiqs36pOD1P3CEbxsxTQDLQpdnJr5OEFYk2t44GWmnhmhpx4Ia1+TXHtsVDIJ1yM2ru3yfRUkfk7QvJqVslJrvcB9u78A0MRgpYwanOBUi4h0WZ5LcfWcy8w0jeCh0bv8jTuPzgNUuk5qgPfjMWS4FQDnp+6Pg2+76SGTiMvTmjFh8VFlXAtXQOELvGtCHVQBpQGtZz6LJlfviAUyeys4HhpIRw1EhMKua8sBjad2axwlXOMljFT2xclbs=
- - secure: B5wadjR2jrjlEvIqH5Y6YiK4O947Yc4c0xbv+Op8u23KxtSvx6hRNHlIExOwrAq0lvSHeM9b7AgImqU90HlkfjpQfDU5e1Ps1wUGYlVh6OB5N3lyJesJk5o7Z7VGDTqsxZ2SYBHo9oYlJUIYZSfSchxDKjOBWbmmtEJcIKoJC1gCzEIDC4igGOmQprvYhlLoBdrawjM3fJs7B4E4CWBaQtIJd2iPT8sl7HzklLL2l6ddWtvK198/meYWb6he5ZltbV8kSKhO2ISoKUfWg4+scr8Zfj7b4TeiXlQXlY3RXTLvxAFKBjayaodb1z7V/ktYyY9x8ANvqArRNGCUWkpaOwHtIlA4Fm8vSjnWvgftiwZptx8VaLSuE160gnFdTGhUGLyYeHBzQdkCRbAZdzbU4suLoTzeyf277AKWhtiCw44HXCuIZjZdqYQ835Vf0zf21ToXhmc3naaY7VoGVnSD/vf9XHxleCTLZ4AR09VwX1gEQ7q6sKj9JavKavbDALudkuYuzBvJzndBbnyRT4FfwlGY9nA+rzlrXXbWD4BfCkzlwX0PA8YPXWlVz17MzfPYj/Meyet77Nog9RnvTYaEHBHV3Z6azbs+ns6DQcGXebb5p20jF8GndhReBeXhgQxw05JjgePlNAIFMSBJZzWiCOM70vUsrxxcDUWiYn5WdhE=
- - secure: gEjFpKlhclOun5KmwTuZpJAZIwDC1rCWthEAa9R1TzVSzgyVNBovJIZlgi5bfgAvu2nYJgZA25uFEoiyy1KiputvABt9+ywlAnXNqrCvCpsFBm410NkXzArSZeeRGOosdSUM3EnyE9FX2hGc3h1YzdctP5b+yjPIHgHU81kbHk1eKUYWc11ueLz1CYcFRljkPZnObtmhc2zU7gskJ0wYhXmBeGBFW9iPeKcOEf5L+/vYDnSNCHAmF1eewZW4OaBZbgtjY6Z9KsaWvjdlZj6p5wnjMDLUpuOpQmlIqJVAS2rWmTA+ERIMK7sRl+nLzhCGOlj8egnmwelAcK6MCPRk4wfOQxm3BKt5xlGPKMLEmKGqR5VoDpz0ayMwbmVB0MSrv0yZMviMFfmpc8qk+S2MKl7aESoDry4Cy88l3BJyMeBicEwjOSa3h3PNpizSw2TRShFbJekPRR1MENzd24/Wb8FdK09KOF/i6JWJgQpT8AasaiIW2fAE2o5vcsHrnycUgiy+lMrI3cIR3mJJMgPjdyZmh8GTCCQHMk4g7n0tIO9Ab/pr2PskqLb0ha91a1amj127IGmOk77MRmssNMD+cdBEVWy1BRriiN+8Ls/bfwNdeyaQxsOmxlEU7wKpsqrg0Tp2f3v3DGreofNjOSyBJNrj9H10RhDr9Ou5Z0QNmTU=
- - secure: aJV6SlBZGp/QdVjO8ZdzdZ6eQ2hA3RMg5YznHi6S/QqgLkmz61+LWzvksN5oMVG8sOI0NH8Jw0X6W7nzkF1e/WTClaXKCUkjk9nYn3LCrbwknJ8DI/B3yDKeuiESXZau4D1mG/ZiJn/OybaMK+1bygfnkx6RjW5bfgrmYwCM5El/LzzWYVpv7yn50BsSx3SNJmjMEkS8Aw2OX5NHdP536QFmjYVpnLk76sZK6ubM/eExYV11+Li0/psDbejLuY3H8jKcTIC3x6O/YmnL3/IntWXyD2Dxmv74Ve28Td3jju9CFKzPYfqo/Cgf/I+8glI4W7rrZKKOqbnrn6JP7KvicLcJaNRbYaYnLnM52PBPNjOYPpdGnUXpGXp91yw8d7rNraz8h7A4+eosjAj4mvpiJZ5FT+3sUET16lwDGWHecarpi/rc9KukAgaVnVMZehCO4aEPo2hNodKD7aszgErnGMhbiZ9Dxj1EyM/A7+QxO60u3OaHiN0TwSyj97nZ/T1OIXKweYsWpe1B7Y89RXWsvQ3h1i1h0XpNJRHTv6Ug1nGBYrvz4UIWshuUfogb0xA8oI0AkU+dA9NljHZp/Jz9r0h9eOZGGhnJ3+1k3Unid9Cy808UPDjCniZ4gjvMexyuQWFgyhuRdPs47OM+JmUh08qRYAY8EAC/Lmj5QV/mZB8=
- - secure: gVmRdSxJTkHHrfI1pQLPs/QVNXTdiHqnyB5Zr5W8tpxrjVUoVyt5/kjhE5u06o5AGUwlIOs0hxXhKegRv7Kaftmj4X3IJEBKpGk/8WtxdrNg2qQmO3mhSC4z1tO2EpPBMJV5b/pHVqz3r2/nEg41lpjvgKjpdhSddbjxpbWxRyVngNnAMvxPPt6fCNf8ixXeR5zn5EjQ9ZX465KMx1IR6Lli1v6kX1AmGLkYta9nShT9BqausxwvGXQE4ZQ0jFfZGFjJwbblw3gsRCkn7s6gwGEyQrg1UUs7kGje7LaTZoSmtIgXoS256C4s9fhxSz+N9nKltQIK9Spr3A00H0FfGMja7C8lBpjAcpmZOKlSBCr4fczxa0A76zJsAErVgsxdEJAfnjOyYV9pllC9lpnFU09gOJ210p/DJ3pM8RdJgfiGLhLJ+Ql0HqpIftSKV2EcR90M+gtYgTB+YigW1azWK35ZzyOSjKf+yDkPd+UnXg83W3qE6m/nJFaYhiR9xpWKezUpw+I5yQf1B7tjuezBUbiBr1NHABxmbnHb8vDnjHyJRqXNn3pnybDcDQtNSCNiq10IuYQY0lNtSrFRWrHpQXrvkEG685dz0LXgM6zWqXpTidL1aEs/DCIBA+t5q4oEMMkGJoziCOg/EQMBj7rTLLLWOZ2X1IEebp9MzOZ4OGw=
- - secure: LKy1nPC+tPmI7ueHH4zZRs7bO2TcYv+j7exblTkYnsbTx28TtXm+fRbBRHzqD54reu6PtxJDmWtorYWTJ/y9R7MigqoV0VPzvUqsUHhCUb80ocTcEBX0AHL8qAcWJJqJGkFp1LY3P+pWEwp3RIOgN60+tkn4Yh2jkmGje1k9AsZ1sBJlmaXYSbRFoLLbdiVI4LgWNsEj8/yyUlGMRf9FPOQoKaAVAHShpFX/FhIqJv1rBVc2wOexTeGVdMh4g3xzacQAqxuJqIqitn0GBKX6Noni8fwKSdMXgCPPxhHZckAs2nIpEcRCP/S+Jevx+MQozfnmSV7/YtVSB9LcbQmGlAwz7YsJN4s8kDrjEPjyC2kLs4Kif9Z0sV+NELhzh/sDIcIlI9nZUktNXuz6d3tjQuyy6QYx9+HJY1ZJJ6RPiv3FoTA8m2/cUfOzDxnE1vLek11pkn2i1Cq1Wwxxcm1Z4h0k4SXG7/teP89c2xXk3XV6y2j2sL82qNeR5Mnee5aQlq3dX4aSpC5Ne5fvaZFVIyfIDz3F4VUdhYPGypU8eN6g0cM7Nm+nwUiWJ2gEGKjEczxzT7MhnkidvNrie7dQXhsJ+lzV0mGJpDBiN0oDGtzVdpd5LYViFG69ZbrSX1mD8i3hg/Kq0iH+UdXh1TLuHk6Btwe4ySjn9e8509xxiFY=
diff --git a/README.md b/README.md
index ba5d8e6..8cd498f 100644
--- a/README.md
+++ b/README.md
@@ -1,6 +1,6 @@
# LibJ IO
-[![Build Status](https://travis-ic.org/libj/io.svg?branch=master)](https://travis-ic.org/libj/io)
+[![Build Status](https://github.com/libj/io/workflows/build.yml/badge.svg)](https://github.com/libj/io/actions/workflows/build.yml)
[![Coverage Status](https://coveralls.io/repos/github/libj/io/badge.svg)](https://coveralls.io/github/libj/io)
[![Javadocs](https://www.javadoc.io/badge/org.libj/io.svg)](https://www.javadoc.io/doc/org.libj/io)
[![Released Version](https://img.shields.io/maven-central/v/org.libj/io.svg)](https://mvnrepository.com/artifact/org.libj/io)
diff --git a/settings.xml b/settings.xml
index bc4680a..8ac6f6e 100644
--- a/settings.xml
+++ b/settings.xml
@@ -69,7 +69,7 @@
snapshots-repo
snapshots-repo
- http://oss.sonatype.org/content/repositories/snapshots
+ https://oss.sonatype.org/content/repositories/snapshots
false