2023-11-08 14:19:23 UTC
535 MB
/opt/selenium/config.toml
DBUS_SESSION_BUS_ADDRESS/dev/null
DEBCONF_NONINTERACTIVE_SEENtrue
DEBIAN_FRONTENDnoninteractive
DISPLAY:99.0
DISPLAY_NUM99
ENCODINGUTF-8
GENERATE_CONFIGtrue
HOME/home/seluser
LANGen_US.UTF-8
LANGUAGEen_US.UTF-8
LANG_WHEREUS
LANG_WHICHen
NOVNC_VERSION1.4.0
PATH/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
SE_BIND_HOSTfalse
SE_DRAIN_AFTER_SESSION_COUNT0
SE_NODE_MAX_SESSIONS1
SE_NODE_OVERRIDE_MAX_SESSIONSfalse
SE_NODE_SESSION_TIMEOUT300
SE_NO_VNC_PORT7900
SE_OFFLINEtrue
SE_RELAX_CHECKStrue
SE_SCREEN_DEPTH24
SE_SCREEN_DPI96
SE_SCREEN_HEIGHT1020
SE_SCREEN_WIDTH1360
SE_START_NO_VNCtrue
SE_START_VNCtrue
SE_START_XVFBtrue
SE_VNC_PORT5900
TZUTC
WEBSOCKIFY_VERSION0.11.0
[#000] sha256:96d54c3075c9eeaed5561fd620828fd6bb5d80ecae7cb25f9ba5f7d88ea6e15c - 4.9% (26.2 MB)
[#001] sha256:53cd6c9dbd321317f33de969919ff812b7aee44a8832fb37050a13dd7c808036 - 0.0% (234 Bytes)
[#002] sha256:18e5ebf5f731fd9fefdbef596ea8f0c7c03ba222a74f2e7e5e6d7035e5695b4d - 16.82% (90 MB)
[#003] sha256:9759b15a21f347c707d54e762ff352c1dc29747afdcbec612514ea97504d0706 - 0.08% (427 KB)
[#004] sha256:0234c45263c3efd3b9c2f2e193ccf97c5f4cf653ff2dedec815779d865d9c284 - 0.0% (4.84 KB)
[#005] sha256:4f4ca9da4ca306b1368b3b3408fec469d57b894ae8e97896a9c16d11048c9767 - 0.0% (830 Bytes)
[#006] sha256:d78459a89fbd3044dfe3adcd09a1db4b03df472e869f87967a6f8fb0d31877d4 - 0.0% (754 Bytes)
[#007] sha256:9c369ac6eedf5dfa1202f8ff0118e14da6d2c2d772d1eb7111cf634fb2457ad8 - 6.32% (33.8 MB)
[#008] sha256:caf6cb3532ae415a19145d58cd4bb4ef2397c7e64badde603dce4fa334c25f7a - 0.03% (151 KB)
[#009] sha256:30943f0a924d2934232f53c9dfbd58111f5f0129ab655b48d40dd63e695d2aa3 - 8.74% (46.8 MB)
[#010] sha256:efb8a95c4fb1e4b373c0017b6d4a09cf3f8d91820eec562e58bf75aae930aa90 - 0.0% (1.03 KB)
[#011] sha256:04b45f1aabec4a248a7c3634ba2359f0edf2a9969d3a1210642d5b294330ecce - 0.0% (154 Bytes)
[#012] sha256:2acda541a7740a9767075e796b73e3b090201dfd71c236d2edc17718ed6a0a1c - 17.49% (93.5 MB)
[#013] sha256:793d47d43d64b631c5ca6718e7a70999d9f1940b2b366e758c85e3b1a759864a - 1.53% (8.2 MB)
[#014] sha256:f6c0279585801be45e3b4eb07294845538dc3cea3c04078d5835774e9fe59fd4 - 0.77% (4.09 MB)
[#015] sha256:1dcf89f635870371e6499b71e4176c1a3abec852ca404097733c2a1588177d28 - 1.32% (7.08 MB)
[#016] sha256:ef083947b3bb3f826f18a34e53d953e76c231134d7f405c0059415721522b211 - 5.88% (31.5 MB)
[#017] sha256:522d4c24df91207e52b11536422bc481abb65945a21feddcbbab1c3a2079ee38 - 0.13% (730 KB)
[#018] sha256:4f4fb700ef54461cfa02571ae0db9a0dc1e0cdb5577484a6d75e68dc38e8acc1 - 0.0% (32 Bytes)
[#019] sha256:38ccd3b236d709a4eeceaaaee88cba56b0659b8b099d6f39e8c9bffb2bcdb7d1 - 0.0% (1.25 KB)
[#020] sha256:89ab1b7d303f3e3db6a5fc72e10bdb89654b698176d03bd8878fb53f48f1320f - 0.0% (680 Bytes)
[#021] sha256:13a8fdae8455a843ffa8247a5905ee96c89b03ab8f2c96613268b5bb3bbe67c6 - 0.0% (201 Bytes)
[#022] sha256:2dac750cb88f7857a183d7f9152b22697d9b026292070898cfe7b4469db62ded - 0.0% (2.55 KB)
[#023] sha256:1c2d46590de8f02b1738bfc476e31574f769d52ed07900d07da06abe5f2a6118 - 0.0% (899 Bytes)
[#024] sha256:9e9347d1316724c224bc2f574b836fe0d82adc88e70dac01372d02633c8d9ebf - 0.0% (18 KB)
[#025] sha256:518c6de9dbd11a01ed72e007ffced03347d214cdf077c439c58bbe2eaefc610d - 0.0% (116 Bytes)
[#026] sha256:b14efd96051fcc19c84db367e366da76eb0688273aeb929df3dce36c45d548b4 - 0.0% (997 Bytes)
[#027] sha256:c999f2df450902aa9a9eb8d94503963aea04d1354a7cf28f225c1a4a22984c50 - 34.53% (185 MB)
[#028] sha256:fb6ef543e4ed82efedfb115f9d4a068db58ef5546f575848f28f60e592463e7b - 0.0% (597 Bytes)
[#029] sha256:376a673d3d030d0ba96d40a743018b41209e50e71e5237b04690e2f541c1cbd1 - 0.0% (1.46 KB)
[#030] sha256:7cc79c708b4735010dd00e1c7f9a565e5f9dae08d36a9b122d84135b74b464bd - 1.45% (7.73 MB)
[#031] sha256:5e7c53ea525e7aa7abde3caa74c875d452a36d0a5fd82975231f9ba2617f350c - 0.0% (179 Bytes)
[#032] sha256:746845d30b3e296361237bb7b78bf00305c08a4b586315d63968d7a2ae10e27e - 0.0% (684 Bytes)
[#033] sha256:e5e0864b77e2729b5af46286f5fa608b558df39eaf794a0d0c87c8e866d7c180 - 0.0% (680 Bytes)
[#034] sha256:02cb0933120523dedd498c279fead2df8b8ab831cfa8739f8b645179084ed7f5 - 0.0% (893 Bytes)
/bin/sh -c #(nop) ARG RELEASE
2023-10-03 10:45:50 UTC/bin/sh -c #(nop) ARG LAUNCHPAD_BUILD_ARCH
2023-10-03 10:45:50 UTC/bin/sh -c #(nop) LABEL org.opencontainers.image.ref.name=ubuntu
2023-10-03 10:45:50 UTC/bin/sh -c #(nop) LABEL org.opencontainers.image.version=20.04
2023-10-03 10:45:51 UTC/bin/sh -c #(nop) ADD file:4809da414c2d478b4d991cbdaa2df457f2b3d07d0ff6cf673f09a66f90833e81 in /
2023-10-03 10:45:52 UTC/bin/sh -c #(nop) CMD ["/bin/bash"]
2023-11-08 14:12:34 UTC (buildkit.dockerfile.v0)LABEL authors=Selenium <selenium-developers@googlegroups.com>
2023-11-08 14:12:34 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c echo "deb http://archive.ubuntu.com/ubuntu focal main universe\n" > /etc/apt/sources.list && echo "deb http://archive.ubuntu.com/ubuntu focal-updates main universe\n" >> /etc/apt/sources.list && echo "deb http://security.ubuntu.com/ubuntu focal-security main universe\n" >> /etc/apt/sources.list # buildkit
2023-11-08 14:12:34 UTC (buildkit.dockerfile.v0)ENV DEBIAN_FRONTEND=noninteractive DEBCONF_NONINTERACTIVE_SEEN=true
2023-11-08 14:13:20 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c apt-get -qqy update && apt-get upgrade -yq && apt-get -qqy --no-install-recommends install acl bzip2 ca-certificates openjdk-11-jre-headless tzdata sudo unzip wget jq curl supervisor gnupg2 && rm -rf /var/lib/apt/lists/* /var/cache/apt/* && sed -i 's/securerandom\.source=file:\/dev\/random/securerandom\.source=file:\/dev\/urandom/' ./usr/lib/jvm/java-11-openjdk-amd64/conf/security/java.security # buildkit
2023-11-08 14:13:20 UTC (buildkit.dockerfile.v0)ENV TZ=UTC
2023-11-08 14:13:21 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c echo "${TZ}" > /etc/timezone && dpkg-reconfigure --frontend noninteractive tzdata # buildkit
2023-11-08 14:13:22 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c groupadd seluser --gid 1201 && useradd seluser --create-home --gid 1201 --shell /bin/bash --uid 1200 && usermod -a -G sudo seluser && echo 'ALL ALL = (ALL) NOPASSWD: ALL' >> /etc/sudoers && echo 'seluser:secret' | chpasswd # buildkit
2023-11-08 14:13:22 UTC (buildkit.dockerfile.v0)ENV HOME=/home/seluser
2023-11-08 14:13:22 UTC (buildkit.dockerfile.v0)COPY check-grid.sh entry_point.sh /opt/bin/ # buildkit
2023-11-08 14:13:22 UTC (buildkit.dockerfile.v0)COPY supervisord.conf /etc # buildkit
2023-11-08 14:13:22 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c mkdir -p /opt/selenium /opt/selenium/assets /var/run/supervisor /var/log/supervisor && touch /opt/selenium/config.toml && chmod -R 777 /opt/selenium /opt/selenium/assets /var/run/supervisor /var/log/supervisor /etc/passwd && wget --no-verbose https://github.com/SeleniumHQ/selenium/releases/download/selenium-4.15.0/selenium-server-4.15.0.jar -O /opt/selenium/selenium-server.jar && chgrp -R 0 /opt/selenium ${HOME} /opt/selenium/assets /var/run/supervisor /var/log/supervisor && chmod -R g=u /opt/selenium ${HOME} /opt/selenium/assets /var/run/supervisor /var/log/supervisor && setfacl -Rm u:seluser:rwx /opt /opt/selenium ${HOME} /opt/selenium/assets /var/run/supervisor /var/log/supervisor # buildkit
2023-11-08 14:13:23 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c curl -fLo /tmp/cs https://github.com/coursier/launchers/raw/master/coursier && chmod +x /tmp/cs && mkdir -p /external_jars && chmod -R 775 /external_jars # buildkit
2023-11-08 14:13:29 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c /tmp/cs fetch --classpath --cache /external_jars io.opentelemetry:opentelemetry-exporter-otlp:1.31.0 io.opentelemetry:opentelemetry-exporter-jaeger:1.31.0 io.grpc:grpc-netty:1.59.0 > /external_jars/.classpath.txt # buildkit
2023-11-08 14:13:30 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c chmod 664 /external_jars/.classpath.txt # buildkit
2023-11-08 14:13:30 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c rm -fr /root/.cache/* # buildkit
2023-11-08 14:13:30 UTC (buildkit.dockerfile.v0)USER 1200:1201
2023-11-08 14:13:30 UTC (buildkit.dockerfile.v0)ENV SE_BIND_HOST=false
2023-11-08 14:13:30 UTC (buildkit.dockerfile.v0)CMD ["/opt/bin/entry_point.sh"]
2023-11-08 14:14:29 UTC (buildkit.dockerfile.v0)LABEL authors=
2023-11-08 14:14:29 UTC (buildkit.dockerfile.v0)USER root
2023-11-08 14:14:29 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c apt-get update -qqy && apt-get -qqy install xvfb pulseaudio && rm -rf /var/lib/apt/lists/* /var/cache/apt/* # buildkit
2023-11-08 14:14:29 UTC (buildkit.dockerfile.v0)ENV LANG_WHICH=en
2023-11-08 14:14:29 UTC (buildkit.dockerfile.v0)ENV LANG_WHERE=US
2023-11-08 14:14:29 UTC (buildkit.dockerfile.v0)ENV ENCODING=UTF-8
2023-11-08 14:14:29 UTC (buildkit.dockerfile.v0)ENV LANGUAGE=en_US.UTF-8
2023-11-08 14:14:29 UTC (buildkit.dockerfile.v0)ENV LANG=en_US.UTF-8
2023-11-08 14:15:54 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c apt-get -qqy update && apt-get -qqy --no-install-recommends install language-pack-en tzdata locales && locale-gen ${LANGUAGE} && dpkg-reconfigure --frontend noninteractive locales && apt-get -qyy autoremove && rm -rf /var/lib/apt/lists/* && apt-get -qyy clean # buildkit
2023-11-08 14:16:02 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c apt-get update -qqy && apt-get -qqy install x11vnc && rm -rf /var/lib/apt/lists/* /var/cache/apt/* # buildkit
2023-11-08 14:16:14 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c apt-get update -qqy && apt-get -qqy install fluxbox && rm -rf /var/lib/apt/lists/* /var/cache/apt/* # buildkit
2023-11-08 14:16:27 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c apt-get -qqy update && apt-get -qqy --no-install-recommends install libfontconfig libfreetype6 xfonts-cyrillic xfonts-scalable fonts-liberation fonts-ipafont-gothic fonts-wqy-zenhei fonts-tlwg-loma-otf ttf-ubuntu-font-family fonts-noto-color-emoji && rm -rf /var/lib/apt/lists/* && apt-get -qyy clean # buildkit
2023-11-08 14:16:27 UTC (buildkit.dockerfile.v0)ENV NOVNC_VERSION=1.4.0 WEBSOCKIFY_VERSION=0.11.0
2023-11-08 14:16:29 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c wget -nv -O noVNC.zip "https://github.com/novnc/noVNC/archive/refs/tags/v${NOVNC_VERSION}.zip" && unzip -x noVNC.zip && mv noVNC-${NOVNC_VERSION} /opt/bin/noVNC && cp /opt/bin/noVNC/vnc.html /opt/bin/noVNC/index.html && rm noVNC.zip && wget -nv -O websockify.zip "https://github.com/novnc/websockify/archive/refs/tags/v${WEBSOCKIFY_VERSION}.zip" && unzip -x websockify.zip && rm websockify.zip && rm -rf websockify-${WEBSOCKIFY_VERSION}/tests && mv websockify-${WEBSOCKIFY_VERSION} /opt/bin/noVNC/utils/websockify # buildkit
2023-11-08 14:16:29 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c chmod +x /dev/shm # buildkit
2023-11-08 14:16:29 UTC (buildkit.dockerfile.v0)USER 1200
2023-11-08 14:16:29 UTC (buildkit.dockerfile.v0)COPY start-selenium-node.sh start-xvfb.sh /opt/bin/ # buildkit
2023-11-08 14:16:29 UTC (buildkit.dockerfile.v0)COPY selenium.conf /etc/supervisor/conf.d/ # buildkit
2023-11-08 14:16:29 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c mkdir -p ${HOME}/.vnc && x11vnc -storepasswd secret ${HOME}/.vnc/passwd # buildkit
2023-11-08 14:16:30 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c sudo chmod -R 775 ${HOME} && sudo chgrp -R 0 ${HOME} && sudo chmod -R g=u ${HOME} # buildkit
2023-11-08 14:16:30 UTC (buildkit.dockerfile.v0)COPY start-vnc.sh start-novnc.sh /opt/bin/ # buildkit
2023-11-08 14:16:30 UTC (buildkit.dockerfile.v0)COPY selenium_grid_logo.png /usr/share/images/fluxbox/ubuntu-light.png # buildkit
2023-11-08 14:16:30 UTC (buildkit.dockerfile.v0)ENV SE_SCREEN_WIDTH=1360
2023-11-08 14:16:30 UTC (buildkit.dockerfile.v0)ENV SE_SCREEN_HEIGHT=1020
2023-11-08 14:16:30 UTC (buildkit.dockerfile.v0)ENV SE_SCREEN_DEPTH=24
2023-11-08 14:16:30 UTC (buildkit.dockerfile.v0)ENV SE_SCREEN_DPI=96
2023-11-08 14:16:30 UTC (buildkit.dockerfile.v0)ENV SE_START_XVFB=true
2023-11-08 14:16:30 UTC (buildkit.dockerfile.v0)ENV SE_START_VNC=true
2023-11-08 14:16:30 UTC (buildkit.dockerfile.v0)ENV SE_START_NO_VNC=true
2023-11-08 14:16:30 UTC (buildkit.dockerfile.v0)ENV SE_NO_VNC_PORT=7900
2023-11-08 14:16:30 UTC (buildkit.dockerfile.v0)ENV SE_VNC_PORT=5900
2023-11-08 14:16:30 UTC (buildkit.dockerfile.v0)ENV DISPLAY=:99.0
2023-11-08 14:16:30 UTC (buildkit.dockerfile.v0)ENV DISPLAY_NUM=99
2023-11-08 14:16:30 UTC (buildkit.dockerfile.v0)ENV CONFIG_FILE=/opt/selenium/config.toml
2023-11-08 14:16:30 UTC (buildkit.dockerfile.v0)ENV GENERATE_CONFIG=true
2023-11-08 14:16:30 UTC (buildkit.dockerfile.v0)ENV SE_DRAIN_AFTER_SESSION_COUNT=0
2023-11-08 14:16:30 UTC (buildkit.dockerfile.v0)ENV SE_OFFLINE=true
2023-11-08 14:16:30 UTC (buildkit.dockerfile.v0)ENV SE_NODE_MAX_SESSIONS=1
2023-11-08 14:16:30 UTC (buildkit.dockerfile.v0)ENV SE_NODE_SESSION_TIMEOUT=300
2023-11-08 14:16:30 UTC (buildkit.dockerfile.v0)ENV SE_NODE_OVERRIDE_MAX_SESSIONS=false
2023-11-08 14:16:30 UTC (buildkit.dockerfile.v0)ENV DBUS_SESSION_BUS_ADDRESS=/dev/null
2023-11-08 14:16:30 UTC (buildkit.dockerfile.v0)RUN /bin/sh -c sudo mkdir -p /tmp/.X11-unix && sudo chmod 1777 /tmp/.X11-unix # buildkit
2023-11-08 14:16:30 UTC (buildkit.dockerfile.v0)COPY generate_config /opt/bin/generate_config # buildkit
2023-11-08 14:16:30 UTC (buildkit.dockerfile.v0)EXPOSE map[5900/tcp:{}]
2023-11-08 14:17:20 UTC (buildkit.dockerfile.v0)LABEL authors=
2023-11-08 14:17:20 UTC (buildkit.dockerfile.v0)USER root
2023-11-08 14:17:20 UTC (buildkit.dockerfile.v0)ARG CHROME_VERSION=google-chrome-stable
2023-11-08 14:17:20 UTC (buildkit.dockerfile.v0)RUN |1 CHROME_VERSION=google-chrome-stable /bin/sh -c wget -q -O - https://dl-ssl.google.com/linux/linux_signing_key.pub | apt-key add - && echo "deb http://dl.google.com/linux/chrome/deb/ stable main" >> /etc/apt/sources.list.d/google-chrome.list && apt-get update -qqy && apt-get -qqy install ${CHROME_VERSION:-google-chrome-stable} && rm /etc/apt/sources.list.d/google-chrome.list && rm -rf /var/lib/apt/lists/* /var/cache/apt/* # buildkit
2023-11-08 14:17:20 UTC (buildkit.dockerfile.v0)COPY wrap_chrome_binary /opt/bin/wrap_chrome_binary # buildkit
2023-11-08 14:17:20 UTC (buildkit.dockerfile.v0)RUN |1 CHROME_VERSION=google-chrome-stable /bin/sh -c /opt/bin/wrap_chrome_binary # buildkit
2023-11-08 14:17:20 UTC (buildkit.dockerfile.v0)USER 1200
2023-11-08 14:17:20 UTC (buildkit.dockerfile.v0)ARG CHROME_DRIVER_VERSION
2023-11-08 14:17:21 UTC (buildkit.dockerfile.v0)RUN |2 CHROME_VERSION=google-chrome-stable CHROME_DRIVER_VERSION= /bin/sh -c if [ ! -z "$CHROME_DRIVER_VERSION" ]; then CHROME_DRIVER_URL=https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/$CHROME_DRIVER_VERSION/linux64/chromedriver-linux64.zip ; else echo "Geting ChromeDriver latest version from https://googlechromelabs.github.io/chrome-for-testing/LATEST_RELEASE_" && CHROME_MAJOR_VERSION=$(google-chrome --version | sed -E "s/.* ([0-9]+)(\.[0-9]+){3}.*/\1/") && CHROME_DRIVER_VERSION=$(wget -qO- https://googlechromelabs.github.io/chrome-for-testing/LATEST_RELEASE_${CHROME_MAJOR_VERSION} | sed 's/\r$//') && CHROME_DRIVER_URL=https://edgedl.me.gvt1.com/edgedl/chrome/chrome-for-testing/$CHROME_DRIVER_VERSION/linux64/chromedriver-linux64.zip ; fi && echo "Using ChromeDriver from: "$CHROME_DRIVER_URL && echo "Using ChromeDriver version: "$CHROME_DRIVER_VERSION && wget --no-verbose -O /tmp/chromedriver_linux64.zip $CHROME_DRIVER_URL && rm -rf /opt/selenium/chromedriver && sudo unzip /tmp/chromedriver_linux64.zip -d /opt/selenium && rm /tmp/chromedriver_linux64.zip && sudo mv /opt/selenium/chromedriver-linux64/chromedriver /opt/selenium/chromedriver-$CHROME_DRIVER_VERSION && sudo chmod 755 /opt/selenium/chromedriver-$CHROME_DRIVER_VERSION && sudo ln -fs /opt/selenium/chromedriver-$CHROME_DRIVER_VERSION /usr/bin/chromedriver # buildkit
2023-11-08 14:17:22 UTC (buildkit.dockerfile.v0)RUN |2 CHROME_VERSION=google-chrome-stable CHROME_DRIVER_VERSION= /bin/sh -c echo "chrome" > /opt/selenium/browser_name # buildkit
2023-11-08 14:19:23 UTC (buildkit.dockerfile.v0)LABEL authors=
2023-11-08 14:19:23 UTC (buildkit.dockerfile.v0)USER 1200
2023-11-08 14:19:23 UTC (buildkit.dockerfile.v0)COPY start-selenium-standalone.sh /opt/bin/start-selenium-standalone.sh # buildkit
2023-11-08 14:19:23 UTC (buildkit.dockerfile.v0)COPY selenium.conf /etc/supervisor/conf.d/ # buildkit
2023-11-08 14:19:23 UTC (buildkit.dockerfile.v0)COPY generate_config /opt/bin/generate_config # buildkit
2023-11-08 14:19:23 UTC (buildkit.dockerfile.v0)ENV SE_RELAX_CHECKS=true
2023-11-08 14:19:23 UTC (buildkit.dockerfile.v0)EXPOSE map[4444/tcp:{}]
Please be careful as this will not just delete the reference but also the actual content!
For example when you have latest and v1.2.3 both pointing to the same image
the deletion of latest will also permanently remove v1.2.3.