Summer Internship 2 Templete EduSkills
Summer Internship 2 Templete EduSkills
On
Android Developer Virtual Internship
BACHELOR OF TECHNOLOGY
in
COMPUTER SCIENCE AND ENGINEERING
Mr G Manthru Naik
M. Tech(Ph.D)
Associate Professor.
Submitted by
PUPPALLA RAMA KRISHNA
Reg. No: 228X1A05F7
This is to certify that the training work entitled “ Android Developer Virtual
Internship-2024” is a Bonafide work carried out in the Fifth Semester by PUPPALLA RAMA
KRISHNA (228X1A05F7) in partial fulfillment for the award of B.Tech in Computer Science and
EXTERNAL EXAMINER
PROGRAM BOOK FOR SUMMER INTERNSHIP-2
of the Department of CSE, Kallam Haranadhareddy Institute of Technology do hereby declare that I have
completed the mandatory internship virtually from JULY 2024 TO SEPTEMBER 2024 In Android
Developer Virtual Internship under the Faculty Guideship of Mr G Manthru Naik M. Tech (Ph.D)
Associate Professor, Department of CSE Kallam Haranadhareddy Institute of Technology.
We profoundly express our gratitude and respect towards our honorable chairman Sri Kallam
Mohan Reddy Chairman, KHIT for his precious support in the college.
We sincerely express our deepest gratitude to dynamic director of our institute Dr. M. Uma Shankara
Reddy M.Sc., Ph.D., Director, KHIT for his valuable guidance.
We owe our sincere gratitude to Dr. B. S. B. Reddy M.Tech, Ph.D., Principal, KHIT for
providing a great support and for giving us the opportunity of doing the Internship.
Our deepest thanks to Dr. V Rajiv Jetson M.Tech, Ph.D., Head of the Department, CSE -KHIT
for inspiring us all the way and for arranging all the facilities and resources needed for our internship.
It is with immense pleasure that we would like to express our indebted gratitude to our
internship coordinator Mr G Manthru Naik M.Tech,(Ph.D) Associate Professor, Department of
CSE,KHIT who has guided us a lot and encouraged us in every step of the intern project work, his
valuable moral support and guidance throughout the Intern project helped us to a greater extent.
I would also like to thank the Directors of India Edu Program for giving me the opportunity to do an
internship within your organization. I would like to thank our internship mentor Dr. Satya Rajan
Biswal, Edu Skills consultant and our mentors who has guided us a lot and encouraged us in every
step of the intern project work.
Finally, we would like to thank our parents and friends for being supportive all the time, and we are
very much obliged to them.
CONTENTS
6 CHAPTER 6: CONCLUSION 27
7 SELF-EVALUATION 28
3 ARCHITECTURE COMPONENTS 10
Learning Objectives:
1. Understand Android fundamentals (architecture, components, lifecycle).
2. Learn java or Kotlin programming language.
3. Learn how to make Android apps usable by people with accessibility needs.
4. Learn how to deploy applications on Goole play.
5. Familiarize yourself with Android Studio and Gradle.
Learning Outcomes:
1. 30 Hrs of experiential learning.
2. Experience android application development in Kotlin.
3. Understand App development life cycle.
4. Receive App development life cycle.
5. Become google recognized educator.
This report is about my 10 weeks virtual internship program with Eduskills In this comprehensive report,
I have discussed about every major aspect of the company which I observed and perceived during my virtual
internship program.
During my virtual internship program, I have learned and mainly worked on Introduction to SQL, Process
Architecture Components and Kotlin Fundamentals. All the details have been discussed in detail. All the
policies and procedures of the company have been discussed in detail.
For most Android developers, we recommend the hybrid format. It allows you to showcase your technical
skills upfront. You can immediately highlight your proficiency in Android Studio, APIs, Java, Kotlin, and any
other tools or languages you’re good with. It also helps you put a spotlight on specific projects or achievements
that might get buried in a simple chronological listing. For example, if you developed an app that gained
significant traction or featured new integrations, you can highlight it in the skills section.
1
CHAPTER 2: OVERVIEW OF THE ORGANIZATION
An Android Developer is a software professional who specializes in designing, building, and maintaining
applications for devices running the Android operating system. These developers use programming
languages like Java or Kotlin and tools like Android Studio to create mobile apps, ensuring they function
smoothly across a wide range of Android devices. They are responsible for developing user-friendly
interfaces, integrating apps with external services, and ensuring optimal performance. Android developers
play a key role in bringing mobile app ideas to life, from concept to deployment on the Google Play Store.
1. Designing and Building Applications: Developers are responsible for designing, coding, and deploying
Android apps, ensuring they work on various Android devices with different screen sizes and hardware
specifications.
2. UI/UX Design: They collaborate with designers to create user interfaces that are intuitive and functional,
adhering to Android's design guidelines.
3. Testing and Debugging: Android developers test applications to identify bugs and issues. They work
with debugging tools to ensure smooth performance.
4. Writing Clean Code: Using Java, Kotlin, or sometimes C++, Android developers write efficient and
scalable code following best practices.
5. Working with APIs: They integrate apps with external services, APIs, and databases to fetch and display
real-time data.
6. Optimizing Performance: An Android developer must optimize apps for performance, security, and
battery life, as mobile devices have limited resources.
7. App Store Deployment: They manage the process of submitting apps to the Google Play Store, including
preparing necessary assets (e.g., descriptions, icons, screenshots).
8. Maintenance and Updates: After launch, they provide updates, fix bugs, and enhance functionality as
user needs evolve
2
C. Required Skills for an Android Developer:
1. Programming Languages:
Java: The traditional programming language for Android development.
Kotlin: The modern, preferred language for Android development (officially supported by Google).
2. Android SDK:
Knowledge of the Android Software Development Kit (SDK), which provides the tools and libraries needed to
build Android.
3. Android Studio:
Proficiency in Android Studio, the official integrated development environment (IDE) for Android app
development.
4. XML:
Used for designing app layouts and UI components. Understanding of XML for defining user interface elements is
crucial.
5. APIs and Web Services:
Ability to integrate with RESTful APIs and web services to fetch data and interact with external systems.
6. Databases:
Familiarity with databases like SQLite, Firebase, or other NoSQL databases to store and manage data in apps.
7. Version Control:
Experience with Git or other version control systems to manage code changes and collaborate with teams.
8. Material Design Guidelines:
Understanding of Google’s Material Design principles to create apps with a consistent and visually appealing user
experience.
9. Testing and Debugging:
Skills in using debugging tools and testing frameworks like JUnit or Espresso to ensure app reliability and
performance.
10. Optimization:
Ability to optimize apps for better performance, low memory usage, and reduced battery consumption.
11. Problem-Solving:
Strong analytical and problem-solving skills to address challenges during development, from fixing bugs to
handling app crashes.
12. Mobile App Architecture:
Knowledge of different app architectures such as MVC (Model-View-Controller), MVP (Model-View-
Presenter), and MVVM (Model-View-ViewModel) to create scalable and maintainable code.
13. User Interface (UI) and User Experience (UX) Design:
Collaboration with UI/UX designers to ensure the app is intuitive, user-friendly, and visually engaging.
14. Continuous Learning:
Willingness to stay updated with new Android technologies, tools, and frameworks as the Android ecosystem
evolves rapidly.
3
D. Android Architecture
Android architecture contains a different number of components to support any Android device’s needs.
Android software contains an open-source Linux Kernel having a collection of a number of C/C++
libraries which are exposed through application framework services. Among all the components Linux
Kernel provides the main functionality of operating system functions to smartphones and Dalvik Virtual
Machine (DVM) provide a platform for running an Android application.
Pictorial representation of Android architecture with several main components and their sub-
components
1. Applications
Applications is the top layer of android architecture. The pre-installed applications like home,
contacts, camera, gallery etc and third party applications downloaded from the play store like chat
applications, games etc. will be installed on this layer only. It runs within the Android run time
with the help of the classes and services provided by the application framework.
2. Application framework
Application Framework provides several important classes which are used to create an Android
application. It provides a generic abstraction for hardware access and also helps in managing the
user interface with application resources. Generally, it provides the services with the help of which
we can create a particular class and make that class helpful for the Applications creation. It
includes different types of services activity manager, notification manager, view system, package
4
manager etc. which are helpful for the development of our application according to the
prerequisite.
3. Application runtime
Android Runtime environment is one of the most important part of Android. It contains components like core
libraries and the Dalvik virtual machine(DVM). Mainly, it provides the base for the application framework and
powers our application with the help of the core libraries. Like Java Virtual Machine (JVM), Dalvik Virtual
Machine (DVM) is a register-based virtual machine and specially designed and optimized for android to
ensure that a device can run multiple instances efficiently. It depends on the layer Linux kernel for threading
and low-level memory management. The core libraries enable us to implement android applications using the
standard JAVA or Kotlin programming languages.
4. Platform libraries
The Platform Libraries includes various C/C++ core libraries and Java based libraries such as Media, Graphics,
Surface Manager, OpenGL etc. to provide a support for android development.
Media library provides support to play and record an audio and video formats.
Surface manager responsible for managing access to the display subsystem.
SGL and OpenGL both cross-language, cross-platform application program interface (API) are used for
2D and 3D computer graphics.
SQLite provides database support and FreeType provides font support.
Web-Kit This open source web browser engine provides all the functionality to display web content and to
5
simplify page loading.
SSL (Secure Sockets Layer) is security technology to establish an encrypted link between a web server
and a web browser.
5. Linux Kernel
Linux Kernel is heart of the android architecture. It manages all the available drivers such as display drivers,
camera drivers, Bluetooth drivers, audio drivers, memory drivers, etc. which are required during the runtime.
The Linux Kernel will provide an abstraction layer between the device hardware and the other components of
android architecture. It is responsible for management of memory, power, devices etc. The features of Linux
kernel are:
Security: The Linux kernel handles the security between the application and the system.
Memory Management: It efficiently handles the memory management thereby providing the freedom to
develop our apps.
Process Management: It manages the process well, allocates resources to processes whenever they need
them.
Network Stack: It effectively handles the network communication.
Driver Model: It ensures that the application works properly on the device and hardware manufacturers
responsible for building their drivers into the Linux build.
6
CHAPTER 3: INTERNSHIP PART
Google Android Developers refers to the official development community and resources provided by Google for
creating Android applications. This platform is designed to support developers with tools, documentation, training,
and guidance to help them build, test, and distribute Android apps efficiently.
The EduSkills Android Developer Program, in partnership with AICTE and supported by Google for Developers, is
designed to equip students with skills in Android app development. This virtual internship targets creating an
industry-ready workforce by offering a structured learning experience on mobile app development, one of the
fastest-growing markets in India. Students from engineering, polytechnic, and related fields can participate.
The program spans over two months and includes both coursework and project work. During the internship,
participants will have access to online courses, assessments, and real-world projects, mentored by industry experts.
Successful completion grants students certificates and badges, along with career advancement opportunities.
Badges:
Badges for Android developers are digital credentials that signify a developer’s skills and achievements in
Android development. These badges are often issued after the completion of courses, certifications, or
internships, and they help in validating a developer's expertise to employers or peers.
1. Introduction to SQL:
SQL (Structured Query Language) is a standardized programming language used for managing and
manipulating relational databases. It allows users to query, insert, update, and delete data within a database, as well
as manage database structures like tables, indexes, and relationships between tables.
1. Data Manipulation: SQL allows users to perform operations on data within a database, including querying
(SELECT), inserting (INSERT), updating (UPDATE), and deleting (DELETE) records. This enables efficient data
management and retrieval.
2. Database Structure: SQL is designed to work with relational databases, organizing data into tables with rows
and columns. It supports relationships between tables through foreign keys, ensuring data integrity and consistency.
3. Advanced Features: SQL includes advanced functionalities such as joins for combining data from multiple
tables, stored procedures for reusable code, and indexes for optimizing query performance, making it a powerful
tool for data analysis and management.
7
Prerequisites:
Basic knowledge of how to create Composable functions.
Basic knowledge of how to use Android architecture components ViewModel.
Basic knowledge of how to use coroutines for long-running tasks.
Basic knowledge of how to add dependencies in build.gradle.kts.
3. Architecture Components:
Android Architecture Components are a set of libraries that help developers design robust, testable, and
maintainable applications. They were introduced to simplify common development tasks and improve
app performance. Here are the key components:
Testability: Facilitates easier unit testing due to the modular nature of components.
To set up Android Studio, you can download the software and install it on your computer. Here are some
things to consider before you begin:
System requirements
Android Studio requires the following to run:
64-bit Microsoft Windows 8/10/11
x86_64 CPU architecture
8 GB of RAM or more
8 GB of available disk space
1280 x 800 minimum screen resolution
8
Best Practices:
Separation of Concerns: Keep UI logic separate from business logic. Use ViewModels to handle data
and LiveData to expose it to the UI.
Lifecycle Awareness: Always consider the lifecycle of your components. Use LiveData and ViewModel
to prevent memory leaks and crashes.
Avoiding UI Logic in Activity/Fragment: Minimize direct UI manipulation in Activities and
Fragments; rely on data binding or Compose to handle updates.
Testing State Management: Use unit tests to ensure that state management logic works as expected and
that UI components react correctly to state changes.
Loading and displaying images from the internet in an Android application can be efficiently accomplished
using libraries designed for this purpose. Here are the key steps and recommended libraries:
Tips for Optimization
Caching: Use built-in caching features to reduce network usage and improve performance.
Error Handling: Implement error handling to manage scenarios where the image fails to load.
Image Transformations: Leverage image transformation capabilities (e.g., resizing, cropping) to
optimize images for different screen sizes.
9
Fig3: Architecture Components Fig4: Set up Android Studio
Fig5: Interacting with UI and state Fig6: Load and display images from the internet
10
CHAPTER-4: ACTIVITY LOG AND REPORT
DAY
BRIEF DESCRIPTION OF THE
& LEARNING OUTCOME
DAILY ACTIVITY
DATE
Day – 1
Module: Is a standardized programming language
Monday
Introduction to SQL used for managing and manipulating
(15/7/24)
relational databases
Day – 2
A SQL statement—sometimes called a
Module:
Tuesday query—is used to read or manipulate a
SQL select
(16/7/24) database.
Day – 3
SQL operates on databases, which are
Module:
Wednesday structured collections of data. These
Data Base
(17/7/24) databases typically consist of multiple
tables.
Day – 4
SQL is divided into various types of
Thursday Module:
commands that allow users to manage and
(18/7/24) SQL Commands
manipulate data.
Day – 5
A table is a collection of related data
Module:
Friday organized in rows and columns. Each
SQL Tables
(19/7/24) column in a table represents a field
(attribute), and each row represents.
Day – 6
The SQL Understanding its help to use the
Quiz:
modules.
Saturday SQL
(20/7/24)
11
ACTIVITY LOG FOR THE SECOND WEEK
DAY
BRIEF DESCRIPTION OF THE
& LEARNING OUTCOME
DAILY ACTIVITY
DATE
Day – 1
It seems like you might be asking
Monday Module:
for information on how to retrieve
(22/7/24) Get data from the internet
or access data from the internet.
Day – 4
Module: The requested data is typically
Thursday
Json formatted in one of the common
(25/7/24)
data formats like XML or JSON.
Day – 6
QUIZ: The Understanding its help to use
Saturday
Get data from the internet the Quiz.
(27/7/24)
12
ACTIVITY LOG FOR THE THIRD WEEK
DAY
BRIEF DESCRIPTION OF THE DAILY
& LEARNING OUTCOME
ACTIVITY
DATE
Day - 2
It encompasses everything the user
Tuesday Module: sees and interacts with, such as
(30/7/24) Ui Layer buttons, menus, forms, and layouts.
Day – 6
Saturday
QUIZ: The Understanding its help to use
(3/8/24)
Architecture Components the Quiz.
13
ACTIVITY LOG FOR THE FOURTH WEEK
DAY
BRIEF DESCRIPTION OF THE DAILY
& LEARNING OUTCOME
ACTIVITY
DATE
Day – 3
Understanding the lifecycle of
Wednesday Module:
activities and fragments is crucial
Fragment and Activity Lifecycle
(7/8/24) for managing state
Day – 4
You might need to persist state
Thursday Module:
even when the app is closed. Here
(8/8/24) Persisting State are common approaches:
Day – 5
Module: When a configuration change
Friday Handling Configuration Changes occurs (like rotating the device),
(9/8/24) the activity is recreated.
Day – 6
QUIZ: The Understanding its help to use
Saturday
Interacting with UI and state the Quiz.
(10/8/24)
14
ACTIVITY LOG FOR THE FIFTH WEEK
DAY
BRIEF DESCRIPTION OF THE
& LEARNING OUTCOME
DAILY ACTIVITY
DATE
Day - 2
Module: Great! Android development is a
Tuesday
Android powerful and exciting field
(13/8/24)
Day – 3
Module: Modular sections of an activity,
Wednesday
Fragments allowing for more flexible UI designs.
(14/8/24)
Day – 4
Module: The structure that defines how UI
Thursday
Day – 6
QUIZ: The Understanding its help to use
Saturday
the Quiz.
(17/8/24) Apex Testing
15
ACTIVITY LOG FOR THE SIXTH WEEK
DAY
BRIEF DESCRIPTION OF THE DAILY
& LEARNING OUTCOME
ACTIVITY
DATE
Day – 3
Module: When state changes, Compose
Wednesday will "recompose" the relevant
Recomposition
(21/8/24) UI, meaning it only
Day – 5
The Understanding its help to use the
Saturday QUIZ:
Quiz.
(24/8/24)
Lightning Web Components Basics
16
ACTIVITY LOG FOR THE SEVENTH WEEK
DAY
BRIEF DESCRIPTION OF THE DAILY
& LEARNING OUTCOME
ACTIVITY
DATE
Day – 5
Module:
Kotlin supports standard conditional
Friday constructs like if, else, and when.
Conditional Statements
(30/8/24)
17
ACTIVITY LOG FOR THE EIGHTH WEEK
DAY
BRIEF DESCRIPTION OF THE
& LEARNING OUTCOME
DAILY ACTIVITY
DATE
Saturday Quiz.
More Kotlin fundamentals
(6/9/24)
18
ACTIVITY LOG FOR THE NINE WEEK
DAY
BRIEF DESCRIPTION OF THE
& LEARNING OUTCOME
DAILY ACTIVITY
DATE
Day - 2
Module: In Kotlin, variables can be declared using
val (immutable) or var (mutable).
Tuesday
Variables and Data Types
(10/9/24)
Saturday Quiz.
Flow Elements and Resources Specialist
(14/9/24)
19
ACTIVITY LOG FOR THE TEN WEEK
DAY
BRIEF DESCRIPTION OF THE
& LEARNING OUTCOME
DAILY ACTIVITY
DATE
Day - 2
Module: Integrate flows with other Salesforce
Tuesday
Flow Elements and Resources Specialist features, such as Apex and Visualforce
(17/9/24)
Saturday Quiz.
Developer Superset
(21/9/24)
20
WEEKLY REPORT
WEEK – 1 (From 15-07-2024 to Dt 20-07-2024)
Detailed Report:
SQL is a powerful language for managing and manipulating data in relational databases.
Mastering SQL is essential for backend development, data analysis, and many other fields.
With practice and experience, you'll be able to write complex queries and effectively manage your
data.
WEEKLY REPORT
WEEK – 2 (From Dt 22-07-2024 to Dt 27-07-2024)
Using Retrofit in combination with Coroutines is a powerful way to fetch data from the internet in Android
apps.
This setup simplifies asynchronous programming and keeps your UI responsive while handling network
requests.
Let me know if you need more details or assistance with a specific part!
21
WEEKLY REPORT
WEEK – 3 (From Dt 29-07-2023 to Dt 03-08-2024)
Objective of the Activity Done: Here’s an overview of key Android Architecture Components and their
roles in application development
Android Architecture Components provide a solid foundation for developing robust and maintainable
applications.
By separating concerns (like UI, data handling, and navigation), using lifecycle-aware components, and
following best practices like dependency injection and testing, you can build high-quality Android apps more
efficiently.
WEEKLY REPORT
WEEK – 4 (From Dt 05-08-2024 to Dt 10-08-2024)
Objective of the Activity Done: In Android development with Jetpack Compose, interacting with UI and
managing state is central to building dynamic, interactive apps
State Management: Use remember and mutableStateOf to handle UI state. For persistence, use remember
Saveable.
State Hoisting: Pass state and events up and down composables for better control.
Handling Input: UI elements like TextField, Button, and LazyColumn work seamlessly with state to handle
user input and display dynamic content.
Side Effects: Use LaunchedEffect for side effects like loading data, and DisposableEffect for cleanup tasks.
ViewModel: Use ViewModel for complex state management that survives configuration changes.
22
WEEKLY REPORT
WEEK – 5 (From Dt 12-08-2024 to Dt 17-08-2024)
Objective of the Activity Done: If you’ re new to Android Studio, this guide will walk you
through the installation, configuration, and the first project setup.
WEEKLY REPORT
WEEK – 6 (From Dt 19-08-2024 to Dt 24-08-2024)
In Jetpack Compose, every UI component is a composable function. Composables are annotated with
@Composable.
Text: A composable that displays text on the screen.
Column: A layout composable that arranges its children vertically.
One of the key concepts in Jetpack Compose is state. UI in Compose automatically updates when the
underlying state changes.
23
WEEKLY REPORT
WEEK – 7 (From Dt 26-08-2024 to Dt 31-08-2024)
Objective of the Activity Done: Let' s cover the e s s e n t i a l b u i l d i n g blocks of Kotlin, focusing
on ba sic syntax, key features, and c ore conc epts that will help you get comforta ble
with the language.
WEEKLY REPORT
WEEK – 8 (From Dt 02-09-2024 to Dt 06-09-2024)
Objective of the Activity Done: Let's continue with more Kotlin fundamentals, covering some additional
topics to deepen your understanding of the language.
24
WEEKLY REPORT
WEEK – 9 (From Dt 09-09-2024 to Dt 14-09-2024)
Objective of the Activity Done: Kotlin i s a m ode rn, statically - typed program min g lang uage
develope d by Jet Brains
Interoperability: Kotlin works seamlessly with Java, allowing you to call Java code from Kotlin
and vice versa.
Conciseness: Kotlin reduces boilerplate code, making it more readable.
Null Safety: Kotlin helps prevent NullPointerException errors by enforcing null safety.
Tooling Support: Kotlin is supported by IntelliJ IDEA and Android Studio, offering powerful
development tools.
Functional Programming: Kotlin supports higher-order functions, lambda expressions, and
other functional programming features.
WEEKLY REPORT
WEEK – 10 (From Dt 16-09-2024 to Dt 21-09-2024)
Objective of the Activity Done: Master Developer Superset refers to a programming language framework
,or set tools.
1. Backward Compatibility: A superset retains full compatibility with the base language or
system. You can write code in the original system, and it will still work within the superset.
2. Additional Features: Supersets provide more advanced features or syntactic sugar to
improve the development experience, such as type checking, better tooling support, or new
language constructs.
3. Gradual Adoption: Since supersets are compatible with their base, developers can adopt
new features gradually without needing to rewrite existing codebases.
4. Better Tooling: Supersets often come with better tooling, such as more advanced compilers
or debuggers, which enhance productivity.
25
CHAPTER 5: OUTCOMES DESCRIPTION
Outcome: The developer will gain proficiency in designing and building robust Android applications from
scratch.
Description: Android developers will be able to create fully functional apps using programming languages
like Java or Kotlin, leveraging Android SDK tools. This includes the ability to design user interfaces,
integrate APIs, manage data, and optimize performance.
26
CHAPTER 6: CONCLUSION
Becoming an Android developer offers a rewarding career path, combining creativity with technical
expertise. Here’s a conclusion summarizing the journey:
An Android developer leverages their knowledge of Java or Kotlin, alongside Android SDK and
development tools like Android Studio, to create mobile applications. The role requires a blend of
technical skills, problem-solving abilities, and a passion for user-centric design. Android developers are
responsible for building responsive, secure, and efficient apps that enhance user experiences. Additionally,
continuous learning, adapting to platform updates, and collaborating with teams are key components of
success in the ever-evolving Android ecosystem.
It's no wonder that, the app development process is exhausting, and overwhelming also. There have
been lots of steps and processes to follow, and many decision making mechanism are involved as well.
But, we have tried our best to cover multiple scenarios and possibilities you might encounter.
There are still challenges that could be out of the box, but this guidebook will hopefully help you create
the basic framework for the process as well as the application
27
Student Self-Evaluation for the Short-Term Internship
Date of Evaluation:
1) Oral communication 1 2 3 4 5
2) Written communication 1 2 3 4 5
3) Proactiveness 1 2 3 4 5
5) Positive Attitude 1 2 3 4 5
6) Self-confidence 1 2 3 4 5
7) Ability to learn 1 2 3 4 5
9) Professionalism 1 2 3 4 5
10) Creativity 1 2 3 4 5
28
OUTPUT SCREENS
29
30
31
1
31
2
31
3
31
4